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

# Batcher 구성 레퍼런스

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

이 페이지는 L2 sequencer 데이터를 L1에 게시하여 검증자가 사용할 수 있도록 하는
서비스인 op-batcher의 모든 구성 옵션을 정리합니다.

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

batcher 정책, 비용 조정, multi-blob 트랜잭션, sequencer 스로틀링 등 값 선택에 대한
안내는 [batcher 구성 가이드](https://docs.optimism.io/ko/chain-operators/guides/configuration/batcher.md)를
참조하세요.

## 플래그

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

### 필수 플래그

| 플래그 | 설명 | 환경 변수 |
| - | - | - |
| `--l1-eth-rpc` | L1의 HTTP provider URL | `OP_BATCHER_L1_ETH_RPC` |
| `--l2-eth-rpc` | L2 execution engine의 HTTP provider URL. 쉼표로 구분된 목록을 지정하면 활성 L2 엔드포인트 provider가 활성화됩니다. 이 목록의 개수는 제공된 rollup-rpc 개수와 일치해야 합니다. | `OP_BATCHER_L2_ETH_RPC` |
| `--rollup-rpc` | Rollup node의 HTTP provider URL. 쉼표로 구분된 목록을 지정하면 활성 L2 엔드포인트 provider가 활성화됩니다. 이 목록의 개수는 제공된 l2-eth-rpc 개수와 일치해야 합니다. | `OP_BATCHER_ROLLUP_RPC` |

### 선택 플래그

| 플래그 | 설명 | 기본값 | 환경 변수 |
| - | - | - | - |
| `--active-sequencer-check-duration` | 활성 sequencer 엔드포인트를 확인하는 검사 간격입니다. | `5s` | `OP_BATCHER_ACTIVE_SEQUENCER_CHECK_DURATION` |
| `--altda.da-server` | DA 서버의 HTTP 주소 | — | `OP_BATCHER_ALTDA_DA_SERVER` |
| `--altda.da-service` | Alt-DA 서버가 commitment를 생성하는 DA 서비스 유형을 사용합니다. | `false` | `OP_BATCHER_ALTDA_DA_SERVICE` |
| `--altda.enabled` | Alt-DA 모드를 활성화합니다. Alt-DA 모드는 MIT 라이선스 OP Stack의 베타 기능입니다. 핵심 기여자의 초기 검토를 거쳤지만 아직 테스트가 진행 중이며, 버그나 기타 문제가 있을 수 있습니다. | `false` | `OP_BATCHER_ALTDA_ENABLED` |
| `--altda.get-timeout` | get 요청의 타임아웃입니다. 0은 타임아웃 없음을 의미합니다. | `0s` | `OP_BATCHER_ALTDA_GET_TIMEOUT` |
| `--altda.max-concurrent-da-requests` | DA 서버에 대한 최대 동시 요청 수 | `1` | `OP_BATCHER_ALTDA_MAX_CONCURRENT_DA_REQUESTS` |
| `--altda.put-timeout` | put 요청의 타임아웃입니다. 0은 타임아웃 없음을 의미합니다. | `0s` | `OP_BATCHER_ALTDA_PUT_TIMEOUT` |
| `--altda.verify-on-read` | 입력 데이터가 DA 스토리지 서비스의 commitment와 일치하는지 검증합니다. | `true` | `OP_BATCHER_ALTDA_VERIFY_ON_READ` |
| `--approx-compr-ratio` | 대략적인 압축률(\<= 1.0)입니다. ratio compressor에만 해당됩니다. | `0.6` | `OP_BATCHER_APPROX_COMPR_RATIO` |
| `--batch-type` | 배치 유형입니다. SingularBatch는 0, SpanBatch는 1입니다. | `singular` | `OP_BATCHER_BATCH_TYPE` |
| `--check-recent-txs-depth` | 시작 시 batcher가 L1에서 최근 배치 tx를 찾기 위해 몇 블록 전까지 확인할지 지정합니다. 노드 동기화 대기 시간을 단축할 수 있습니다. sequencer의 verifier 확인 깊이(예: 4)로 설정해야 합니다. | `0` | `OP_BATCHER_CHECK_RECENT_TXS_DEPTH` |
| `--compression-algo` | 사용할 압축 알고리즘입니다. 유효한 옵션: zlib, brotli, brotli-9, brotli-10, brotli-11 | `zlib` | `OP_BATCHER_COMPRESSION_ALGO` |
| `--compressor` | compressor 유형입니다. 유효한 옵션: none, ratio, shadow | `"shadow"` | `OP_BATCHER_COMPRESSOR` |
| `--data-availability-type` | L1에 배치를 제출할 때 사용할 데이터 가용성 유형입니다. 유효한 옵션: calldata, blobs, auto | `calldata` | `OP_BATCHER_DATA_AVAILABILITY_TYPE` |
| `--fee-limit-multiplier` | 수수료 인상에 엄격한 상한을 두기 위해 수수료 제안값에 적용하는 배수 | `5` | `OP_BATCHER_TXMGR_FEE_LIMIT_MULTIPLIER` |
| `--hd-path` | mnemonic에서 sequencer 지갑을 파생하는 데 사용하는 HD 경로입니다. mnemonic 플래그도 함께 설정해야 합니다. | — | `OP_BATCHER_HD_PATH` |
| `--log.color` | 터미널 모드에서 로그 출력에 색상을 적용합니다. | `false` | `OP_BATCHER_LOG_COLOR` |
| `--log.format` | 로그 출력 형식입니다. 지원 형식: text, terminal, logfmt, logfmtms, json, jsonms | `text` | `OP_BATCHER_LOG_FORMAT` |
| `--log.level` | 출력할 최저 로그 레벨 | `INFO` | `OP_BATCHER_LOG_LEVEL` |
| `--log.pid` | 로그에 pid를 표시합니다. | `false` | `OP_BATCHER_LOG_PID` |
| `--max-blocks-per-span-batch` | span batch에 추가할 최대 블록 수입니다. 기본값은 0이며 최대값이 없습니다. | `0` | `OP_BATCHER_MAX_BLOCKS_PER_SPAN_BATCH` |
| `--max-channel-duration` | 채널을 열어 둘 최대 기간(L1 블록 수)입니다. 0이면 비활성화됩니다. | `0` | `OP_BATCHER_MAX_CHANNEL_DURATION` |
| `--max-l1-tx-size-bytes` | L1에 제출하는 배치 tx의 최대 크기입니다. blob의 경우 무시되며 최대 blob 크기가 사용됩니다. | `120000` | `OP_BATCHER_MAX_L1_TX_SIZE_BYTES` |
| `--max-pending-tx` | 대기 중인 트랜잭션의 최대 개수입니다. 0이면 제한이 없습니다. | `1` | `OP_BATCHER_MAX_PENDING_TX` |
| `--metrics.addr` | 메트릭 수신 주소 | `"0.0.0.0"` | `OP_BATCHER_METRICS_ADDR` |
| `--metrics.enabled` | 메트릭 서버를 활성화합니다. | `false` | `OP_BATCHER_METRICS_ENABLED` |
| `--metrics.port` | 메트릭 수신 포트 | `7300` | `OP_BATCHER_METRICS_PORT` |
| `--mnemonic` | 서비스의 지갑을 파생하는 데 사용하는 mnemonic | — | `OP_BATCHER_MNEMONIC` |
| `--network-timeout` | 모든 네트워크 작업의 타임아웃 | `10s` | `OP_BATCHER_NETWORK_TIMEOUT` |
| `--num-confirmations` | 트랜잭션 전송 후 대기할 확인(confirmation) 수 | `10` | `OP_BATCHER_NUM_CONFIRMATIONS` |
| `--poll-interval` | 새 블록을 확인하기 위해 L2를 폴링하는 주기 | `6s` | `OP_BATCHER_POLL_INTERVAL` |
| `--pprof.addr` | pprof 수신 주소 | `"0.0.0.0"` | `OP_BATCHER_PPROF_ADDR` |
| `--pprof.enabled` | pprof 서버를 활성화합니다. | `false` | `OP_BATCHER_PPROF_ENABLED` |
| `--pprof.path` | pprof 파일 경로입니다. 디렉터리인 경우 경로는 \{dir}/\{profileType}.prof가 됩니다. | — | `OP_BATCHER_PPROF_PATH` |
| `--pprof.port` | pprof 수신 포트 | `6060` | `OP_BATCHER_PPROF_PORT` |
| `--pprof.type` | pprof 프로필 유형입니다. cpu, heap, goroutine, threadcreate, block, mutex, allocs 중 하나입니다. | — | `OP_BATCHER_PPROF_TYPE` |
| `--private-key` | 서비스에서 사용할 개인 키입니다. mnemonic과 함께 사용하면 안 됩니다. | — | `OP_BATCHER_PRIVATE_KEY` |
| `--resubmission-timeout` | L1에 트랜잭션을 재제출하기 전에 대기할 시간 | `48s` | `OP_BATCHER_RESUBMISSION_TIMEOUT` |
| `--rpc.addr` | rpc 수신 주소 | `"0.0.0.0"` | `OP_BATCHER_RPC_ADDR` |
| `--rpc.enable-admin` | admin API를 활성화합니다. | `false` | `OP_BATCHER_RPC_ENABLE_ADMIN` |
| `--rpc.port` | rpc 수신 포트 | `8545` | `OP_BATCHER_RPC_PORT` |
| `--safe-abort-nonce-too-low-count` | 확인을 받지 못한 상태에서 특정 nonce의 tx를 포기하기 위해 필요한 ErrNonceTooLow 관측 횟수 | `3` | `OP_BATCHER_SAFE_ABORT_NONCE_TOO_LOW_COUNT` |
| `--sequencer-hd-path` | DEPRECATED: mnemonic에서 sequencer 지갑을 파생하는 데 사용하는 HD 경로입니다. mnemonic 플래그도 함께 설정해야 합니다. | — | `OP_BATCHER_SEQUENCER_HD_PATH` |
| `--signer.address` | signer가 요청에 서명하는 대상 주소 | — | `OP_BATCHER_SIGNER_ADDRESS` |
| `--signer.endpoint` | 클라이언트가 연결할 signer 엔드포인트 | — | `OP_BATCHER_SIGNER_ENDPOINT` |
| `--signer.header` | 원격 signer에 전달할 헤더입니다. 형식은 `key=value`입니다. 값에는 HTTP 헤더에 허용되는 모든 문자를 사용할 수 있습니다. 환경 변수를 사용할 때는 쉼표로 구분합니다. 플래그를 사용할 때는 플래그 하나에 키-값 쌍 하나를 지정합니다. | — | `OP_BATCHER_SIGNER_HEADER` |
| `--signer.tls.ca` | tls CA 인증서 경로 | `"tls/ca.crt"` | `OP_BATCHER_SIGNER_TLS_CA` |
| `--signer.tls.cert` | tls 인증서 경로 | `"tls/tls.crt"` | `OP_BATCHER_SIGNER_TLS_CERT` |
| `--signer.tls.enabled` | signer에 대한 TLS 클라이언트 인증을 활성화하거나 비활성화합니다. | `true` | `OP_BATCHER_SIGNER_TLS_ENABLED` |
| `--signer.tls.key` | tls 키 | `"tls/tls.key"` | `OP_BATCHER_SIGNER_TLS_KEY` |
| `--stopped` | batcher를 중지된 상태로 초기화합니다. batcher는 admin\_startBatcher RPC를 사용해 시작할 수 있습니다. | `false` | `OP_BATCHER_STOPPED` |
| `--sub-safety-margin` | L1에 채널이 안전하게 포함되도록 보장하기 위해 채널의 타임아웃과 시퀀싱 윈도우에서 차감하는 batcher tx 제출 안전 마진(L1 블록 수)입니다. | `10` | `OP_BATCHER_SUB_SAFETY_MARGIN` |
| `--target-num-frames` | 채널당 생성할 목표 frame 수입니다. Blob DA를 사용하는 경우 blob tx당 blob 수를 제어합니다. | `1` | `OP_BATCHER_TARGET_NUM_FRAMES` |
| `--throttle.additional-endpoints` | 스로틀링 설정을 배포할 엔드포인트의 쉼표 구분 목록입니다(--l2-eth-rpc로 지정한 L2 엔드포인트에 추가로 적용). | — | `OP_BATCHER_THROTTLE_ADDITIONAL_ENDPOINTS` |
| `--throttle.block-size-lower-limit` | 스로틀 강도가 최대일 때 블록의 DA 크기 한도입니다(linear 및 quadratic controller에만 해당). 0은 한도가 전혀 적용되지 않음을 의미하므로 1을 가장 작은 유효 한도로 간주하십시오. | `2000` | `OP_BATCHER_THROTTLE_BLOCK_SIZE_LOWER_LIMIT` |
| `--throttle.block-size-upper-limit` | 스로틀 강도가 0일 때 블록의 DA 크기 한도입니다(스로틀링이 비활성 상태일 때 적용). | `130000` | `OP_BATCHER_THROTTLE_BLOCK_SIZE_UPPER_LIMIT` |
| `--throttle.controller-type` | 사용할 throttle controller 유형: 'step', 'linear', 'quadratic'(기본값) 또는 'pid'(EXPERIMENTAL - 주의해서 사용) | `"quadratic"` | `OP_BATCHER_THROTTLE_CONTROLLER_TYPE` |
| `--throttle.pid-integral-max` | EXPERIMENTAL: PID controller의 최대 적분 windup입니다. --throttle-controller-type이 'pid'로 설정된 경우에만 해당됩니다. | `1000` | `OP_BATCHER_THROTTLE_PID_INTEGRAL_MAX` |
| `--throttle.pid-kd` | EXPERIMENTAL: PID controller의 미분 이득입니다. --throttle-controller-type이 'pid'로 설정된 경우에만 해당됩니다. | `0.05` | `OP_BATCHER_THROTTLE_PID_KD` |
| `--throttle.pid-ki` | EXPERIMENTAL: PID controller의 적분 이득입니다. --throttle-controller-type이 'pid'로 설정된 경우에만 해당됩니다. | `0.01` | `OP_BATCHER_THROTTLE_PID_KI` |
| `--throttle.pid-kp` | EXPERIMENTAL: PID controller의 비례 이득입니다. --throttle-controller-type이 'pid'로 설정된 경우에만 해당됩니다. | `0.33` | `OP_BATCHER_THROTTLE_PID_KP` |
| `--throttle.pid-output-max` | EXPERIMENTAL: PID controller의 최대 출력입니다. --throttle-controller-type이 'pid'로 설정된 경우에만 해당됩니다. | `1` | `OP_BATCHER_THROTTLE_PID_OUTPUT_MAX` |
| `--throttle.pid-sample-time` | EXPERIMENTAL: PID controller의 샘플링 시간 간격이며, 기본값은 2s입니다. | `2s` | `OP_BATCHER_THROTTLE_PID_SAMPLE_TIME` |
| `--throttle.tx-size-lower-limit` | 스로틀 강도가 최대일 때 트랜잭션의 DA 크기 한도입니다. 0은 한도가 전혀 적용되지 않음을 의미하므로 1을 가장 작은 유효 한도로 간주하십시오. | `150` | `OP_BATCHER_THROTTLE_TX_SIZE_LOWER_LIMIT` |
| `--throttle.tx-size-upper-limit` | 스로틀 강도가 0+일 때(양수 쪽에서 0에 가까워질 때의 극한) 트랜잭션의 DA 크기 한도입니다. 스로틀링이 비활성 상태일 때는 적용되지 않습니다. | `20000` | `OP_BATCHER_THROTTLE_TX_SIZE_UPPER_LIMIT` |
| `--throttle.unsafe-da-bytes-lower-threshold` | batcher가 block builder의 스로틀링을 시작하는 unsafe\_da\_bytes 임계값입니다. 0이면 스로틀링이 비활성화됩니다. | `3200000` | `OP_BATCHER_THROTTLE_UNSAFE_DA_BYTES_LOWER_THRESHOLD` |
| `--throttle.unsafe-da-bytes-upper-threshold` | 스로틀링 강도가 최대가 되는 unsafe\_da\_bytes 임계값입니다(linear 및 quadratic controller에만 해당). | `12800000` | `OP_BATCHER_THROTTLE_UNSAFE_DA_BYTES_UPPER_THRESHOLD` |
| `--txmgr.already-published-custom-errs` | 트랜잭션이 이미 게시되었음을 나타내는 커스텀 RPC 오류 메시지 목록입니다. | — | `OP_BATCHER_TXMGR_ALREADY_PUBLISHED_CUSTOM_ERRS` |
| `--txmgr.blob-tip-cap-dynamic` | blob 트랜잭션에 정적 tip cap 대신 blob tip oracle의 동적 blob tip cap을 사용합니다. 일반 트랜잭션은 계속 min-tip-cap/max-tip-cap을 사용합니다. | `false` | `OP_BATCHER_TXMGR_BLOB_TIP_CAP_DYNAMIC` |
| `--txmgr.blob-tip-cap-percentile` | 제안값으로 사용할 최근 blob tx tip의 백분위수(1-100)입니다. blob-tip-cap-dynamic이 활성화된 경우에만 사용됩니다. | `60` | `OP_BATCHER_TXMGR_BLOB_TIP_CAP_PERCENTILE` |
| `--txmgr.blob-tip-cap-range` | blob tip cap 분포를 분석할 최근 블록 수입니다. blob-tip-cap-dynamic이 활성화된 경우에만 사용됩니다. | `20` | `OP_BATCHER_TXMGR_BLOB_TIP_CAP_RANGE` |
| `--txmgr.cell-proof-time` | 지정한 unix 타임스탬프부터 Fusaka(EIP-7742) 호환성을 위해 blob 트랜잭션에서 cell proof를 활성화합니다. L1 Fusaka 시점으로 설정해야 합니다. Ethereum Mainnet, Sepolia, Holesky, Hoodi L1의 경우 비워 둘 수 있습니다. | `18446744073709551615` | `OP_BATCHER_TXMGR_CELL_PROOF_TIME` |
| `--txmgr.fee-limit-threshold` | 수수료 인상(fee bumping)에 상한이 적용되기 시작하는 최소 임계값(GWei 단위)입니다. 이 임계값 미만에서는 임의의 수수료 인상이 허용됩니다. | `100` | `OP_BATCHER_TXMGR_FEE_LIMIT_THRESHOLD` |
| `--txmgr.max-basefee` | tx 수수료를 결정할 때 가정하는 최대 base fee(GWei 단위)를 강제하며, 초과하면 `TxMgr`가 오류를 반환합니다. 기본적으로 비활성화되어 있습니다. | `0` | `OP_BATCHER_TXMGR_MAX_BASEFEE` |
| `--txmgr.max-retries` | 일시적인 오류 발생 시 L1에 트랜잭션을 재제출하는 최대 횟수입니다. 0으로 설정하면 재시도가 비활성화됩니다. | `10` | `OP_BATCHER_TXMGR_MAX_RETRIES` |
| `--txmgr.max-tip-cap` | tx 수수료를 결정할 때 사용하는 최대 tip cap(GWei 단위)을 강제하며, 초과하면 `TxMgr`가 오류를 반환합니다. 기본적으로 비활성화되어 있습니다. | `0` | `OP_BATCHER_TXMGR_MAX_TIP_CAP` |
| `--txmgr.min-basefee` | tx 수수료를 결정할 때 가정하는 최소 base fee(GWei 단위)를 강제합니다. 기본값은 1 GWei입니다. | `1` | `OP_BATCHER_TXMGR_MIN_BASEFEE` |
| `--txmgr.min-tip-cap` | tx 수수료를 결정할 때 사용하는 최소 tip cap(GWei 단위)을 강제합니다. 기본값은 1 GWei입니다. | `1` | `OP_BATCHER_TXMGR_MIN_TIP_CAP` |
| `--txmgr.not-in-mempool-timeout` | tx가 mempool에 도달하지 못한 경우 tx 전송을 중단하기까지의 타임아웃입니다. | `2m0s` | `OP_BATCHER_TXMGR_TX_NOT_IN_MEMPOOL_TIMEOUT` |
| `--txmgr.rebroadcast-interval` | 게시된 트랜잭션이 아직 채굴되지 않은 경우 다시 브로드캐스트하는 간격입니다. 효과를 보려면 ResubmissionTimeout보다 작아야 합니다. | `12s` | `OP_BATCHER_TXMGR_REBROADCAST_INTERVAL` |
| `--txmgr.receipt-query-interval` | receipt를 폴링하는 주기 | `12s` | `OP_BATCHER_TXMGR_RECEIPT_QUERY_INTERVAL` |
| `--txmgr.retry-interval` | 일시적인 오류 발생 시 L1에 트랜잭션을 재제출하기 전에 대기할 시간입니다. 값이 \<= 0이면 즉시 재시도합니다. 효과를 보려면 ResubmissionTimeout보다 작아야 합니다. | `1s` | `OP_BATCHER_TXMGR_RETRY_INTERVAL` |
| `--txmgr.send-timeout` | 트랜잭션 전송 타임아웃입니다. 0이면 비활성화됩니다. | `0s` | `OP_BATCHER_TXMGR_TX_SEND_TIMEOUT` |
| `--wait-node-sync` | 시작 시 batcher가 L1의 최근 batcher tx가 (추가 블록 확인을 통해) 최종 확정될 때까지 대기할지 여부를 지정합니다. 중복 batcher tx를 방지하는 데 도움이 됩니다. | `false` | `OP_BATCHER_WAIT_NODE_SYNC` |

## 스로틀링

`throttle.*` 플래그는 백로그가 쌓였을 때 batcher가 데이터 가용성(DA) 사용량을
제한하는 방식을 제어합니다. 아직 L1에 게시되지 않은 sequencing된 데이터의 양
(`unsafe_da_bytes` 메트릭)이 `--throttle.unsafe-da-bytes-lower-threshold`를 초과하면,
batcher는 `--l2-eth-rpc` 엔드포인트와 `--throttle.additional-endpoints`에 나열된
엔드포인트를 통해 블록 빌더에게 트랜잭션 및 블록 DA 크기를 제한하도록 지시하며,
백로그가 커짐에 따라 구성된 상한과 하한 크기 제한 사이에서 조정합니다.

`--throttle.controller-type`은 백로그에 따라 스로틀링 강도가 증가하는 방식을
선택합니다: `step`, `linear`, `quadratic`(기본값), 또는 6개의 `throttle.pid-*`
플래그로 조정하는 실험적 `pid` 컨트롤러입니다.

PID 컨트롤러를 포함한 스로틀링 하위 시스템의 설계는 monorepo의
[`op-batcher/throttling.md`](https://github.com/ethereum-optimism/optimism/blob/develop/op-batcher/throttling.md)를
참조하세요.

## 주요 플래그 참고 사항

### batch-type

Span batch(`--batch-type=1`)는 더 나은 압축을 위해 연속된 L2 블록을 단일 배치로
묶습니다. 자세한 내용은 [span batch 기능 페이지](https://docs.optimism.io/ko/op-stack/features/span-batches.md)를
참조하세요.

### data-availability-type

> [!NOTE]
>
> 이 플래그를 `auto`로 설정하면 batcher가 현재 L1 gas 가격에 따라 `calldata`와
> `blobs` 사이를 자동으로 전환할 수 있습니다.

### altda.\*

`altda.*` 플래그는 OP Stack의 베타 기능인 Alt-DA 모드를 구성합니다.
핵심 기여자들의 초기 검토를 거쳤지만 아직 테스트 중이며 버그나 기타 문제가 있을 수
있습니다. 설정 지침은 [Alt-DA 모드 가이드](https://docs.optimism.io/ko/chain-operators/guides/features/alt-da-mode-guide.md)를
참조하세요.
