--help in v1.10.2.
L1 and L2 connection settings
Configure how op-node connects to L1 (Ethereum) and L2 (execution layer) endpoints.l1
Address of L1 User JSON-RPC endpoint to use (eth namespace required). The default value is"http://127.0.0.1:8545".
- Syntax
- Example
- Environment variable
--l1=<value>l1.beacon
Address of L1 Beacon-node HTTP endpoint to use.- Syntax
- Example
- Environment variable
--l1.beacon=<value>l1.beacon-fallbacks
Addresses of L1 Beacon-API compatible HTTP fallback endpoints. Used to fetch blob sidecars not available at the l1.beacon (e.g. expired blobs).- Syntax
- Example
- Environment variable
--l1.beacon-fallbacks=<value>l1.beacon-header
Optional HTTP header to add to all requests to the L1 Beacon endpoint. Format: ‘X-Key: Value’- Syntax
- Example
- Environment variable
--l1.beacon-header=<value>l1.beacon.fetch-all-sidecars
If true, all sidecars are fetched and filtered locally. Workaround for buggy Beacon nodes. The default value isfalse.
- Syntax
- Example
- Environment variable
--l1.beacon.fetch-all-sidecars=<boolean>l1.beacon.ignore
When false, haltsop-node startup if the healthcheck to the Beacon-node endpoint fails. The default value is false.
- Syntax
- Example
- Environment variable
--l1.beacon.ignore=<boolean>l1.cache-size
Cache size for blocks, receipts and transactions. If this flag is set to 0, 3/2 of the sequencing window size is used (usually 2400). The default value of 900 (~3h of L1 blocks) is good for (high-throughput) networks that see frequent safe head increments. On (low-throughput) networks with infrequent safe head increments, it is recommended to set this value to 0, or a value that well covers the typical span between safe head increments. Note that higher values will cause significantly increased memory usage. The default value is900.
- Syntax
- Example
- Environment variable
--l1.cache-size=<value>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 is6m24s.
- Syntax
- Example
- Environment variable
--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 is12s.
- Syntax
- Example
- Environment variable
--l1.http-poll-interval=<value>l1.max-concurrency
Maximum number of concurrent RPC requests to make to the L1 RPC provider. The default value is10.
- Syntax
- Example
- Environment variable
--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 is20.
- Syntax
- Example
- Environment variable
--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 is0.
- Syntax
- Example
- Environment variable
--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.
- Syntax
- Example
- Environment variable
--l1.rpckind=<value>For details on additional values, see RPC Receipts.
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 is10m0s.
- Syntax
- Example
- Environment variable
--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 isfalse.
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.- Syntax
- Example
- Environment variable
--l1.trustrpc=<boolean>l2
Address of L2 Engine JSON-RPC endpoints to use (engine and eth namespace required). This is referred to asauthrpc by Geth and Reth.
- Syntax
- Example
- Environment variable
--l2=<value>l2.engine-rpc-timeout
L2 engine client rpc timeout. The default value is10s.
- Syntax
- Example
- Environment variable
--l2.engine-rpc-timeout=<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.- Syntax
- Example
- Environment variable
--l2.jwt-secret=<value>l2.enginekind
The kind of engine client, used to control the behavior of optimism in respect to different types of engine clients. Valid options:geth, reth, erigon. The default value is geth.
- Syntax
- Example
- Environment variable
--l2.enginekind=<value>Network selection and rollup configuration
Configure which OP Stack network to connect to and manage rollup-specific settings.network
Predefined network selection. Available networks: arena-z-mainnet, arena-z-sepolia, automata-mainnet, base-devnet-0-sepolia-dev-0, base-mainnet, base-sepolia, bob-mainnet, camp-sepolia, creator-chain-testnet-sepolia, cyber-mainnet, cyber-sepolia, ethernity-mainnet, ethernity-sepolia, fraxtal-mainnet, funki-mainnet, funki-sepolia, hashkeychain-mainnet, ink-mainnet, ink-sepolia, lisk-mainnet, lisk-sepolia, lyra-mainnet, metal-mainnet, metal-sepolia, mint-mainnet, mode-mainnet, mode-sepolia, op-mainnet, op-sepolia, oplabs-devnet-0-sepolia-dev-0, orderly-mainnet, ozean-sepolia, pivotal-sepolia, polynomial-mainnet, race-mainnet, race-sepolia, radius_testnet-sepolia, redstone-mainnet, rehearsal-0-bn-0-rehearsal-0-bn, rehearsal-0-bn-1-rehearsal-0-bn, settlus-mainnet-mainnet, settlus-sepolia-sepolia, shape-mainnet, shape-sepolia, silent-data-mainnet-mainnet, snax-mainnet, soneium-mainnet, soneium-minato-sepolia, sseed-mainnet, swan-mainnet, swell-mainnet, tbn-mainnet, tbn-sepolia, unichain-mainnet, unichain-sepolia, worldchain-mainnet, worldchain-sepolia, xterio-eth-mainnet, zora-mainnet, zora-sepolia.- Syntax
- Example
- Environment variable
--network=<value>rollup.config
Rollup chain parameters.- Syntax
- Example
- Environment variable
--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.- Syntax
- Example
- Environment variable
--rollup.halt=<value>rollup.l1-chain-config
Path to .json file with the chain configuration for the L1, either in the direct format or genesis.json format (i.e. embedded under the .config property). Not necessary / will be ignored if using Ethereum mainnet or Sepolia as an L1.- Syntax
- Example
- Environment variable
--rollup.l1-chain-config=<value>rollup.load-protocol-versions
Load protocol versions from the superchain L1 ProtocolVersions contract (if available), and report in logs and metrics. Default isfalse.
- Syntax
- Example
- Environment variable
--rollup.load-protocol-versions=[true|false]syncmode
Blockchain sync mode. Options are “consensus-layer” or “execution-layer”. The default value isconsensus-layer.
- Syntax
- Example
- Environment variable
--syncmode=<value>Fork overrides
Manually override fork activation timestamps for testing or custom deployments.override.canyon
Manually specify the Canyon fork timestamp, overriding the bundled setting. The default value is0.
- Syntax
- Example
- Environment variable
--override.canyon=<value>override.delta
Manually specify the Delta fork timestamp, overriding the bundled setting. The default value is0.
- Syntax
- Example
- Environment variable
--override.delta=<value>override.ecotone
Manually specify the ecotone fork timestamp, overriding the bundled setting. The default value is0.
- Syntax
- Example
- Environment variable
--override.ecotone=<value>override.fjord
Manually specify the fjord fork timestamp, overriding the bundled setting. The default value is0.
- Syntax
- Example
- Environment variable
--override.fjord=<value>override.granite
Manually specify the granite fork timestamp, overriding the bundled setting. The default value is0.
- Syntax
- Example
- Environment variable
--override.granite=<value>override.holocene
Manually specify the holocene fork timestamp, overriding the bundled setting. The default value is0.
- Syntax
- Example
- Environment variable
--override.holocene=<value>override.isthmus
Manually specify the isthmus fork timestamp, overriding the bundled setting. The default value is0.
- Syntax
- Example
- Environment variable
--override.isthmus=<value>override.interop
Manually specify the Interop fork timestamp, overriding the bundled setting. The default value is0.
- Syntax
- Example
- Environment variable
--override.interop=<value>override.jovian
Manually specify the Jovian fork timestamp, overriding the bundled setting. The default value is0.
- Syntax
- Example
- Environment variable
--override.jovian=<value>override.pectrablobschedule
Manually specify the PectraBlobSchedule fork timestamp, overriding the bundled setting. The default value is0.
- Syntax
- Example
- Environment variable
--override.pectrablobschedule=<value>Logging configuration
Control log output format, level, and color.log.color
Color the log output if in terminal mode. The default value isfalse.
- Syntax
- Example
- Environment variable
--log.color=<boolean>log.format
Format the log output. Supported formats: ‘text’, ‘terminal’, ‘logfmt’, ‘json’, ‘json-pretty’. The default value istext.
- Syntax
- Example
- Environment variable
--log.format=<value>log.level
The lowest log level that will be output. The default value isinfo.
- Syntax
- Example
- Environment variable
--log.level=<value>log.pid
Show pid in the log. The default value isfalse.
- Syntax
- Example
- Environment variable
--log.pid=<boolean>Logging and RPC
Configure RPC API endpoints and admin functionality.rpc.addr
RPC listening address. Default is"0.0.0.0".
- Syntax
- Example
- Environment variable
--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.- Syntax
- Example
- Environment variable
--rpc.admin-state=<value>rpc.enable-admin
Enable the admin API (experimental). Default isfalse.
- Syntax
- Example
- Environment variable
--rpc.enable-admin=[true|false]rpc.port
RPC listening port. Default is9545.
- Syntax
- Example
- Environment variable
--rpc.port=<value>Metrics and profiling
Enable observability through metrics and performance profiling.metrics.addr
Metrics listening address. The default value is"0.0.0.0".
- Syntax
- Example
- Environment variable
--metrics.addr=<value>metrics.enabled
Enable the metrics server. The default value isfalse.
- Syntax
- Example
- Environment variable
--metrics.enabled=<boolean>metrics.port
Metrics listening port. The default value is7300.
- Syntax
- Example
- Environment variable
--metrics.port=<value>pprof.addr
pprof listening address. Default is"0.0.0.0".
- Syntax
- Example
- Environment variable
--pprof.addr=<value>pprof.enabled
Enable the pprof server. Default isfalse.
- Syntax
- Example
- Environment variable
--pprof.enabled=[true|false]pprof.path
pprof file path. If it is a directory, the path is {dir}/{profileType}.prof- Syntax
- Example
- Environment variable
--pprof.path=<path>pprof.port
pprof listening port. Default is6060.
- Syntax
- Example
- Environment variable
--pprof.port=<value>pprof.type
pprof profile type. One of cpu, heap, goroutine, threadcreate, block, mutex, allocs- Syntax
- Example
- Environment variable
--pprof.type=<value>P2P networking
Configure peer-to-peer networking, discovery, and connection management.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.- Syntax
- Example
- Environment variable
--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 is0.
- Syntax
- Example
- Environment variable
--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 is0.
- Syntax
- Example
- Environment variable
--p2p.advertise.udp=<value>p2p.ban.duration
The duration that peers are banned for. The default value is1h0m0s.
- Syntax
- Example
- Environment variable
--p2p.ban.duration=<value>p2p.ban.peers
Enables peer banning. The default value istrue.
- Syntax
- Example
- Environment variable
--p2p.ban.peers=<boolean>p2p.ban.threshold
The minimum score below which peers are disconnected and banned. The default value is-100.
- Syntax
- Example
- Environment variable
--p2p.ban.threshold=<value>p2p.bootnodes
Comma-separated base64-format ENR list. Bootnodes to start discovering other node records from.- Syntax
- Example
- Environment variable
--p2p.bootnodes=<value>p2p.disable
Completely disable the P2P stack. The default value isfalse.
- Syntax
- Example
- Environment variable
--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 isopnode_discovery_db.
- Syntax
- Example
- Environment variable
--p2p.discovery.path=<value>p2p.gossip.timestamp.threshold
Threshold for rejecting gossip messages with payload timestamps older than this duration. The default value is1m0s.
- Syntax
- Example
- Environment variable
--p2p.gossip.timestamp.threshold=<value>p2p.listen.ip
Specifies the IP to bind LibP2P and Discv5 to. The default value is0.0.0.0.
- Syntax
- Example
- Environment variable
--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 is9222.
- Syntax
- Example
- Environment variable
--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 is0.
- Syntax
- Example
- Environment variable
--p2p.listen.udp=<value>p2p.nat
Enables NAT traversal with PMP/UPNP devices to learn external IP. The default value isfalse.
- Syntax
- Example
- Environment variable
--p2p.nat=<boolean>p2p.netrestrict
Specifies a comma-separated list of CIDR masks. P2P will only try to connect on these networks.- Syntax
- Example
- Environment variable
--p2p.netrestrict=<value>p2p.no-discovery
Disables Discv5 (node discovery). The default value isfalse.
- Syntax
- Example
- Environment variable
--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 is30s.
- Syntax
- Example
- Environment variable
--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 is30.
- Syntax
- Example
- Environment variable
--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 is20.
- Syntax
- Example
- Environment variable
--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".
- Syntax
- Example
- Environment variable
--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".
- Syntax
- Example
- Environment variable
--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".
- Syntax
- Example
- Environment variable
--p2p.scoring=<strategy>p2p.sequencer.key
Hex-encoded private key for signing off on p2p application messages as sequencer.- Syntax
- Example
- Environment variable
--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.- Syntax
- Example
- Environment variable
--p2p.static=<value>p2p.sync.onlyreqtostatic
RestrictsRequestL2Range sync requests to static peers only. Useful for enforcing trusted peer sync. When enabled, non-static peers are skipped during sync. Default is false.
- Syntax
- Example
- Environment variable
--p2p.sync.onlyreqtostatic=[true|false]p2p.sync.req-resp
Enables P2P req-resp alternative sync method, on both server and client side. Default istrue.
- Syntax
- Example
- Environment variable
--p2p.sync.req-resp=[true|false]Sequencer options
Configuration for running op-node as a sequencer.sequencer.enabled
Enable sequencing of new L2 blocks. A separate batch submitter has to be deployed to publish the data for verifiers. Default isfalse.
- Syntax
- Example
- Environment variable
--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 is4.
- Syntax
- Example
- Environment variable
--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 is0.
- Syntax
- Example
- Environment variable
--sequencer.max-safe-lag=<value>sequencer.recover
Forces the sequencer to strictly prepare the next L1 origin and create empty L2 blocks. Default isfalse.
- Syntax
- Example
- Environment variable
--sequencer.recover=[true|false]sequencer.stopped
Initialize the sequencer in a stopped state. The sequencer can be started using the admin_startSequencer RPC. Default isfalse.
- Syntax
- Example
- Environment variable
--sequencer.stopped=[true|false]Verifier options
Configuration for running op-node as a verifier (replica node).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 is0.
- Syntax
- Example
- Environment variable
--verifier.l1-confs=<value>While
verifier.l1-confs has no strict limit, it’s recommended to keep this value within 12-13 minutes (typically 10-20 blocks) for optimal performance. Exceeding this range may impact the verifier’s data processing efficiency.Conductor mode
Options for running op-node in conductor mode (for conductor-enabled chains).conductor.enabled
Enable the conductor service. The default value isfalse.
- Syntax
- Example
- Environment variable
--conductor.enabled=<boolean>conductor.rpc
Conductor service rpc endpoint. The default value ishttp://127.0.0.1:8547.
- Syntax
- Example
- Environment variable
--conductor.rpc=<value>conductor.rpc-timeout
Conductor service rpc timeout. The default value is1s.
- Syntax
- Example
- Environment variable
--conductor.rpc-timeout=<value>Database and state persistence
Configure persistent storage for node state and snapshot data.safedb.path
File path used to persist safe head update data. Disabled if not set.- Syntax
- Example
- Environment variable
--safedb.path=<value>snapshotlog.file
Path to the snapshot log file.- Syntax
- Example
- Environment variable
--snapshotlog.file=<value>Signer configuration
Options for configuring an external signer for P2P messages.signer.address
Address the signer is signing requests for.- Syntax
- Example
- Environment variable
--signer.address=<value>signer.endpoint
Signer endpoint the client will connect to.- Syntax
- Example
- Environment variable
--signer.endpoint=<value>signer.header
Headers to pass to the remote signer. Formatkey=value. Value can contain any character allowed in a HTTP header. When using env vars, split with commas. When using flags one key value pair per flag.
- Syntax
- Example
- Environment variable
--signer.header=<value>signer.tls.ca
TLS ca cert path. The default value is"tls/ca.crt".
- Syntax
- Example
- Environment variable
--signer.tls.ca=<value>signer.tls.cert
TLS cert path. The default value is"tls/tls.crt".
- Syntax
- Example
- Environment variable
--signer.tls.cert=<value>signer.tls.enabled
Enable or disable TLS client authentication for the signer. The default value istrue.
- Syntax
- Example
- Environment variable
--signer.tls.enabled=<boolean>signer.tls.key
TLS key path. The default value is"tls/tls.key".
- Syntax
- Example
- Environment variable
--signer.tls.key=<value>Alt-DA (Experimental)
Configuration options for Alternative Data Availability mode.altda.enabled
Enable Alt-DA mode. The default value isfalse.
- Syntax
- Example
- Environment variable
--altda.enabled=<boolean>altda.da-server
HTTP address of a DA Server.- Syntax
- Example
- Environment variable
--altda.da-server=<value>altda.da-service
Use DA service type where commitments are generated by Alt-DA server. The default value isfalse.
- Syntax
- Example
- Environment variable
--altda.da-service=<boolean>altda.get-timeout
Timeout for get requests. 0 means no timeout. The default value is0s.
- Syntax
- Example
- Environment variable
--altda.get-timeout=<value>altda.max-concurrent-da-requests
Maximum number of concurrent requests to the DA server. The default value is1.
- Syntax
- Example
- Environment variable
--altda.max-concurrent-da-requests=<value>altda.put-timeout
Timeout for put requests. 0 means no timeout. The default value is0s.
- Syntax
- Example
- Environment variable
--altda.put-timeout=<value>altda.verify-on-read
Verify input data matches the commitments from the DA storage service. The default value istrue.
- Syntax
- Example
- Environment variable
--altda.verify-on-read=<boolean>Interop (Super Experimental)
Configuration options for OP Stack interop networks.interop.dependency-set
Dependency-set configuration, point at JSON file.- Syntax
- Example
- Environment variable
--interop.dependency-set=<value>interop.jwt-secret
Interop RPC server authentication. Path to JWT secret key. Keys are 32 bytes, hex encoded in a file. A new key will be generated if the file is empty. Applies only to Interop-enabled networks.- Syntax
- Example
- Environment variable
--interop.jwt-secret=<value>interop.rpc.addr
Interop Websocket-only RPC listening address, for supervisor service to manage syncing of the op-node. Applies only to Interop-enabled networks. Optional, disabled if left empty. Do not enable if you do not run a supervisor service.- Syntax
- Example
- Environment variable
--interop.rpc.addr=<value>interop.rpc.port
Interop RPC listening port, to serve supervisor syncing. Applies only to Interop-enabled networks. The default value is9645.
- Syntax
- Example
- Environment variable
--interop.rpc.port=<value>Experimental and miscellaneous
Additional experimental features and utility flags.experimental.sequencer-api
Enables experimental test sequencer RPC functionality. The default value isfalse.
- Syntax
- Example
- Environment variable
--experimental.sequencer-api=<boolean>fetch-withdrawal-root-from-state
Read withdrawal_storage_root (aka message passer storage root) from state trie (via execution layer) instead of the block header. Restores pre-Isthmus behavior, requires an archive EL client. The default value isfalse.
- Syntax
- Example
- Environment variable
--fetch-withdrawal-root-from-state=<boolean>General options
Help and version information.—help, -h
Show help. The default value isfalse.
- Syntax
- Syntax
--help OR -h—version, -v
Nodes built from source do not output the correct version numbers that are reported on
the GitHub release page.
false.
- Syntax
- Syntax
--version OR -vNode log levels
Node log levels determine the verbosity of log messages, allowing operators to filter messages based on importance and detail. The log levels for theop-node (used in Optimism)
are as follows:
- Silent (0): No log messages are displayed. This level is rarely used as it provides no feedback on the node’s status.
- Error (1): Only error messages are displayed. Use this level to focus on critical issues that need immediate attention.
- Warn (2): Displays error messages and warnings. This level helps to identify potential problems that might not be immediately critical but require attention.
- Info (3): Displays error messages, warnings, and normal activity logs. This is the default level and provides a balanced view of the node’s operations without being too verbose.
- Debug (4): All info-level messages plus additional debugging information. Use this level when troubleshooting issues or developing the node software.
- Detail (5): The most verbose level, including detailed debugging information and low-level system operations. This level generates a large amount of log data and is typically used only for in-depth troubleshooting.
--log.level flag when running the op-node command. For
example, to set the log level to debug: