Skip to content
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
195 changes: 192 additions & 3 deletions mainnet/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,7 @@ services:

# Hemi L2 node
op-geth-l2:
image: ghcr.io/hemilabs/op-geth:05d4d8f@sha256:92d14f0b4b89947352d57743ce9e7f2d9c9e495f0bb861a24d21c49d391c7abf
image: ghcr.io/hemilabs/op-geth:bce106a@sha256:bdfa5b7a5922e4dc9e5c4e494c547d92899140e3c149e5c7ebdc01e92da8990b
platform: linux/amd64
# XXX does geth need to be fully synced
profiles: ["hemi", "hemi-min", "full"]
Expand Down Expand Up @@ -201,7 +201,7 @@ services:
# Init container for Hemi L2 node
op-geth-l2-init:
image: alpine:3.22.1@sha256:4bcff63911fcb4448bd4fdacec207030997caf25e9bea4045fa6c8c44de311d1
profiles: ["hemi", "hemi-min", "full"]
profiles: ["hemi", "hemi-min", "full", "hemitrap"]
volumes:
- op-geth_data:/tmp/datadir
command:
Expand All @@ -213,7 +213,7 @@ services:
# Init TBC container for Hemi L2 node
op-geth-l2-init-tbc:
image: alpine:3.22.1@sha256:4bcff63911fcb4448bd4fdacec207030997caf25e9bea4045fa6c8c44de311d1
profiles: ["hemi", "hemi-min", "full"]
profiles: ["hemi", "hemi-min", "full", "hemitrap"]
volumes:
- tbc_data:/tbcdata
command:
Expand Down Expand Up @@ -298,6 +298,195 @@ services:
- "--grpc-gateway-host=0.0.0.0"
- "--enable-experimental-backfill"

geth-l1-forked:
image: ghcr.io/foundry-rs/foundry:v1.4.1@sha256:629bebb49d1ba44a52a9fc14229dd58930e3193b4b206ae43ad00089e9ead95b
profiles:
- hemitrap
environment:
ANVIL_IP_ADDR: '0.0.0.0'
ports:
- 9988:9988
networks:
- "localnode"
entrypoint:
- anvil
command:
- --block-time
- '12'
- --fork-url
- ${GETHL1ENDPOINT}
- --fork-chain-id
- '1'
- --fork-block-number
- '-1' # latest
- --port
- '9988'

op-node-forked:
# yamllint disable-line rule:line-length
image: ghcr.io/hemilabs/op-node:b1f96f2@sha256:7436f7539e9a51a3cb13fa78e5fa6a2728f746c76e86ed61ec4ab834bee60906
profiles: ["hemitrap"]
environment:
OP_NODE_BSS_WS: "http://bssd:8081/v1/ws"
ports:
- '8547:8547'
platform: linux/amd64
networks:
- "localnode"
command:
- "op-node"
- "--ignore-missing-pectra-blob-schedule"
- "--l1=http://geth-l1-forked:9988"
- "--l1.rpckind=basic"
- "--l1.beacon=${PRYSMENDPOINT}"
- "--l1.epoch-poll-interval=2s"
- "--sequencer.l1-confs=1"
- "--l2=ws://op-geth-l2-forked:8551"
- "--l2.jwt-secret=/tmp/jwt/jwt.hex"
- "--sequencer.enabled=true"
- "--sequencer.stopped=false"
- "--rollup.config=/tmp/rollup.json"
- "--override.ecotone=1725868497"
- "--override.canyon=1725868497"
- "--override.delta=1725868497"
- "--rpc.addr=0.0.0.0"
- "--rpc.port=8547"
- "--p2p.disable"
- "--p2p.priv.path=/tmp/op-node-priv-key.txt"
- "--p2p.sequencer.key=5de4111afa1a4b94908f83103eb1f1706367c2e68ca870fc3fb9a804cdab365a"
- "--log.level=trace"
- "--override.pectrablobschedule=1751554801"
- "--override.isthmus=1751554801"
- "--override.holocene=1751554801"
- "--override.granite=1751554801"
- "--override.fjord=1751554801"
- "--l1.trustrpc=true"
- "--hemitrap.enabled"
depends_on:
op-geth-l2-forked:
condition: "service_healthy"
volumes:
# change this token value if you expose this service's ports for
# connection from other machines
- ./jwt.hex:/tmp/jwt/jwt.hex
- ./op-node-priv-key.txt:/tmp/op-node-priv-key.txt
- ./rollup.json:/tmp/rollup.json
deploy:
restart_policy:
condition: "any"

op-batcher-forked:
image: ghcr.io/hemilabs/op-node:b1f96f2@sha256:7436f7539e9a51a3cb13fa78e5fa6a2728f746c76e86ed61ec4ab834bee60906
profiles: ["hemitrap"]
networks:
- "localnode"
command:
- "bin/op-batcher"
- "--l2-eth-rpc=http://op-geth-l2-forked:18546"
- "--rollup-rpc=http://op-node-forked:8547"
- "--poll-interval=5s"
- "--sub-safety-margin=1"
- "--num-confirmations=1"
- "--safe-abort-nonce-too-low-count=1"
- "--resubmission-timeout=15s"
- "--rpc.addr=0.0.0.0"
- "--rpc.port=8548"
- "--rpc.enable-admin"
- "--max-channel-duration=5"
- "--max-pending-tx=1"
- "--l1-eth-rpc=http://geth-l1-forked:9988"
- "--private-key=59c6995e998f97a5a0044966f0945389dc9e86dae88c7a8412f4603b6b78690d"
- "--throttle.unsafe-da-bytes-lower-threshold=0"
deploy:
restart_policy:
condition: "any"
healthcheck:
start_period: 180s
depends_on:
geth-l1-forked:
condition: "service_started"
op-geth-l2-forked:
condition: "service_healthy"
op-node-forked:
condition: "service_started"

op-proposer-forked:
image: ghcr.io/hemilabs/op-node:b1f96f2@sha256:7436f7539e9a51a3cb13fa78e5fa6a2728f746c76e86ed61ec4ab834bee60906
profiles: ["hemitrap"]
networks:
- "localnode"
command:
- bin/op-proposer
- --poll-interval=1s
- --rpc.port=8560
- --private-key=ac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80
- --l1-eth-rpc=http://geth-l1-forked:9988
- --rollup-rpc=http://op-node-forked:8547
- --resubmission-timeout=15s
- --safe-abort-nonce-too-low-count=1
- --txmgr.not-in-mempool-timeout=3s
- --allow-non-finalized=true
- --l2oo-address=0x6daF3a3497D8abdFE12915aDD9829f83A79C0d51
- --log.level=trace
deploy:
restart_policy:
condition: "any"
depends_on:
geth-l1-forked:
condition: "service_started"
op-geth-l2-forked:
condition: "service_healthy"
op-node-forked:
condition: "service_started"
healthcheck:
start_period: 180s

op-geth-l2-forked:
# yamllint disable-line rule:line-length
image: 'ghcr.io/hemilabs/op-geth:bce106a@sha256:bdfa5b7a5922e4dc9e5c4e494c547d92899140e3c149e5c7ebdc01e92da8990b'
profiles: ["hemitrap"]
environment:
OP_GETH_L1_RPC: http://geth-l1-forked:9988"
OP_GETH_L2_READINESS_RPC: "http://localhost:18546"
GETH_MAXPEERS: 0
ports:
- '18546:18546'
- '28546:28546'
networks:
- "localnode"
entrypoint:
- "sh"
- "/tmp/entrypoint.sh"
platform: linux/amd64
# XXX does geth need to be fully synced
depends_on:
op-geth-l2-init:
condition: "service_completed_successfully"
op-geth-l2-init-tbc:
condition: "service_completed_successfully"
healthcheck:
test: ["CMD", "nc", "-vz", "0.0.0.0", "18546"]
interval: 5s
timeout: 5s
retries: 999999
volumes:
- ./genesis.json:/tmp/genesis.json
# change this token value if you expose this service's ports for
# connection from other machines
- ./jwt.hex:/tmp/jwt/jwt.hex:ro
- ./entrypoint.sh:/tmp/entrypoint.sh
- op-geth_data:/tmp/datadir
- ./rollup.json:/tmp/rollup.json
- tbc_data:/tbcdata
- ./l2-config.toml:/tmp/l2-config.toml
working_dir: "/tmp"
ulimits:
memlock: -1
deploy:
restart_policy:
condition: "on-failure"


networks:
localnode: {}

Expand Down