Nodes/optimism/localhost

optimism

Optimism 호스트 설치 가이드

5분 읽기 · localhost

list목차(7)

Optimism 호스트 설치 가이드

OP Stack은 바이너리 실행도 가능하지만 두 프로세스(op-geth + op-node)를 각각 관리해야 하므로 대부분 Docker Compose를 사용합니다. 본 문서는 소스 빌드·systemd 기반 구성 개요입니다.

시스템 요구사항

항목 권장
CPU 8 vCPU+
RAM 32 GB+
Disk 2 TB NVMe (Full), Archive는 10 TB+
Network 100 Mbps+

빌드

sudo apt update && sudo apt install -y git curl build-essential

# Go 1.21+
wget https://go.dev/dl/go1.21.13.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.21.13.linux-amd64.tar.gz
export PATH=$PATH:/usr/local/go/bin

# op-geth
git clone https://github.com/ethereum-optimism/op-geth.git
cd op-geth
git checkout v1.101411.0
make geth
sudo cp build/bin/geth /usr/local/bin/op-geth
cd ..

# op-node
git clone https://github.com/ethereum-optimism/optimism.git
cd optimism/op-node
git checkout op-node/v1.10.2
make op-node
sudo cp bin/op-node /usr/local/bin/
cd ../..

Genesis / Rollup config

mkdir -p ~/op/data
cd ~/op
wget https://networks.optimism.io/op-mainnet/genesis.json
wget https://networks.optimism.io/op-mainnet/rollup.json

# JWT secret (op-geth <-> op-node Engine API)
openssl rand -hex 32 > ~/op/jwt.txt

op-geth 초기화 및 실행

op-geth init --datadir=$HOME/op/data $HOME/op/genesis.json

op-geth \
  --datadir $HOME/op/data \
  --http --http.port=8545 --http.addr=0.0.0.0 --http.api=net,web3,eth,debug \
  --ws --ws.port=8546 --ws.addr=0.0.0.0 --ws.api=net,web3,eth \
  --authrpc.addr=127.0.0.1 --authrpc.port=8551 \
  --authrpc.jwtsecret=$HOME/op/jwt.txt \
  --syncmode=full --rollup.sequencerhttp=https://mainnet-sequencer.optimism.io

op-node 실행

op-node \
  --l1=<L1_GETH_RPC> \
  --l1.beacon=<L1_BEACON_API> \
  --l2=http://127.0.0.1:8551 \
  --l2.jwt-secret=$HOME/op/jwt.txt \
  --rollup.config=$HOME/op/rollup.json \
  --rpc.addr=0.0.0.0 --rpc.port=9545 \
  --p2p.listen.ip=0.0.0.0 --p2p.listen.tcp=9003 --p2p.listen.udp=9003

systemd 서비스 (두 개 구성)

# /etc/systemd/system/op-geth.service
[Unit]
Description=Optimism op-geth (EL)
After=network-online.target

[Service]
User=op
Environment="HOME=/home/op"
ExecStart=/usr/local/bin/op-geth \
  --datadir /home/op/data \
  --http --http.port=8545 --http.addr=0.0.0.0 --http.api=net,web3,eth \
  --authrpc.addr=127.0.0.1 --authrpc.port=8551 \
  --authrpc.jwtsecret=/home/op/jwt.txt \
  --syncmode=full
Restart=on-failure
LimitNOFILE=65535

[Install]
WantedBy=multi-user.target
# /etc/systemd/system/op-node.service
[Unit]
Description=Optimism op-node (rollup)
After=op-geth.service
Requires=op-geth.service

[Service]
User=op
Environment="HOME=/home/op"
ExecStart=/usr/local/bin/op-node \
  --l1=<L1_GETH_RPC> \
  --l1.beacon=<L1_BEACON_API> \
  --l2=http://127.0.0.1:8551 \
  --l2.jwt-secret=/home/op/jwt.txt \
  --rollup.config=/home/op/rollup.json \
  --rpc.addr=0.0.0.0 --rpc.port=9545
Restart=on-failure

[Install]
WantedBy=multi-user.target

상태 확인

# 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 sync status
curl -s -X POST http://localhost:9545 \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","method":"optimism_syncStatus","params":[],"id":1}' | jq

optimism 다른 챕터