diff --git a/mainnet/docker-compose.yml b/mainnet/docker-compose.yml index 3e76b44..1459e2d 100644 --- a/mainnet/docker-compose.yml +++ b/mainnet/docker-compose.yml @@ -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"] @@ -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: @@ -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: @@ -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: @@ -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: {}