> ## 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.

# Challenger 구성 레퍼런스

> CLI 플래그, 환경 변수, 기본값을 포함한 모든 op-challenger 구성 옵션에 대한 레퍼런스입니다.

이 페이지는 L1에서 결함 증명(fault proof) 게임을 모니터링하고, 잘못된 claim에 이의를
제기하며, 유효한 상태 전환을 방어하는 분쟁 게임(dispute game) 에이전트인
op-challenger의 모든 구성 옵션을 정리합니다.

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

prestate, trace type, 지갑, 모니터링 등 단계별 설정 지침은
[challenger 구성 가이드](https://docs.optimism.io/ko/chain-operators/guides/configuration/op-challenger-config-guide.md)를,
결함 증명 시스템의 작동 방식은
[challenger 설명](https://docs.optimism.io/ko/op-stack/fault-proofs/challenger.md)을 참조하세요.

## 플래그

[`op-challenger/v1.9.3`](https://github.com/ethereum-optimism/optimism/releases/tag/op-challenger%2Fv1.9.3)의
플래그 정의에서 생성되었습니다. 총 88개 플래그: 필수 4개, 선택 84개.

### 필수 플래그

| 플래그 | 설명 | 환경 변수 |
| - | - | - |
| `--datadir` | 게임 응답 과정에서 생성되는 데이터를 저장할 디렉터리 | `OP_CHALLENGER_DATADIR` |
| `--l1-beacon` | 사용할 L1 Beacon API 엔드포인트의 주소 | `OP_CHALLENGER_L1_BEACON` |
| `--l1-eth-rpc` | L1의 HTTP provider URL입니다. | `OP_CHALLENGER_L1_ETH_RPC` |
| `--l2-eth-rpc` | 사용할 L2 JSON-RPC 엔드포인트의 URL(eth 및 debug namespace 필요) | `OP_CHALLENGER_L2_ETH_RPC` |

### 선택 플래그

| 플래그 | 설명 | 기본값 | 환경 변수 |
| - | - | - | - |
| `--additional-bond-claimants` | 설정된 트랜잭션 발신자 외에 bond를 청구할 주소 목록 | — | `OP_CHALLENGER_ADDITIONAL_BOND_CLAIMANTS` |
| `--cannon-bin` | 트레이스 데이터를 생성할 때 사용할 cannon 실행 파일의 경로(cannon 게임 유형 전용) | — | `OP_CHALLENGER_CANNON_BIN` |
| `--cannon-depset-config` | Interop dependency set 설정 파일(cannon 게임 유형 전용) | — | `OP_CHALLENGER_CANNON_DEPSET_CONFIG` |
| `--cannon-info-freq` | cannon info 로그 메시지를 생성할 빈도(VM step 단위)(cannon 게임 유형 전용) | `10000000` | `OP_CHALLENGER_CANNON_INFO_FREQ` |
| `--cannon-kona-depset-config` | Interop dependency set 설정 파일(cannon-kona 게임 유형 전용) | — | `OP_CHALLENGER_CANNON_KONA_DEPSET_CONFIG` |
| `--cannon-kona-l1-genesis` | L1 제네시스 파일의 경로입니다. L1이 mainnet, sepolia, holesky, hoodi가 아닌 경우에만 필요합니다. | — | `OP_CHALLENGER_CANNON_KONA_L1_GENESIS` |
| `--cannon-kona-l2-genesis` | op-geth 제네시스 파일의 경로(cannon-kona 게임 유형 전용) | — | `OP_CHALLENGER_CANNON_KONA_L2_GENESIS` |
| `--cannon-kona-prestate` | 트레이스 데이터를 생성할 때 사용할 절대 prestate의 경로(cannon-kona 게임 유형 전용) | — | `OP_CHALLENGER_CANNON_KONA_PRESTATE` |
| `--cannon-kona-prestates-url` | 트레이스 데이터를 생성할 때 사용할 절대 prestate의 기본 URL입니다. 이 디렉터리의 prestate 이름은 \<commitment>.bin.gz, \<commitment>.json.gz 또는 \<commitment>.json 형식이어야 합니다(cannon-kona 게임 유형 전용) | — | `OP_CHALLENGER_CANNON_KONA_PRESTATES_URL` |
| `--cannon-kona-rollup-config` | Rollup 체인 파라미터(cannon-kona 게임 유형 전용) | — | `OP_CHALLENGER_CANNON_KONA_ROLLUP_CONFIG` |
| `--cannon-kona-server` | 트레이스 데이터를 생성할 때 pre-image oracle 서버로 사용할 kona 실행 파일의 경로(cannon-kona 게임 유형 전용) | — | `OP_CHALLENGER_CANNON_KONA_SERVER` |
| `--cannon-l1-genesis` | L1 제네시스 파일의 경로입니다. L1이 mainnet, sepolia, holesky, hoodi가 아닌 경우에만 필요합니다. | — | `OP_CHALLENGER_CANNON_L1_GENESIS` |
| `--cannon-l2-genesis` | op-geth 제네시스 파일의 경로(cannon 게임 유형 전용) | — | `OP_CHALLENGER_CANNON_L2_GENESIS` |
| `--cannon-prestate` | 트레이스 데이터를 생성할 때 사용할 절대 prestate의 경로(cannon 게임 유형 전용) | — | `OP_CHALLENGER_CANNON_PRESTATE` |
| `--cannon-prestates-url` | 트레이스 데이터를 생성할 때 사용할 절대 prestate의 기본 URL입니다. 이 디렉터리의 prestate 이름은 \<commitment>.bin.gz, \<commitment>.json.gz 또는 \<commitment>.json 형식이어야 합니다(cannon 게임 유형 전용) | — | `OP_CHALLENGER_CANNON_PRESTATES_URL` |
| `--cannon-rollup-config` | Rollup 체인 파라미터(cannon 게임 유형 전용) | — | `OP_CHALLENGER_CANNON_ROLLUP_CONFIG` |
| `--cannon-server` | 트레이스 데이터를 생성할 때 pre-image oracle 서버로 사용할 실행 파일의 경로(cannon 게임 유형 전용) | — | `OP_CHALLENGER_CANNON_SERVER` |
| `--cannon-snapshot-freq` | cannon 스냅샷을 생성할 빈도(VM step 단위)(cannon 게임 유형 전용) | `1000000000` | `OP_CHALLENGER_CANNON_SNAPSHOT_FREQ` |
| `--depset-config` | Interop dependency set 설정 파일 | — | `OP_CHALLENGER_DEPSET_CONFIG` |
| `--fee-limit-multiplier` | 수수료 인상에 엄격한 상한을 두기 위해 수수료 제안값에 적용하는 배수 | `5` | `OP_CHALLENGER_TXMGR_FEE_LIMIT_MULTIPLIER` |
| `--game-allowlist` | challenger가 참여할 수 있는 Fault Game 컨트랙트 주소 목록입니다. 비어 있으면 challenger는 모든 게임에 참여합니다. | — | `OP_CHALLENGER_GAME_ALLOWLIST` |
| `--game-factory-address` | fault game factory 컨트랙트의 주소입니다. | — | `OP_CHALLENGER_GAME_FACTORY_ADDRESS` |
| `--game-types` | 지원할 게임 유형입니다. 유효한 옵션: alphabet, cannon, cannon-kona, permissioned, fast, super-cannon-kona, super-permissioned, zk | `"cannon", "cannon-kona"` | `OP_CHALLENGER_GAME_TYPES` |
| `--game-window` | challenger가 진행할 게임과 bond를 청구할 게임을 찾는 시간 범위입니다. 최대 게임 기간을 벗어난 게임에 대해서도 challenger가 bond를 청구할 수 있도록 여유 시간을 포함해야 합니다. | `672h0m0s` | `OP_CHALLENGER_GAME_WINDOW` |
| `--hd-path` | mnemonic에서 sequencer 지갑을 파생하는 데 사용하는 HD 경로입니다. mnemonic 플래그도 함께 설정해야 합니다. | — | `OP_CHALLENGER_HD_PATH` |
| `--http-poll-interval` | HTTP RPC provider를 사용할 때 최신 블록 구독을 위한 폴링 간격입니다. | `12s` | `OP_CHALLENGER_HTTP_POLL_INTERVAL` |
| `--l1-genesis` | L1 제네시스 파일의 경로입니다. L1이 mainnet, sepolia, holesky, hoodi가 아닌 경우에만 필요합니다. | — | `OP_CHALLENGER_L1_GENESIS` |
| `--l1-rpc-kind` | RPC provider의 종류로, 최적의 트랜잭션 receipt 조회 방식을 결정하여 비용을 줄이는 데 사용됩니다. 유효한 옵션: alchemy, quicknode, infura, parity, nethermind, debug\_geth, erigon, basic, any, standard | `standard` | `OP_CHALLENGER_L1_RPC_KIND` |
| `--l2-experimental-eth-rpc` | 사용할 L2 JSON-RPC 엔드포인트의 L2 주소(execution witness를 지원하는 eth 및 debug namespace 필요)(cannon 게임 유형 전용) | — | `OP_CHALLENGER_L2_EXPERIMENTAL_ETH_RPC` |
| `--l2-genesis` | op-geth 제네시스 파일의 경로 | — | `OP_CHALLENGER_L2_GENESIS` |
| `--log.color` | 터미널 모드에서 로그 출력에 색상을 적용합니다. | `false` | `OP_CHALLENGER_LOG_COLOR` |
| `--log.format` | 로그 출력 형식입니다. 지원 형식: text, terminal, logfmt, logfmtms, json, jsonms | `text` | `OP_CHALLENGER_LOG_FORMAT` |
| `--log.level` | 출력할 최저 로그 레벨 | `INFO` | `OP_CHALLENGER_LOG_LEVEL` |
| `--log.pid` | 로그에 pid를 표시합니다. | `false` | `OP_CHALLENGER_LOG_PID` |
| `--max-concurrency` | 게임을 진행할 때 사용할 최대 스레드 수 | `4` | `OP_CHALLENGER_MAX_CONCURRENCY` |
| `--max-pending-tx` | 대기 중인 트랜잭션의 최대 개수입니다. 0이면 제한이 없습니다. | `10` | `OP_CHALLENGER_MAX_PENDING_TX` |
| `--metrics.addr` | 메트릭 수신 주소 | `"0.0.0.0"` | `OP_CHALLENGER_METRICS_ADDR` |
| `--metrics.enabled` | 메트릭 서버를 활성화합니다. | `false` | `OP_CHALLENGER_METRICS_ENABLED` |
| `--metrics.port` | 메트릭 수신 포트 | `7300` | `OP_CHALLENGER_METRICS_PORT` |
| `--min-update-interval` | L1 블록 시간을 기준으로 업데이트 주기를 예약하는 최소 간격입니다. | `0s` | `OP_CHALLENGER_MIN_UPDATE_INTERVAL` |
| `--mnemonic` | 서비스의 지갑을 파생하는 데 사용하는 mnemonic | — | `OP_CHALLENGER_MNEMONIC` |
| `--network` | 사전 정의된 네트워크 선택입니다. 사용 가능한 네트워크: 해당 릴리스 시점에 [superchain-registry](https://github.com/ethereum-optimism/superchain-registry)에서 번들된 모든 체인입니다. 정확한 목록은 `op-challenger --help`를 실행하여 확인하십시오. | — | `OP_CHALLENGER_NETWORK` |
| `--network-timeout` | 모든 네트워크 작업의 타임아웃 | `10s` | `OP_CHALLENGER_NETWORK_TIMEOUT` |
| `--num-confirmations` | 트랜잭션 전송 후 대기할 확인(confirmation) 수 | `3` | `OP_CHALLENGER_NUM_CONFIRMATIONS` |
| `--pprof.addr` | pprof 수신 주소 | `"0.0.0.0"` | `OP_CHALLENGER_PPROF_ADDR` |
| `--pprof.enabled` | pprof 서버를 활성화합니다. | `false` | `OP_CHALLENGER_PPROF_ENABLED` |
| `--pprof.path` | pprof 파일 경로입니다. 디렉터리인 경우 경로는 \{dir}/\{profileType}.prof가 됩니다. | — | `OP_CHALLENGER_PPROF_PATH` |
| `--pprof.port` | pprof 수신 포트 | `6060` | `OP_CHALLENGER_PPROF_PORT` |
| `--pprof.type` | pprof 프로필 유형입니다. cpu, heap, goroutine, threadcreate, block, mutex, allocs 중 하나입니다. | — | `OP_CHALLENGER_PPROF_TYPE` |
| `--prestates-url` | 트레이스 데이터를 생성할 때 사용할 절대 prestate의 기본 URL입니다. 이 디렉터리의 prestate 이름은 \<commitment>.bin.gz, \<commitment>.json.gz 또는 \<commitment>.json 형식이어야 합니다. | — | `OP_CHALLENGER_PRESTATES_URL` |
| `--private-key` | 서비스에서 사용할 개인 키입니다. mnemonic과 함께 사용하면 안 됩니다. | — | `OP_CHALLENGER_PRIVATE_KEY` |
| `--response-delay` | 게임 진행 속도를 늦추기 위해 게임 동작에 응답하기 전에 두는 지연 시간입니다. | `0s` | `OP_CHALLENGER_RESPONSE_DELAY` |
| `--response-delay-after` | 지연을 적용하기 시작할 응답 횟수입니다(0 = 첫 응답부터). | `0` | `OP_CHALLENGER_RESPONSE_DELAY_AFTER` |
| `--resubmission-timeout` | L1에 트랜잭션을 재제출하기 전에 대기할 시간 | `24s` | `OP_CHALLENGER_RESUBMISSION_TIMEOUT` |
| `--rollup-config` | Rollup 체인 파라미터 | — | `OP_CHALLENGER_ROLLUP_CONFIG` |
| `--rollup-rpc` | rollup node의 HTTP provider URL | — | `OP_CHALLENGER_ROLLUP_RPC` |
| `--safe-abort-nonce-too-low-count` | 확인을 받지 못한 상태에서 특정 nonce의 tx를 포기하기 위해 필요한 ErrNonceTooLow 관측 횟수 | `3` | `OP_CHALLENGER_SAFE_ABORT_NONCE_TOO_LOW_COUNT` |
| `--selective-claim-resolution` | 설정된 청구인(claimant)의 claim만 해결합니다. | `false` | `OP_CHALLENGER_SELECTIVE_CLAIM_RESOLUTION` |
| `--signer.address` | signer가 요청에 서명하는 대상 주소 | — | `OP_CHALLENGER_SIGNER_ADDRESS` |
| `--signer.endpoint` | 클라이언트가 연결할 signer 엔드포인트 | — | `OP_CHALLENGER_SIGNER_ENDPOINT` |
| `--signer.header` | 원격 signer에 전달할 헤더입니다. 형식은 `key=value`입니다. 값에는 HTTP 헤더에 허용되는 모든 문자를 사용할 수 있습니다. 환경 변수를 사용할 때는 쉼표로 구분합니다. 플래그를 사용할 때는 플래그 하나에 키-값 쌍 하나를 지정합니다. | — | `OP_CHALLENGER_SIGNER_HEADER` |
| `--signer.tls.ca` | tls CA 인증서 경로 | `"tls/ca.crt"` | `OP_CHALLENGER_SIGNER_TLS_CA` |
| `--signer.tls.cert` | tls 인증서 경로 | `"tls/tls.crt"` | `OP_CHALLENGER_SIGNER_TLS_CERT` |
| `--signer.tls.enabled` | signer에 대한 TLS 클라이언트 인증을 활성화하거나 비활성화합니다. | `true` | `OP_CHALLENGER_SIGNER_TLS_ENABLED` |
| `--signer.tls.key` | tls 키 | `"tls/tls.key"` | `OP_CHALLENGER_SIGNER_TLS_KEY` |
| `--super-cannon-kona-depset-config` | Interop dependency set 설정 파일(super-cannon-kona 게임 유형 전용) | — | `OP_CHALLENGER_SUPER_CANNON_KONA_DEPSET_CONFIG` |
| `--super-cannon-kona-l1-genesis` | L1 제네시스 파일의 경로입니다. L1이 mainnet, sepolia, holesky, hoodi가 아닌 경우에만 필요합니다. | — | `OP_CHALLENGER_SUPER_CANNON_KONA_L1_GENESIS` |
| `--super-cannon-kona-l2-genesis` | op-geth 제네시스 파일의 경로(super-cannon-kona 게임 유형 전용) | — | `OP_CHALLENGER_SUPER_CANNON_KONA_L2_GENESIS` |
| `--super-cannon-kona-prestates-url` | 트레이스 데이터를 생성할 때 사용할 절대 prestate의 기본 URL입니다. 이 디렉터리의 prestate 이름은 \<commitment>.bin.gz, \<commitment>.json.gz 또는 \<commitment>.json 형식이어야 합니다(super-cannon-kona 게임 유형 전용) | — | `OP_CHALLENGER_SUPER_CANNON_KONA_PRESTATES_URL` |
| `--super-cannon-kona-rollup-config` | Rollup 체인 파라미터(super-cannon-kona 게임 유형 전용) | — | `OP_CHALLENGER_SUPER_CANNON_KONA_ROLLUP_CONFIG` |
| `--supernode-rpc` | supernode root의 provider URL | — | `OP_CHALLENGER_SUPERNODE_RPC` |
| `--txmgr.already-published-custom-errs` | 트랜잭션이 이미 게시되었음을 나타내는 커스텀 RPC 오류 메시지 목록입니다. | — | `OP_CHALLENGER_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_CHALLENGER_TXMGR_CELL_PROOF_TIME` |
| `--txmgr.fee-limit-threshold` | 수수료 인상(fee bumping)에 상한이 적용되기 시작하는 최소 임계값(GWei 단위)입니다. 이 임계값 미만에서는 임의의 수수료 인상이 허용됩니다. | `100` | `OP_CHALLENGER_TXMGR_FEE_LIMIT_THRESHOLD` |
| `--txmgr.max-basefee` | tx 수수료를 결정할 때 가정하는 최대 base fee(GWei 단위)를 강제하며, 초과하면 `TxMgr`가 오류를 반환합니다. 기본적으로 비활성화되어 있습니다. | `0` | `OP_CHALLENGER_TXMGR_MAX_BASEFEE` |
| `--txmgr.max-retries` | 일시적인 오류 발생 시 L1에 트랜잭션을 재제출하는 최대 횟수입니다. 0으로 설정하면 재시도가 비활성화됩니다. | `10` | `OP_CHALLENGER_TXMGR_MAX_RETRIES` |
| `--txmgr.max-tip-cap` | tx 수수료를 결정할 때 사용하는 최대 tip cap(GWei 단위)을 강제하며, 초과하면 `TxMgr`가 오류를 반환합니다. 기본적으로 비활성화되어 있습니다. | `0` | `OP_CHALLENGER_TXMGR_MAX_TIP_CAP` |
| `--txmgr.min-basefee` | tx 수수료를 결정할 때 가정하는 최소 base fee(GWei 단위)를 강제합니다. 기본값은 1 GWei입니다. | `1` | `OP_CHALLENGER_TXMGR_MIN_BASEFEE` |
| `--txmgr.min-tip-cap` | tx 수수료를 결정할 때 사용하는 최소 tip cap(GWei 단위)을 강제합니다. 기본값은 1 GWei입니다. | `1` | `OP_CHALLENGER_TXMGR_MIN_TIP_CAP` |
| `--txmgr.not-in-mempool-timeout` | tx가 mempool에 도달하지 못한 경우 tx 전송을 중단하기까지의 타임아웃입니다. | `1m0s` | `OP_CHALLENGER_TXMGR_TX_NOT_IN_MEMPOOL_TIMEOUT` |
| `--txmgr.rebroadcast-interval` | 게시된 트랜잭션이 아직 채굴되지 않은 경우 다시 브로드캐스트하는 간격입니다. 효과를 보려면 ResubmissionTimeout보다 작아야 합니다. | `0s` | `OP_CHALLENGER_TXMGR_REBROADCAST_INTERVAL` |
| `--txmgr.receipt-query-interval` | receipt를 폴링하는 주기 | `12s` | `OP_CHALLENGER_TXMGR_RECEIPT_QUERY_INTERVAL` |
| `--txmgr.retry-interval` | 일시적인 오류 발생 시 L1에 트랜잭션을 재제출하기 전에 대기할 시간입니다. 값이 \<= 0이면 즉시 재시도합니다. 효과를 보려면 ResubmissionTimeout보다 작아야 합니다. | `1s` | `OP_CHALLENGER_TXMGR_RETRY_INTERVAL` |
| `--txmgr.send-timeout` | 트랜잭션 전송 타임아웃입니다. 0이면 비활성화됩니다. | `2m0s` | `OP_CHALLENGER_TXMGR_TX_SEND_TIMEOUT` |

## 주요 플래그 참고 사항

### 조건부 필수 플래그

위의 필수 플래그 표는 op-challenger가 시작 시 항상 확인하는 플래그를 나열합니다.
구성에 따라 추가 플래그가 필수가 됩니다. 체인은 `--network` 또는
`--game-factory-address`로 식별되어야 하며, 활성화된 각 game type에는 해당 trace
실행 플래그가 필요합니다(예: `cannon-kona` game type에는 kona 서버와
`--cannon-kona-prestate` 또는 `--cannon-kona-prestates-url`을 통한 absolute
prestate가 필요합니다).

### network

`--network`를 superchain-registry에 포함된 체인으로 설정하면
`--game-factory-address`가 registry에서 자동으로 확인되므로 설정할 필요가 없습니다.

### game-types

challenger가 플레이할 분쟁 game type을 선택합니다. 어떤 type이 체인을 방어하는지는
체인이 실행하는 프로토콜 버전에 따라 다릅니다. game type, trace type 및 해당
prestate 선택에 대해서는
[challenger 구성 가이드](https://docs.optimism.io/ko/chain-operators/guides/configuration/op-challenger-config-guide.md)를
참조하세요.

### cannon-\* 및 cannon-kona-\*

`cannon-*` 플래그는 cannon 기반 game type이 활성화된 경우에만 적용되며,
`cannon-kona-*` 변형은 `cannon-kona` game type에만 적용됩니다. 각 설정에는 기본
변형과 이를 재정의하는 game type별 변형이 있습니다(위 표의
`(<game type> game type only)` 접미사).

kona가 아닌 cannon game type이 실행하는 결함 증명 프로그램인 op-program은
[지원이 종료](https://docs.optimism.io/ko/notices/archive/op-geth-deprecation)되었으므로, kona 변형만 계속
유지 관리됩니다.

## 유틸리티 하위 명령

`op-challenger` 바이너리는 challenger 서비스 실행 외에도 분쟁 게임을 검사하고
상호작용하기 위한 유틸리티 하위 명령을 제공합니다:
`list-games`, `list-claims`, `list-credits`, `create-game`, `move`,
`resolve`, `resolve-claim`, `run-trace`. 각 명령은 고유한 플래그를 사용하며, 자세한
내용은 `op-challenger <subcommand> --help`를 실행하세요.
