Optimism Docker 노드 가이드
OP Stack 노드는 op-geth + op-node 두 컨테이너 조합이 표준이며, 공식 저장소 optimism/ops/op-stack/docker-compose 및 simple-optimism-node 도구가 널리 쓰입니다.
- 공식 문서: Run an OP Mainnet Node
- 공식 이미지:
- 커뮤니티 도구: smartcontracts/simple-optimism-node
전제: L1 Ethereum (Execution + Beacon)
OP Stack은 L1 Beacon API(blob sidecar 등)를 필요로 합니다. 다음이 필요합니다.
- L1 Execution JSON-RPC (예: Geth)
- L1 Beacon / Consensus API (예: Prysm / Lighthouse)
자체 노드 구성은 ../../ethereum/docker/README.md 참고.
빠른 실행 (simple-optimism-node)
git clone https://github.com/smartcontracts/simple-optimism-node.git
cd simple-optimism-node
cp .env.example .env
# .env 편집 — 최소 설정:
# NETWORK_NAME=op-mainnet
# NODE_TYPE=full
# OP_GETH_GENESIS_FILE_URL=... (mainnet genesis)
# L1_RPC_URL=<http://your-l1-geth:8545>
# L1_BEACON_URL=<http://your-l1-beacon:5052>
# L1_RPC_KIND=debug_geth
docker compose up -d
docker compose logs -f op-node
포트 (기본값)
- 8545: op-geth HTTP JSON-RPC
- 8546: op-geth WebSocket
- 9545: op-node HTTP RPC (optional)
- 7300: op-node P2P
- 30303: op-geth P2P
스냅샷 (권장)
Genesis부터 동기화는 수 주가 걸립니다. 공식 스냅샷으로 시작하세요.
- 공식 스냅샷 가이드: https://docs.optimism.io/builders/node-operators/management/snapshots
- OP Mainnet pruned snapshot: 약 1~2 TB 다운로드
상태 확인
# L2 최신 블록
curl -s -X POST http://localhost:8545 \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' | jq
# op-node 동기화
curl -s -X POST http://localhost:9545 \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","method":"optimism_syncStatus","params":[],"id":1}' | jq
OP Sepolia
.env에서 NETWORK_NAME=op-sepolia로 변경. L1은 Sepolia Execution+Beacon이 필요합니다.
프로덕션 팁
- L1 Beacon API의
blob_sidecars유지 기간(기본 ~18일)이 짧으면 재동기화 시 문제. 필요하면 blob archiver 연동 고려 op-node로그에서derivation단계를 보면 동기화 상태 파악 가능