Skip to main content

DAC configuration defaults

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.

Chain config defaults

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,
},
});

Node config defaults (when DAC is enabled)

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>"
}
}
}
}

Full default values reference

Every DAC-related setting with its documented default, organized by config section.

node.da.anytrust

KeyDefaultDescription
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.

node.da.anytrust.rest-aggregator

KeyDefaultDescription
enablefalseEnable REST retrieval of batch data
max-per-endpoint-stats20Latency/success-rate stats entries per endpoint
online-url-listURL 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

node.da.anytrust.rest-aggregator.simple-explore-exploit-strategy

KeyDefaultDescription
exploit-iterations1000Consecutive GetByHash calls using best-latency endpoints before switching to explore
explore-iterations20Consecutive GetByHash calls using random endpoints before switching to exploit

node.da.anytrust.rest-aggregator.sync-to-storage

KeyDefaultDescription
delay-on-error1sWait time before retrying after sync error
eagerfalseEagerly sync batch data using L1 as index (vs lazy)
eager-lower-bound-blockStarting 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-dirDirectory to persist sync progress
sync-expired-datatrueSync expired data (needed for mirror configs)

node.da.anytrust.rpc-aggregator

KeyDefaultDescription
assumed-honestH value; required signatures K = N + 1 - H
backendsnullJSON 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)

node.da.anytrust.rpc-aggregator.rpc-client

KeyDefaultDescription
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

node.da.anytrust.rpc-aggregator.rpc-client.data-stream

KeyDefaultDescription
max-store-chunk-body-size5242880 (5 MB)Maximum HTTP body size per chunk

node.da.anytrust.rpc-aggregator.rpc-client.data-stream.rpc-methods

KeyDefaultDescription
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

node.batch-poster (DAC-relevant settings)

KeyDefaultDescription
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

node.da.external-provider (newer DAProvider interface)

KeyDefaultDescription
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

node.da.external-provider.data-stream

KeyDefaultDescription
max-store-chunk-body-size5242880 (5 MB)Maximum HTTP body size per chunk

node.da.external-provider.data-stream.rpc-methods

KeyDefaultDescription
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

node.da.external-provider.rpc

KeyDefaultDescription
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

SDK-applied defaults(prepareNodeConfig)

When prepareNodeConfig() detects DataAvailabilityCommittee: true, it applies these concrete values. Source: src/prepareNodeConfig.ts:158-182

SettingValue AppliedNotes
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 backendURL at <dasServerUrl>:9876
batch-poster.enabletrue
batch-poster.max-size90000Lower than the NodeConfig default of 100000