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
197 changes: 193 additions & 4 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:6ba3f1d@sha256:0b32cd4646ec55fddcb8620894e0404f546fe8c812d683b2e39215f682ae6e8e
image: 'new image of op-geth needed with sync fix'
platform: linux/amd64
# XXX does geth need to be fully synced
profiles: ["hemi", "hemi-min", "full"]
Expand Down Expand Up @@ -200,7 +200,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 @@ -212,7 +212,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 All @@ -223,7 +223,7 @@ services:

# Hemi op-node
op-node:
image: ghcr.io/hemilabs/op-node:4c1032e@sha256:5424e6b54104c78e5398693aebfe82c381407065370bd73fa0cd0ed81c4121d7
image: ghcr.io/hemilabs/op-node:b1f96f2@sha256:7436f7539e9a51a3cb13fa78e5fa6a2728f746c76e86ed61ec4ab834bee60906
platform: linux/amd64
profiles: ["hemi", "hemi-min", "full"]
depends_on:
Expand Down Expand Up @@ -297,6 +297,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: 'fix me: new image needed'
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