CLI flags reference
This page lists every CLI flag accepted by the Nitro node binary. For explanations, examples, and recommended configurations, see the curated guides:
Total flags: 724 across 23 namespaces.
Pass flags on the command line with -- prefix:
nitro --http.addr=0.0.0.0 --http.port=8547 --node.feed.input.url=wss://arb1.arbitrum.io/feed
Or set them in a JSON configuration file:
nitro --conf.file=/path/to/config.json
auth
Related guide: Configuration system
auth flags (5)
| Flag | Type | Default | Description |
|---|---|---|---|
auth.addr | string | 127.0.0.1 | AUTH-RPC server listening interface |
auth.api | strings | [validation] | APIs offered over the AUTH-RPC interface |
auth.jwtsecret | string | - | Path to file holding JWT secret (32B hex) |
auth.origins | strings | [localhost] | Origins from which to accept AUTH requests |
auth.port | int | 8549 | AUTH-RPC server listening port |
chain
Related guide: Configuration system
chain flags (9)
| Flag | Type | Default | Description |
|---|---|---|---|
chain.dev-wallet.account | string | is first account in keystore | account to use |
chain.dev-wallet.only-create-key | bool | - | if true, creates new key then exits |
chain.dev-wallet.password | string | PASSWORD_NOT_SET | wallet passphrase |
chain.dev-wallet.pathname | string | - | pathname for wallet |
chain.dev-wallet.private-key | string | - | private key for wallet |
chain.id | uint | - | L2 chain ID (determines Arbitrum network) |
chain.info-files | strings | - | L2 chain info json files |
chain.info-json | string | - | L2 chain info in json string format |
chain.name | string | - | L2 chain name (determines Arbitrum network) |
conf
Related guide: Configuration system
conf flags (9)
| Flag | Type | Default | Description |
|---|---|---|---|
conf.dump | bool | - | print out currently active configuration file |
conf.env-prefix | string | - | environment variables with given prefix will be loaded as configuration values |
conf.file | strings | - | name of configuration file |
conf.s3.access-key | string | - | S3 access key for fetching the node configuration file from S3 |
conf.s3.bucket | string | - | S3 bucket containing the node configuration file |
conf.s3.object-key | string | - | S3 object key of the node configuration file (JSON format) |
conf.s3.region | string | - | S3 region of the bucket containing the node configuration file |
conf.s3.secret-key | string | - | S3 secret key for fetching the node configuration file from S3 (triggers S3 config loading) |
conf.string | string | - | configuration as JSON string |
ensure-rollup-deployment
Related guide: Configuration system
ensure-rollup-deployment flags (1)
| Flag | Type | Default | Description |
|---|---|---|---|
ensure-rollup-deployment | bool | true | before starting the node, wait until the transaction that deployed rollup is finalized |
execution
Related guide: Node tuning and monitoring
execution flags (164)
| Flag | Type | Default | Description |
|---|---|---|---|
execution.block-metadata-api-blocks-limit | uint | 100 | maximum number of blocks allowed to be queried for blockMetadata per arb_getRawBlockMetadata query. Enabled by default, set 0 to disable the limit |
execution.block-metadata-api-cache-size | uint | 104857600 | size (in bytes) of lru cache storing the blockMetadata to service arb_getRawBlockMetadata |
execution.caching.archive | bool | - | retain past block state |
execution.caching.block-age | duration | 30m0s | minimum age of recent blocks to keep in memory |
execution.caching.block-count | uint | 128 | minimum number of recent blocks to keep in memory |
execution.caching.database-cache | int | 2048 | amount of memory in megabytes to cache database contents with |
execution.caching.disable-stylus-cache-metrics-collection | bool | - | disable metrics collection for the stylus cache |
execution.caching.enable-preimages | bool | - | enable recording of preimages |
execution.caching.head-rewind-blocks-limit | uint | 2419200 | maximum number of blocks rolled back to recover chain head (0 = use geth default limit) |
execution.caching.max-amount-of-gas-to-skip-state-saving | uint | - | maximum amount of gas in blocks to skip saving state to Persistent storage (archive node only) -- warning: this option seems to cause issues |
execution.caching.max-number-of-blocks-to-skip-state-saving | uint32 | - | maximum number of blocks to skip state saving to persistent storage (archive node only) -- warning: this option seems to cause issues |
execution.caching.pathdb-max-diff-layers | int | 128 | maximum number of diff layers to keep in pathdb (path state-scheme only) |
execution.caching.snapshot-cache | int | 400 | amount of memory in megabytes to cache state snapshots with |
execution.caching.snapshot-restore-gas-limit | uint | 300000000000 | maximum gas rolled back to recover snapshot |
execution.caching.state-history | uint | 18446744073709551615 | number of recent blocks to retain state history for (path state-scheme only) |
execution.caching.state-scheme | string | hash | scheme to use for state trie storage (hash, path) |
execution.caching.state-size-tracking | bool | - | enable tracking of state size over time |
execution.caching.stylus-lru-cache-capacity | uint32 | 256 | capacity, in megabytes, of the LRU cache that keeps initialized stylus programs |
execution.caching.trie-cap-batch-size | uint32 | - | batch size in bytes used in the TrieDB Cap operation (0 = use geth default) |
execution.caching.trie-cap-limit | uint32 | 100 | amount of memory in megabytes to be used in the TrieDB Cap operation during maintenance |
execution.caching.trie-clean-cache | int | 600 | amount of memory in megabytes to cache unchanged state trie nodes with |
execution.caching.trie-commit-batch-size | uint32 | - | batch size in bytes used in the TrieDB Commit operation (0 = use geth default) |
execution.caching.trie-dirty-cache | int | 1024 | amount of memory in megabytes to cache state diffs against disk with (larger cache lowers database growth) |
execution.caching.trie-time-limit | duration | 1h0m0s | maximum block processing time before trie is written to hard-disk |
execution.caching.trie-time-limit-before-flush-maintenance | duration | - | Execution will suggest that maintenance is run if the block processing time required to reach trie-time-limit is smaller or equal than trie-time-limit-before-flush-maintenance |
execution.caching.trie-time-limit-random-offset | duration | - | if greater then 0, the block processing time period of each trie write to hard-disk is shortened by a random value from range [0, trie-time-limit-random-offset) |
execution.consensus-rpc-client.arg-log-limit | uint | 2048 | limit size of arguments in log entries |
execution.consensus-rpc-client.connection-wait | duration | - | how long to wait for initial connection |
execution.consensus-rpc-client.jwtsecret | string | - | path to file with jwtsecret for validation - ignored if url is self or self-auth |
execution.consensus-rpc-client.retries | uint | 3 | number of retries in case of failure(0 mean one attempt) |
execution.consensus-rpc-client.retry-delay | duration | - | delay between retries |
execution.consensus-rpc-client.retry-errors | string | websocket: close.*|dial tcp .*|.*i/o timeout|.*connection reset by peer|.*connection refused | Errors matching this regular expression are automatically retried |
execution.consensus-rpc-client.timeout | duration | - | per-response timeout (0-disabled) |
execution.consensus-rpc-client.url | string | - | url of server, use self for loopback websocket, self-auth for loopback with authentication |
execution.consensus-rpc-client.websocket-message-size-limit | int | 268435456 | websocket message size limit used by the RPC client. 0 means no limit |
execution.disable-arbowner-ethcall | bool | - | disable ArbOwner precompile calls outside on-chain execution (ethcall, gas estimation) |
execution.enable-prefetch-block | bool | true | enable prefetching of blocks |
execution.forwarder.connection-timeout | duration | 30s | total time to wait before cancelling connection |
execution.forwarder.idle-connection-timeout | duration | 15s | time until idle connections are closed |
execution.forwarder.max-idle-connections | int | 1 | maximum number of idle connections to keep open |
execution.forwarder.redis-url | string | - | the Redis URL to recommend target via |
execution.forwarder.retry-interval | duration | 100ms | minimal time between update retries |
execution.forwarder.update-interval | duration | 1s | forwarding target update interval |
execution.forwarding-target | string | - | transaction forwarding target URL, or "null" to disable forwarding (iff not sequencer) |
execution.legacy-zero-base-fee-until | uint | - | orbit-chain compat: re-enables the pre-v3.7 behavior of treating ArbOS<=40 blocks with zero base fee as non-arbitrum, for blocks with unix timestamp strictly less than this value (0 disables; set to a timestamp past the last zero-basefee block on the chain) |
execution.parent-chain-reader.enable | bool | true | enable reader connection |
execution.parent-chain-reader.old-header-timeout | duration | 5m0s | warns if the latest l1 block is at least this old |
execution.parent-chain-reader.poll-interval | duration | 15s | interval when polling endpoint |
execution.parent-chain-reader.poll-only | bool | - | do not attempt to subscribe to header events |
execution.parent-chain-reader.poll-timeout | duration | 5s | timeout when polling endpoint |
execution.parent-chain-reader.subscribe-err-interval | duration | 5m0s | interval for subscribe error |
execution.parent-chain-reader.tx-timeout | duration | 5m0s | timeout when waiting for a transaction |
execution.parent-chain-reader.use-finality-data | bool | true | use l1 data about finalized/safe blocks |
execution.recording-database.max-prepared | int | 1000 | max references to store in the recording database |
execution.recording-database.trie-clean-cache | int | 16 | like trie-clean-cache for the separate, recording database (used for validation) |
execution.recording-database.trie-dirty-cache | int | 1024 | like trie-dirty-cache for the separate, recording database (used for validation) |
execution.rpc-server.authenticated | bool | true | rpc is authenticated |
execution.rpc-server.enable | bool | - | enable execution node to serve over rpc |
execution.rpc-server.public | bool | - | rpc is public |
execution.rpc.allow-method | strings | - | list of whitelisted rpc methods |
execution.rpc.arbdebug.block-range-bound | uint | 256 | bounds the number of blocks arbdebug calls may return |
execution.rpc.arbdebug.timeout-queue-bound | uint | 512 | bounds the length of timeout queues arbdebug calls may return |
execution.rpc.block-redirects-list | string | default | array of node configs to redirect block requests given as a json string. time duration should be supplied in number indicating nanoseconds |
execution.rpc.classic-redirect | string | - | url to redirect classic requests, use "error:[CODE:]MESSAGE" to return specified error instead of redirecting |
execution.rpc.classic-redirect-timeout | duration | - | timeout for forwarded classic requests, where 0 = no timeout |
execution.rpc.evm-timeout | duration | 5s | timeout used for eth_call (0=infinite) |
execution.rpc.feehistory-max-block-count | uint | 1024 | max number of blocks a fee history request may cover |
execution.rpc.filter-log-cache-size | int | 32 | log filter system maximum number of cached blocks |
execution.rpc.filter-timeout | duration | 5m0s | log filter system maximum time filters stay active |
execution.rpc.gas-cap | uint | 50000000 | cap on computation gas that can be used in eth_call/estimateGas (0=infinite) |
execution.rpc.log-export-checkpoints | string | - | export log index checkpoints to file |
execution.rpc.log-history | uint | 9400000 | maximum number of blocks from head where a log search index is maintained |
execution.rpc.log-no-history | bool | - | no log search index is maintained |
execution.rpc.max-recreate-state-depth | int | -2 | maximum depth for recreating state, measured in l2 gas (0=don't recreate state, -1=infinite, -2=use default value for archive or non-archive node (whichever is configured)) |
execution.rpc.tx-allow-unprotected | bool | true | allow transactions that aren't EIP-155 replay protected to be submitted over the RPC |
execution.rpc.tx-fee-cap | float | 1 | cap on transaction fee (in ether) that can be sent via the RPC APIs (0 = no cap) |
execution.rpc.tx-sync-default-timeout | duration | 20s | default timeout for eth_sendRawTransactionSync |
execution.rpc.tx-sync-max-timeout | duration | 1m0s | maximum allowed timeout for eth_sendRawTransactionSync |
execution.secondary-forwarding-target | strings | - | secondary transaction forwarding target URL |
execution.sequencer.enable | bool | - | act and post to l1 as sequencer |
execution.sequencer.enable-profiling | bool | - | enable CPU profiling and tracing |
execution.sequencer.expected-surplus-gas-price-mode | string | BlobPrice | gas price setting to be used in calculating estimated surplus. Allowed values- CalldataPrice, BlobPrice and CalldataPrice7523 |
execution.sequencer.expected-surplus-hard-threshold | string | default | if expected surplus is lower than this value, new incoming transactions will be denied |
execution.sequencer.expected-surplus-soft-threshold | string | default | if expected surplus is lower than this value, warnings are posted |
execution.sequencer.forwarder.connection-timeout | duration | 30s | total time to wait before cancelling connection |
execution.sequencer.forwarder.idle-connection-timeout | duration | 1m0s | time until idle connections are closed |
execution.sequencer.forwarder.max-idle-connections | int | 100 | maximum number of idle connections to keep open |
execution.sequencer.forwarder.redis-url | string | - | the Redis URL to recommend target via |
execution.sequencer.forwarder.retry-interval | duration | 100ms | minimal time between update retries |
execution.sequencer.forwarder.update-interval | duration | 1s | forwarding target update interval |
execution.sequencer.max-acceptable-timestamp-delta | duration | 1h0m0s | maximum acceptable time difference between the local time and the latest L1 block's timestamp |
execution.sequencer.max-block-speed | duration | 250ms | minimum delay between blocks (sets a maximum speed of block production) |
execution.sequencer.max-revert-gas-reject | uint | - | maximum gas executed in a revert for the sequencer to reject the transaction instead of posting it (anti-DOS) |
execution.sequencer.max-tx-data-size | int | 95000 | maximum transaction size the sequencer will accept |
execution.sequencer.nonce-cache-size | int | 1024 | size of the tx sender nonce cache |
execution.sequencer.nonce-failure-cache-expiry | duration | 1s | maximum amount of time to wait for a predecessor before rejecting a tx with nonce too high |
execution.sequencer.nonce-failure-cache-size | int | 1024 | number of transactions with too high of a nonce to keep in memory while waiting for their predecessor |
execution.sequencer.queue-size | int | 1024 | size of the pending tx queue |
execution.sequencer.queue-timeout | duration | 12s | maximum amount of time transaction can wait in queue |
execution.sequencer.read-from-tx-queue-timeout | duration | 10ms | timeout for reading new messages |
execution.sequencer.sender-whitelist | strings | - | comma separated whitelist of authorized senders (if empty, everyone is allowed) |
execution.sequencer.timeboost.auction-contract-address | string | - | Address of the proxy pointing to the ExpressLaneAuction contract |
execution.sequencer.timeboost.auctioneer-address | string | - | Address of the Timeboost Autonomous Auctioneer |
execution.sequencer.timeboost.early-submission-grace | duration | 2s | period of time before the next round where submissions for the next round will be queued |
execution.sequencer.timeboost.enable | bool | - | enable timeboost based on express lane auctions |
execution.sequencer.timeboost.express-lane-advantage | duration | 200ms | specify the express lane advantage |
execution.sequencer.timeboost.max-future-sequence-distance | uint | 1000 | maximum allowed difference (in terms of sequence numbers) between a future express lane tx and the current sequence count of a round |
execution.sequencer.timeboost.queue-timeout-in-blocks | uint | 5 | maximum amount of time (measured in blocks) that Express Lane transactions can wait in the sequencer's queue |
execution.sequencer.timeboost.redis-update-events-channel-size | uint | 500 | size of update events' buffered channels in timeboost redis coordinator |
execution.sequencer.timeboost.redis-url | string | unset | the Redis URL for ExpressLaneService to coordinate via |
execution.sequencer.timeboost.sequencer-http-endpoint | string | http://localhost:8547 | this sequencer's http endpoint |
execution.stylus-target.allow-fallback | bool | true | if true, fall back to an alternative compiler when compilation of a Stylus program fails |
execution.stylus-target.amd64 | string | x86_64-linux-unknown+sse4.2+lzcnt+bmi | stylus programs compilation target for amd64 linux |
execution.stylus-target.arm64 | string | arm64-linux-unknown+neon | stylus programs compilation target for arm64 linux |
execution.stylus-target.extra-archs | strings | [wavm] | Comma separated list of extra architectures to cross-compile stylus program to and cache in wasm store (additionally to local target). Currently must include at least wavm. (supported targets: wavm, arm64, amd64, host) |
execution.stylus-target.host | string | - | stylus programs compilation target for system other than 64-bit ARM or 64-bit x86 |
execution.stylus-target.max-stylus-call-depth | uint16 | - | max number of Stylus frames simultaneously on the call stack (counts only Stylus frames; EVM frames between two Stylus frames do not decrement it); exceeding the limit rejects non-on-chain calls; 0 disables the limit |
execution.stylus-target.max-stylus-open-pages | uint16 | 128 | max open WASM pages per tx; exceeding the limit rejects non-on-chain calls and filters sequencer-committed txs (delayed inbox is exempt); 0 disables the limit |
execution.stylus-target.native-stack-size | uint | - | initial native stack size in bytes for Wasmer coroutines used by Stylus execution (0 = default 1MB) |
execution.sync-monitor.finalized-block-wait-for-block-validator | bool | - | wait for block validator to complete before returning finalized block number |
execution.sync-monitor.msg-lag | duration | 1s | allowed message lag while still considered in sync |
execution.sync-monitor.safe-block-wait-for-block-validator | bool | - | wait for block validator to complete before returning safe block number |
execution.transaction-filtering.address-filter.address-checker-queue-size | int | 8192 | work queue size for address checker |
execution.transaction-filtering.address-filter.address-checker-worker-count | int | 4 | number of workers for address checker |
execution.transaction-filtering.address-filter.cache-size | int | 10000 | LRU cache size for address lookup results |
execution.transaction-filtering.address-filter.enable | bool | - | enable restricted address synchronization service |
execution.transaction-filtering.address-filter.poll-interval | duration | 5m0s | interval between polling S3 for hash list updates |
execution.transaction-filtering.address-filter.s3.access-key | string | - | S3 access key |
execution.transaction-filtering.address-filter.s3.bucket | string | - | S3 bucket name |
execution.transaction-filtering.address-filter.s3.chunk-size-mb | int | 32 | S3 multipart download part size in MB |
execution.transaction-filtering.address-filter.s3.concurrency | int | 10 | S3 multipart download concurrency |
execution.transaction-filtering.address-filter.s3.endpoint | string | - | custom S3 endpoint URL (for MinIO, localstack, or other S3-compatible services) |
execution.transaction-filtering.address-filter.s3.max-retries | int | 3 | maximum retries for S3 part body download |
execution.transaction-filtering.address-filter.s3.object-key | string | - | S3 object key (path) to the file |
execution.transaction-filtering.address-filter.s3.region | string | - | S3 region |
execution.transaction-filtering.address-filter.s3.secret-key | string | - | S3 secret key |
execution.transaction-filtering.disable-delayed-sequencing-filter | bool | - | disable delayed sequencing filter |
execution.transaction-filtering.enable-ethcall-filter | bool | - | enable address filtering for eth_estimateGas and eth_call |
execution.transaction-filtering.event-filter.path | string | - | path to JSON file containing event filter rules |
execution.transaction-filtering.filtering-report-rpc-client.arg-log-limit | uint | 2048 | limit size of arguments in log entries |
execution.transaction-filtering.filtering-report-rpc-client.connection-wait | duration | - | how long to wait for initial connection |
execution.transaction-filtering.filtering-report-rpc-client.jwtsecret | string | - | path to file with jwtsecret for validation - ignored if url is self or self-auth |
execution.transaction-filtering.filtering-report-rpc-client.retries | uint | 3 | number of retries in case of failure(0 mean one attempt) |
execution.transaction-filtering.filtering-report-rpc-client.retry-delay | duration | - | delay between retries |
execution.transaction-filtering.filtering-report-rpc-client.retry-errors | string | websocket: close.*|dial tcp .*|.*i/o timeout|.*connection reset by peer|.*connection refused | Errors matching this regular expression are automatically retried |
execution.transaction-filtering.filtering-report-rpc-client.timeout | duration | - | per-response timeout (0-disabled) |
execution.transaction-filtering.filtering-report-rpc-client.url | string | - | url of server, use self for loopback websocket, self-auth for loopback with authentication |
execution.transaction-filtering.filtering-report-rpc-client.websocket-message-size-limit | int | 268435456 | websocket message size limit used by the RPC client. 0 means no limit |
execution.transaction-filtering.transaction-filterer-rpc-client.arg-log-limit | uint | 2048 | limit size of arguments in log entries |
execution.transaction-filtering.transaction-filterer-rpc-client.connection-wait | duration | - | how long to wait for initial connection |
execution.transaction-filtering.transaction-filterer-rpc-client.jwtsecret | string | - | path to file with jwtsecret for validation - ignored if url is self or self-auth |
execution.transaction-filtering.transaction-filterer-rpc-client.retries | uint | 3 | number of retries in case of failure(0 mean one attempt) |
execution.transaction-filtering.transaction-filterer-rpc-client.retry-delay | duration | - | delay between retries |
execution.transaction-filtering.transaction-filterer-rpc-client.retry-errors | string | websocket: close.*|dial tcp .*|.*i/o timeout|.*connection reset by peer|.*connection refused | Errors matching this regular expression are automatically retried |
execution.transaction-filtering.transaction-filterer-rpc-client.timeout | duration | - | per-response timeout (0-disabled) |
execution.transaction-filtering.transaction-filterer-rpc-client.url | string | - | url of server, use self for loopback websocket, self-auth for loopback with authentication |
execution.transaction-filtering.transaction-filterer-rpc-client.websocket-message-size-limit | int | 268435456 | websocket message size limit used by the RPC client. 0 means no limit |
execution.tx-indexer.enable | bool | true | enables transaction indexer |
execution.tx-indexer.min-batch-delay | duration | 1s | minimum delay between transaction indexing/unindexing batches; the bigger the delay, the more blocks can be included in each batch |
execution.tx-indexer.threads | int | 2 | number of threads used to RLP decode blocks during indexing/unindexing of historical transactions |
execution.tx-indexer.tx-lookup-limit | uint | 126230400 | retain the ability to lookup transactions by hash for the past N blocks (0 = all blocks) |
execution.tx-pre-checker.required-state-age | int | 2 | how long ago should the storage conditions from eth_SendRawTransactionConditional be true, 0 = don't check old state |
execution.tx-pre-checker.required-state-max-blocks | uint | 4 | maximum number of blocks to look back while looking for the <required-state-age> seconds old state, 0 = don't limit the search |
execution.tx-pre-checker.strictness | uint | 20 | how strict to be when checking txs before forwarding them. 0 = accept anything, 10 = should never reject anything that'd succeed, 20 = likely won't reject anything that'd succeed, 30 = full validation which may reject txs that would succeed |
file-logging
Related guide: Node tuning and monitoring
file-logging flags (8)
| Flag | Type | Default | Description |
|---|---|---|---|
file-logging.buf-size | int | 512 | size of intermediate log records buffer |
file-logging.compress | bool | true | enable compression of old log files |
file-logging.enable | bool | true | enable logging to file |
file-logging.file | string | nitro.log | path to log file |
file-logging.local-time | bool | - | if true: local time will be used in old log filename timestamps |
file-logging.max-age | int | - | maximum number of days to retain old log files based on the timestamp encoded in their filename (0 = no limit) |
file-logging.max-backups | int | 20 | maximum number of old log files to retain (0 = no limit) |
file-logging.max-size | int | 5 | log file size in Mb that will trigger log file rotation (0 = trigger disabled) |
graphql
Related guide: Configuration system
graphql flags (3)
| Flag | Type | Default | Description |
|---|---|---|---|
graphql.corsdomain | strings | - | Comma separated list of domains from which to accept cross origin requests (browser enforced) |
graphql.enable | bool | - | Enable graphql endpoint on the rpc endpoint |
graphql.vhosts | strings | [localhost] | Comma separated list of virtual hostnames from which to accept requests (server enforced). Accepts '*' wildcard |
http
Related guide: Configuration system
http flags (10)
| Flag | Type | Default | Description |
|---|---|---|---|
http.addr | string | - | HTTP-RPC server listening interface |
http.api | strings | [net,web3,eth,arb] | APIs offered over the HTTP-RPC interface |
http.corsdomain | strings | - | Comma separated list of domains from which to accept cross origin requests (browser enforced) |
http.port | int | 8547 | HTTP-RPC server listening port |
http.rpcprefix | string | - | HTTP path path prefix on which JSON-RPC is served. Use '/' to serve on all paths |
http.server-timeouts.idle-timeout | duration | 2m0s | the maximum amount of time to wait for the next request when keep-alives are enabled (http.Server.IdleTimeout) |
http.server-timeouts.read-header-timeout | duration | 30s | the amount of time allowed to read the request headers (http.Server.ReadHeaderTimeout) |
http.server-timeouts.read-timeout | duration | 30s | the maximum duration for reading the entire request (http.Server.ReadTimeout) |
http.server-timeouts.write-timeout | duration | 30s | the maximum duration before timing out writes of the response (http.Server.WriteTimeout) |
http.vhosts | strings | [localhost] | Comma separated list of virtual hostnames from which to accept requests (server enforced). Accepts '*' wildcard |
init
Related guide: Docker and CLI binaries
init flags (29)
| Flag | Type | Default | Description |
|---|---|---|---|
init.accounts-per-sync | uint | 100000 | during init - sync database every X accounts. Lower value for low-memory systems. 0 disables. |
init.dev-init | bool | - | init with dev data (1 account with balance) instead of file import |
init.dev-init-address | string | - | Address of dev-account. Leave empty to use the dev-wallet. |
init.dev-init-blocknum | uint | - | Number of preinit blocks. Must exist in ancient database. |
init.dev-max-code-size | uint | - | Max code size for dev accounts |
init.download-path | string | - | path to save temp downloaded file |
init.download-poll | duration | 1m0s | how long to wait between polling attempts |
init.empty | bool | - | init with empty state |
init.force | bool | - | if true: in case database exists init code will be reexecuted and genesis block compared to database |
init.genesis-json-file | string | - | path for genesis json file |
init.genesis-json-file-directory | string | - | directory path for genesis json files - will search for a file named by the chain ID |
init.import-file | string | - | path for json data to import |
init.import-wasm | bool | - | if set, import the wasm directory when downloading a database (contains executable code - only use with highly trusted source) |
init.latest | string | - | if set, searches for the latest snapshot of the given kind (accepted values: "archive" | "pruned" | "genesis") |
init.latest-base | string | https://snapshot.arbitrum.foundation/ | base url used when searching for the latest |
init.prune | string | - | pruning for a given use: "full" for full nodes serving RPC requests, or "validator" for validators |
init.prune-bloom-size | uint | 2048 | the amount of memory in megabytes to use for the pruning bloom filter (higher values prune better) |
init.prune-parallel-storage-traversal | bool | - | if true: use parallel pruning per account |
init.prune-threads | int | 2 | the number of threads to use when pruning |
init.prune-trie-clean-cache | int | 600 | amount of memory in megabytes to cache unchanged state trie nodes with when traversing state database during pruning |
init.rebuild-local-wasm | string | auto | rebuild local wasm database on boot if needed (otherwise-will be done lazily). Three modes are supported "auto"- (enabled by default) if any previous rebuilding attempt was successful then rebuilding is disabled else continues to rebuild, "force"- force rebuilding which would commence rebuilding despite the status of previous attempts, "false"- do not rebuild on startup |
init.recreate-missing-state-from | uint | - | block number to start recreating missing states from (0 = disabled) |
init.reorg-to-batch | int | -1 | rolls back the blockchain to a specified batch number |
init.reorg-to-block-batch | int | -1 | rolls back the blockchain to the first batch at or before a given block number |
init.reorg-to-message-batch | int | -1 | rolls back the blockchain to the first batch at or before a given message index |
init.then-quit | bool | - | quit after init is done |
init.url | string | - | url to download initialization data - will poll if download fails |
init.validate-checksum | bool | true | if true: validate the checksum after downloading the snapshot |
init.validate-genesis-assertion | bool | true | tests genesis assertion posted on parent chain against the genesis block created on init |
ipc
Related guide: Configuration system
ipc flags (1)
| Flag | Type | Default | Description |
|---|---|---|---|
ipc.path | string | - | Requested location to place the IPC endpoint. An empty path disables IPC. |
log-level
Related guide: Configuration system
log-level flags (1)
| Flag | Type | Default | Description |
|---|---|---|---|
log-level | string | INFO | log level, valid values are CRIT, ERROR, WARN, INFO, DEBUG, TRACE |
log-type
Related guide: Configuration system
log-type flags (1)
| Flag | Type | Default | Description |
|---|---|---|---|
log-type | string | plaintext | log type (plaintext or json) |
metrics
Related guide: Node tuning and monitoring
metrics flags (1)
| Flag | Type | Default | Description |
|---|---|---|---|
metrics | bool | - | enable metrics |
metrics-server
Related guide: Node tuning and monitoring
metrics-server flags (3)
| Flag | Type | Default | Description |
|---|---|---|---|
metrics-server.addr | string | 127.0.0.1 | metrics server address |
metrics-server.port | int | 6070 | metrics server port |
metrics-server.update-interval | duration | 3s | metrics server update interval |
node
Related guide: Node tuning and monitoring
node flags (408)
| Flag | Type | Default | Description |
|---|---|---|---|
node.batch-poster.anytrust-retention-period | duration | 360h0m0s | In AnyTrust mode, the period which AnyTrust nodes are requested to retain the stored batches. |
node.batch-poster.check-batch-correctness | bool | true | setting this to true will run the batch against an inbox multiplexer and verifies that it produces the correct set of messages |
node.batch-poster.compression-level | int | - | DEPRECATED: use compression-levels instead. batch compression level |
node.batch-poster.compression-levels | CompressionLevelStepList | null | JSON array of compression level steps. Format: [{"backlog":<int>,"level":<int>,"recompression-level":<int>},...]. First entry must have backlog:0. Both Level and recomp-level must be 0-11, weakly descending. Example: [{"backlog":0,"level":11,"recompression-level":11},{"backlog":21,"level":6,"recompression-level":11}] |
node.batch-poster.data-poster.allocate-mempool-balance | bool | true | if true, don't put transactions in the mempool that spend a total greater than the batch poster's balance |
node.batch-poster.data-poster.blob-tx-replacement-times | durationSlice | [5m0s,10m0s,30m0s,1h0m0s,4h0m0s,8h0m0s,16h0m0s,22h0m0s] | comma-separated list of durations since first posting a blob transaction to attempt a replace-by-fee |
node.batch-poster.data-poster.disable-new-tx | bool | - | disable posting new transactions, data poster will still keep confirming existing batches |
node.batch-poster.data-poster.elapsed-time-base | duration | 10m0s | unit to measure the time elapsed since creation of transaction used for maximum fee cap calculation |
node.batch-poster.data-poster.elapsed-time-importance | float | 10 | weight given to the units of time elapsed used for maximum fee cap calculation |
node.batch-poster.data-poster.external-signer.address | string | - | external signer address |
node.batch-poster.data-poster.external-signer.client-cert | string | - | rpc client cert |
node.batch-poster.data-poster.external-signer.client-private-key | string | - | rpc client private key |
node.batch-poster.data-poster.external-signer.insecure-skip-verify | bool | - | skip TLS certificate verification |
node.batch-poster.data-poster.external-signer.method | string | eth_signTransaction | external signer method |
node.batch-poster.data-poster.external-signer.root-ca | string | - | external signer root CA |
node.batch-poster.data-poster.external-signer.url | string | - | external signer url |
node.batch-poster.data-poster.legacy-storage-encoding | bool | - | encodes items in a legacy way (as it was before dropping generics) |
node.batch-poster.data-poster.max-blob-tx-tip-cap-gwei | float | 1 | the maximum tip cap to post EIP-4844 blob carrying transactions at |
node.batch-poster.data-poster.max-fee-bid-multiple-bips | uint | 100000 | the maximum multiple of the current price to bid for a transaction's fees (may be exceeded due to min rbf increase, 0 = unlimited) |
node.batch-poster.data-poster.max-fee-cap-formula | string | - | mathematical formula to calculate maximum fee cap gwei the result of which would be float64. This expression is expected to be evaluated please refer https://github.com/Knetic/govaluate/blob/master/MANUAL.md to find all available mathematical operators. Currently available variables to construct the formula are BacklogOfBatches, UrgencyGWei, ElapsedTime, ElapsedTimeBase, ElapsedTimeImportance, and TargetPriceGWei (default "((BacklogOfBatches _ UrgencyGWei) ** 2) + ((ElapsedTime/ElapsedTimeBase) ** 2) _ ElapsedTimeImportance + TargetPriceGWei") |
node.batch-poster.data-poster.max-mempool-transactions | uint | 18 | the maximum number of transactions to have queued in the mempool at once (0 = unlimited) |
node.batch-poster.data-poster.max-mempool-weight | uint | 18 | the maximum number of weight (weight = min(1, tx.blobs)) to have queued in the mempool at once (0 = unlimited) |
node.batch-poster.data-poster.max-queued-transactions | int | - | the maximum number of unconfirmed transactions to track at once (0 = unlimited) |
node.batch-poster.data-poster.max-tip-cap-gwei | float | 1.2 | the maximum tip cap to post transactions at |
node.batch-poster.data-poster.min-blob-tx-tip-cap-gwei | float | 1 | the minimum tip cap to post EIP-4844 blob carrying transactions at |
node.batch-poster.data-poster.min-tip-cap-gwei | float | 0.05 | the minimum tip cap to post transactions at |
node.batch-poster.data-poster.nonce-rbf-soft-confs | uint | 1 | the maximum probable reorg depth, used to determine when a transaction will no longer likely need replaced-by-fee |
node.batch-poster.data-poster.redis-signer.fallback-verification-key | string | - | a fallback key used for message verification |
node.batch-poster.data-poster.redis-signer.signing-key | string | - | a 32-byte (64-character) hex string used to sign messages, or a path to a file containing it |
node.batch-poster.data-poster.replacement-times | durationSlice | [5m0s,10m0s,20m0s,30m0s,1h0m0s,2h0m0s,4h0m0s,6h0m0s,8h0m0s,12h0m0s,16h0m0s,18h0m0s,20h0m0s,22h0m0s] | comma-separated list of durations since first posting to attempt a replace-by-fee |
node.batch-poster.data-poster.target-price-gwei | float | 60 | the target price to use for maximum fee cap calculation |
node.batch-poster.data-poster.urgency-gwei | float | 2 | the urgency to use for maximum fee cap calculation |
node.batch-poster.data-poster.use-db-storage | bool | true | uses database storage when enabled |
node.batch-poster.data-poster.use-noop-storage | bool | - | uses noop storage, it doesn't store anything |
node.batch-poster.data-poster.wait-for-l1-finality | bool | true | only treat a transaction as confirmed after L1 finality has been achieved (recommended) |
node.batch-poster.delay-buffer-always-updatable | bool | true | always treat delay buffer as updatable |
node.batch-poster.delay-buffer-threshold-margin | uint | 25 | the number of blocks to post the batch before reaching the delay buffer threshold |
node.batch-poster.disable-dap-fallback-store-data-on-chain | bool | - | If unable to batch to DA provider, disable fallback storing data on chain |
node.batch-poster.enable | bool | - | enable posting batches to l1 |
node.batch-poster.error-delay | duration | 10s | how long to delay after error posting batch |
node.batch-poster.ethda-fallback-batch-count | int | 10 | number of batches to post to EthDA before retrying AltDA after a fallback |
node.batch-poster.extra-batch-gas | uint | 50000 | use this much more gas than estimation says is necessary to post batches |
node.batch-poster.gas-estimate-base-fee-multiple-bips | uint | 15000 | for gas estimation, use this multiple of the basefee (measured in basis points) as the max fee per gas |
node.batch-poster.gas-refunder-address | string | - | The gas refunder contract address (optional) |
node.batch-poster.ignore-blob-price | bool | - | if the parent chain supports 4844 blobs and ignore-blob-price is true, post 4844 blobs even if it's not price efficient |
node.batch-poster.l1-block-bound | string | - | only post messages to batches when they're within the max future block/timestamp as of this L1 block tag ("safe", "finalized", "latest", or "ignore" to ignore this check) |
node.batch-poster.l1-block-bound-bypass | duration | 1h0m0s | post batches even if not within the layer 1 future bounds if we're within this margin of the max delay |
node.batch-poster.max-4844-batch-size | int | - | maximum estimated compressed 4844 blob enabled batch size |
node.batch-poster.max-calldata-batch-size | int | 100000 | maximum estimated compressed calldata batch size |
node.batch-poster.max-delay | duration | 1h0m0s | maximum batch posting delay |
node.batch-poster.max-empty-batch-delay | duration | 72h0m0s | maximum empty batch posting delay, batch poster will only be able to post an empty batch if this time period building a batch has passed; if 0, disable automatic empty batch posting |
node.batch-poster.max-size | int | - | DEPRECATED: use node.batch-poster.max-calldata-batch-size instead |
node.batch-poster.parent-chain-eip7623 | string | auto | if parent chain uses EIP7623 ("yes", "no", "auto") |
node.batch-poster.parent-chain-wallet.account | string | is first account in keystore | account to use |
node.batch-poster.parent-chain-wallet.only-create-key | bool | - | if true, creates new key then exits |
node.batch-poster.parent-chain-wallet.password | string | PASSWORD_NOT_SET | wallet passphrase |
node.batch-poster.parent-chain-wallet.pathname | string | batch-poster-wallet | pathname for wallet |
node.batch-poster.parent-chain-wallet.private-key | string | - | private key for wallet |
node.batch-poster.poll-interval | duration | 10s | how long to wait after no batches are ready to be posted before checking again |
node.batch-poster.post-4844-blobs | bool | - | if the parent chain supports 4844 blobs and they're well priced, post EIP-4844 blobs |
node.batch-poster.redis-lock.background-lock | bool | - | should node always try grabbing lock in background |
node.batch-poster.redis-lock.enable | bool | true | if false, always treat this as locked and don't write the lock to redis |
node.batch-poster.redis-lock.key | string | - | key for lock |
node.batch-poster.redis-lock.lockout-duration | duration | 1m0s | how long lock is held |
node.batch-poster.redis-lock.my-id | string | - | this node's id prefix when acquiring the lock (optional) |
node.batch-poster.redis-lock.refresh-duration | duration | 10s | how long between consecutive calls to redis |
node.batch-poster.redis-url | string | - | if non-empty, the Redis URL to store queued transactions in |
node.batch-poster.reorg-resistance-margin | duration | 10m0s | do not post batch if its within this duration from layer 1 minimum bounds. Requires l1-block-bound option not be set to "ignore" |
node.batch-poster.use-access-lists | bool | true | post batches with access lists to reduce gas usage (disabled for L3s) |
node.batch-poster.wait-for-max-delay | bool | - | wait for the max batch delay, even if the batch is full |
node.block-metadata-fetcher.api-blocks-limit | uint | 100 | maximum number of blocks per arb_getRawBlockMetadata query |
node.block-metadata-fetcher.enable | bool | - | enable syncing blockMetadata using a bulk blockMetadata api |
node.block-metadata-fetcher.max-sync-interval | duration | 32m0s | maximum time between blockMetadata requests |
node.block-metadata-fetcher.source.arg-log-limit | uint | 2048 | limit size of arguments in log entries |
node.block-metadata-fetcher.source.connection-wait | duration | - | how long to wait for initial connection |
node.block-metadata-fetcher.source.jwtsecret | string | - | path to file with jwtsecret for validation - ignored if url is self or self-auth |
node.block-metadata-fetcher.source.retries | uint | 3 | number of retries in case of failure(0 mean one attempt) |
node.block-metadata-fetcher.source.retry-delay | duration | - | delay between retries |
node.block-metadata-fetcher.source.retry-errors | string | websocket: close.*|dial tcp .*|.*i/o timeout|.*connection reset by peer|.*connection refused | Errors matching this regular expression are automatically retried |
node.block-metadata-fetcher.source.timeout | duration | 10s | per-response timeout (0-disabled) |
node.block-metadata-fetcher.source.url | string | self-auth | url of server, use self for loopback websocket, self-auth for loopback with authentication |
node.block-metadata-fetcher.source.websocket-message-size-limit | int | 268435456 | websocket message size limit used by the RPC client. 0 means no limit |
node.block-metadata-fetcher.sync-interval | duration | 1m0s | minimum time between blockMetadata requests |
node.block-validator.batch-cache-limit | uint32 | 20 | limit number of old batches to keep in block-validator |
node.block-validator.block-inputs-file-path | string | ./target/validation_inputs | directory to write block validation inputs files |
node.block-validator.current-module-root | string | current | current wasm module root ('current' read from chain, 'latest' from machines/latest dir, or provide hash) |
node.block-validator.enable | bool | - | enable block-by-block validation |
node.block-validator.failure-is-fatal | bool | true | failing a validation is treated as a fatal error |
node.block-validator.forward-blocks | uint | 128 | prepare entries for up to that many blocks ahead of validation (stores batch-copy per block) |
node.block-validator.memory-free-limit | string | default | minimum free-memory limit after reaching which the blockvalidator pauses validation. Enabled by default as 1GB, to disable provide empty string |
node.block-validator.pending-upgrade-module-root | string | latest | pending upgrade wasm module root to additionally validate (hash, 'latest' or empty) |
node.block-validator.prerecorded-blocks | uint | 4 | record that many blocks ahead of validation (larger footprint) |
node.block-validator.recording-iter-limit | uint | 20 | limit on block recordings sent per iteration |
node.block-validator.redis-validation-client-config.create-streams | bool | true | create redis streams if it does not exist |
node.block-validator.redis-validation-client-config.name | string | redis validation client | validation client name |
node.block-validator.redis-validation-client-config.producer-config.check-result-interval | duration | 5s | interval in which producer checks pending messages whether consumer processing them is inactive |
node.block-validator.redis-validation-client-config.producer-config.request-timeout | duration | 3h0m0s | timeout after which the message in redis stream is considered as errored, this prevents workers from working on wrong requests indefinitely |
node.block-validator.redis-validation-client-config.redis-url | string | - | redis url |
node.block-validator.redis-validation-client-config.room | int32 | 2 | validation client room |
node.block-validator.redis-validation-client-config.stream-prefix | string | - | prefix for stream name |
node.block-validator.redis-validation-client-config.stylus-archs | strings | [wavm] | archs required for stylus workers |
node.block-validator.validation-poll | duration | 1s | poll time to check validations |
node.block-validator.validation-sent-limit | uint | 1024 | limit on block validations to keep in validation sent state |
node.block-validator.validation-server-configs-list | string | default | array of execution rpc configs given as a json string. time duration should be supplied in number indicating nanoseconds |
node.block-validator.validation-server.arg-log-limit | uint | 2048 | limit size of arguments in log entries |
node.block-validator.validation-server.connection-wait | duration | - | how long to wait for initial connection |
node.block-validator.validation-server.jwtsecret | string | - | path to file with jwtsecret for validation - ignored if url is self or self-auth |
node.block-validator.validation-server.retries | uint | 3 | number of retries in case of failure(0 mean one attempt) |
node.block-validator.validation-server.retry-delay | duration | - | delay between retries |
node.block-validator.validation-server.retry-errors | string | websocket: close.*|dial tcp .*|.*i/o timeout|.*connection reset by peer|.*connection refused | Errors matching this regular expression are automatically retried |
node.block-validator.validation-server.timeout | duration | 10s | per-response timeout (0-disabled) |
node.block-validator.validation-server.url | string | self-auth | url of server, use self for loopback websocket, self-auth for loopback with authentication |
node.block-validator.validation-server.websocket-message-size-limit | int | 268435456 | websocket message size limit used by the RPC client. 0 means no limit |
node.block-validator.validation-spawning-allowed-attempts | uint | 1 | number of attempts allowed when trying to spawn a validation before erroring out |
node.block-validator.validation-spawning-allowed-timeouts | uint | 3 | number of timeout errors allowed per validation attempt before treating it as a fatal error (separate from allowed-attempts) |
node.bold.api | bool | - | enable api |
node.bold.api-db-path | string | bold-api-db | bold api db path |
node.bold.api-host | string | 127.0.0.1 | bold api host |
node.bold.api-port | uint16 | 9393 | bold api port |
node.bold.assertion-confirming-interval | duration | 1m0s | confirm assertion interval |
node.bold.assertion-posting-interval | duration | 15m0s | assertion posting interval |
node.bold.assertion-scanning-interval | duration | 1m0s | scan assertion interval |
node.bold.auto-deposit | bool | true | auto-deposit stake token whenever making a move in BoLD that does not have enough stake token balance |
node.bold.auto-increase-allowance | bool | true | auto-increase spending allowance of the stake token by the rollup and challenge manager contracts |
node.bold.check-staker-switch-interval | duration | 1m0s | how often to check if staker can switch to bold |
node.bold.delegated-staking.custom-withdrawal-address | string | - | enable a custom withdrawal address for staking on the rollup contract, useful for delegated stakers |
node.bold.delegated-staking.enable | bool | - | enable delegated staking by having the validator call newStake on startup |
node.bold.enable-fast-confirmation | bool | - | enable fast confirmation |
node.bold.max-get-log-blocks | int | 5000 | maximum size for chunk of blocks when using get logs rpc |
node.bold.minimum-gap-to-parent-assertion | duration | 1m0s | minimum duration to wait since the parent assertion was created to post a new assertion |
node.bold.parent-chain-block-time | duration | 12s | the average block time of the parent chain where assertions are posted |
node.bold.rpc-block-number | string | finalized | define the block number to use for reading data onchain, either latest, safe, or finalized |
node.bold.start-validation-from-staked | bool | true | assume staked nodes are valid |
node.bold.state-provider-config.check-batch-finality | bool | true | check batch finality |
node.bold.state-provider-config.machine-leaves-cache-path | string | machine-hashes-cache | path to machine cache |
node.bold.state-provider-config.validator-name | string | default-validator | name identifier for cosmetic purposes |
node.bold.track-challenge-parent-assertion-hashes | strings | - | only track challenges/edges with these parent assertion hashes |
node.consensus-execution-syncer.sync-interval | duration | 300ms | Interval in which finality and sync data is pushed from consensus to execution |
node.da.anytrust.enable | bool | - | enable Anytrust Data Availability mode |
node.da.anytrust.max-batch-size | int | 1000000 | maximum batch size for AnyTrust DA (compressed) |
node.da.anytrust.panic-on-error | bool | - | whether the Data Availability Service should fail immediately on errors (not recommended) |
node.da.anytrust.request-timeout | duration | 5s | Data Availability Service timeout duration for Store requests |
node.da.anytrust.rest-aggregator.connection-wait | duration | 1s | how long to wait for initial connection |
node.da.anytrust.rest-aggregator.enable | bool | - | enable retrieval of sequencer batch data from a list of remote REST endpoints; if other AnyTrust storage types are enabled, this mode is used as a fallback |
node.da.anytrust.rest-aggregator.max-per-endpoint-stats | int | 20 | number of stats entries (latency and success rate) to keep for each REST endpoint; controls whether strategy is faster or slower to respond to changing conditions |
node.da.anytrust.rest-aggregator.online-url-list | string | - | a URL to a list of URLs of REST AnyTrust endpoints that is checked at startup; additive with the url option |
node.da.anytrust.rest-aggregator.online-url-list-fetch-interval | duration | 1h0m0s | time interval to periodically fetch url list from online-url-list |
node.da.anytrust.rest-aggregator.simple-explore-exploit-strategy.exploit-iterations | uint32 | 1000 | number of consecutive GetByHash calls to the aggregator where each call will cause it to select from REST endpoints in order of best latency and success rate, before switching to explore mode |
node.da.anytrust.rest-aggregator.simple-explore-exploit-strategy.explore-iterations | uint32 | 20 | number of consecutive GetByHash calls to the aggregator where each call will cause it to randomly select from REST endpoints until one returns successfully, before switching to exploit mode |
node.da.anytrust.rest-aggregator.strategy | string | simple-explore-exploit | strategy to use to determine order and parallelism of calling REST endpoint URLs; valid options are 'simple-explore-exploit' |
node.da.anytrust.rest-aggregator.strategy-update-interval | duration | 10s | how frequently to update the strategy with endpoint latency and error rate data |
node.da.anytrust.rest-aggregator.sync-to-storage.delay-on-error | duration | 1s | time to wait if encountered an error before retrying |
node.da.anytrust.rest-aggregator.sync-to-storage.eager | bool | - | eagerly sync batch data to this AnyTrust server's storage from the rest endpoints, using L1 as the index of batch data hashes; otherwise only sync lazily |
node.da.anytrust.rest-aggregator.sync-to-storage.eager-lower-bound-block | uint | - | when eagerly syncing, start indexing forward from this L1 block. Only used if there is no sync state |
node.da.anytrust.rest-aggregator.sync-to-storage.ignore-write-errors | bool | true | log only on failures to write when syncing; otherwise treat it as an error |
node.da.anytrust.rest-aggregator.sync-to-storage.parent-chain-blocks-per-read | uint | 100 | when eagerly syncing, max l1 blocks to read per poll |
node.da.anytrust.rest-aggregator.sync-to-storage.retention-period | duration | 360h0m0s | period to request storage to retain synced data |
node.da.anytrust.rest-aggregator.sync-to-storage.state-dir | string | - | directory to store the sync state in, ie the block number currently synced up to, so that we don't sync from scratch each time |
node.da.anytrust.rest-aggregator.sync-to-storage.sync-expired-data | bool | true | sync even data that is expired; needed for mirror configuration |
node.da.anytrust.rest-aggregator.urls | strings | - | list of URLs including 'http://' or 'https://' prefixes and port numbers to REST AnyTrust endpoints; additive with the online-url-list option |
node.da.anytrust.rest-aggregator.wait-before-try-next | duration | 2s | time to wait until trying the next set of REST endpoints while waiting for a response; the next set of REST endpoints is determined by the strategy selected |
node.da.anytrust.rpc-aggregator.assumed-honest | int | - | Number of assumed honest backends (H). If there are N backends, K=N+1-H valid responses are required to consider an Store request to be successful. |
node.da.anytrust.rpc-aggregator.backends | backendConfigList | null | JSON RPC backend configuration. This can be specified on the command line as a JSON array, eg: [{"url": "...", "pubkey": "..."},...], or as a JSON array in the config file. |
node.da.anytrust.rpc-aggregator.enable | bool | - | enable storage of sequencer batch data from a list of RPC endpoints; this should only be used by the batch poster and not in combination with other AnyTrust storage types |
node.da.anytrust.rpc-aggregator.rpc-client.data-stream.max-store-chunk-body-size | int | 5242880 | maximum HTTP body size for chunked store requests |
node.da.anytrust.rpc-aggregator.rpc-client.data-stream.rpc-methods.finalize-stream | string | das_commitChunkedStore | name of the RPC method to finalize a chunked data stream |
node.da.anytrust.rpc-aggregator.rpc-client.data-stream.rpc-methods.start-stream | string | das_startChunkedStore | name of the RPC method to start a chunked data stream |
node.da.anytrust.rpc-aggregator.rpc-client.data-stream.rpc-methods.stream-chunk | string | das_sendChunk | name of the RPC method to send a chunk of data |
node.da.anytrust.rpc-aggregator.rpc-client.enable-chunked-store | bool | true | enable data to be sent to AnyTrust in chunks instead of all at once |
node.da.anytrust.rpc-aggregator.rpc-client.rpc.arg-log-limit | uint | 2048 | limit size of arguments in log entries |
node.da.anytrust.rpc-aggregator.rpc-client.rpc.connection-wait | duration | - | how long to wait for initial connection |
node.da.anytrust.rpc-aggregator.rpc-client.rpc.jwtsecret | string | - | path to file with jwtsecret for validation - ignored if url is self or self-auth |
node.da.anytrust.rpc-aggregator.rpc-client.rpc.retries | uint | 3 | number of retries in case of failure(0 mean one attempt) |
node.da.anytrust.rpc-aggregator.rpc-client.rpc.retry-delay | duration | - | delay between retries |
node.da.anytrust.rpc-aggregator.rpc-client.rpc.retry-errors | string | websocket: close.*|dial tcp .*|.*i/o timeout|.*connection reset by peer|.*connection refused | Errors matching this regular expression are automatically retried |
node.da.anytrust.rpc-aggregator.rpc-client.rpc.timeout | duration | 10s | per-response timeout (0-disabled) |
node.da.anytrust.rpc-aggregator.rpc-client.rpc.url | string | self-auth | url of server, use self for loopback websocket, self-auth for loopback with authentication |
node.da.anytrust.rpc-aggregator.rpc-client.rpc.websocket-message-size-limit | int | 268435456 | websocket message size limit used by the RPC client. 0 means no limit |
node.da.external-provider.data-stream.max-store-chunk-body-size | int | 5242880 | maximum HTTP body size for chunked store requests |
node.da.external-provider.data-stream.rpc-methods.finalize-stream | string | daprovider_commitChunkedStore | name of the RPC method to finalize a chunked data stream |
node.da.external-provider.data-stream.rpc-methods.start-stream | string | daprovider_startChunkedStore | name of the RPC method to start a chunked data stream |
node.da.external-provider.data-stream.rpc-methods.stream-chunk | string | daprovider_sendChunk | name of the RPC method to send a chunk of data |
node.da.external-provider.enable | bool | - | enable daprovider client |
node.da.external-provider.rpc.arg-log-limit | uint | 2048 | limit size of arguments in log entries |
node.da.external-provider.rpc.connection-wait | duration | - | how long to wait for initial connection |
node.da.external-provider.rpc.jwtsecret | string | - | path to file with jwtsecret for validation - ignored if url is self or self-auth |
node.da.external-provider.rpc.retries | uint | 3 | number of retries in case of failure(0 mean one attempt) |
node.da.external-provider.rpc.retry-delay | duration | - | delay between retries |
node.da.external-provider.rpc.retry-errors | string | websocket: close.*|dial tcp .*|.*i/o timeout|.*connection reset by peer|.*connection refused | Errors matching this regular expression are automatically retried |
node.da.external-provider.rpc.timeout | duration | - | per-response timeout (0-disabled) |
node.da.external-provider.rpc.url | string | - | url of server, use self for loopback websocket, self-auth for loopback with authentication |
node.da.external-provider.rpc.websocket-message-size-limit | int | 268435456 | websocket message size limit used by the RPC client. 0 means no limit |
node.da.external-provider.store-rpc-method | string | daprovider_store | name of the store rpc method on the daprovider server (used when data streaming is disabled) |
node.da.external-provider.use-data-streaming | bool | - | use data streaming protocol for storing large payloads |
node.da.external-provider.with-writer | bool | - | implies if the daprovider rpc server supports writer interface |
node.data-availability.enable | bool | - | enable Anytrust Data Availability mode |
node.data-availability.max-batch-size | int | 1000000 | maximum batch size for AnyTrust DA (compressed) |
node.data-availability.panic-on-error | bool | - | whether the Data Availability Service should fail immediately on errors (not recommended) |
node.data-availability.request-timeout | duration | 5s | Data Availability Service timeout duration for Store requests |
node.data-availability.rest-aggregator.connection-wait | duration | 1s | how long to wait for initial connection |
node.data-availability.rest-aggregator.enable | bool | - | enable retrieval of sequencer batch data from a list of remote REST endpoints; if other AnyTrust storage types are enabled, this mode is used as a fallback |
node.data-availability.rest-aggregator.max-per-endpoint-stats | int | 20 | number of stats entries (latency and success rate) to keep for each REST endpoint; controls whether strategy is faster or slower to respond to changing conditions |
node.data-availability.rest-aggregator.online-url-list | string | - | a URL to a list of URLs of REST AnyTrust endpoints that is checked at startup; additive with the url option |
node.data-availability.rest-aggregator.online-url-list-fetch-interval | duration | 1h0m0s | time interval to periodically fetch url list from online-url-list |
node.data-availability.rest-aggregator.simple-explore-exploit-strategy.exploit-iterations | uint32 | 1000 | number of consecutive GetByHash calls to the aggregator where each call will cause it to select from REST endpoints in order of best latency and success rate, before switching to explore mode |
node.data-availability.rest-aggregator.simple-explore-exploit-strategy.explore-iterations | uint32 | 20 | number of consecutive GetByHash calls to the aggregator where each call will cause it to randomly select from REST endpoints until one returns successfully, before switching to exploit mode |
node.data-availability.rest-aggregator.strategy | string | simple-explore-exploit | strategy to use to determine order and parallelism of calling REST endpoint URLs; valid options are 'simple-explore-exploit' |
node.data-availability.rest-aggregator.strategy-update-interval | duration | 10s | how frequently to update the strategy with endpoint latency and error rate data |
node.data-availability.rest-aggregator.sync-to-storage.delay-on-error | duration | 1s | time to wait if encountered an error before retrying |
node.data-availability.rest-aggregator.sync-to-storage.eager | bool | - | eagerly sync batch data to this AnyTrust server's storage from the rest endpoints, using L1 as the index of batch data hashes; otherwise only sync lazily |
node.data-availability.rest-aggregator.sync-to-storage.eager-lower-bound-block | uint | - | when eagerly syncing, start indexing forward from this L1 block. Only used if there is no sync state |
node.data-availability.rest-aggregator.sync-to-storage.ignore-write-errors | bool | true | log only on failures to write when syncing; otherwise treat it as an error |
node.data-availability.rest-aggregator.sync-to-storage.parent-chain-blocks-per-read | uint | 100 | when eagerly syncing, max l1 blocks to read per poll |
node.data-availability.rest-aggregator.sync-to-storage.retention-period | duration | 360h0m0s | period to request storage to retain synced data |
node.data-availability.rest-aggregator.sync-to-storage.state-dir | string | - | directory to store the sync state in, ie the block number currently synced up to, so that we don't sync from scratch each time |
node.data-availability.rest-aggregator.sync-to-storage.sync-expired-data | bool | true | sync even data that is expired; needed for mirror configuration |
node.data-availability.rest-aggregator.urls | strings | - | list of URLs including 'http://' or 'https://' prefixes and port numbers to REST AnyTrust endpoints; additive with the online-url-list option |
node.data-availability.rest-aggregator.wait-before-try-next | duration | 2s | time to wait until trying the next set of REST endpoints while waiting for a response; the next set of REST endpoints is determined by the strategy selected |
node.data-availability.rpc-aggregator.assumed-honest | int | - | Number of assumed honest backends (H). If there are N backends, K=N+1-H valid responses are required to consider an Store request to be successful. |
node.data-availability.rpc-aggregator.backends | backendConfigList | null | JSON RPC backend configuration. This can be specified on the command line as a JSON array, eg: [{"url": "...", "pubkey": "..."},...], or as a JSON array in the config file. |
node.data-availability.rpc-aggregator.enable | bool | - | enable storage of sequencer batch data from a list of RPC endpoints; this should only be used by the batch poster and not in combination with other AnyTrust storage types |
node.data-availability.rpc-aggregator.rpc-client.data-stream.max-store-chunk-body-size | int | 5242880 | maximum HTTP body size for chunked store requests |
node.data-availability.rpc-aggregator.rpc-client.data-stream.rpc-methods.finalize-stream | string | das_commitChunkedStore | name of the RPC method to finalize a chunked data stream |
node.data-availability.rpc-aggregator.rpc-client.data-stream.rpc-methods.start-stream | string | das_startChunkedStore | name of the RPC method to start a chunked data stream |
node.data-availability.rpc-aggregator.rpc-client.data-stream.rpc-methods.stream-chunk | string | das_sendChunk | name of the RPC method to send a chunk of data |
node.data-availability.rpc-aggregator.rpc-client.enable-chunked-store | bool | true | enable data to be sent to AnyTrust in chunks instead of all at once |
node.data-availability.rpc-aggregator.rpc-client.rpc.arg-log-limit | uint | 2048 | limit size of arguments in log entries |
node.data-availability.rpc-aggregator.rpc-client.rpc.connection-wait | duration | - | how long to wait for initial connection |
node.data-availability.rpc-aggregator.rpc-client.rpc.jwtsecret | string | - | path to file with jwtsecret for validation - ignored if url is self or self-auth |
node.data-availability.rpc-aggregator.rpc-client.rpc.retries | uint | 3 | number of retries in case of failure(0 mean one attempt) |
node.data-availability.rpc-aggregator.rpc-client.rpc.retry-delay | duration | - | delay between retries |
node.data-availability.rpc-aggregator.rpc-client.rpc.retry-errors | string | websocket: close.*|dial tcp .*|.*i/o timeout|.*connection reset by peer|.*connection refused | Errors matching this regular expression are automatically retried |
node.data-availability.rpc-aggregator.rpc-client.rpc.timeout | duration | 10s | per-response timeout (0-disabled) |
node.data-availability.rpc-aggregator.rpc-client.rpc.url | string | self-auth | url of server, use self for loopback websocket, self-auth for loopback with authentication |
node.data-availability.rpc-aggregator.rpc-client.rpc.websocket-message-size-limit | int | 268435456 | websocket message size limit used by the RPC client. 0 means no limit |
node.delayed-sequencer.enable | bool | - | enable delayed sequencer |
node.delayed-sequencer.filtered-tx-full-retry-interval | duration | 30s | how often to do a full re-execution when halted on a filtered delayed message |
node.delayed-sequencer.finalize-distance | int | 20 | how many blocks in the past L1 block is considered final (ignored when using Merge finality) |
node.delayed-sequencer.require-full-finality | bool | - | whether to wait for full finality before sequencing delayed messages |
node.delayed-sequencer.rescan-interval | duration | 1s | frequency to rescan for new delayed messages (the parent chain reader's poll-interval config is more important than this) |
node.delayed-sequencer.use-merge-finality | bool | true | whether to use The Merge's notion of finality before sequencing delayed messages |
node.execution-rpc-client.arg-log-limit | uint | 2048 | limit size of arguments in log entries |
node.execution-rpc-client.connection-wait | duration | - | how long to wait for initial connection |
node.execution-rpc-client.jwtsecret | string | - | path to file with jwtsecret for validation - ignored if url is self or self-auth |
node.execution-rpc-client.retries | uint | 3 | number of retries in case of failure(0 mean one attempt) |
node.execution-rpc-client.retry-delay | duration | - | delay between retries |
node.execution-rpc-client.retry-errors | string | websocket: close.*|dial tcp .*|.*i/o timeout|.*connection reset by peer|.*connection refused | Errors matching this regular expression are automatically retried |
node.execution-rpc-client.timeout | duration | - | per-response timeout (0-disabled) |
node.execution-rpc-client.url | string | - | url of server, use self for loopback websocket, self-auth for loopback with authentication |
node.execution-rpc-client.websocket-message-size-limit | int | 268435456 | websocket message size limit used by the RPC client. 0 means no limit |
node.feed.input.enable-compression | bool | true | enable per message deflate compression support |
node.feed.input.reconnect-initial-backoff | duration | 1s | initial duration to wait before reconnect |
node.feed.input.reconnect-maximum-backoff | duration | 1m4s | maximum duration to wait before reconnect |
node.feed.input.require-chain-id | bool | - | require chain id to be present on connect |
node.feed.input.require-feed-version | bool | - | require feed version to be present on connect |
node.feed.input.secondary-url | strings | - | list of secondary URLs of sequencer feed source. Would be started in the order they appear in the list when primary feeds fails |
node.feed.input.timeout | duration | 20s | duration to wait before timing out connection to sequencer feed |
node.feed.input.url | strings | - | list of primary URLs of sequencer feed source |
node.feed.input.verify.accept-sequencer | bool | true | accept verified message from sequencer |
node.feed.input.verify.allowed-addresses | strings | - | a list of allowed addresses |
node.feed.output.addr | string | - | address to bind the relay feed output to |
node.feed.output.backlog.enable-backlog-deep-copy | bool | - | enable deep copying of L2 messages for memory profiling (debug only) |
node.feed.output.backlog.segment-limit | int | 240 | the maximum number of messages each segment within the backlog can contain |
node.feed.output.client-delay | duration | - | delay the first messages sent to each client by this amount |
node.feed.output.client-timeout | duration | 15s | duration to wait before timing out connections to client |
node.feed.output.connection-limits.enable | bool | - | enable broadcaster per-client connection limiting |
node.feed.output.connection-limits.per-ip-limit | int | 5 | limit clients, as identified by IPv4/v6 address, to this many connections to this relay |
node.feed.output.connection-limits.per-ipv6-cidr-48-limit | int | 20 | limit ipv6 clients, as identified by IPv6 address masked with /48, to this many connections to this relay |
node.feed.output.connection-limits.per-ipv6-cidr-64-limit | int | 10 | limit ipv6 clients, as identified by IPv6 address masked with /64, to this many connections to this relay |
node.feed.output.connection-limits.reconnect-cooldown-period | duration | - | time to wait after a relay client disconnects before the disconnect is registered with respect to the limit for this client |
node.feed.output.enable | bool | - | enable broadcaster |
node.feed.output.enable-compression | bool | - | enable per message deflate compression support |
node.feed.output.handshake-timeout | duration | 1s | duration to wait before timing out HTTP to WS upgrade |
node.feed.output.limit-catchup | bool | - | only supply catchup buffer if requested sequence number is reasonable |
node.feed.output.log-connect | bool | - | log every client connect |
node.feed.output.log-disconnect | bool | - | log every client disconnect |
node.feed.output.max-catchup | int | -1 | the maximum size of the catchup buffer (-1 means unlimited) |
node.feed.output.max-send-queue | int | 4096 | maximum number of messages allowed to accumulate before client is disconnected |
node.feed.output.ping | duration | 5s | duration for ping interval |
node.feed.output.port | string | 9642 | port to bind the relay feed output to |
node.feed.output.queue | int | 100 | queue size for HTTP to WS upgrade |
node.feed.output.read-timeout | duration | 1s | duration to wait before timing out reading data (i.e. pings) from clients |
node.feed.output.require-compression | bool | - | require clients to use compression |
node.feed.output.require-version | bool | - | don't connect if client version not present |
node.feed.output.signed | bool | - | sign broadcast messages with the batch poster wallet |
node.feed.output.workers | int | 100 | number of threads to reserve for HTTP to WS upgrade |
node.feed.output.write-timeout | duration | 2s | duration to wait before timing out writing data to clients |
node.inbox-reader.check-delay | duration | 1m0s | the maximum time to wait between inbox checks (if not enough new blocks are found) |
node.inbox-reader.default-blocks-to-read | uint | 100 | the default number of blocks to read at once (will vary based on traffic by default) |
node.inbox-reader.delay-blocks | uint | - | number of latest blocks to ignore to reduce reorgs |
node.inbox-reader.max-blocks-to-read | uint | 2000 | if adjust-blocks-to-read is enabled, the maximum number of blocks to read at once |
node.inbox-reader.min-blocks-to-read | uint | 1 | the minimum number of blocks to read at once (when caught up lowers load on L1) |
node.inbox-reader.read-mode | string | latest | mode to only read latest or safe or finalized L1 blocks. Enabling safe or finalized disables feed input and output. Defaults to latest. Takes string input, valid strings- latest, safe, finalized |
node.inbox-reader.target-messages-read | uint | 500 | if adjust-blocks-to-read is enabled, the target number of messages to read at once |
node.maintenance.check-interval | duration | 1m0s | how often to check if maintenance should be run |
node.maintenance.enable | bool | - | enable maintenance runner |
node.maintenance.lock.background-lock | bool | - | should node always try grabbing lock in background |
node.maintenance.lock.enable | bool | true | if false, always treat this as locked and don't write the lock to redis |
node.maintenance.lock.key | string | - | key for lock |
node.maintenance.lock.lockout-duration | duration | 1m0s | how long lock is held |
node.maintenance.lock.my-id | string | - | this node's id prefix when acquiring the lock (optional) |
node.maintenance.lock.refresh-duration | duration | 10s | how long between consecutive calls to redis |
node.message-extraction.blocks-to-prefetch | uint | 499 | the number of blocks to prefetch relevant logs from. Recommend using max allowed range for eth_getLogs rpc query |
node.message-extraction.enable | bool | - | enable message extraction service |
node.message-extraction.log-extraction-status-frequency-blocks | uint | 100 | frequency of logging message extraction status in terms of number of blocks processed |
node.message-extraction.read-mode | string | latest | mode to only read latest or safe or finalized L1 blocks. Enabling safe or finalized disables feed input and output. Defaults to latest. Takes string input, valid strings- latest, safe, finalized |
node.message-extraction.retry-interval | duration | 500ms | wait time before retring upon a failure |
node.message-extraction.stall-tolerance | uint | 10 | max times the MEL fsm is allowed to be stuck without logging error |
node.message-pruner.enable | bool | true | enable message pruning |
node.message-pruner.min-batches-left | uint | 1000 | min number of batches not pruned |
node.message-pruner.prune-interval | duration | 1m0s | interval for running message pruner |
node.parent-chain-reader.enable | bool | true | enable reader connection |
node.parent-chain-reader.old-header-timeout | duration | 5m0s | warns if the latest l1 block is at least this old |
node.parent-chain-reader.poll-interval | duration | 15s | interval when polling endpoint |
node.parent-chain-reader.poll-only | bool | - | do not attempt to subscribe to header events |
node.parent-chain-reader.poll-timeout | duration | 5s | timeout when polling endpoint |
node.parent-chain-reader.subscribe-err-interval | duration | 5m0s | interval for subscribe error |
node.parent-chain-reader.tx-timeout | duration | 5m0s | timeout when waiting for a transaction |
node.parent-chain-reader.use-finality-data | bool | true | use l1 data about finalized/safe blocks |
node.resource-mgmt.mem-free-limit | string | - | Decline RPC calls if free memory excluding the page cache is below this amount |
node.rpc-server.authenticated | bool | true | rpc is authenticated |
node.rpc-server.enable | bool | - | enable consensus node to serve over rpc |
node.rpc-server.public | bool | - | rpc is public |
node.seq-coordinator.block-metadata-duration | duration | 240h0m0s | expiration duration for block metadata keys in Redis |
node.seq-coordinator.chosen-healthcheck-addr | string | - | if non-empty, launch an HTTP service binding to this address that returns status code 200 when chosen and 503 otherwise |
node.seq-coordinator.delete-finalized-msgs | bool | true | enable deleting of finalized messages from redis |
node.seq-coordinator.enable | bool | - | enable sequence coordinator |
node.seq-coordinator.handoff-timeout | duration | 30s | the maximum amount of time to spend waiting for another sequencer to accept the lockout when handing it off on shutdown or db compaction |
node.seq-coordinator.lockout-duration | duration | 1m0s | duration to hold the sequencer lockout after acquiring it |
node.seq-coordinator.lockout-spare | duration | 30s | time to subtract from lockout duration to ensure timely renewal |
node.seq-coordinator.msg-per-poll | uint | 2000 | will only be marked as wanting the lockout if not too far behind |
node.seq-coordinator.my-url | string | <?INVALID-URL?> | url for this sequencer if it is the chosen |
node.seq-coordinator.new-redis-url | string | - | switch to the new Redis URL to coordinate via |
node.seq-coordinator.redis-quorum-size | uint | 1 | the quorum size needed to qualify a redis GET as valid |
node.seq-coordinator.redis-url | string | - | the Redis URL to coordinate via |
node.seq-coordinator.release-retries | int | 4 | the number of times to retry releasing the wants lockout and chosen one status on shutdown |
node.seq-coordinator.retry-interval | duration | 50ms | interval to wait before retrying after an error |
node.seq-coordinator.safe-shutdown-delay | duration | 5s | if non-zero will add delay after transferring control |
node.seq-coordinator.seq-num-duration | duration | 240h0m0s | expiration duration for message count keys in Redis |
node.seq-coordinator.signer.ecdsa.accept-sequencer | bool | true | accept verified message from sequencer |
node.seq-coordinator.signer.ecdsa.allowed-addresses | strings | - | a list of allowed addresses |
node.seq-coordinator.signer.symmetric-fallback | bool | - | if to fall back to symmetric hmac |
node.seq-coordinator.signer.symmetric-sign | bool | - | if to sign with symmetric hmac |
node.seq-coordinator.signer.symmetric.fallback-verification-key | string | - | a fallback key used for message verification |
node.seq-coordinator.signer.symmetric.signing-key | string | - | a 32-byte (64-character) hex string used to sign messages, or a path to a file containing it |
node.seq-coordinator.update-interval | duration | 250ms | interval between sequencer coordinator update attempts |
node.sequencer | bool | - | enable sequencer |
node.staker.confirmation-blocks | int | 12 | confirmation blocks |
node.staker.contract-wallet-address | string | - | validator smart contract wallet public address |
node.staker.data-poster.allocate-mempool-balance | bool | true | if true, don't put transactions in the mempool that spend a total greater than the batch poster's balance |
node.staker.data-poster.disable-new-tx | bool | - | disable posting new transactions, data poster will still keep confirming existing batches |
node.staker.data-poster.elapsed-time-base | duration | 10m0s | unit to measure the time elapsed since creation of transaction used for maximum fee cap calculation |
node.staker.data-poster.elapsed-time-importance | float | 10 | weight given to the units of time elapsed used for maximum fee cap calculation |
node.staker.data-poster.external-signer.address | string | - | external signer address |
node.staker.data-poster.external-signer.client-cert | string | - | rpc client cert |
node.staker.data-poster.external-signer.client-private-key | string | - | rpc client private key |
node.staker.data-poster.external-signer.insecure-skip-verify | bool | - | skip TLS certificate verification |
node.staker.data-poster.external-signer.method | string | eth_signTransaction | external signer method |
node.staker.data-poster.external-signer.root-ca | string | - | external signer root CA |
node.staker.data-poster.external-signer.url | string | - | external signer url |
node.staker.data-poster.legacy-storage-encoding | bool | - | encodes items in a legacy way (as it was before dropping generics) |
node.staker.data-poster.max-fee-bid-multiple-bips | uint | 100000 | the maximum multiple of the current price to bid for a transaction's fees (may be exceeded due to min rbf increase, 0 = unlimited) |
node.staker.data-poster.max-fee-cap-formula | string | - | mathematical formula to calculate maximum fee cap gwei the result of which would be float64. This expression is expected to be evaluated please refer https://github.com/Knetic/govaluate/blob/master/MANUAL.md to find all available mathematical operators. Currently available variables to construct the formula are BacklogOfBatches, UrgencyGWei, ElapsedTime, ElapsedTimeBase, ElapsedTimeImportance, and TargetPriceGWei (default "((BacklogOfBatches _ UrgencyGWei) ** 2) + ((ElapsedTime/ElapsedTimeBase) ** 2) _ ElapsedTimeImportance + TargetPriceGWei") |
node.staker.data-poster.max-mempool-transactions | uint | 1 | the maximum number of transactions to have queued in the mempool at once (0 = unlimited) |
node.staker.data-poster.max-mempool-weight | uint | 1 | the maximum number of weight (weight = min(1, tx.blobs)) to have queued in the mempool at once (0 = unlimited) |
node.staker.data-poster.max-queued-transactions | int | - | the maximum number of unconfirmed transactions to track at once (0 = unlimited) |
node.staker.data-poster.max-tip-cap-gwei | float | 1.2 | the maximum tip cap to post transactions at |
node.staker.data-poster.min-tip-cap-gwei | float | 0.05 | the minimum tip cap to post transactions at |
node.staker.data-poster.nonce-rbf-soft-confs | uint | 1 | the maximum probable reorg depth, used to determine when a transaction will no longer likely need replaced-by-fee |
node.staker.data-poster.redis-signer.fallback-verification-key | string | - | a fallback key used for message verification |
node.staker.data-poster.redis-signer.signing-key | string | - | a 32-byte (64-character) hex string used to sign messages, or a path to a file containing it |
node.staker.data-poster.replacement-times | durationSlice | [5m0s,10m0s,20m0s,30m0s,1h0m0s,2h0m0s,4h0m0s,6h0m0s,8h0m0s,12h0m0s,16h0m0s,18h0m0s,20h0m0s,22h0m0s] | comma-separated list of durations since first posting to attempt a replace-by-fee |
node.staker.data-poster.target-price-gwei | float | 60 | the target price to use for maximum fee cap calculation |
node.staker.data-poster.urgency-gwei | float | 2 | the urgency to use for maximum fee cap calculation |
node.staker.data-poster.use-db-storage | bool | true | uses database storage when enabled |
node.staker.data-poster.use-noop-storage | bool | - | uses noop storage, it doesn't store anything |
node.staker.data-poster.wait-for-l1-finality | bool | true | only treat a transaction as confirmed after L1 finality has been achieved (recommended) |
node.staker.disable-challenge | bool | - | disable validator challenge |
node.staker.enable | bool | true | enable validator |
node.staker.enable-fast-confirmation | bool | - | enable fast confirmation |
node.staker.extra-gas | uint | 50000 | use this much more gas than estimation says is necessary to post transactions |
node.staker.gas-refunder-address | string | - | The gas refunder contract address (optional) |
node.staker.log-query-batch-size | uint | - | range ro query from eth_getLogs |
node.staker.make-assertion-interval | duration | 1h0m0s | if configured with the makeNodes strategy, how often to create new assertions (bypassed in case of a dispute) |
node.staker.only-create-wallet-contract | bool | - | only create smart wallet contract and exit |
node.staker.parent-chain-wallet.account | string | is first account in keystore | account to use |
node.staker.parent-chain-wallet.only-create-key | bool | - | if true, creates new key then exits |
node.staker.parent-chain-wallet.password | string | PASSWORD_NOT_SET | wallet passphrase |
node.staker.parent-chain-wallet.pathname | string | validator-wallet | pathname for wallet |
node.staker.parent-chain-wallet.private-key | string | - | private key for wallet |
node.staker.posting-strategy.high-gas-delay-blocks | int | - | high gas delay blocks |
node.staker.posting-strategy.high-gas-threshold | float | - | high gas threshold |
node.staker.redis-url | string | - | redis url for L1 validator |
node.staker.staker-interval | duration | 1m0s | how often the L1 validator should check the status of the L1 rollup and maybe take action with its stake |
node.staker.start-validation-from-staked | bool | true | assume staked nodes are valid |
node.staker.strategy | string | Watchtower | L1 validator strategy, either watchtower, defensive, stakeLatest, or makeNodes |
node.staker.use-smart-contract-wallet | bool | - | use a smart contract wallet instead of an EOA address |
node.sync-monitor.msg-lag | duration | 1s | allowed msg lag while still considered in sync |
node.transaction-streamer.execute-message-loop-delay | duration | 100ms | delay when polling calls to execute messages |
node.transaction-streamer.max-broadcaster-queue-size | int | 50000 | maximum cache of pending broadcaster messages |
node.transaction-streamer.max-reorg-resequence-depth | int | 1024 | maximum number of messages to attempt to resequence on reorg (0 = never resequence, -1 = always resequence) |
node.transaction-streamer.shutdown-on-blockhash-mismatch | bool | - | if set the node gracefully shuts down upon detecting mismatch in feed and locally computed blockhash. This is turned off by default |
node.transaction-streamer.sync-till-block | uint | - | node will not sync past this block |
node.transaction-streamer.track-block-metadata-from | uint | - | block number to start saving blockmetadata, 0 to disable |
node.version-alerter-server.enable | bool | - | enable arb_getMinRequiredNitroVersion endpoint that returns minimum required version of the nitro node software |
node.version-alerter-server.min-required-nitro-by-date | string | - | minimum required version of the nitro node software by date. Second string in the result of querying arb_getMinRequiredNitroVersion endpoint |
node.version-alerter-server.min-required-nitro-by-version | string | - | minimum required version of the nitro node software. First string in the result of querying arb_getMinRequiredNitroVersion endpoint |
node.version-alerter-server.upgrade-deadline | string | - | deadline to upgrade the nitro node software. Third string in the result of querying arb_getMinRequiredNitroVersion endpoint |
parent-chain
Related guide: Configuration system
parent-chain flags (14)
| Flag | Type | Default | Description |
|---|---|---|---|
parent-chain.blob-client.authorization | string | - | Value to send with the HTTP Authorization: header for Beacon REST requests, must include both scheme and scheme parameters |
parent-chain.blob-client.beacon-url | string | - | Beacon Chain RPC URL to use for fetching blobs (normally on port 3500) |
parent-chain.blob-client.blob-directory | string | - | Full path of the directory to save fetched blobs |
parent-chain.blob-client.secondary-beacon-url | string | - | Backup beacon Chain RPC URL to use for fetching blobs (normally on port 3500) when unable to fetch from primary |
parent-chain.connection.arg-log-limit | uint | 2048 | limit size of arguments in log entries |
parent-chain.connection.connection-wait | duration | 1m0s | how long to wait for initial connection |
parent-chain.connection.jwtsecret | string | - | path to file with jwtsecret for validation - ignored if url is self or self-auth |
parent-chain.connection.retries | uint | 2 | number of retries in case of failure(0 mean one attempt) |
parent-chain.connection.retry-delay | duration | - | delay between retries |
parent-chain.connection.retry-errors | string | - | Errors matching this regular expression are automatically retried |
parent-chain.connection.timeout | duration | 1m0s | per-response timeout (0-disabled) |
parent-chain.connection.url | string | - | url of server, use self for loopback websocket, self-auth for loopback with authentication |
parent-chain.connection.websocket-message-size-limit | int | 268435456 | websocket message size limit used by the RPC client. 0 means no limit |
parent-chain.id | uint | - | if set other than 0, will be used to validate database and L1 connection |
persistent
Related guide: Docker and CLI binaries
persistent flags (8)
| Flag | Type | Default | Description |
|---|---|---|---|
persistent.ancient | string | - | directory of ancient where the chain freezer can be opened |
persistent.chain | string | - | directory to store chain state |
persistent.db-engine | string | - | backing database implementation to use. If set to empty string the database type will be autodetected and if no pre-existing database is found it will default to creating new pebble database ('leveldb', 'pebble' or '' = auto-detect) |
persistent.global-config | string | .arbitrum | directory to store global config |
persistent.handles | int | 512 | number of file descriptor handles to use for the database |
persistent.log-dir | string | - | directory to store log file |
persistent.pebble.max-concurrent-compactions | int | 2 | maximum number of concurrent compactions |
persistent.pebble.sync-mode | bool | - | if true sync mode is used (data needs to be written to WAL before the write is marked as completed) |
pprof
Related guide: Node tuning and monitoring
pprof flags (1)
| Flag | Type | Default | Description |
|---|---|---|---|
pprof | bool | - | enable pprof |
pprof-cfg
Related guide: Node tuning and monitoring
pprof-cfg flags (2)
| Flag | Type | Default | Description |
|---|---|---|---|
pprof-cfg.addr | string | 127.0.0.1 | pprof server address |
pprof-cfg.port | int | 6071 | pprof server port |
rpc
Related guide: Configuration system
rpc flags (2)
| Flag | Type | Default | Description |
|---|---|---|---|
rpc.batch-request-limit | int | 1000 | the maximum number of requests in a batch (0 means no limit) |
rpc.max-batch-response-size | int | 10000000 | the maximum response size for a JSON-RPC request measured in bytes (0 means no limit) |
validation
Related guide: Node tuning and monitoring
validation flags (26)
| Flag | Type | Default | Description |
|---|---|---|---|
validation.api-auth | bool | true | validate is an authenticated API |
validation.api-public | bool | - | validate is a public API |
validation.arbitrator.execution-run-timeout | duration | 15m0s | timeout before discarding execution run |
validation.arbitrator.execution.cached-challenge-machines | uint | 4 | how many machines to store in cache while working on a challenge (should be even) |
validation.arbitrator.execution.initial-steps | uint | 100000 | initial steps between machines |
validation.arbitrator.output-path | string | ./target/output | path to write machines to |
validation.arbitrator.redis-validation-server-config.buffer-reads | bool | true | buffer reads (read next while working) |
validation.arbitrator.redis-validation-server-config.consumer-config.idletime-to-autoclaim | duration | 5m0s | After a message spends this amount of time in PEL (Pending Entries List i.e claimed by another consumer but not Acknowledged) it will be allowed to be autoclaimed by other consumers. This option should be set to the same value for all consumers and producers. |
validation.arbitrator.redis-validation-server-config.consumer-config.max-retry-count | int | -1 | number of message retries after which this consumer will set an error response and Acknowledge the message (-1 = no limit) |
validation.arbitrator.redis-validation-server-config.consumer-config.response-entry-timeout | duration | 1h0m0s | timeout for response entry |
validation.arbitrator.redis-validation-server-config.consumer-config.retry | bool | true | enables autoclaim for this consumer, if set to false this consumer will not check messages from PEL (Pending Entries List) |
validation.arbitrator.redis-validation-server-config.module-roots | strings | - | Supported module root hashes |
validation.arbitrator.redis-validation-server-config.redis-url | string | - | url of redis server |
validation.arbitrator.redis-validation-server-config.stream-prefix | string | - | prefix for stream name |
validation.arbitrator.redis-validation-server-config.stream-timeout | duration | 10m0s | Timeout on polling for existence of redis streams |
validation.arbitrator.redis-validation-server-config.workers | int | - | number of validation threads (0 to use number of CPUs) |
validation.arbitrator.workers | int | - | number of concurrent validation threads |
validation.jit.cranelift | bool | true | use Cranelift instead of LLVM when validating blocks using the jit-accelerated block validator |
validation.jit.jit-path | string | - | path to jit executable, if empty, attempts to find jit executable relative to nitro binary or in PATH |
validation.jit.max-execution-time | duration | 10m0s | if execution time used by a jit wasm exceeds this limit, a rpc error is returned |
validation.jit.wasm-memory-usage-limit | int | 4294967296 | if memory used by a jit wasm exceeds this limit, a warning is logged |
validation.jit.workers | int | - | number of concurrent validation threads |
validation.use-jit | bool | true | use jit for validation |
validation.wasm.allowed-wasm-module-roots | strings | - | list of WASM module roots or machine base paths to match against on-chain WasmModuleRoot |
validation.wasm.enable-wasmroots-check | bool | true | enable check for compatibility of on-chain WASM module root with node |
validation.wasm.root-path | string | - | path to machine folders, each containing wasm files (machine.v2.wavm.br, replay.wasm) |
version-alerter
Related guide: Configuration system
version-alerter flags (12)
| Flag | Type | Default | Description |
|---|---|---|---|
version-alerter.connection.arg-log-limit | uint | 2048 | limit size of arguments in log entries |
version-alerter.connection.connection-wait | duration | - | how long to wait for initial connection |
version-alerter.connection.jwtsecret | string | - | path to file with jwtsecret for validation - ignored if url is self or self-auth |
version-alerter.connection.retries | uint | 3 | number of retries in case of failure(0 mean one attempt) |
version-alerter.connection.retry-delay | duration | - | delay between retries |
version-alerter.connection.retry-errors | string | websocket: close.*|dial tcp .*|.*i/o timeout|.*connection reset by peer|.*connection refused | Errors matching this regular expression are automatically retried |
version-alerter.connection.timeout | duration | 10s | per-response timeout (0-disabled) |
version-alerter.connection.url | string | self-auth | url of server, use self for loopback websocket, self-auth for loopback with authentication |
version-alerter.connection.websocket-message-size-limit | int | 268435456 | websocket message size limit used by the RPC client. 0 means no limit |
version-alerter.enable | bool | - | enable querying arb_getMinRequiredNitroVersion endpoint in regular intervals and firing alerts if the node software is below the required version |
version-alerter.ping-interval | duration | 5m0s | how often the nitro version alerter should ping arb_getMinRequiredNitroVersion for data |
version-alerter.upgrade-grace-period | duration | - | represents grace period up until the upgrade deadline received from arb_getMinRequiredNitroVersion, determines escalation of messages regarding node software upgrade |
ws
Related guide: Configuration system
ws flags (6)
| Flag | Type | Default | Description |
|---|---|---|---|
ws.addr | string | - | WS-RPC server listening interface |
ws.api | strings | [net,web3,eth,arb] | APIs offered over the WS-RPC interface |
ws.expose-all | bool | - | expose private api via websocket |
ws.origins | strings | - | Origins from which to accept websockets requests |
ws.port | int | 8548 | WS-RPC server listening port |
ws.rpcprefix | string | - | WS path path prefix on which JSON-RPC is served. Use '/' to serve on all paths |