> ## 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 구성

> op-proposer 구성 옵션과 proposer 정책 제약 조건에 대한 레퍼런스입니다.

이 페이지에는 op-proposer의 모든 구성 옵션이 나열되어 있습니다. op-proposer는
output root(제안, proposal)를 L1에 게시하여 검증자(verifier)가 사용할 수 있도록 합니다. L1으로의 출금은 반드시 output root를 참조해야 합니다.
체인이 권한형(permissioned) 결함 증명(fault proof)을 실행하는 경우, [지정된 proposer](https://docs.optimism.io/ko/op-stack/protocol/privileged-roles.md)만 output root를 제출할 수 있습니다.
[무허가형(permissionless) 결함 증명](https://docs.optimism.io/ko/op-stack/fault-proofs/explainer.md)을 사용하면 누구나 제안을 할 수 있습니다.

## Proposer 정책

proposer 정책은 L2 output root를 L1에 게시하는 방식에 관한 상위 수준의 제약 조건과 책임을 정의합니다. 아래는 OP Stack에서 proposer를 구성하기 위한 [표준 가이드라인](https://docs.optimism.io/ko/op-stack/protocol/superchain-registry.md#what-is-a-standard-chain)입니다.

| 파라미터 | 설명 | 관리 주체 | 요구 사항 | 참고 |
| - | - | - | - | - |
| Output 빈도 | L2 output root를 (output oracle을 통해) L1에 얼마나 자주 제출할지 정의합니다. | L1 Proxy Admin | **43,200 L2 블록**(2초 블록 시간 기준 24시간) 이하 | 0으로 설정할 수 없습니다(output에는 일정한 주기가 있어야 합니다). |

### 구성 예시

```
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
```

처리량이 높은 체인은 사용자가 더 자주 출금을 제출할 수 있도록 `proposal-interval`을 줄일 수 있습니다.

## 플래그

아래 플래그 테이블은 출처(provenance) 줄에 명시된 릴리스 태그 시점의 모노레포에 있는
op-proposer의 플래그 정의(`op-proposer/flags`)로부터 직접 생성되며, 새로운 최종
확정 릴리스가 게시될 때 재생성되므로 조용히 뒤처지는 일이 없습니다. 모든 플래그는 옆에
표시된 환경 변수를 통해서도 설정할 수 있습니다.

[`op-proposer/v1.16.3`](https://github.com/ethereum-optimism/optimism/releases/tag/op-proposer%2Fv1.16.3)의
플래그 정의에서 생성되었습니다. 플래그 54개: 필수 1개, 선택 53개.

### 필수 플래그

| 플래그 | 설명 | 환경 변수 |
| - | - | - |
| `--l1-eth-rpc` | L1용 HTTP provider URL | `OP_PROPOSER_L1_ETH_RPC` |

### 선택 플래그

| 플래그 | 설명 | 기본값 | 환경 변수 |
| - | - | - | - |
| `--active-sequencer-check-duration` | 활성 sequencer 엔드포인트를 확인하는 검사 사이의 간격입니다. | `2m0s` | `OP_PROPOSER_ACTIVE_SEQUENCER_CHECK_DURATION` |
| `--allow-non-finalized` | 최종 확정되지 않은 L1 블록에서 파생된 L2 블록에 대해 proposer가 제안을 제출하도록 허용합니다. | `false` | `OP_PROPOSER_ALLOW_NON_FINALIZED` |
| `--fee-limit-multiplier` | 수수료 증가에 엄격한 상한을 두기 위해 수수료 제안값에 적용되는 배수 | `5` | `OP_PROPOSER_TXMGR_FEE_LIMIT_MULTIPLIER` |
| `--game-factory-address` | DisputeGameFactory 컨트랙트의 주소 | — | `OP_PROPOSER_GAME_FACTORY_ADDRESS` |
| `--game-type` | 설정된 DisputeGameFactory를 통해 생성할 분쟁 게임(dispute game) 유형 | `0` | `OP_PROPOSER_GAME_TYPE` |
| `--hd-path` | 니모닉에서 sequencer 지갑을 파생하는 데 사용하는 HD 경로입니다. mnemonic 플래그도 함께 설정해야 합니다. | — | `OP_PROPOSER_HD_PATH` |
| `--l2-output-hd-path` | DEPRECATED: 니모닉에서 l2output 지갑을 파생하는 데 사용하는 HD 경로입니다. mnemonic 플래그도 함께 설정해야 합니다. | — | `OP_PROPOSER_L2_OUTPUT_HD_PATH` |
| `--log.color` | 터미널 모드인 경우 로그 출력에 색상 적용 | `false` | `OP_PROPOSER_LOG_COLOR` |
| `--log.format` | 로그 출력 형식입니다. 지원 형식: text, terminal, logfmt, logfmtms, json, jsonms | `text` | `OP_PROPOSER_LOG_FORMAT` |
| `--log.level` | 출력할 가장 낮은 로그 레벨 | `INFO` | `OP_PROPOSER_LOG_LEVEL` |
| `--log.pid` | 로그에 pid 표시 | `false` | `OP_PROPOSER_LOG_PID` |
| `--metrics.addr` | 메트릭 리스닝 주소 | `"0.0.0.0"` | `OP_PROPOSER_METRICS_ADDR` |
| `--metrics.enabled` | 메트릭 서버 활성화 | `false` | `OP_PROPOSER_METRICS_ENABLED` |
| `--metrics.port` | 메트릭 리스닝 포트 | `7300` | `OP_PROPOSER_METRICS_PORT` |
| `--mnemonic` | 서비스용 지갑을 파생하는 데 사용하는 니모닉 | — | `OP_PROPOSER_MNEMONIC` |
| `--network-timeout` | 모든 네트워크 작업의 타임아웃 | `10s` | `OP_PROPOSER_NETWORK_TIMEOUT` |
| `--num-confirmations` | 트랜잭션을 전송한 후 대기할 확인(confirmation) 수 | `10` | `OP_PROPOSER_NUM_CONFIRMATIONS` |
| `--poll-interval` | output root를 로드하여 제안할 시점인지 주기적으로 확인하는 간격입니다. | `12s` | `OP_PROPOSER_POLL_INTERVAL` |
| `--pprof.addr` | pprof 리스닝 주소 | `"0.0.0.0"` | `OP_PROPOSER_PPROF_ADDR` |
| `--pprof.enabled` | pprof 서버 활성화 | `false` | `OP_PROPOSER_PPROF_ENABLED` |
| `--pprof.path` | pprof 파일 경로입니다. 디렉터리인 경우 경로는 \{dir}/\{profileType}.prof입니다 | — | `OP_PROPOSER_PPROF_PATH` |
| `--pprof.port` | pprof 리스닝 포트 | `6060` | `OP_PROPOSER_PPROF_PORT` |
| `--pprof.type` | pprof 프로파일 유형입니다. cpu, heap, goroutine, threadcreate, block, mutex, allocs 중 하나 | — | `OP_PROPOSER_PPROF_TYPE` |
| `--private-key` | 서비스에 사용할 개인 키입니다. mnemonic과 함께 사용하면 안 됩니다. | — | `OP_PROPOSER_PRIVATE_KEY` |
| `--proposal-interval` | dispute game factory 주소가 설정된 경우 L2 output 제안을 제출하는 간격 | `0s` | `OP_PROPOSER_PROPOSAL_INTERVAL` |
| `--resubmission-timeout` | 트랜잭션을 L1에 재제출하기 전에 대기하는 시간 | `48s` | `OP_PROPOSER_RESUBMISSION_TIMEOUT` |
| `--rollup-rpc` | rollup node용 HTTP provider URL입니다. 쉼표로 구분된 목록을 지정하면 active rollup provider가 활성화됩니다. | — | `OP_PROPOSER_ROLLUP_RPC` |
| `--rpc.addr` | rpc 리스닝 주소 | `"0.0.0.0"` | `OP_PROPOSER_RPC_ADDR` |
| `--rpc.enable-admin` | admin API 활성화 | `false` | `OP_PROPOSER_RPC_ENABLE_ADMIN` |
| `--rpc.port` | rpc 리스닝 포트 | `8545` | `OP_PROPOSER_RPC_PORT` |
| `--safe-abort-nonce-too-low-count` | 확인을 받지 못한 상태에서 특정 nonce의 tx를 포기하기 위해 필요한 ErrNonceTooLow 관찰 횟수 | `3` | `OP_PROPOSER_SAFE_ABORT_NONCE_TOO_LOW_COUNT` |
| `--signer.address` | signer가 요청에 서명하는 대상 주소 | — | `OP_PROPOSER_SIGNER_ADDRESS` |
| `--signer.endpoint` | 클라이언트가 연결할 signer 엔드포인트 | — | `OP_PROPOSER_SIGNER_ENDPOINT` |
| `--signer.header` | 원격 signer에 전달할 헤더입니다. 형식은 `key=value`입니다. 값에는 HTTP 헤더에서 허용되는 모든 문자를 사용할 수 있습니다. 환경 변수를 사용할 때는 쉼표로 구분합니다. 플래그를 사용할 때는 플래그당 하나의 키-값 쌍을 지정합니다. | — | `OP_PROPOSER_SIGNER_HEADER` |
| `--signer.tls.ca` | tls ca 인증서 경로 | `"tls/ca.crt"` | `OP_PROPOSER_SIGNER_TLS_CA` |
| `--signer.tls.cert` | tls 인증서 경로 | `"tls/tls.crt"` | `OP_PROPOSER_SIGNER_TLS_CERT` |
| `--signer.tls.enabled` | signer에 대한 TLS 클라이언트 인증 활성화 또는 비활성화 | `true` | `OP_PROPOSER_SIGNER_TLS_ENABLED` |
| `--signer.tls.key` | tls 키 | `"tls/tls.key"` | `OP_PROPOSER_SIGNER_TLS_KEY` |
| `--supernode-rpcs` | supernode 인스턴스용 HTTP provider URL입니다. 자동 장애 조치(failover)를 위해 여러 URL을 지정할 수 있습니다. | — | `OP_PROPOSER_SUPERNODE_RPCS` |
| `--txmgr.already-published-custom-errs` | 트랜잭션이 이미 게시되었음을 나타내는 사용자 지정 RPC 오류 메시지 목록입니다. | — | `OP_PROPOSER_TXMGR_ALREADY_PUBLISHED_CUSTOM_ERRS` |
| `--txmgr.cell-proof-time` | 지정한 unix 타임스탬프부터 Fusaka(EIP-7742) 호환성을 위해 blob 트랜잭션에서 cell proof를 활성화합니다. L1 Fusaka 시각으로 설정해야 합니다. Ethereum Mainnet, Sepolia, Holesky, Hoodi L1의 경우 비워 둘 수 있습니다. | `18446744073709551615` | `OP_PROPOSER_TXMGR_CELL_PROOF_TIME` |
| `--txmgr.fee-limit-threshold` | 수수료 인상(fee bumping)에 상한이 적용되기 시작하는 최소 임계값(GWei 단위)입니다. 이 임계값 미만에서는 임의의 수수료 인상을 허용합니다. | `100` | `OP_PROPOSER_TXMGR_FEE_LIMIT_THRESHOLD` |
| `--txmgr.max-basefee` | tx 수수료를 결정할 때 가정할 최대 base fee(GWei 단위)를 강제하며, 초과하면 `TxMgr`가 오류를 반환합니다. 기본적으로 비활성화되어 있습니다. | `0` | `OP_PROPOSER_TXMGR_MAX_BASEFEE` |
| `--txmgr.max-retries` | 일시적인 오류 발생 시 트랜잭션을 L1에 재제출하는 최대 횟수입니다. 재시도를 비활성화하려면 0으로 설정합니다. | `10` | `OP_PROPOSER_TXMGR_MAX_RETRIES` |
| `--txmgr.max-tip-cap` | tx 수수료를 결정할 때 사용할 최대 tip cap(GWei 단위)을 강제하며, 초과하면 `TxMgr`가 오류를 반환합니다. 기본적으로 비활성화되어 있습니다. | `0` | `OP_PROPOSER_TXMGR_MAX_TIP_CAP` |
| `--txmgr.min-basefee` | tx 수수료를 결정할 때 가정할 최소 base fee(GWei 단위)를 강제합니다. 기본값은 1 GWei입니다. | `1` | `OP_PROPOSER_TXMGR_MIN_BASEFEE` |
| `--txmgr.min-tip-cap` | tx 수수료를 결정할 때 사용할 최소 tip cap(GWei 단위)을 강제합니다. 기본값은 1 GWei입니다. | `1` | `OP_PROPOSER_TXMGR_MIN_TIP_CAP` |
| `--txmgr.not-in-mempool-timeout` | tx가 mempool에 들어가지 못한 경우 tx 전송을 중단하기까지의 타임아웃입니다. | `2m0s` | `OP_PROPOSER_TXMGR_TX_NOT_IN_MEMPOOL_TIMEOUT` |
| `--txmgr.rebroadcast-interval` | 게시된 트랜잭션이 아직 채굴되지 않은 경우 다시 브로드캐스트하는 간격입니다. 효과가 있으려면 ResubmissionTimeout보다 작아야 합니다. | `12s` | `OP_PROPOSER_TXMGR_REBROADCAST_INTERVAL` |
| `--txmgr.receipt-query-interval` | receipt를 폴링하는 빈도 | `12s` | `OP_PROPOSER_TXMGR_RECEIPT_QUERY_INTERVAL` |
| `--txmgr.retry-interval` | 일시적인 오류 발생 시 트랜잭션을 L1에 재제출하기 전에 대기하는 시간입니다. 값이 \<= 0이면 즉시 재시도합니다. 효과가 있으려면 ResubmissionTimeout보다 작아야 합니다. | `1s` | `OP_PROPOSER_TXMGR_RETRY_INTERVAL` |
| `--txmgr.send-timeout` | 트랜잭션 전송 타임아웃입니다. 0이면 비활성화됩니다. | `0s` | `OP_PROPOSER_TXMGR_TX_SEND_TIMEOUT` |
| `--wait-node-sync` | 시작 시 proposer가 driver loop를 진행하기 전에 rollup node가 현재 L1 tip까지 동기화될 때까지 기다릴지 여부를 나타냅니다. | `false` | `OP_PROPOSER_WAIT_NODE_SYNC` |
