DAC configuration defaults
Default settings for a Data Availability Committee (AnyTrust) chain as defined in the Arbitrum Chain SDK.
src/prepareChainConfig.tssrc/prepareNodeConfig.tssrc/types/NodeConfig.generated.ts
As of Nitro v3.10.0, the node-side AnyTrust keys moved:
node.data-availability.*is deprecated in favor ofnode.da.anytrust.*das-rpc-clientwas renamed torpc-client(with the server URL under itsrpc.urlkey)node.da-providermoved tonode.da.external-providernode.batch-poster.das-retention-periodwas renamed tonode.batch-poster.anytrust-retention-periodnode.batch-poster.max-sizewas deprecated in favor ofnode.batch-poster.max-calldata-batch-size(calldata batches) andnode.da.anytrust.max-batch-size(AnyTrust batches).- The node no longer accepts
sequencer-inbox-addressorparent-chain-node-urlin its DA section — those settings now exist only as--parent-chain.*flags of the standaloneanytrustserver, 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
| Key | Default | Description |
|---|---|---|
enable | false | Enable AnyTrust Data Availability mode |
max-batch-size | 1000000 (1 MB) | Maximum compressed batch size for AnyTrust DA |
panic-on-error | false | Fail immediately on DAS errors (not recommended) |
request-timeout | 5s | Timeout 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
| Key | Default | Description |
|---|---|---|
enable | false | Enable REST retrieval of batch data |
max-per-endpoint-stats | 20 | Latency/success-rate stats entries per endpoint |
online-url-list | — | URL to a remote list of REST DAS endpoint URLs |
online-url-list-fetch-interval | 1h0m0s | How often to re-fetch the online URL list |
strategy | simple-explore-exploit | Endpoint selection strategy |
strategy-update-interval | 10s | How often to refresh strategy with latency/error data |
urls | [] | Static list of REST DAS endpoint URLs |
wait-before-try-next | 2s | Time before trying the next set of REST endpoints |
node.da.anytrust.rest-aggregator.simple-explore-exploit-strategy
| Key | Default | Description |
|---|---|---|
exploit-iterations | 1000 | Consecutive GetByHash calls using best-latency endpoints before switching to explore |
explore-iterations | 20 | Consecutive GetByHash calls using random endpoints before switching to exploit |
node.da.anytrust.rest-aggregator.sync-to-storage
| Key | Default | Description |
|---|---|---|
delay-on-error | 1s | Wait time before retrying after sync error |
eager | false | Eagerly 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-errors | true | Log-only on write failures during sync |
parent-chain-blocks-per-read | 100 | Max L1 blocks to read per eager sync poll |
retention-period | 360h0m0s | How long to retain synced data |
state-dir | — | Directory to persist sync progress |
sync-expired-data | true | Sync expired data (needed for mirror configs) |
node.da.anytrust.rpc-aggregator
| Key | Default | Description |
|---|---|---|
assumed-honest | — | H value; required signatures K = N + 1 - H |
backends | null | JSON 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. |
enable | false | Enable RPC storage of batch data (Batch Poster only) |
node.da.anytrust.rpc-aggregator.rpc-client
| Key | Default | Description |
|---|---|---|
enable-chunked-store | true | Send data to DAS in chunks instead of all at once |
rpc.url | self-auth | DAS server URL; overridden at runtime by each backends[].url entry |
node.da.anytrust.rpc-aggregator.rpc-client.data-stream
| Key | Default | Description |
|---|---|---|
max-store-chunk-body-size | 5242880 (5 MB) | Maximum HTTP body size per chunk |
node.da.anytrust.rpc-aggregator.rpc-client.data-stream.rpc-methods
| Key | Default | Description |
|---|---|---|
finalize-stream | das_commitChunkedStore | RPC method to finalize a chunked store session |
start-stream | das_startChunkedStore | RPC method to initiate a chunked store session |
stream-chunk | das_sendChunk | RPC method to send a data chunk |
node.batch-poster (DAC-relevant settings)
| Key | Default | Description |
|---|---|---|
anytrust-retention-period | 360h0m0s | Period DASes retain stored batches in AnyTrust mode |
disable-dap-fallback-store-data-on-chain | false | If true, disables fallback to onchain batch posting when DA fails |
enable | false | Enable batch posting |
max-calldata-batch-size | 100000 | Maximum estimated compressed calldata batch size (bytes); replaces the deprecated max-size |
error-delay | 10s | Delay after batch posting error before retry |
extra-batch-gas | 50000 | Extra gas added to batch posting estimate |
max-delay | 1h0m0s | Maximum batch posting delay |
max-empty-batch-delay | 72h0m0s | Maximum delay before posting an empty batch |
poll-interval | 10s | Interval to check for ready batches |
check-batch-correctness | true | Verify batch against inbox multiplexer |
compression-level | 11 | Batch compression level |
l1-block-bound-bypass | 1h0m0s | Post even if outside L1 bounds, within this margin |
delay-buffer-always-updatable | true | Always treat delay buffer as updatable |
delay-buffer-threshold-margin | 25 | Blocks before delay buffer threshold to post batch |
node.da.external-provider (newer DAProvider interface)
| Key | Default | Description |
|---|---|---|
enable | false | Enable DAProvider client |
store-rpc-method | daprovider_store | Single-shot store RPC method name |
use-data-streaming | false | Use chunked streaming protocol for large payloads |
with-writer | false | DAProvider server supports writer interface |
node.da.external-provider.data-stream
| Key | Default | Description |
|---|---|---|
max-store-chunk-body-size | 5242880 (5 MB) | Maximum HTTP body size per chunk |
node.da.external-provider.data-stream.rpc-methods
| Key | Default | Description |
|---|---|---|
finalize-stream | daprovider_commitChunkedStore | RPC method to finalize a chunked store session |
start-stream | daprovider_startChunkedStore | RPC method to initiate a chunked store session |
stream-chunk | daprovider_sendChunk | RPC method to send a data chunk |
node.da.external-provider.rpc
| Key | Default | Description |
|---|---|---|
arg-log-limit | 2048 | Limit size of arguments in log entries |
retries | 3 | Retries on failure (0 = one attempt) |
retry-errors | websocket: close.*|dial tcp .*|.*i/o timeout|.*connection reset by peer|.*connection refused | Regex for auto-retried errors |
websocket-message-size-limit | 268435456 (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
| Setting | Value Applied | Notes |
|---|---|---|
data-availability.enable | true | Overrides the false default |
data-availability.sequencer-inbox-address | coreContracts.sequencerInbox | From deployment output |
data-availability.parent-chain-node-url | parentChainRpcUrl | From params |
rest-aggregator.enable | true | Overrides the false default |
rest-aggregator.urls | ["<dasServerUrl>:9877"] | Falls back to http://localhost:9877 |
rpc-aggregator.enable | true | Overrides the false default |
rpc-aggregator.assumed-honest | 1 | Single honest member (dev default) |
rpc-aggregator.backends | JSON with 1 backend | URL at <dasServerUrl>:9876 |
batch-poster.enable | true | — |
batch-poster.max-size | 90000 | Lower than the NodeConfig default of 100000 |