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