Proposer configuration
This page lists all configuration options for op-proposer. The op-proposer posts output roots (proposals) to L1, making them available for verifiers. Withdrawals to L1 must reference an output root. If the chain is running permissioned fault proofs, only the designated proposer can submit output roots. With permissionless fault proofs, anyone can make a proposal.
Proposer policy
The proposer policy defines high-level constraints and responsibilities regarding how L2 output roots are posted to L1. Below are the standard guidelines for configuring the proposer within the OP Stack.
Parameter | Description | Administrator | Requirement | Notes |
---|---|---|---|---|
Output Frequency | Defines how frequently L2 output roots are submitted to L1 (via the output oracle). | L1 Proxy Admin | 43,200 L2 blocks (24 hours at 2s block times) or lower | It cannot be set to 0 (there must be some cadence for outputs). |
Example configuration
OP_PROPOSER_L1_ETH_RPC: YOUR_L1_RPC_URL_HERE
OP_PROPOSER_ROLLUP_RPC: YOUR_CHAINS_RPC_URL_HERE
OP_PROPOSER_GAME_FACTORY_ADDRESS: YOUR_CHAINS_GAME_FACTORY_ADDRESS_HERE
OP_PROPOSER_PROPOSAL_INTERVAL: 5h
OP_PROPOSER_WAIT_NODE_SYNC: true
OP_PROPOSER_ALLOW_NON_FINALIZED: "false"
OP_PROPOSER_POLL_INTERVAL: "20s"
OP_PROPOSER_NUM_CONFIRMATIONS: "1"
OP_PROPOSER_SAFE_ABORT_NONCE_TOO_LOW_COUNT: "3"
OP_PROPOSER_RESUBMISSION_TIMEOUT: "30s"
OP_PROPOSER_METRICS_ENABLED: "true"
OP_PROPOSER_METRICS_ADDR: 0.0.0.0
OP_PROPOSER_METRICS_PORT: 7300
Higher throughput chains can decrease the proposal-interval
to allow users submit withdrawals more often.
All configuration variables
Output root generation
poll-interval
Delay between periodic checks on whether it is time to load an output root and propose it. The default value is 6s.
--poll-interval=<value>
active-sequencer-check-duration
The duration between checks to determine the active sequencer endpoint from which output roots will be derived. The
default value is 2m0s
.
--active-sequencer-check-duration=<value>
Output root submission
proposal-interval
Interval between submitting L2 output proposals when the dispute game factory address is set. The default value is 0s.
--proposal-interval=<value>
allow-non-finalized
Allow the proposer to submit proposals for L2 blocks from non-finalized L1 blocks. The default value is false.
--allow-non-finalized=<value>
game-factory-address
Address of the DisputeGameFactory contract. This is where the proposer will submit output roots.
--game-factory-address=<value>
game-type
Dispute game type to create via the configured DisputeGameFactory. The default value is 0.
--game-type=<value>
Proposer startup
wait-node-sync
Indicates if, during startup, the proposer should wait for the rollup node to sync to the current L1 tip before proceeding with its driver loop. The default value is false.
--wait-node-sync=<value>
Transaction manager
fee-limit-multiplier
The multiplier applied to fee suggestions to limit fee increases. The default value is 5.
--fee-limit-multiplier=<value>
num-confirmations
Number of confirmations to wait after sending a transaction. The default value is 10.
--num-confirmations=<value>
resubmission-timeout
Duration we will wait before resubmitting a transaction to L1. The default value is 48s.
--resubmission-timeout=<value>
safe-abort-nonce-too-low-count
Number of ErrNonceTooLow observations required to give up on a tx at a particular nonce without receiving confirmation. The default value is 3.
--safe-abort-nonce-too-low-count=<value>
txmgr.fee-limit-threshold
The minimum threshold (in GWei) at which fee bumping starts to be capped. The default value is 100.
--txmgr.fee-limit-threshold=<value>
txmgr.min-basefee
Enforces a minimum base fee (in GWei) to assume when determining tx fees. The default value is 1.
--txmgr.min-basefee=<value>
txmgr.min-tip-cap
Enforces a minimum tip cap (in GWei) to use when determining tx fees. The default value is 1.
--txmgr.min-tip-cap=<value>
txmgr.not-in-mempool-timeout
Timeout for aborting a tx send if the tx does not make it to the mempool. The default value is 2m0s.
--txmgr.not-in-mempool-timeout=<value>
txmgr.receipt-query-interval
Frequency to poll for receipts. The default value is 12s.
--txmgr.receipt-query-interval=<value>
txmgr.send-timeout
Timeout for sending transactions. If 0 it is disabled. The default value is 0s.
--txmgr.send-timeout=<value>
Wallet
hd-path
The HD path used to derive the sequencer wallet from the mnemonic.
--hd-path=<value>
mnemonic
The mnemonic used to derive the wallets for the service.
--mnemonic=<value>
RPC
l1-eth-rpc
HTTP provider URL for L1.
--l1-eth-rpc=<value>
rollup-rpc
HTTP provider URL for the rollup node. A comma-separated list enables the active rollup provider.
--rollup-rpc=<value>
rpc.addr
rpc listening address. The default value is "0.0.0.0".
--rpc.addr=<value>
rpc.enable-admin
Enable the admin API. The default value is false.
--rpc.enable-admin=<value>
rpc.port
rpc listening port. The default value is 8545.
--rpc.port=<value>
Logging
log.color
Color the log output if in terminal mode. The default value is false.
--log.color=<value>
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
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=<value>
metrics.port
Metrics listening port. The default value is 7300.
--metrics.port=<value>
pprof
pprof.addr
pprof listening address. The default value is "0.0.0.0".
--pprof.addr=<value>
pprof.enabled
Enable the pprof server. The default value is false.
--pprof.enabled=<value>
pprof.path
The pprof file path. If it is a directory, the path is {dir}/{profileType}.prof
--pprof.path=<value>
pprof.port
pprof listening port. The default value is 6060.
--pprof.port=<value>
pprof.type
pprof profile type. One of cpu, heap, goroutine, threadcreate, block, mutex, allocs
--pprof.type=<value>
Signer
signer.address
Address the signer is signing transactions for.
--signer.address=<value>
signer.endpoint
Signer endpoint the client will connect to.
--signer.endpoint=<value>
signer.tls.ca
tls ca cert path. The default value is "tls/ca.crt".
--signer.tls.ca=<value>
signer.tls.cert
tls cert path. The default value is "tls/tls.crt".
--signer.tls.cert=<value>
signer.tls.key
tls key. The default value is "tls/tls.key".
--signer.tls.key=<value>
Miscellaneous
network-timeout
Timeout for all network operations. The default value is 10s.
--network-timeout=<value>
help
Show help. The default value is false.
--help=<value>
version
Print the version. The default value is false.
--version=<value>