> ## Documentation Index
> Fetch the complete documentation index at: https://docs.optimism.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Proposer Configuration

> Reference for the op-proposer configuration options and the proposer policy constraints.

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](/op-stack/protocol/privileged-roles) can submit output roots.
With [permissionless fault proofs](/op-stack/fault-proofs/explainer), 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](/op-stack/protocol/superchain-registry#what-is-a-standard-chain) 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.

## Flags

The flag tables below are generated directly from the op-proposer's flag
definitions in the monorepo (`op-proposer/flags`) at the release tag named in
the provenance line, and are regenerated when a new finalized release is
published, so they cannot silently fall behind. Every flag can also be set
through the environment variable listed next to it.

Generated from [`op-proposer/v1.16.3`](https://github.com/ethereum-optimism/optimism/releases/tag/op-proposer%2Fv1.16.3)
flag definitions. 54 flags: 1 required, 53 optional.

### Required flags

| Flag           | Description              | Environment variable     |
| -------------- | ------------------------ | ------------------------ |
| `--l1-eth-rpc` | HTTP provider URL for L1 | `OP_PROPOSER_L1_ETH_RPC` |

### Optional flags

| Flag                                    | Description                                                                                                                                                                                                                 | Default                | Environment variable                              |
| --------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------- | ------------------------------------------------- |
| `--active-sequencer-check-duration`     | The duration between checks to determine the active sequencer endpoint.                                                                                                                                                     | `2m0s`                 | `OP_PROPOSER_ACTIVE_SEQUENCER_CHECK_DURATION`     |
| `--allow-non-finalized`                 | Allow the proposer to submit proposals for L2 blocks derived from non-finalized L1 blocks.                                                                                                                                  | `false`                | `OP_PROPOSER_ALLOW_NON_FINALIZED`                 |
| `--fee-limit-multiplier`                | The multiplier applied to fee suggestions to put a hard limit on fee increases                                                                                                                                              | `5`                    | `OP_PROPOSER_TXMGR_FEE_LIMIT_MULTIPLIER`          |
| `--game-factory-address`                | Address of the DisputeGameFactory contract                                                                                                                                                                                  | —                      | `OP_PROPOSER_GAME_FACTORY_ADDRESS`                |
| `--game-type`                           | Dispute game type to create via the configured DisputeGameFactory                                                                                                                                                           | `0`                    | `OP_PROPOSER_GAME_TYPE`                           |
| `--hd-path`                             | The HD path used to derive the sequencer wallet from the mnemonic. The mnemonic flag must also be set.                                                                                                                      | —                      | `OP_PROPOSER_HD_PATH`                             |
| `--l2-output-hd-path`                   | DEPRECATED:The HD path used to derive the l2output wallet from the mnemonic. The mnemonic flag must also be set.                                                                                                            | —                      | `OP_PROPOSER_L2_OUTPUT_HD_PATH`                   |
| `--log.color`                           | Color the log output if in terminal mode                                                                                                                                                                                    | `false`                | `OP_PROPOSER_LOG_COLOR`                           |
| `--log.format`                          | Format the log output. Supported formats: text, terminal, logfmt, logfmtms, json, jsonms                                                                                                                                    | `text`                 | `OP_PROPOSER_LOG_FORMAT`                          |
| `--log.level`                           | The lowest log level that will be output                                                                                                                                                                                    | `INFO`                 | `OP_PROPOSER_LOG_LEVEL`                           |
| `--log.pid`                             | Show pid in the log                                                                                                                                                                                                         | `false`                | `OP_PROPOSER_LOG_PID`                             |
| `--metrics.addr`                        | Metrics listening address                                                                                                                                                                                                   | `"0.0.0.0"`            | `OP_PROPOSER_METRICS_ADDR`                        |
| `--metrics.enabled`                     | Enable the metrics server                                                                                                                                                                                                   | `false`                | `OP_PROPOSER_METRICS_ENABLED`                     |
| `--metrics.port`                        | Metrics listening port                                                                                                                                                                                                      | `7300`                 | `OP_PROPOSER_METRICS_PORT`                        |
| `--mnemonic`                            | The mnemonic used to derive the wallets for either the service                                                                                                                                                              | —                      | `OP_PROPOSER_MNEMONIC`                            |
| `--network-timeout`                     | Timeout for all network operations                                                                                                                                                                                          | `10s`                  | `OP_PROPOSER_NETWORK_TIMEOUT`                     |
| `--num-confirmations`                   | Number of confirmations which we will wait after sending a transaction                                                                                                                                                      | `10`                   | `OP_PROPOSER_NUM_CONFIRMATIONS`                   |
| `--poll-interval`                       | Delay between periodic checks on whether it is time to load an output root and propose it.                                                                                                                                  | `12s`                  | `OP_PROPOSER_POLL_INTERVAL`                       |
| `--pprof.addr`                          | pprof listening address                                                                                                                                                                                                     | `"0.0.0.0"`            | `OP_PROPOSER_PPROF_ADDR`                          |
| `--pprof.enabled`                       | Enable the pprof server                                                                                                                                                                                                     | `false`                | `OP_PROPOSER_PPROF_ENABLED`                       |
| `--pprof.path`                          | pprof file path. If it is a directory, the path is \{dir}/\{profileType}.prof                                                                                                                                               | —                      | `OP_PROPOSER_PPROF_PATH`                          |
| `--pprof.port`                          | pprof listening port                                                                                                                                                                                                        | `6060`                 | `OP_PROPOSER_PPROF_PORT`                          |
| `--pprof.type`                          | pprof profile type. One of cpu, heap, goroutine, threadcreate, block, mutex, allocs                                                                                                                                         | —                      | `OP_PROPOSER_PPROF_TYPE`                          |
| `--private-key`                         | The private key to use with the service. Must not be used with mnemonic.                                                                                                                                                    | —                      | `OP_PROPOSER_PRIVATE_KEY`                         |
| `--proposal-interval`                   | Interval between submitting L2 output proposals when the dispute game factory address is set                                                                                                                                | `0s`                   | `OP_PROPOSER_PROPOSAL_INTERVAL`                   |
| `--resubmission-timeout`                | Duration we will wait before resubmitting a transaction to L1                                                                                                                                                               | `48s`                  | `OP_PROPOSER_RESUBMISSION_TIMEOUT`                |
| `--rollup-rpc`                          | HTTP provider URL for the rollup node. A comma-separated list enables the active rollup provider.                                                                                                                           | —                      | `OP_PROPOSER_ROLLUP_RPC`                          |
| `--rpc.addr`                            | rpc listening address                                                                                                                                                                                                       | `"0.0.0.0"`            | `OP_PROPOSER_RPC_ADDR`                            |
| `--rpc.enable-admin`                    | Enable the admin API                                                                                                                                                                                                        | `false`                | `OP_PROPOSER_RPC_ENABLE_ADMIN`                    |
| `--rpc.port`                            | rpc listening port                                                                                                                                                                                                          | `8545`                 | `OP_PROPOSER_RPC_PORT`                            |
| `--safe-abort-nonce-too-low-count`      | Number of ErrNonceTooLow observations required to give up on a tx at a particular nonce without receiving confirmation                                                                                                      | `3`                    | `OP_PROPOSER_SAFE_ABORT_NONCE_TOO_LOW_COUNT`      |
| `--signer.address`                      | Address the signer is signing requests for                                                                                                                                                                                  | —                      | `OP_PROPOSER_SIGNER_ADDRESS`                      |
| `--signer.endpoint`                     | Signer endpoint the client will connect to                                                                                                                                                                                  | —                      | `OP_PROPOSER_SIGNER_ENDPOINT`                     |
| `--signer.header`                       | Headers to pass to the remote signer. Format `key=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.                   | —                      | `OP_PROPOSER_SIGNER_HEADER`                       |
| `--signer.tls.ca`                       | tls ca cert path                                                                                                                                                                                                            | `"tls/ca.crt"`         | `OP_PROPOSER_SIGNER_TLS_CA`                       |
| `--signer.tls.cert`                     | tls cert path                                                                                                                                                                                                               | `"tls/tls.crt"`        | `OP_PROPOSER_SIGNER_TLS_CERT`                     |
| `--signer.tls.enabled`                  | Enable or disable TLS client authentication for the signer                                                                                                                                                                  | `true`                 | `OP_PROPOSER_SIGNER_TLS_ENABLED`                  |
| `--signer.tls.key`                      | tls key                                                                                                                                                                                                                     | `"tls/tls.key"`        | `OP_PROPOSER_SIGNER_TLS_KEY`                      |
| `--supernode-rpcs`                      | HTTP provider URLs for the supernode instances. Multiple URLs can be provided to automatically fail over.                                                                                                                   | —                      | `OP_PROPOSER_SUPERNODE_RPCS`                      |
| `--txmgr.already-published-custom-errs` | List of custom RPC error messages that indicate that a transaction has already been published.                                                                                                                              | —                      | `OP_PROPOSER_TXMGR_ALREADY_PUBLISHED_CUSTOM_ERRS` |
| `--txmgr.cell-proof-time`               | Enables cell proofs in blob transactions for Fusaka (EIP-7742) compatibility from the provided unix timestamp. Should be set to the L1 Fusaka time. May be left blank for Ethereum Mainnet, Sepolia, Holesky, or Hoodi L1s. | `18446744073709551615` | `OP_PROPOSER_TXMGR_CELL_PROOF_TIME`               |
| `--txmgr.fee-limit-threshold`           | The minimum threshold (in GWei) at which fee bumping starts to be capped. Allows arbitrary fee bumps below this threshold.                                                                                                  | `100`                  | `OP_PROPOSER_TXMGR_FEE_LIMIT_THRESHOLD`           |
| `--txmgr.max-basefee`                   | Enforces a maximum base fee (in GWei) to assume when determining tx fees, `TxMgr` returns an error when exceeded. Disabled by default.                                                                                      | `0`                    | `OP_PROPOSER_TXMGR_MAX_BASEFEE`                   |
| `--txmgr.max-retries`                   | Maximum number of times to resubmit a transaction to L1 on a transient error. Set to 0 to disable retries.                                                                                                                  | `10`                   | `OP_PROPOSER_TXMGR_MAX_RETRIES`                   |
| `--txmgr.max-tip-cap`                   | Enforces a maximum tip cap (in GWei) to use when determining tx fees, `TxMgr` returns an error when exceeded. Disabled by default.                                                                                          | `0`                    | `OP_PROPOSER_TXMGR_MAX_TIP_CAP`                   |
| `--txmgr.min-basefee`                   | Enforces a minimum base fee (in GWei) to assume when determining tx fees. 1 GWei by default.                                                                                                                                | `1`                    | `OP_PROPOSER_TXMGR_MIN_BASEFEE`                   |
| `--txmgr.min-tip-cap`                   | Enforces a minimum tip cap (in GWei) to use when determining tx fees. 1 GWei by default.                                                                                                                                    | `1`                    | `OP_PROPOSER_TXMGR_MIN_TIP_CAP`                   |
| `--txmgr.not-in-mempool-timeout`        | Timeout for aborting a tx send if the tx does not make it to the mempool.                                                                                                                                                   | `2m0s`                 | `OP_PROPOSER_TXMGR_TX_NOT_IN_MEMPOOL_TIMEOUT`     |
| `--txmgr.rebroadcast-interval`          | Interval at which a published transaction will be rebroadcasted if it has not yet been mined. Should be less than ResubmissionTimeout to have an effect.                                                                    | `12s`                  | `OP_PROPOSER_TXMGR_REBROADCAST_INTERVAL`          |
| `--txmgr.receipt-query-interval`        | Frequency to poll for receipts                                                                                                                                                                                              | `12s`                  | `OP_PROPOSER_TXMGR_RECEIPT_QUERY_INTERVAL`        |
| `--txmgr.retry-interval`                | Duration we will wait before resubmitting a transaction to L1 on a transient error. Values \<= 0 will result in retrying immediately. Should be less than ResubmissionTimeout to have an effect.                            | `1s`                   | `OP_PROPOSER_TXMGR_RETRY_INTERVAL`                |
| `--txmgr.send-timeout`                  | Timeout for sending transactions. If 0 it is disabled.                                                                                                                                                                      | `0s`                   | `OP_PROPOSER_TXMGR_TX_SEND_TIMEOUT`               |
| `--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.                                                                            | `false`                | `OP_PROPOSER_WAIT_NODE_SYNC`                      |
