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: 634 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 |
blocks-reexecutor
Related guide: Configuration system
blocks-reexecutor flags (7)
| Flag | Type | Default | Description |
|---|---|---|---|
blocks-reexecutor.blocks | string | [[0,0]] | json encoded list of block ranges in the form of start and end block numbers in a list of size 2 |
blocks-reexecutor.enable | bool | - | enables re-execution of a range of blocks against historic state |
blocks-reexecutor.min-blocks-per-thread | uint | - | minimum number of blocks to execute per thread. When mode is random this acts as the size of random block range sample |
blocks-reexecutor.mode | string | random | mode to run the blocks-reexecutor on. Valid modes full and random. full - execute all the blocks in the given range. random - execute a random sample range of blocks with in a given range |
blocks-reexecutor.room | int | 2 | number of threads to parallelize blocks re-execution |
blocks-reexecutor.trie-clean-limit | int | - | memory allowance (MB) to use for caching trie nodes in memory |
blocks-reexecutor.validate-multigas | bool | - | if set, validate the sum of multi-gas dimensions match the single-gas |
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 (10)
| 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.reload-interval | duration | - | how often to reload configuration (0=disable periodic reloading) |
conf.s3.access-key | string | - | S3 access key |
conf.s3.bucket | string | - | S3 bucket |
conf.s3.object-key | string | - | S3 object key |
conf.s3.region | string | - | S3 region |
conf.s3.secret-key | string | - | S3 secret key |
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 |
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 (28)
| 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.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 | "pruned" | if set, searches for the latest snapshot of the given kind (accepted values: "archive" |
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 | - | 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 (default "auto") |
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 (334)
| Flag | Type | Default | Description |
|---|---|---|---|
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 | 11 | batch compression level |
node.batch-poster.das-retention-period | duration | 360h0m0s | In AnyTrust mode, the period which DASes are requested to retain the stored batches. |
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.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-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 |
node.batch-poster.max-size | int | 100000 | maximum estimated compressed batch size |
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.* | Errors matching this regular expression are automatically retried |
node.block-metadata-fetcher.source.timeout | duration | - | 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.* | Errors matching this regular expression are automatically retried |
node.block-validator.validation-server.timeout | duration | - | 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.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-provider.data-stream.max-store-chunk-body-size | int | 5242880 | maximum HTTP body size for chunked store requests |
node.da-provider.data-stream.rpc-methods.finalize-stream | string | daprovider_commitChunkedStore | name of the RPC method to finalize a chunked data stream |
node.da-provider.data-stream.rpc-methods.start-stream | string | daprovider_startChunkedStore | name of the RPC method to start a chunked data stream |
node.da-provider.data-stream.rpc-methods.stream-chunk | string | daprovider_sendChunk | name of the RPC method to send a chunk of data |
node.da-provider.enable | bool | - | enable daprovider client |
node.da-provider.rpc.arg-log-limit | uint | 2048 | limit size of arguments in log entries |
node.da-provider.rpc.connection-wait | duration | - | how long to wait for initial connection |
node.da-provider.rpc.jwtsecret | string | - | path to file with jwtsecret for validation - ignored if url is self or self-auth |
node.da-provider.rpc.retries | uint | 3 | number of retries in case of failure(0 mean one attempt) |
node.da-provider.rpc.retry-delay | duration | - | delay between retries |
node.da-provider.rpc.retry-errors | string | websocket: close.* | Errors matching this regular expression are automatically retried |
node.da-provider.rpc.timeout | duration | - | per-response timeout (0-disabled) |
node.da-provider.rpc.url | string | - | url of server, use self for loopback websocket, self-auth for loopback with authentication |
node.da-provider.rpc.websocket-message-size-limit | int | 268435456 | websocket message size limit used by the RPC client. 0 means no limit |
node.da-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-provider.use-data-streaming | bool | - | use data streaming protocol for storing large payloads |
node.da-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.panic-on-error | bool | - | whether the Data Availability Service should fail immediately on errors (not recommended) |
node.data-availability.parent-chain-connection-attempts | int | 15 | parent chain RPC connection attempts (spaced out at least 1 second per attempt, 0 to retry infinitely), only used in standalone daserver; when running as part of a node that node's parent chain configuration is used |
node.data-availability.parent-chain-node-url | string | - | URL for parent chain node, only used in standalone daserver and daprovider; when running as part of a node that node's L1 configuration is used |
node.data-availability.request-timeout | duration | 5s | Data Availability Service timeout duration for Store requests |
node.data-availability.rest-aggregator.enable | bool | - | enable retrieval of sequencer batch data from a list of remote REST endpoints; if other DAS 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 das 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 DAS'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 DAS 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.das-rpc-client.data-stream.max-store-chunk-body-size | int | 5242880 | maximum HTTP body size for chunked store requests |
node.data-availability.rpc-aggregator.das-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.das-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.das-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.das-rpc-client.enable-chunked-store | bool | true | enable data to be sent to DAS in chunks instead of all at once |
node.data-availability.rpc-aggregator.das-rpc-client.server-url | string | - | URL of DAS server to connect to |
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 DAS storage types |
node.data-availability.sequencer-inbox-address | string | - | parent chain address of SequencerInbox contract |
node.delayed-sequencer.enable | bool | - | enable delayed sequencer |
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.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 |
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-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.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 |
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 (29)
| 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.experimental.block-size | int | 4096 | target uncompressed size in bytes of each table block |
persistent.pebble.experimental.bytes-per-sync | int | 524288 | number of bytes to write to a SSTable before calling Sync on it in the background |
persistent.pebble.experimental.compaction-debt-concurrency | uint | 1073741824 | controls the threshold of compaction debt at which additional compaction concurrency slots are added. For every multiple of this value in compaction debt bytes, an additional concurrent compaction is added. This works "on top" of l0-compaction-concurrency, so the higher of the count of compaction concurrency slots as determined by the two options is chosen. |
persistent.pebble.experimental.disable-automatic-compactions | bool | - | disables automatic compactions |
persistent.pebble.experimental.force-writer-parallelism | bool | - | force parallelism in the sstable Writer for the metamorphic tests. Even with the MaxWriterConcurrency option set, pebble only enables parallelism in the sstable Writer if there is enough CPU available, and this option bypasses that. |
persistent.pebble.experimental.index-block-size | int | 4096 | target uncompressed size in bytes of each index block. When the index block size is larger than this target, two-level indexes are automatically enabled. Setting this option to a large value (such as 2147483647) disables the automatic creation of two-level indexes. |
persistent.pebble.experimental.l-base-max-bytes | int | 67108864 | The maximum number of bytes for LBase. The base level is the level which L0 is compacted into. The base level is determined dynamically based on the existing data in the LSM. The maximum number of bytes for other levels is computed dynamically based on the base level's maximum size. When the maximum number of bytes for a level is exceeded, compaction is requested. |
persistent.pebble.experimental.l0-compaction-concurrency | int | 10 | threshold of L0 read-amplification at which compaction concurrency is enabled (if compaction-debt-concurrency was not already exceeded). Every multiple of this value enables another concurrent compaction up to max-concurrent-compactions. |
persistent.pebble.experimental.l0-compaction-file-threshold | int | 500 | count of L0 files necessary to trigger an L0 compaction |
persistent.pebble.experimental.l0-compaction-threshold | int | 2 | amount of L0 read-amplification necessary to trigger an L0 compaction |
persistent.pebble.experimental.l0-stop-writes-threshold | int | 12 | hard limit on L0 read-amplification, computed as the number of L0 sublevels. Writes are stopped when this threshold is reached |
persistent.pebble.experimental.max-writer-concurrency | int | - | maximum number of compression workers the compression queue is allowed to use. If max-writer-concurrency > 0, then the Writer will use parallelism, to compress and write blocks to disk. Otherwise, the writer will compress and write blocks to disk synchronously. |
persistent.pebble.experimental.mem-table-stop-writes-threshold | int | 4 | hard limit on the number of queued of MemTables |
persistent.pebble.experimental.read-compaction-rate | AllowedSeeks | 16000 | controls the frequency of read triggered compactions by adjusting AllowedSeeks in manifest.FileMetadata: AllowedSeeks = FileSize / ReadCompactionRate |
persistent.pebble.experimental.read-sampling-multiplier | int | -1 | a multiplier for the readSamplingPeriod in iterator.maybeSampleRead() to control the frequency of read sampling to trigger a read triggered compaction. A value of -1 prevents sampling and disables read triggered compactions. Geth default is -1. The pebble default is 1 << 4. which gets multiplied with a constant of 1 << 16 to yield 1 << 20 (1MB). |
persistent.pebble.experimental.target-byte-deletion-rate | int | - | rate (in bytes per second) at which sstable file deletions are limited to (under normal circumstances). |
persistent.pebble.experimental.target-file-size | int | 2097152 | target file size for the level 0 |
persistent.pebble.experimental.target-file-size-equal-levels | bool | - | if true same target-file-size will be uses for all levels, otherwise target size for layer n = 2 * target size for layer n - 1 |
persistent.pebble.experimental.wal-bytes-per-sync | int | 512000 | number of bytes to write to a write-ahead log (WAL) before calling Sync on it in the background |
persistent.pebble.experimental.wal-dir | string | - | absolute path of directory to store write-ahead logs (WALs) in. If empty, WALs will be stored in the same directory as sstables |
persistent.pebble.experimental.wal-min-sync-interval | int | - | minimum duration in microseconds between syncs of the WAL. If WAL syncs are requested faster than this interval, they will be artificially delayed. |
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 (24)
| 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 |
validation.arbitrator.redis-validation-server-config.consumer-config.response-entry-timeout | duration | 1h0m0s | timeout for response entry |
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.wavm.br, replay.wasm) |
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 |