Consensus Layer Configuration Options (op-node)
You can configure your node using the command line options below (also called flags). There are also sub-commands, which can be used to invoke functionality such as the console or blockchain import/export.
This page list all configuration options for op-node
. op-node
implements most rollup-specific functionality as Consensus-Layer, similar to a L1 beacon-node.
The following options are from the --help
in v1.7.5 (opens in a new tab).
Global Options
conductor.enabled
Enable the conductor service. The default value is false
.
--conductor.enabled=<boolean>
conductor.rpc
Conductor service rpc endpoint. The default value is http://127.0.0.1:8547
.
--conductor.rpc=<value>
conductor.rpc-timeout value
Conductor service rpc timeout. The default value is 1s
.
--conductor.rpc-timeout value=<value>
heartbeat.enabled
Enables or disables heartbeating. The default value is false
.
--heartbeat.enabled=<boolean>
heartbeat.moniker
Sets a moniker for this node.
--heartbeat.moniker=<value>
heartbeat.url
Sets the URL to heartbeat to. The default value is "https://heartbeat.optimism.io"
.
--heartbeat.url=<value>
l1
Address of L1 User JSON-RPC endpoint to use (eth namespace required). The default value is "http://127.0.0.1:8545"
.
--l1=<value>
l1.beacon
Address of L1 Beacon-node HTTP endpoint to use.
--l1.beacon=<value>
l1.beacon.fetch-all-sidecars
If true, all sidecars are fetched and filtered locally. Workaround for buggy Beacon nodes. The default value is false
.
--l1.beacon.fetch-all-sidecars=<boolean>
l1.beacon.ignore
When false, halts op-node startup if the healthcheck to the Beacon-node endpoint fails. The default value is false
.
--l1.beacon.ignore=<boolean>
l1.epoch-poll-interval
Poll interval for retrieving new L1 epoch updates such as safe and finalized block changes. Disabled if 0 or negative. The default value is 6m24s
.
--l1.epoch-poll-interval=<value>
l1.http-poll-interval
Polling interval for latest-block subscription when using an HTTP RPC provider. Ignored for other types of RPC endpoints. The default value is 12s
.
--l1.http-poll-interval=<value>
l1.max-concurrency
Maximum number of concurrent RPC requests to make to the L1 RPC provider. The default value is 10
.
--l1.max-concurrency=<value>
l1.rpc-max-batch-size
Maximum number of RPC requests to bundle, e.g., during L1 blocks receipt fetching. The L1 RPC rate limit counts this as N items, but allows it to burst at once. The default value is 20
.
--l1.rpc-max-batch-size=<value>
l1.rpc-rate-limit
Optional self-imposed global rate-limit on L1 RPC requests, specified in requests / second. Disabled if set to 0. The default value is 0
.
--l1.rpc-rate-limit=<value>
l1.rpckind
The kind of RPC provider, used to inform optimal transactions receipts fetching, and thus reduce costs. Valid options: alchemy, quicknode, infura, parity, nethermind, debug_geth, erigon, basic, any, standard. The default value is standard
.
--l1.rpckind=<value>
For details on additional values, see RPC Receipts (opens in a new tab).
l1.runtime-config-reload-interval
Poll interval for reloading the runtime config, useful when config events are not being picked up. Disabled if 0 or negative. The default value is 10m0s
.
--l1.runtime-config-reload-interval=<value>
l1.trustrpc
Trust the L1 RPC, sync faster at risk of malicious/buggy RPC providing bad or inconsistent L1 data. The default value is false
.
If you're running an Erigon Ethereum execution client for your L1 provider you will need to include --l1.trustrpc
. At the time of writing,
Erigon doesn't support the eth_getProof
that we prefer to use to load L1 data for some processing in op-node
. The trustrpc flag makes it
use something else that erigon supports, but the op-node
can't verify for correctness.
--l1.trustrpc=<boolean>
l2
Address of L2 Engine JSON-RPC endpoints to use (engine and eth namespace required).
--l2=<value>
l2.jwt-secret
Path to JWT secret key. Keys are 32 bytes, hex encoded in a file. A new key will be generated if left empty.
--l2.jwt-secret=<value>
log.color
Color the log output if in terminal mode. The default value is false
.
--log.color=<boolean>
log.format
Format the log output. Supported formats: 'text', 'terminal', 'logfmt', 'json', 'json-pretty'. The default value is text
.
--log.format=<value>
log.level
The lowest log level that will be output. The default value is info
.
--log.level=<value>
metrics.addr
Metrics listening address. The default value is "0.0.0.0"
.
--metrics.addr=<value>
metrics.enabled
Enable the metrics server. The default value is false
.
--metrics.enabled=<boolean>
metrics.port
Metrics listening port. The default value is 7300
.
--metrics.port=<value>
network
Predefined network selection. Available networks: oplabs-devnet-0-sepolia-dev-0, op-labs-chaosnet-0-goerli-dev-0, zora-mainnet, base-sepolia, pgn-sepolia, zora-sepolia, base-devnet-0-sepolia-dev-0, base-goerli, base-devnet-0-goerli-dev-0, conduit-devnet-0-goerli-dev-0, base-mainnet, pgn-mainnet, op-sepolia, lyra-mainnet, mode-mainnet, op-mainnet, op-goerli, op-labs-devnet-0-goerli-dev-0, orderly-mainnet.
--network=<value>
override.canyon
Manually specify the Canyon fork timestamp, overriding the bundled setting. The default value is 0
.
--override.canyon=<value>
override.delta
Manually specify the Delta fork timestamp, overriding the bundled setting. The default value is 0
.
--override.delta=<value>
override.ecotone
Manually specify the ecotone fork timestamp, overriding the bundled setting. The default value is 0
.
--override.ecotone=<value>
override.fjord
Manually specify the fjord fork timestamp, overriding the bundled setting. The default value is 0
.
--override.fjord=<value>
p2p.advertise.ip
The IP address to advertise in Discv5, put into the ENR of the node. This may also be a hostname/domain name to resolve to an IP.
--p2p.advertise.ip=<value>
p2p.advertise.tcp
The TCP port to advertise in Discv5, put into the ENR of the node. Set to p2p.listen.tcp value if 0. The default value is 0
.
--p2p.advertise.tcp=<value>
p2p.advertise.udp
The UDP port to advertise in Discv5 as a fallback if not determined by Discv5, put into the ENR of the node. Set to p2p.listen.udp value if 0. The default value is 0
.
--p2p.advertise.udp=<value>
p2p.ban.duration
The duration that peers are banned for. The default value is 1h0m0s
.
--p2p.ban.duration=<value>
p2p.ban.peers
Enables peer banning. The default value is true
.
--p2p.ban.peers=<boolean>
p2p.ban.threshold
The minimum score below which peers are disconnected and banned. The default value is -100
.
--p2p.ban.threshold=<value>
p2p.bootnodes
Comma-separated base64-format ENR list. Bootnodes to start discovering other node records from.
--p2p.bootnodes=<value>
p2p.disable
Completely disable the P2P stack. The default value is false
.
--p2p.disable=<boolean>
p2p.discovery.path
Enables persistent storage of discovered ENRs in a database to recover from a restart without bootstrapping the discovery process again. Set to 'memory' to never persist the peerstore. The default value is opnode_discovery_db
.
--p2p.discovery.path=<value>
p2p.listen.ip
Specifies the IP to bind LibP2P and Discv5 to. The default value is 0.0.0.0
.
--p2p.listen.ip=<value>
p2p.listen.tcp
Defines the TCP port to bind LibP2P to. Any available system port if set to 0. The default value is 9222
.
--p2p.listen.tcp=<value>
p2p.listen.udp
Sets the UDP port to bind Discv5 to. It will be the same as the TCP port if left at 0. The default value is 0
.
--p2p.listen.udp=<value>
p2p.nat
Enables NAT traversal with PMP/UPNP devices to learn external IP. The default value is false
.
--p2p.nat=<boolean>
p2p.netrestrict
Specifies a comma-separated list of CIDR masks. P2P will only try to connect on these networks.
--p2p.netrestrict=<value>
p2p.no-discovery
Disables Discv5 (node discovery). The default value is false
.
--p2p.no-discovery=<boolean>
p2p.peers.grace
Determines the grace period to keep a newly connected peer around, if it is not misbehaving. The default value is 30s
.
--p2p.peers.grace=<value>
p2p.peers.hi
Sets the high-tide peer count. The node starts pruning peer connections slowly after reaching this number. The default value is 30
.
--p2p.peers.hi=<value>
p2p.peers.lo
Determines the low-tide peer count. The node actively searches for new peer connections if below this amount. The default value is 20
.
--p2p.peers.lo=<number>
p2p.peerstore.path
Specifies the Peerstore database location. Persisted peerstores help recover peers after restarts. Set to 'memory' to never persist the peerstore. Warning: a copy of the priv network key of the local peer will be persisted here. The default value is "opnode_peerstore_db"
.
--p2p.peerstore.path=<path>
p2p.priv.path
Defines the file path for reading the hex-encoded 32-byte private key for the peer ID. Created if not already exists. Important for maintaining the same network identity after restarting. The default value is "opnode_p2p_priv.txt"
.
--p2p.priv.path=<file-path>
p2p.scoring
Sets the peer scoring strategy for the P2P stack. Options include 'none' or 'light'. The default value is "light"
.
--p2p.scoring=<strategy>
p2p.sequencer.key
Hex-encoded private key for signing off on p2p application messages as sequencer.
--p2p.sequencer.key=<value>
p2p.static
Comma-separated multiaddr-format(an unsigned address, containing: IP, TCP port, PeerID) peer list. Static connections to make and maintain, these peers will be regarded as trusted. Addresses of the local peer are ignored. Duplicate/Alternative addresses for the same peer all apply, but only a single connection per peer is maintained.
--p2p.static=<value>
p2p.sync.req-resp
Enables P2P req-resp alternative sync method, on both server and client side. Default is true
.
--p2p.sync.req-resp=[true|false]
pprof.addr
pprof listening address. Default is "0.0.0.0"
.
--pprof.addr=<value>
pprof.enabled
Enable the pprof server. Default is false
.
--pprof.enabled=[true|false]
pprof.path
pprof file path. If it is a directory, the path is {dir}/{profileType}.prof
--pprof.path=<path>
pprof.port
pprof listening port. Default is 6060
.
--pprof.port=<value>
pprof.type
pprof profile type. One of cpu, heap, goroutine, threadcreate, block, mutex, allocs
--pprof.type=<value>
rollup.config
Rollup chain parameters.
--rollup.config=<value>
rollup.halt
Opt-in option to halt on incompatible protocol version requirements of the given level (major/minor/patch/none), as signaled onchain in L1.
--rollup.halt=<value>
rollup.load-protocol-versions
Load protocol versions from the superchain L1 ProtocolVersions contract (if available), and report in logs and metrics. Default is false
.
--rollup.load-protocol-versions=[true|false]
rpc.addr
RPC listening address. Default is "127.0.0.1"
.
--rpc.addr=<value>
rpc.admin-state
File path used to persist state changes made via the admin API so they persist across restarts. Disabled if not set.
--rpc.admin-state=<value>
rpc.enable-admin
Enable the admin API (experimental). Default is false
.
--rpc.enable-admin=[true|false]
rpc.port
RPC listening port. Default is 9545
.
--rpc.port=<value>
sequencer.enabled
Enable sequencing of new L2 blocks. A separate batch submitter has to be deployed to publish the data for verifiers. Default is false
.
--sequencer.enabled=[true|false]
sequencer.l1-confs
Number of L1 blocks to keep distance from the L1 head as a sequencer for picking an L1 origin. Default is 4
.
--sequencer.l1-confs=<value>
sequencer.max-safe-lag
Maximum number of L2 blocks for restricting the distance between L2 safe and unsafe. Disabled if 0. Default is 0
.
--sequencer.max-safe-lag=<value>
sequencer.stopped
Initialize the sequencer in a stopped state. The sequencer can be started using the admin_startSequencer RPC. Default is false
.
--sequencer.stopped=[true|false]
snapshotlog.file
Path to the snapshot log file.
--snapshotlog.file=<value>
verifier.l1-confs
Number of L1 blocks to keep distance from the L1 head before deriving L2 data from. Reorgs are supported, but may be slow to perform. Default is 0
.
--verifier.l1-confs=<value>
Miscellaneous
--help, -h
Show help. The default value is false
.
--help
OR -h
--version, -v
Nodes built from source do not output the correct version numbers that are reported on the GitHub release page.
Print the version. The default value is false
.
--version
OR -v