DAC configuration defaults Learn the default settings for DAC configuration for your Arbitrum chain.
Default settings for a Data Availability Committee (AnyTrust) chain as defined in the Arbitrum Chain SDK.
src/prepareChainConfig.ts
src/prepareNodeConfig.ts
src/types/NodeConfig.generated.ts
Nitro v3.10.0 renamed these config keys
As of Nitro v3.10.0, the node-side AnyTrust keys moved:
node.data-availability.* is deprecated in favor of node.da.anytrust.*
das-rpc-client was renamed to rpc-client (with the server URL under its rpc.url key)
node.da-provider moved to node.da.external-provider
node.batch-poster.das-retention-period was renamed to node.batch-poster.anytrust-retention-period
node.batch-poster.max-size was deprecated in favor of node.batch-poster.max-calldata-batch-size (calldata batches) and node.da.anytrust.max-batch-size (AnyTrust batches).
The node no longer accepts sequencer-inbox-address or parent-chain-node-url in its DA section — those settings now exist only as --parent-chain.* flags of the standalone anytrustserver, and a Nitro v3.10.0+ node fails to start when they are present. The reference tables below use the new paths; configs generated by the Arbitrum Chain SDK (shown in the next section) may still use the legacy names until the SDK types are regenerated.
Set at rollup creation time.
{
"arbitrum" : {
"EnableArbOS" : true ,
"AllowDebugPrecompiles" : false ,
"DataAvailabilityCommittee" : false ,
"InitialArbOSVersion" : 51 ,
"GenesisBlockNum" : 0 ,
"MaxCodeSize" : 24576 ,
"MaxInitCodeSize" : 49152
}
}
To enable DAC, override DataAvailabilityCommittee to true at deployment:
prepareChainConfig ({
chainId: 12345 ,
arbitrum: {
InitialChainOwner: '0x...' ,
DataAvailabilityCommittee: true ,
},
});
Generated by prepareNodeConfig() when chainConfig.arbitrum.DataAvailabilityCommittee is true.
{
"node" : {
"data-availability" : {
"enable" : true ,
"sequencer-inbox-address" : "<from coreContracts>" ,
"parent-chain-node-url" : "<from parentChainRpcUrl>" ,
"rest-aggregator" : {
"enable" : true ,
"urls" : [ "http://localhost:9877" ]
},
"rpc-aggregator" : {
"enable" : true ,
"assumed-honest" : 1 ,
"backends" : "[{ \" url \" : \" http://localhost:9876 \" , \" pubkey \" : \" YAAA...AAA== \" }]"
}
},
"batch-poster" : {
"enable" : true ,
"max-size" : 90000 ,
"parent-chain-wallet" : {
"private-key" : "<batchPosterPrivateKey>"
}
}
}
}
Every DAC-related setting with its documented default, organized by config section.
Key Default Description enablefalseEnable AnyTrust Data Availability mode max-batch-size1000000 (1 MB)Maximum compressed batch size for AnyTrust DA panic-on-errorfalseFail immediately on DAS errors (not recommended) request-timeout5sTimeout for Store requests
The parent chain connection settings (parent-chain.node-url, parent-chain.connection-attempts with default 15, and parent-chain.sequencer-inbox-address) are flags of the standalone anytrustserver only — refer to How to deploy a DAS .
Key Default Description enablefalseEnable REST retrieval of batch data max-per-endpoint-stats20Latency/success-rate stats entries per endpoint online-url-list— URL to a remote list of REST DAS endpoint URLs online-url-list-fetch-interval1h0m0sHow often to re-fetch the online URL list strategysimple-explore-exploitEndpoint selection strategy strategy-update-interval10sHow often to refresh strategy with latency/error data urls[]Static list of REST DAS endpoint URLs wait-before-try-next2sTime before trying the next set of REST endpoints
Key Default Description exploit-iterations1000Consecutive GetByHash calls using best-latency endpoints before switching to explore explore-iterations20Consecutive GetByHash calls using random endpoints before switching to exploit
Key Default Description delay-on-error1sWait time before retrying after sync error eagerfalseEagerly sync batch data using L1 as index (vs lazy) eager-lower-bound-block— Starting L1 block for eager sync (only if no prior state) ignore-write-errorstrueLog-only on write failures during sync parent-chain-blocks-per-read100Max L1 blocks to read per eager sync poll retention-period360h0m0sHow long to retain synced data state-dir— Directory to persist sync progress sync-expired-datatrueSync expired data (needed for mirror configs)
Key Default Description assumed-honest— H value; required signatures K = N + 1 - HbackendsnullJSON array of {url, pubkey} objects. The aggregator assigns each backend a signersMask of 1 << i based on its index in the array, so member order must match the position of each public key in the onchain keyset. enablefalseEnable RPC storage of batch data (Batch Poster only)
Key Default Description enable-chunked-storetrueSend data to DAS in chunks instead of all at once rpc.urlself-authDAS server URL; overridden at runtime by each backends[].url entry
Key Default Description max-store-chunk-body-size5242880 (5 MB) Maximum HTTP body size per chunk
Key Default Description finalize-streamdas_commitChunkedStoreRPC method to finalize a chunked store session start-streamdas_startChunkedStoreRPC method to initiate a chunked store session stream-chunkdas_sendChunkRPC method to send a data chunk
Key Default Description anytrust-retention-period360h0m0sPeriod DASes retain stored batches in AnyTrust mode disable-dap-fallback-store-data-on-chainfalseIf true, disables fallback to onchain batch posting when DA fails enablefalseEnable batch posting max-calldata-batch-size100000Maximum estimated compressed calldata batch size (bytes); replaces the deprecated max-size error-delay10sDelay after batch posting error before retry extra-batch-gas50000Extra gas added to batch posting estimate max-delay1h0m0sMaximum batch posting delay max-empty-batch-delay72h0m0sMaximum delay before posting an empty batch poll-interval10sInterval to check for ready batches check-batch-correctnesstrueVerify batch against inbox multiplexer compression-level11Batch compression level l1-block-bound-bypass1h0m0sPost even if outside L1 bounds, within this margin delay-buffer-always-updatabletrueAlways treat delay buffer as updatable delay-buffer-threshold-margin25Blocks before delay buffer threshold to post batch
Key Default Description enablefalseEnable DAProvider client store-rpc-methoddaprovider_storeSingle-shot store RPC method name use-data-streamingfalseUse chunked streaming protocol for large payloads with-writerfalseDAProvider server supports writer interface
Key Default Description max-store-chunk-body-size5242880 (5 MB) Maximum HTTP body size per chunk
Key Default Description finalize-streamdaprovider_commitChunkedStoreRPC method to finalize a chunked store session start-streamdaprovider_startChunkedStoreRPC method to initiate a chunked store session stream-chunkdaprovider_sendChunkRPC method to send a data chunk
Key Default Description arg-log-limit2048Limit size of arguments in log entries retries3Retries on failure (0 = one attempt) retry-errorswebsocket: close.*|dial tcp .*|.*i/o timeout|.*connection reset by peer|.*connection refusedRegex for auto-retried errors websocket-message-size-limit268435456 (256 MB)WebSocket message size limit
When prepareNodeConfig() detects DataAvailabilityCommittee: true, it applies these concrete values. Source: src/prepareNodeConfig.ts:158-182
Setting Value Applied Notes data-availability.enabletrueOverrides the false default data-availability.sequencer-inbox-addresscoreContracts.sequencerInboxFrom deployment output data-availability.parent-chain-node-urlparentChainRpcUrlFrom params rest-aggregator.enabletrueOverrides the false default rest-aggregator.urls["<dasServerUrl>:9877"]Falls back to http://localhost:9877 rpc-aggregator.enabletrueOverrides the false default rpc-aggregator.assumed-honest1Single honest member (dev default) rpc-aggregator.backendsJSON with 1 backend URL at <dasServerUrl>:9876 batch-poster.enabletrue— batch-poster.max-size90000Lower than the NodeConfig default of 100000
How is this guide?
Good Bad