diff --git a/base-mainnet.yml b/base-mainnet.yml new file mode 120000 index 00000000..70203c2c --- /dev/null +++ b/base-mainnet.yml @@ -0,0 +1 @@ +op/geth/base-mainnet-op-geth-pruned-pebble-path.yml \ No newline at end of file diff --git a/base-reth-fullnode.yml b/base-reth-fullnode.yml index 95c916a5..a860c92f 100644 --- a/base-reth-fullnode.yml +++ b/base-reth-fullnode.yml @@ -2,7 +2,7 @@ version: '3.1' services: base-fullnode: # this is Optimism's geth client - image: ghcr.io/paradigmxyz/op-reth:${RETH_VERSION:-v1.1.5} + image: ghcr.io/paradigmxyz/op-reth:${RETH_VERSION:-v1.3.2} expose: - 9551 - 8545 # RPC / Websocket diff --git a/base-sepolia.yml b/base-sepolia.yml deleted file mode 100644 index 3d061f15..00000000 --- a/base-sepolia.yml +++ /dev/null @@ -1,102 +0,0 @@ -version: '3.1' - -services: - base-sepolia: # this is Optimism's geth client - build: ./base - expose: - - 8545 # RPC / Websocket - - 30765 # P2P TCP (currently unused) - - 30765/udp # P2P UDP (currently unused) - - 6060 # metrics - - 855 - ports: - - "30765:30765" - - "30765:30765/udp" - #command: [ "sh", "./geth-entrypoint" ] - restart: always - stop_grace_period: 3m - entrypoint: ./geth - command: --datadir=/data --verbosity=3 --http --http.corsdomain=* --http.vhosts=* --http.addr=0.0.0.0 --http.port=8545 --http.api=web3,debug,eth,net,engine --authrpc.addr=0.0.0.0 --authrpc.port=8551 --authrpc.vhosts=* --authrpc.jwtsecret=/jwtsecret --ws --ws.addr=0.0.0.0 --ws.port=8545 --ws.origins=* --ws.api=debug,eth,net,engine --metrics --metrics.addr=0.0.0.0 --metrics.port=6060 --syncmode=snap --gcmode=full --state.scheme=path --db.engine=pebble --discovery.port=30765 --maxpeers=100 --op-network=base-sepolia --rollup.halt=major --rollup.sequencerhttp=https://sepolia-sequencer.base.org --port=30765 --nat=extip:${IP} --bootnodes="enode://548f715f3fc388a7c917ba644a2f16270f1ede48a5d88a4d14ea287cc916068363f3092e39936f1a3e7885198bef0e5af951f1d7b1041ce8ba4010917777e71f@18.210.176.114:30301,enode://6f10052847a966a725c9f4adf6716f9141155b99a0fb487fea3f51498f4c2a2cb8d534e680ee678f9447db85b93ff7c74562762c3714783a7233ac448603b25f@107.21.251.55:30301" - volumes: - - base-sepolia:/data - - .jwtsecret:/jwtsecret - environment: - - "OP_GETH_GENESIS_FILE_PATH=sepolia/genesis-l2.json" - - "OP_GETH_SEQUENCER_HTTP=https://sepolia-sequencer.base.org" - - "OP_GETH_GCMODE=full" - - "OP_GETH_SYNCMODE=snap" - - "GETH_SYNCMODE=snap" - - "GETH_BOOTNODES=enode://548f715f3fc388a7c917ba644a2f16270f1ede48a5d88a4d14ea287cc916068363f3092e39936f1a3e7885198bef0e5af951f1d7b1041ce8ba4010917777e71f@18.210.176.114:30301,enode://6f10052847a966a725c9f4adf6716f9141155b99a0fb487fea3f51498f4c2a2cb8d534e680ee678f9447db85b93ff7c74562762c3714783a7233ac448603b25f@107.21.251.55:30301" - - "OP_GETH_STATE_SCHEME=path" - - "GETH_STATE_SCHEME=path" - - "OP_GETH_DB_ENGINE=pebble" - - "OP_GETH_P2P_PORT=30765" - - "GETH_DISCOVERY_PORT=30765" - - "GETH_DB_ENGINE=pebble" - - "P2P_PORT=30765" - - "WS_PORT=8545" - - "IP=${IP}" - - "OP_NODE_L2_ENGINE_AUTH_RAW=${JWTSECRET}" - - "OP_NODE_L2_ENGINE_AUTH=/tmp/engine-auth-jwt" - labels: - - "traefik.enable=true" - - "traefik.http.middlewares.base-sepolia-stripprefix.stripprefix.prefixes=/base-sepolia" - - "traefik.http.services.base-sepolia.loadbalancer.server.port=8545" - - "traefik.http.routers.base-sepolia.entrypoints=websecure" - - "traefik.http.routers.base-sepolia.tls.certresolver=myresolver" - - "traefik.http.routers.base-sepolia.rule=Host(`$DOMAIN`) && PathPrefix(`/base-sepolia`)" - - "traefik.http.routers.base-sepolia.middlewares=base-sepolia-stripprefix, ipwhitelist" - networks: - - chains - - - base-sepolia-node: - build: ./base - depends_on: - - base-sepolia - volumes: - - .jwtsecret:/jwtsecret - expose: - - 8545 # RPC - - 54844 # P2P TCP - - 54844/udp # P2P UDP - - 7300 # metrics - - 6060 # pprof - ports: - - "54844:54844" - - "54844:54844/udp" - #command: [ "sh", "./op-node-entrypoint" ] - entrypoint: ./op-node - restart: always - stop_grace_period: 30s - environment: - - "OP_NODE_NETWORK=base-sepolia" - - "OP_NODE_SYNCMODE=execution-layer" - - "OP_NODE_L1_ETH_RPC=${BASE_SEPOLIA_ENDPOINT}" - - "OP_NODE_L2_ENGINE_AUTH_RAW=${JWTSECRET}" - - "OP_NODE_L2_ENGINE_AUTH=/jwtsecret" - - "OP_NODE_L2_ENGINE_RPC=http://base-sepolia:8551" - - "OP_NODE_LOG_LEVEL=info" - - "OP_NODE_METRICS_ADDR=0.0.0.0" - - "OP_NODE_METRICS_ENABLED=true" - - "OP_NODE_METRICS_PORT=7300" - - "OP_NODE_P2P_AGENT=base" - - "OP_NODE_P2P_BOOTNODES=enr:-J64QBwRIWAco7lv6jImSOjPU_W266lHXzpAS5YOh7WmgTyBZkgLgOwo_mxKJq3wz2XRbsoBItbv1dCyjIoNq67mFguGAYrTxM42gmlkgnY0gmlwhBLSsHKHb3BzdGFja4S0lAUAiXNlY3AyNTZrMaEDmoWSi8hcsRpQf2eJsNUx-sqv6fH4btmo2HsAzZFAKnKDdGNwgiQGg3VkcIIkBg,enr:-J64QFa3qMsONLGphfjEkeYyF6Jkil_jCuJmm7_a42ckZeUQGLVzrzstZNb1dgBp1GGx9bzImq5VxJLP-BaptZThGiWGAYrTytOvgmlkgnY0gmlwhGsV-zeHb3BzdGFja4S0lAUAiXNlY3AyNTZrMaEDahfSECTIS_cXyZ8IyNf4leANlZnrsMEWTkEYxf4GMCmDdGNwgiQGg3VkcIIkBg" - - "OP_NODE_BETA_EXTRA_NETWORKS=true" - - "OP_NODE_ROLLUP_LOAD_PROTOCOL_VERSIONS=true" - - "OP_NODE_P2P_LISTEN_IP=0.0.0.0" - - "OP_NODE_P2P_LISTEN_TCP_PORT=54844" - - "OP_NODE_P2P_LISTEN_UDP_PORT=54844" - - "OP_NODE_ROLLUP_CONFIG=sepolia/rollup.json" - - "OP_NODE_RPC_ADDR=0.0.0.0" - - "OP_NODE_RPC_PORT=8545" - - "OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log" - - "OP_NODE_VERIFIER_L1_CONFS=4" - - "OP_NODE_L1_RPC_KIND=${BASE_SEPOLIA_ENDPOINT_KIND:-basic}" - - "OP_NODE_L1_TRUST_RPC=${BASE_SEPOLIA_ENDPOINT_TRUST:-false}" - - "OP_NODE_L1_BEACON=${BASE_SEPOLIA_ENDPOINT_BEACON}" - networks: - - chains - -volumes: - base-sepolia: diff --git a/base-sepolia.yml b/base-sepolia.yml new file mode 120000 index 00000000..d2f94db0 --- /dev/null +++ b/base-sepolia.yml @@ -0,0 +1 @@ +op/geth/base-sepolia-op-geth-pruned-pebble-path.yml \ No newline at end of file diff --git a/berachain-bepolia.cfg b/berachain-bepolia.cfg new file mode 100644 index 00000000..4179ff6a --- /dev/null +++ b/berachain-bepolia.cfg @@ -0,0 +1,21 @@ + - id: ${ID} + chain: ${CHAIN} + labels: + provider: ${PROVIDER} + method-groups: + enabled: + - debug + - filter + methods: + enabled: + - name: txpool_content + options: + validate-peers: false + connection: + generic: + rpc: + url: "${RPC_URL}" + ws: + frameSize: 20Mb + msgSize: 50Mb + url: "${WS_URL}" diff --git a/besu-fullnode.yml b/besu-fullnode.yml index 8df3a952..329f9f71 100644 --- a/besu-fullnode.yml +++ b/besu-fullnode.yml @@ -5,7 +5,7 @@ services: build: context: besu args: - UPSTREAM_VERSION: 24.10.0 + UPSTREAM_VERSION: ${BESU_VERSION:-24.10.0} expose: - 8545 - 8551 @@ -51,7 +51,7 @@ services: lighthouse-mainnet: - image: sigp/lighthouse:v5.1.3-modern + image: sigp/lighthouse:${LIGHTHOUSE_VERSION:-v5.1.3}-modern restart: unless-stopped networks: - chains diff --git a/blast-io/mainnet/genesis.json b/blast-io/mainnet/genesis.json old mode 100755 new mode 100644 index 69e79676..ed864402 --- a/blast-io/mainnet/genesis.json +++ b/blast-io/mainnet/genesis.json @@ -19,6 +19,8 @@ "bedrockBlock": 0, "regolithTime": 0, "canyonTime": 0, + "cancunTime": 1716843599, + "ecotoneTime": 1716843599, "terminalTotalDifficulty": 0, "terminalTotalDifficultyPassed": true, "optimism": { diff --git a/blast-io/mainnet/rollup.json b/blast-io/mainnet/rollup.json index 4f827ccf..fa0fc7f2 100755 --- a/blast-io/mainnet/rollup.json +++ b/blast-io/mainnet/rollup.json @@ -1,16 +1,16 @@ { "genesis": { "l1": { - "hash": "0x17728cf4d8e0b4f292d2390a869fd7c632d39e72efb00ca3462b4387c6aa2437", - "number": 5044255 + "hash": "0xfcfb8d586bdae763f1189988789211c69eb893a895e7ba48be3ca6289f0941b7", + "number": 19300102 }, "l2": { - "hash": "0x26a1c0faad7b041f34569a1bb383f00ab74b335883a44bed53e9f41ced5fd906", + "hash": "0xb689b35ef29d0bec5816938e0e52683c7257d2e325420ea69b739a2be4754b89", "number": 0 }, - "l2_time": 1704686688, + "l2_time": 1708809815, "system_config": { - "batcherAddr": "0xba26fee2fa917443e05e65de8d4350bcd2f59222", + "batcherAddr": "0x415c8893d514f9bc5211d36eeda4183226b84aa7", "overhead": "0x00000000000000000000000000000000000000000000000000000000000000bc", "scalar": "0x00000000000000000000000000000000000000000000000000000000000a6fe0", "gasLimit": 30000000 @@ -20,14 +20,14 @@ "max_sequencer_drift": 600, "seq_window_size": 3600, "channel_timeout": 300, - "l1_chain_id": 11155111, - "l2_chain_id": 168587773, + "l1_chain_id": 1, + "l2_chain_id": 81457, "regolith_time": 0, "canyon_time": 0, - "delta_time": 1713999600, - "ecotone_time": 1713999600, - "batch_inbox_address": "0x1c3b85a2108784eab6a4bf56cdd6f722e415b331", - "deposit_contract_address": "0x2757e4430e694f27b73ec9c02257cab3a498c8c5", - "l1_system_config_address": "0x329faf078c364a316e08bf6a17b7eee6ae75a613", + "delta_time": 1716843599, + "ecotone_time": 1716843599, + "batch_inbox_address": "0xff00000000000000000000000000000000081457", + "deposit_contract_address": "0x0ec68c5b10f21effb74f2a5c61dfe6b08c0db6cb", + "l1_system_config_address": "0x5531dcff39ec1ec727c4c5d2fc49835368f805a9", "protocol_versions_address": "0x0000000000000000000000000000000000000000" } diff --git a/bob-mainnet.yml b/bob-mainnet.yml new file mode 120000 index 00000000..689f53be --- /dev/null +++ b/bob-mainnet.yml @@ -0,0 +1 @@ +op/geth/bob-mainnet-op-geth-pruned-pebble-path.yml \ No newline at end of file diff --git a/bsc-testnet.yml b/bsc-testnet.yml index 3d5ae48d..914ef63e 100644 --- a/bsc-testnet.yml +++ b/bsc-testnet.yml @@ -3,7 +3,7 @@ version: '3.1' services: bsc-testnet: - image: ghcr.io/bnb-chain/bsc:${BSC_VERSION:-1.5.5} + image: ghcr.io/bnb-chain/bsc:${BSC_VERSION:-1.5.7} user: root ports: - "17474:17474" diff --git a/bsc.yml b/bsc.yml index 1ada4caa..9becaa83 100644 --- a/bsc.yml +++ b/bsc.yml @@ -3,14 +3,13 @@ version: '3.1' services: bsc: - image: ghcr.io/bnb-chain/bsc:${BSC_VERSION:-1.5.5} + image: ghcr.io/bnb-chain/bsc:${BSC_VERSION:-1.5.7} user: root ports: - "29061:29061" - "29061:29061/udp" expose: - "8545" - - "8546" - "29061" volumes: - bsc:/bsc/.ethereum diff --git a/celo-alfajores-op-geth-pruned-leveldb-hash.yml b/celo-alfajores-op-geth-pruned-leveldb-hash.yml new file mode 100644 index 00000000..925fe38c --- /dev/null +++ b/celo-alfajores-op-geth-pruned-leveldb-hash.yml @@ -0,0 +1,115 @@ +services: + celo-mainnet: + image: us-west1-docker.pkg.dev/devopsre/celo-blockchain-public/op-geth:celo-v2.0.0 + volumes: + - "celo-mainnet-op-geth-pruned-leveldb-hash:/datadir" + - ".jwtsecret:/jwtsecret" + - "./celo/mainnet/:/chainconfig" + ports: + - "10955:10955" + - "10955:10955/udp" + expose: + - 8545 + - 8546 + - 8551 + networks: + - chains + restart: always + stop_grace_period: 5m + environment: + - NETWORK_NAME=mainnet + #- GETH_BOOTNODES=enode://ac0f42fa46f8cc10bd02a103894d71d495537465133e7c442bc02dc76721a5f41761cc2d8c69e7ba1b33e14e28f516436864d3e0836e2dcdaf032387f72447dd@34.83.164.192:30303,enode://596002969b8b269a4fa34b4709b9600b64201e7d02e2f5f1350affd021b0cbda6ce2b913ebe24f0fb1edcf66b6c730a8a3b02cd940f4de995f73d3b290a0fc92@34.82.177.77:30303,enode://3619455064ef1ce667171bba1df80cfd4c097f018cf0205aaad496f0d509611b7c40396893d9e490ee390cd098888279e177a4d9bb09c58387bb0a6031d237f1@34.19.90.27:30303,enode://e3c54db6004a92d4ee87504f073f3234a25759b485274cc224037e3e5ee792f3b482c3f4fffcb764af6e1859a1aea9710b71e1991e32c1dee7f40352124bb182@35.233.249.87:30303,enode://674410b34fd54c8406a4f945292b96111688d4bab49aecdc34b4f1b346891f4673dcb03ed44c38ab467ef7bec0b20f6031ad88aa1d35ce1333b343d00fa19fb1@34.168.43.76:30303 + command: > + --datadir=/datadir + --http + --http.corsdomain="*" + --http.vhosts="*" + --http.addr=0.0.0.0 + --http.port=8545 + --http.api=web3,debug,eth,txpool,net,engine + --ws + --ws.addr=0.0.0.0 + --ws.port=8545 + --ws.origins="*" + --ws.api=debug,eth,txpool,net,engine,web3 + --syncmode="full" + --gcmode="full" + --authrpc.vhosts="*" + --authrpc.addr=0.0.0.0 + --authrpc.port=8551 + --authrpc.jwtsecret=/jwtsecret + --rollup.sequencerhttp=https://sequencer.forno.celo.org + --rollup.disabletxpoolgossip=true + --port="10955" + --discovery.port="10955" + --snapshot=true + --verbosity=3 + --history.transactions=0 + --rollup.historicalrpc=${OP_GETH_HISTORICAL_RPC:-https://sequencer.alfajores.celo-testnet.org} + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.op-celo-alfajores-stripprefix.stripprefix.prefixes=/op-celo-alfajores" + - "traefik.http.services.op-celo-alfajores.loadbalancer.server.port=8545" + - "traefik.http.routers.op-celo-alfajores.entrypoints=websecure" + - "traefik.http.routers.op-celo-alfajores.tls.certresolver=myresolver" + - "traefik.http.routers.op-celo-alfajores.rule=Host(`$DOMAIN`) && PathPrefix(`/op-celo-alfajores`)" + - "traefik.http.routers.op-celo-alfajores.middlewares=op-celo-alfajores-stripprefix, ipwhitelist" + + + celo-mainnet-node: + image: us-west1-docker.pkg.dev/devopsre/celo-blockchain-public/op-node:celo-v2.0.0 + depends_on: + - celo-mainnet + expose: + - 8545 # RPC + - 63509 # P2P TCP + - 63509/udp # P2P UDP + - 7300 # metrics + - 6060 # pprof + networks: + - chains + ports: + - "63509:63509" + - "63509:63509/udp" + environment: + - HEALTHCHECK__REFERENCE_RPC_PROVIDER=https://forno.celo.org + - OP_NODE_P2P_LISTEN_TCP_PORT=63509 + - OP_NODE_P2P_LISTEN_UDP_PORT=63509 + #- OP_NODE_P2P_STATIC=/ip4/35.197.25.52/tcp/9222/p2p/16Uiu2HAmQEdyLRSAVZDr5SqbJ1RnKmNDhtQJcEKmemrVxe4FxKwR,/ip4/34.105.22.4/tcp/9222/p2p/16Uiu2HAm1SZBDSugT5MMu7vBY8auDgfZFNhoDeXPLc9Me5FsAxwT,/ip4/34.83.209.168/tcp/9222/p2p/16Uiu2HAmGJAiUX6HLSo4nLh8T984qxzokwL23cVsYuNZy2SrK7C6,/ip4/34.83.214.149/tcp/9222/p2p/16Uiu2HAmAko2Kr3eAjM7tnshtEhYrxQYfKUvN2kwiygeFoBAoi8S,/ip4/34.169.5.52/tcp/9222/p2p/16Uiu2HAmKc6YKHzYgsjBDaj36uAufxpgZFgrzDqVBt6zTPwdhhJD + - OP_NODE_ALTDA_ENABLED=true + - OP_NODE_ALTDA_DA_SERVICE=true + - OP_NODE_ALTDA_VERIFY_ON_READ=false + - OP_NODE_ALTDA_DA_SERVER=https://eigenda-proxy.forno.celo.org + - OP_NODE_L2_ENGINE_AUTH=/jwtsecret + command: > + op-node + --l1="${OP_CELO_ETHEREUM_MAINNET_RPC:-https://eth.llamarpc.com}" + --l2=http://celo-mainnet:8551 + --rpc.addr=0.0.0.0 + --rpc.port=9545 + --l1.trustrpc + --l1.rpckind=basic + --l1.beacon="${OP_CELO_ALFAJORES_HOLESKY_BEACON_REST:-https://ethereum-mainnet-beacon-api.publicnode.com}" + --syncmode=execution-layer + --p2p.priv.path=/chainconfigs/p2p_node_key_txt + --rollup.config=/chainconfigs/rollup.json + --rollup.load-protocol-versions=true + --rollup.halt=major + restart: always + volumes: + - .jwtsecret:/jwtsecret + - ./celo/alfajores/:/chainconfigs/ + stop_grace_period: 30s + + op-celo-alfajores-key-generator: + image: ghcr.io/foundry-rs/foundry + volumes: + - "./celo/mainnet:/config" + entrypoint: sh + command: "[ -f /config/p2p_node_key_txt ] && exit 0 || cast w n | grep -i 'Private Key' | awk -F ': ' '{print $2}' | sed 's/0x//' > /config/p2p_node_key_txt" + + +volumes: + celo-mainnet-op-geth-pruned-leveldb-hash:: + + diff --git a/celo-fullnode.yml b/celo-fullnode.yml index cda159c1..ab0b38bf 100644 --- a/celo-fullnode.yml +++ b/celo-fullnode.yml @@ -1,8 +1,6 @@ -version: '3.1' - services: - celo: - image: us.gcr.io/celo-org/geth:1.8 + celo-mainnet-geth: + image: us.gcr.io/celo-org/geth:1.8.9 restart: unless-stopped stop_grace_period: 3m command: | @@ -22,21 +20,17 @@ services: --datadir /root/.celo expose: - 8545 - - 8546 - ports: - - '20748:20748/tcp' # p2p - - '20748:20748/udp' # p2p volumes: - celo:/root/.celo networks: - chains labels: - "traefik.enable=true" - - "traefik.http.middlewares.celo-stripprefix.stripprefix.prefixes=/celo" + - "traefik.http.middlewares.celo-stripprefix.stripprefix.prefixes=/celo-mainnet-geth" - "traefik.http.services.celo.loadbalancer.server.port=8545" - "traefik.http.routers.celo.entrypoints=websecure" - "traefik.http.routers.celo.tls.certresolver=myresolver" - - "traefik.http.routers.celo.rule=Host(`$DOMAIN`) && PathPrefix(`/celo`)" + - "traefik.http.routers.celo.rule=Host(`$DOMAIN`) && PathPrefix(`/celo-mainnet-geth`)" - "traefik.http.routers.celo.middlewares=celo-stripprefix, ipwhitelist" diff --git a/celo-mainnet-geth-archive.yml b/celo-mainnet-geth-archive.yml index c84b707e..a04fa82d 100644 --- a/celo-mainnet-geth-archive.yml +++ b/celo-mainnet-geth-archive.yml @@ -24,7 +24,7 @@ services: - '58395:58395/tcp' # p2p - '58395:58395/udp' # p2p volumes: - - ${CELO_MAINNET_GETH_ARCHIVE_DATA:-celo-archive}:/root/.celo + - ${CELO_MAINNET_GETH_ARCHIVE_DATA:-celo-mainnet-geth-archive}:/root/.celo networks: - chains labels: diff --git a/celo-mainnet-op-geth-archive.yml b/celo-mainnet-op-geth-archive.yml new file mode 120000 index 00000000..e226c6e6 --- /dev/null +++ b/celo-mainnet-op-geth-archive.yml @@ -0,0 +1 @@ +celo/op-geth/celo-mainnet-op-geth-archive-leveldb-hash.yml \ No newline at end of file diff --git a/celo-mainnet-op-geth-pruned-leveldb-hash.yml b/celo-mainnet-op-geth-pruned-leveldb-hash.yml new file mode 100644 index 00000000..4170ede4 --- /dev/null +++ b/celo-mainnet-op-geth-pruned-leveldb-hash.yml @@ -0,0 +1,140 @@ +services: + celo-mainnet: + image: us-west1-docker.pkg.dev/devopsre/celo-blockchain-public/op-geth:celo-v2.0.0 + volumes: + - "celo-mainnet-op-geth-pruned-leveldb-hash:/datadir" + - ".jwtsecret:/shared/jwt.txt" + - "./celo/mainnet/:/chainconfig" + - "./celo/scripts/:/scripts" + ports: + - "10955:10955" + - "10955:10955/udp" + expose: + - 8545 + - 8546 + - 8551 + networks: + - chains + restart: always + stop_grace_period: 5m + entrypoint: /scripts/start-op-geth.sh + environment: + - NETWORK_NAME=mainnet + - GETH_BOOTNODES=enode://28f4fcb7f38c1b012087f7aef25dcb0a1257ccf1cdc4caa88584dc25416129069b514908c8cead5d0105cb0041dd65cd4ee185ae0d379a586fb07b1447e9de38@34.169.39.223:30303,enode://a9077c3e030206954c5c7f22cc16a32cb5013112aa8985e3575fadda7884a508384e1e63c077b7d9fcb4a15c716465d8585567f047c564ada2e823145591e444@34.169.212.31:30303,enode://029b007a7a56acbaa8ea50ec62cda279484bf3843fae1646f690566f784aca50e7d732a9a0530f0541e5ed82ba9bf2a4e21b9021559c5b8b527b91c9c7a38579@34.82.139.199:30303,enode://f3c96b73a5772c5efb48d5a33bf193e58080d826ba7f03e9d5bdef20c0634a4f83475add92ab6313b7a24aa4f729689efb36f5093e5d527bb25e823f8a377224@34.82.84.247:30303,enode://daa5ad65d16bcb0967cf478d9f20544bf1b6de617634e452dff7b947279f41f408b548261d62483f2034d237f61cbcf92a83fc992dbae884156f28ce68533205@34.168.45.168:30303,enode://c79d596d77268387e599695d23e941c14c220745052ea6642a71ef7df31a13874cb7f2ce2ecf5a8a458cfc9b5d9219ce3e8bc6e5c279656177579605a5533c4f@35.247.32.229:30303,enode://4151336075dd08eb6c75bfd63855e8a4bd6fd0f91ae4a81b14930f2671e16aee55495c139380c16e1094a49691875e69e40a3a5e2b4960c7859e7eb5745f9387@35.205.149.224:30303,enode://ab999db751265c714b171344de1972ed74348162de465a0444f56e50b8cfd048725b213ba1fe48c15e3dfb0638e685ea9a21b8447a54eb2962c6768f43018e5c@34.79.3.199:30303,enode://9d86d92fb38a429330546fe1aefce264e1f55c5d40249b63153e7df744005fa3c1e2da295e307041fd30ab1c618715f362c932c28715bc20bed7ae4fc76dea81@34.77.144.164:30303,enode://c82c31f21dd5bbb8dc35686ff67a4353382b4017c9ec7660a383ccb5b8e3b04c6d7aefe71203e550382f6f892795728570f8190afd885efcb7b78fa398608699@34.76.202.74:30303,enode://3bad5f57ad8de6541f02e36d806b87e7e9ca6d533c956e89a56b3054ae85d608784f2cd948dc685f7d6bbd5a2f6dd1a23cc03e529ea370dd72d880864a2af6a3@104.199.93.87:30303,enode://1decf3b8b9a0d0b8332d15218f3bf0ceb9606b0efe18f352c51effc14bbf1f4f3f46711e1d460230cb361302ceaad2be48b5b187ad946e50d729b34e463268d2@35.240.26.148:30303 + - BEDROCK_DATADIR=/datadir + - OP_GETH__SYNCMODE=full + - NODE_TYPE=full + - BEDROCK_SEQUENCER_HTTP=https://sequencer.forno.celo.org + - PORT__OP_GETH_P2P=10955 + - IS_CUSTOM_CHAIN=true + - OP_GETH__HISTORICAL_RPC=http://celo-mainnet-geth:8545 + # command: > + # --datadir=/datadir + # --http + # --http.corsdomain="*" + # --http.vhosts="*" + # --http.addr=0.0.0.0 + # --http.port=8545 + # --http.api=web3,debug,eth,txpool,net,engine + # --ws + # --ws.addr=0.0.0.0 + # --ws.port=8545 + # --ws.origins="*" + # --ws.api=debug,eth,txpool,net,engine,web3 + # --syncmode="full" + # --gcmode="full" + # --authrpc.vhosts="*" + # --authrpc.addr=0.0.0.0 + # --authrpc.port=8551 + # --authrpc.jwtsecret=/jwtsecret + # --rollup.sequencerhttp=https://sequencer.forno.celo.org + # --rollup.disabletxpoolgossip=true + # --port="10955" + # --discovery.port="10955" + # --snapshot=true + # --verbosity=3 + # --history.transactions=0 + # --rollup.historicalrpc=${CELO_HISTORICAL_MAINNET_RPC:-http://celo-mainnet-geth:8545} + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.celo-mainnet-op-geth-pruned-leveldb-hash-stripprefix.stripprefix.prefixes=/celo-mainnet" + - "traefik.http.services.celo-mainnet-op-geth-pruned-leveldb-hash.loadbalancer.server.port=8545" + - "traefik.http.routers.celo-mainnet-op-geth-pruned-leveldb-hash.entrypoints=websecure" + - "traefik.http.routers.celo-mainnet-op-geth-pruned-leveldb-hash.tls.certresolver=myresolver" + - "traefik.http.routers.celo-mainnet-op-geth-pruned-leveldb-hash.rule=Host(`$DOMAIN`) && PathPrefix(`/celo-mainnet`)" + - "traefik.http.routers.celo-mainnet-op-geth-pruned-leveldb-hash.middlewares=celo-mainnet-op-geth-pruned-leveldb-hash-stripprefix, ipwhitelist" + + + celo-mainnet-node: + image: us-west1-docker.pkg.dev/devopsre/celo-blockchain-public/op-node:celo-v2.0.0 + depends_on: + - celo-mainnet + expose: + - 8545 # RPC + - 63509 # P2P TCP + - 63509/udp # P2P UDP + - 7300 # metrics + - 6060 # pprof + networks: + - chains + ports: + - "63509:63509" + - "63509:63509/udp" + environment: + - HEALTHCHECK__REFERENCE_RPC_PROVIDER=https://forno.celo.org + - OP_NODE_ALTDA_DA_SERVER="http://celo-mainnet-eigenda-proxy:4242" + - OP_NODE_P2P_LISTEN_TCP_PORT=63509 + - OP_NODE_P2P_LISTEN_UDP_PORT=63509 + - OP_NODE_P2P_STATIC=/ip4/34.83.180.111/tcp/9222/p2p/16Uiu2HAkxBYxPd4eDFJzwm84XPzymkXud847vu65eju4UCDRpDSM,/ip4/34.169.135.64/tcp/9222/p2p/16Uiu2HAm6oVW1YeKheAuhnJSySnVvbXZ5gXL4g36XrWb1imF9K3m,/ip4/34.169.201.36/tcp/9222/p2p/16Uiu2HAmCqAFUoq72tjGJfCkkzHoNbjTjshjEED4kWtRKMSxcMgb,/ip4/34.83.127.51/tcp/9222/p2p/16Uiu2HAmBqKBoxkk95CsZiXQmQHv9WMiHXU4Di6wzFuYEKo1i7dg,/ip4/35.227.175.30/tcp/9222/p2p/16Uiu2HAmTNVkin4vogHsqwJwShUkHtx48aDoxygGwgp9Tv5zQWTM,/ip4/34.82.198.98/tcp/9222/p2p/16Uiu2HAmS6CeFPUXMztLf4VDh9NLbauuXLSYx9YkXfyiscqoxsKt,/ip4/34.38.181.223/tcp/9222/p2p/16Uiu2HAmH3xfYGjaJDw6sxa8ds3bVwMYLZRpPzpTtTrYq7G4nZs3,/ip4/34.76.38.6/tcp/9222/p2p/16Uiu2HAm6yXZ9oRTSJfZzXe8wXJ165X3pfzAKdLB9sa27eRZgTwD,/ip4/35.187.106.54/tcp/9222/p2p/16Uiu2HAmPFucuARxzAqtXcD3evFoutKh7tSmfQCxwPKUXfkoyaqY,/ip4/34.76.16.183/tcp/9222/p2p/16Uiu2HAmS8NybNYedzHf4nuFfqyCDH9xiMpgMWxctMtau8dTUxeP,/ip4/104.199.39.59/tcp/9222/p2p/16Uiu2HAmGfwjf1XPikWYDN4NFpTBuuvs6C7eF2iyyKvvjK2MGrVM,/ip4/34.140.117.79/tcp/9222/p2p/16Uiu2HAkwSVN7WHohhoE1sh932y2q3Pv7AFiSugM8K6iFZLALq66 + - OP_NODE_ALTDA_ENABLED=true + - OP_NODE_ALTDA_DA_SERVICE=true + - OP_NODE_ALTDA_VERIFY_ON_READ=false + - OP_NODE_ALTDA_DA_SERVER=https://eigenda-proxy.forno.celo.org + - OP_NODE_L2_ENGINE_AUTH=/jwtsecret + command: > + op-node + --l1="${CELO_L1_ETHEREUM_MAINNET_EXECUTION_RPC:-https://ethereum-rpc.publicnode.com}" + --l2=http://celo-mainnet:8551 + --rpc.addr=0.0.0.0 + --rpc.port=9545 + --l1.trustrpc + --l1.rpckind=basic + --l1.beacon="${CELO_L1_ETHEREUM_MAINNET_BEACON_REST:-https://ethereum-beacon-api.publicnode.com}" + --syncmode=execution-layer + --p2p.priv.path=/chainconfigs/p2p_node_key_txt + --rollup.config=/chainconfigs/rollup.json + --rollup.load-protocol-versions=true + --rollup.halt=major + restart: always + volumes: + - .jwtsecret:/jwtsecret + - ./celo/mainnet/:/chainconfigs/ + stop_grace_period: 30s + + celo-mainnet-eigenda-proxy: + platform: linux/amd64 + image: ghcr.io/layr-labs/eigenda-proxy:v1.6.4 + restart: unless-stopped + stop_grace_period: 5m + entrypoint: /scripts/start-eigenda-proxy.sh + environment: + - EIGENDA_LOCAL_DISPERSER_RPC=disperser.eigenda.xyz:443 + - EIGENDA_LOCAL_SVC_MANAGER_ADDR=0x870679e138bcdf293b7ff14dd44b70fc97e12fc0 + - OP_NODE__RPC_ENDPOINT=${CELO_L1_ETHEREUM_MAINNET_EXECUTION_RPC:-https://ethereum-rpc.publicnode.com} + volumes: + - celo-mainnet-op-geth-pruned-leveldb-hash_eigenda:/data + - ./celo/scripts:/scripts + + celo-mainnet-key-generator: + image: ghcr.io/foundry-rs/foundry + volumes: + - "./celo/mainnet:/config" + entrypoint: sh + command: "[ -f /config/p2p_node_key_txt ] && exit 0 || cast w n | grep -i 'Private Key' | awk -F ': ' '{print $2}' | sed 's/0x//' > /config/p2p_node_key_txt" + + +volumes: + celo-mainnet-op-geth-pruned-leveldb-hash: + celo-mainnet-op-geth-pruned-leveldb-hash_eigenda: + + diff --git a/celo-mainnet.yml b/celo-mainnet.yml new file mode 120000 index 00000000..4db97d56 --- /dev/null +++ b/celo-mainnet.yml @@ -0,0 +1 @@ +celo/op-geth/celo-mainnet-op-geth-archive-pebble-path.yml \ No newline at end of file diff --git a/celo/mainnet/genesis.json b/celo/mainnet/genesis.json new file mode 100644 index 00000000..663eba4e --- /dev/null +++ b/celo/mainnet/genesis.json @@ -0,0 +1,148 @@ +{ + "alloc": { + "000000000000000000000000000000000000ce10": { + "balance": "0x0", + "code": "0x60806040526004361061004a5760003560e01c806303386ba3146101e757806342404e0714610280578063bb913f41146102d7578063d29d44ee14610328578063f7e6af8014610379575b6000600160405180807f656970313936372e70726f78792e696d706c656d656e746174696f6e00000000815250601c019050604051809103902060001c0360001b9050600081549050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610136576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f4e6f20496d706c656d656e746174696f6e20736574000000000000000000000081525060200191505060405180910390fd5b61013f816103d0565b6101b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f496e76616c696420636f6e74726163742061646472657373000000000000000081525060200191505060405180910390fd5b60405136810160405236600082376000803683855af43d604051818101604052816000823e82600081146101e3578282f35b8282fd5b61027e600480360360408110156101fd57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019064010000000081111561023a57600080fd5b82018360208201111561024c57600080fd5b8035906020019184600183028401116401000000008311171561026e57600080fd5b909192939192939050505061041b565b005b34801561028c57600080fd5b506102956105c1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102e357600080fd5b50610326600480360360208110156102fa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061060d565b005b34801561033457600080fd5b506103776004803603602081101561034b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107bd565b005b34801561038557600080fd5b5061038e610871565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f915080821415801561041257506000801b8214155b92505050919050565b610423610871565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f73656e64657220776173206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b6104cc8361060d565b600060608473ffffffffffffffffffffffffffffffffffffffff168484604051808383808284378083019250505092505050600060405180830381855af49150503d8060008114610539576040519150601f19603f3d011682016040523d82523d6000602084013e61053e565b606091505b508092508193505050816105ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f696e697469616c697a6174696f6e2063616c6c6261636b206661696c6564000081525060200191505060405180910390fd5b5050505050565b600080600160405180807f656970313936372e70726f78792e696d706c656d656e746174696f6e00000000815250601c019050604051809103902060001c0360001b9050805491505090565b610615610871565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f73656e64657220776173206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b6000600160405180807f656970313936372e70726f78792e696d706c656d656e746174696f6e00000000815250601c019050604051809103902060001c0360001b9050610701826103d0565b610773576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f496e76616c696420636f6e74726163742061646472657373000000000000000081525060200191505060405180910390fd5b8181558173ffffffffffffffffffffffffffffffffffffffff167fab64f92ab780ecbf4f3866f57cee465ff36c89450dcce20237ca7a8d81fb7d1360405160405180910390a25050565b6107c5610871565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610865576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f73656e64657220776173206e6f74206f776e657200000000000000000000000081525060200191505060405180910390fd5b61086e816108bd565b50565b600080600160405180807f656970313936372e70726f78792e61646d696e000000000000000000000000008152506013019050604051809103902060001c0360001b9050805491505090565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610960576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f6f776e65722063616e6e6f74206265203000000000000000000000000000000081525060200191505060405180910390fd5b6000600160405180807f656970313936372e70726f78792e61646d696e000000000000000000000000008152506013019050604051809103902060001c0360001b90508181558173ffffffffffffffffffffffffffffffffffffffff167f50146d0e3c60aa1d17a70635b05494f864e86144a2201275021014fbf08bafe260405160405180910390a2505056fea165627a7a723058206808dd43e7d765afca53fe439122bc5eac16d708ce7d463451be5042426f101f0029", + "storage": { + "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "0x000000000000000000000000e23a4c6615669526ab58e9c37088bee4ed2b2dee" + } + }, + "08960ce6b58be32fbc6ac1489d04364b4f7dc216": { + "balance": "0x108b2a2c28029094000000" + }, + "11901cf7eeae1e2644995fb2e47ce46bc7f33246": { + "balance": "0x6342fd08f00f6378000000" + }, + "19992ae48914a178bf138665cffdd8cd79b99513": { + "balance": "0x108b2a2c28029094000000" + }, + "1b6c64779f42ba6b54c853ab70171acd81b072f7": { + "balance": "0x1090756cd9fae351a00000" + }, + "3fa7c646599f3174380bd9a7b6efcde90b5d129d": { + "balance": "0xbe4064fbcc1d7ea600000" + }, + "417fe63186c388812e342c85ff87187dc584c630": { + "balance": "0x108b2d889442131e380000" + }, + "5f857c501b73ddfa804234f1f1418d6f75554076": { + "balance": "0x108b2a2c28029094000000" + }, + "743d80810fe10c5c3346d2940997cc9647035b13": { + "balance": "0x10f7dd69f30a0c3e680000" + }, + "75bb69c002c43f5a26a2a620518775795fd45ecf": { + "balance": "0x108b2a2c28029094000000" + }, + "77b68b2e7091d4f242a8af89f200af941433c6d8": { + "balance": "0x108b2a2c28029094000000" + }, + "7cf091c954ed7e9304452d31fd59999505ddcb7a": { + "balance": "0xbe4064fbcc1d7ea600000" + }, + "7fa26b50b3e9a2ec8ad1850a4c4fbbf94d806e95": { + "balance": "0x108b2a2c28029094000000" + }, + "8a07541c2ef161f4e3f8de7c7894718da26626b2": { + "balance": "0x947a63b5af6606e0b5555" + }, + "8d485780e84e23437f8f6938d96b964645529127": { + "balance": "0x108b2a2c28029094000000" + }, + "8e1c4355307f1a59e7ed4ae057c51368b9338c38": { + "balance": "0x60816047841bb53f00000" + }, + "9033ff75af27222c8f36a148800c7331581933f3": { + "balance": "0x947a63b5af6606e0b5555" + }, + "989e1a3b344a43911e02ccc609d469fbc15ab1f1": { + "balance": "0xbe4064fbcc1d7ea600000" + }, + "a5d2944c32a8d7b284ff0b84c20fdcc46937cf64": { + "balance": "0xbe4064fbcc1d7ea600000" + }, + "a5d40d93b01afbafec84e20018aff427628f645e": { + "balance": "0x108b2a2c28029094000000" + }, + "aa9064f57f8d7de4b3e08c35561e21afd6341390": { + "balance": "0x108b2a2c28029094000000" + }, + "ae1d640648009dbe0aa4485d3bfbb68c37710924": { + "balance": "0x1090756cd9fae351a00000" + }, + "b2fe7afe178335cec3564d7671eebd7634c626b0": { + "balance": "0x947a63b5af6606e0b5555" + }, + "b80d1e7f9cebe4b5e1b1acf037d3a44871105041": { + "balance": "0x7eceeefd263869beb5557" + }, + "c1cda18694f5b86cfb80c1b4f8cc046b0d7e6326": { + "balance": "0x108b2a2c28029094000000" + }, + "c471776ea02705004c451959129bf09423b56526": { + "balance": "0x947a63b5af6606e0b5555" + }, + "de22679dca843b424fd0bbd70a22d5f5a4b94fe4": { + "balance": "0x86fefddedc1b15e780000" + }, + "e23a4c6615669526ab58e9c37088bee4ed2b2dee": { + "balance": "0x43c33c1937564800000" + }, + "ef283eca68de87e051d427b4be152a7403110647": { + "balance": "0xbe4064fbcc1d7ea600000" + }, + "f5720c180a6fa14ecce82fb1bb060a39e93a263c": { + "balance": "0x18d0c290c78ca7c0d40000" + }, + "f8ed78a113cd2a34df451ba3d540ffae66829aa0": { + "balance": "0x947a63b5af6606e0b5555" + }, + "fc89c17525f08f2bc9ba8cb77bcf05055b1f7059": { + "balance": "0xbe4064fbcc1d7ea600000" + } + }, + "coinbase": "0x0000000000000000000000000000000000000000", + "config": { + "arrowGlacierBlock": 31056500, + "bedrockBlock": 31056500, + "berlinBlock": 31056500, + "byzantiumBlock": 0, + "cancunTime": 1742957258, + "canyonTime": 1742957258, + "cel2Time": 1742957258, + "celo": { + "eip1559BaseFeeFloor": 25000000000 + }, + "chainId": 42220, + "constantinopleBlock": 0, + "daoForkSupport": true, + "depositContractAddress": "0x0000000000000000000000000000000000000000", + "ecotoneTime": 1742957258, + "eip150Block": 0, + "eip155Block": 0, + "eip158Block": 0, + "fjordTime": 1742957258, + "gingerbreadBlock": 21616000, + "graniteTime": 1742957258, + "grayGlacierBlock": 31056500, + "homesteadBlock": 0, + "istanbulBlock": 0, + "londonBlock": 31056500, + "mergeNetsplitBlock": 31056500, + "optimism": { + "eip1559Denominator": 400, + "eip1559DenominatorCanyon": 400, + "eip1559Elasticity": 5 + }, + "petersburgBlock": 0, + "regolithTime": 1742957258, + "shanghaiTime": 1742957258, + "terminalTotalDifficulty": 0 + }, + "extraData": "0xecc833a7747eaa8327335e8e0c6b6d8aa3a38d0063591e43ce116ccf5c89753ef91eebf905559427f326ab753d62cdb55018c62e9ee7e671bbb121947eec94733d16b96c6fe877464630bb5be1e5c3f294f0d17b624521c0a599b063d73a73f9719307b48f94a7681958b7f07f4fb8bd5b0e075fb2aa2b021d5994ecc20b5f3d6cdf41fc12707ad7872ff64256e29794e5617da4dfa6ce4912f1d39889fe2dec2f7e66b39439ec4f2a82f9f0f39929415c65db9ea5df54e41d94341dec14b7a56c242ce9cf939815ec7bb11042449469901924e6c045a03cc163c6b8ae8af80fa1ee80940a6641d4736767d1f2bcf2450200ef384391b4419466bdb4d2ff2ee4c68517e6fcd25cc3034c86916094606311948f7426ddfd23c1521b15eddb52e83b29944cb90ebba92141ed3021f5dc4e6c8bb642095846948c6f9aad8281a21e7f6522602f2d6469c950e0bb942a1bff2452aca1ca5ffabbd34b2744109d11e4f594b4fa2d21b238e12ee4a863517cb5092f2330cb1b9442d441b6793e6162b979fbf6ad0af0063cbec96a94436d12f639a32509685080161ff0365fc15545f094e0c5f6172673ad70a76ff264cbc0df783930b47d9421245b0a2c3235f1108d1aa01ae376849d36e68494f27bb4eabc4400a1abe9d80d7537ab0ef1b058bf948440e805b89f48c932265e3c4ad033813669d87a942eb79345089ca6f703f3b3c4235315cbeaad6d3c943aa1fa695aa89958ebdb5346d6760b72250dc1d794173c75c8f1be201ce89cf426fe12c9997d7096269474288dbefa3a55986c039953b67139a466474fc49482f0e7879314516952f7961b15c63fc6b2734dfb9459f7b67e6beae0223ddc91eec010b670c553e8e094e10a8cc6c22cdc320c67bd600a1d8a0a46d7f40094e3020350aceea29b783e0c947ae001692b8f624894b952930a3656a9cbab21df5919f94c61a495bf79942289a63b4b4700eeeca35323ea51785f366dd705940223e40d1f93a6fe5bef63605992ada10740e13b940610b8b4e6f5c3241d53ed3374ddca8969cd053c9463b4b616c5345e3dcc9e21db69297e2129447f4e94c9a7781729f95b88239c3bfc91fb52f92b44a1169456259f876eb6a7264d9f1a59952baad599ff964094f139e74adec329e715ab49a68c5548a00e40cbc29433657019d60a0a41f1b9970bd4b28a3a83dbeafc940f5640bd556b0be19262d1817b213ddb3424d91d94ed8bf82d2e579ff6363aef139f8b147a0105f17e94d8c68ebecb6f074ac5c4fb66a690ac0ad38a5a3c94c6f916ad6e360651bb95f8e67c1c28805745d084943ed95d6d4ce36ea7b349cd401e324316d956331a944a03c4c2e101ac4612d89b79f61c9c5bdd51929d94dd0f3f7beb37fe9d4496f8098446b65ddfb1fa0294642cbe89a58909ba712dd11ed4c4b2359bd8c85d94ffbcf262c1d5c4392ef469ba79f2cd195d2affda9468e0104fd2b5a2c93e97c2ba172c4d2a4223f76f945cab520442de9babc290b25e5e2e6a1194ec670794bc6963fc0e2f5547ba949ed39e80b8388321104f9443882141555003b3e71110f567373b59ac4cb0bd9448cedc58b10af13d688631bc3cb78a05b8a6e56a9465698c9ec5af10345cd1e39472d60fb6133bad6f94d507309fd69635aa37810a65a4da27ec47a1ba0594c46dc0741ff61af883e284daea062ae7382e709194198958f0b860ab0e3937f468fe366aac9eebad2e940ec5a403212d732d8d7ced050e9510f6327453c694464cce7999b3d90a8f1ffaf94a71fbdea1e6543594097095b8cf5cabf0c39e548d8df55dd635d84d0794aa937da037e617e868795eac1dcd43c663014d3294f11073eb2d259b90a91954cae30d0e6e9ecc7f11945b55452bdba5971d606f47647bd383f3c3fa728594439d5e4d7578ecc9efa52a8cf1887b11fd0fb9009492f628b0157d47c992f5c69dbbd038b110e27826f918e2b86005f784c52234d0c40ab13b0636c5728217a8f3100046593c30271d39d59fcdb9a0053a874710e9c65e0d8a030c16a700b4ec430207cc5037c5e2698ef839fa0b7a4372f4b5217deda2a8df087e3b552f300016ce9147a2ff4db4c8a87d77b080b860d3f640c3da685893c41eb6301fdde2920c5a09296438abe5894074592f27547fb4ad02d222b1a330ff5aea065eff5200973d4fcb57808d8d9b09337e09aec279dc3337e758c51a3219596699006ee3683ff0c733f16eb917fad37f7f5d505201b86057b5158540d1672de49073e469e5426766094ce6514ac29580803ff9d22cdef3b6fed28a8ad9de63bf938c1c7b0e7a0156fb03f5363d09bf337713d8d45475df48ccea0fa793f591fbb62673545fc846c04e6aa9e2eaaab72c3b9ba4069ea280b860ca75a4c4e1f2898c0ae0ed53698b0271d1f8869ecd945891ae6a9b02682335af625c29f80572b440f91a3a343f3ea600a49a426960b6c1c5dd7b24540ecb745329312dfdd525fd173418c846f0096acba466a27446114f3a2b2a887986846b01b860b3dff5505fe9ec48fa11a67dbf166e7d5ab3473ff9f5fdc90c690eb1142ad687b17eb8ab0c08615c9397b351c53e79016d593d588f8c607b2d1136713d05066ffd8a30589357afa54a0a7ac8777372787261dde126c4f0c04bf741f809c3be80b860451da71ff5b1e9b4fd587fd76f53808191096cc5869596eda8f3ad697426a98a659f5f4818e57866d4b0dd90f0684900742a167b314f0276e5e6a8bc6f40ce1cd1d35c7f9be56f1240de596b30a4b40010dfd21b7fc9aef400faaa421e27a080b860277d5eedd8cf7d549296a6f8ad2869ec6e90183b9e8ebbf49a9d3ecd817757b50c6acc6cab9f0dbcf4b87251b6e82a0192a00c1e509225ec1ec08dcbeb04ba2808b16f72af90f33277e614dc19383256b3980421441ce3e75356ee35e5f62d80b86007431d3192f7a273382b645bc300cb0161c2395c005bf389698ce4a3ac56cffb9405456102f5b6e41b42bb28e7cb1f0141d3e1be1b066a94cc2befe88b0f5eef63c60a1ab8a1f0cc02e73c0ce5aac464332d3a2c1074a5126807a75323280301b8600d39e1cd00ff4ce5e41fa9ea90526f3e3540b64ba52954e5682f31ec20360b2995d5caac7cee778ff7c13aaca74b9b004032f87a331867e9ebc7ed06c5b77707c88614714f2e0ed30c85c519aa823aa9d1a7a56766a294c7802aad300b408280b860ce9efb226a3c085071c7aea84f66040dc16a1600893eb1e6ef507fa72c6684f24d2c3b4ffee9881142fc41cfbd6b3b01933838ed7bd05c16450cab703b12ee623f8745f7f618981601a9c4de1337fe881975bc8572536281b9dcc51400177680b860075724b0f2fa9ced3440a76107a53b02a0b8b5a5a510d94b02b5c0696db96910204d54ee3138b3e5949464585d98de00a2964d480ca31adf09c962802895ea160d195bce583e59094bf7c11d33eaffef12cb999284bcf842bbab2c87647d8801b8603b0ffa0a101f959879b7e14d830862981d6c311ffd440f214eee0a2891743a25355e9230266aeadbd20f3bde0ccb30008bf326df8fba9b701d4764ad49663da19417132edf4281df4560715649491d9794dc64e9540d16b51b362e139c3aa701b8601a65e75f0f47d7c92da92de15372a0052338b952cc1307d5ee1596a670fedeb3b5ac8bc690f3f5e5f34fb8d18a5441011d6023e3c2b343bffc655972102a7181dffcab47bd0a2d6d46eedc6f2b70cd64025715de2b8ae23c032e61b380663c80b86071ca0f2be942a733074e8e0d92ae0adc2617bcfe503b97f8339c8f1c498d85608fa5966da7abdd9651c9ce4e3411e900c4d65d5c7d858f1e5ee212c9e543d3727aeaa9abbdcb68848e7c990c06aa70a4bf2585959943935549e7a9e2c2ba0d80b8600122d3f6ae5e2bc6fdee3cd35a3522ea519bfa6f365451fa275c4688bcfb5cec418fa053a8859981e973ea273ca68f014e840d0ccf18cc7c498742103c3116732ef197a9f90f50bf64f83754a86ad441fe9691bfdf384a1aaacf38430a2b1001b8601135b86a2587c75c55db8274e498bd3f2887a1a455a665b8314655124c5e8197d3ef892f3dea2bd80b047530f837ae00dc263da929f0135a4f8ee73d47d5c2ffcaaa7b1e3a9cc59e496feeea2323e5eb16c9de2e3b973c35c0a82ca587477201b860e162bf706b79405326d52e29e2ea247a55ebf69ac34900e4e1249c3fe28fd3dabf40d7022f57bc7b16bedbc78bb49000ba7cd92e123b69309a0572cf49b1bdf4c5525ba656decffa5da91ed4fb565d384979e9a58f72986b654908bcc7308580b860e9dbc5c1d073954ad6ace9afb19d8679e8c87fd12cd1356999a8e167390f3de966f3485b500c40c61f829e12f56512001b4d4c4fcb19737735eba15d24d43231ce64cf348de3765fdbd01f4612af6ad7ebf9fafb594ade18a7717c189e9c2080b860bd8e3d6ad24e5a7e4f084b3142c6bebe26d248e09363a9bbfc9cd07ed59a65bc140a39564f6ecdf287c2ee1ed57a930035a92306b6d5925af8785c813bad6113ba42da88d3c0586e438df75bee506bdf9f10c927493524897ba485946f976f00b86030feb59a6804a2df697b3a40c691f176575ffb0d09fa167a59642d041dfec97e97414ea7abc8bc7bdad5f1a684e2bc00fb2c01bc03aa9e8caaaa82ca3210de31f9c7abff6baba5e08e2dbdfa85953ac39bf3b895627e7be493fbb6e346061400b860f24f6f1e6423fd83d1ef275484a5950fed90794d7bfb6224de768bf716646dee263de0d9ed4c681c0def78d16df0f000f1e17b8657f1d8e30dcb7e94cd1c79b9c82d8f04252b078ccf3719c7658dd82b9d93e02671925b5aeb4ae38163129100b860f6a586f1ceb85a23980bdfea738678f5906de5303a7ff6ceb3ad675f93a84fcc502275fd7bd8fde4de89fd381cb8eb000b3d496e248208d00eae4f421ce041d73789e794a372ca788655eb5413c3b7cab1c993e47ff6c568ca4da484bac88b80b86086ab977d6064531b136aba2fbcc50cfb332b939e0af22c7ff3800c804b33aad998ef69a97204076028a6946d627d2f0086992cba351fd538a91986253884325aba6d66ec1ac10eb8e18330180820cc388c22de7d64f9f0592b74ee5b35745a80b860fda02a60f25f87c0fc86be0bf52bf1d0be37db80661a2fa35c7f52a4c5f5edccca04768c762caaa2303f8cac2ba93e016dce7c8382e3d002e751e0bf33563eb8f6e7937ab2998300e96f5ed3d857d081ff389c495febaabe836a7cd06012ae80b8609271a103e5971edd694b3c6363a2517b0676849b05660094baf240ea9677e171169a8eebed5ad6000871b4f42d4ca701b74b10f91c0de059d225ced0222e391cf7bdb5934d1677193837d5a1f17bb710f4747956d819db51c817cbba53324b81b860719b2de30cbcdee6e62445b7c2eedb63520beb4cb6e4a55f7e121a5bc6a1143e1322d3ffea28ab624d30f6da8962b8003eeb056df8e46a49035c0aaf139a372e954d8ebc3cbd2d0b2e5727d54f3f4fcd0e95dc29bfa9f9ddcda98bbe8107ae00b860b054d545899f55cbb84853125d50ed06211ace3eeb6160a85583de508569e65592f5a221a000cb99997c0dd2738527010f2b1e83eeb7ca41c40ad9295b35f1172004a63567f140c1d2b0e04338161e8f1be88c1543ac75d587e42c3ed7dc1880b860e8de954d3100b125b2a3c1e4a81e3ac5f4b38f85c2ed91d752c507d4a37c338ca215e474a48511c599407b85c01d37012cd5012c74c5c0c3f88b4480a73bb52d1ff49848ca014f54cde1a891e6efa483b5f64016a9303515806c45d9f79a7e81b860bfce6153e2c2dabc724d9ccf5cad8916753dce1a495a29053ff7e5b74b0eace4889d5fd2d5859400d82b6bf29cecc9006b6e37152cb1f4f72e7d0c0897439f4ef886e26b4345d2f3e73bcf08d47f02c02976730620d7f844313c099894176980b860d56a6034613c0db14cad99e0d2dc3a2482ff8167a032218ac10508bb04fb8ef91d40a6ef0731f1e162761f09be237800363199f518a1bad98f9f2d179d2028137f9a86588c5cd91534a53d4edcc718b40aab61343571636d052eb7b288578c80b86025138a99de6619b2ad03707f847ac0f5d79b0fba2c67a02f5430a57c7a651d6cd63988cb91aa331acd8b7221a41fc4007be73ad86365de5029c22186d2c90a864fd3d386cc074b25f33b4e5f17839d2780b62390f1fe63ec690c1022c039f500b860c1e12e9c0b26d73c27dd5f60f08aa15c952afaa395dbc8b4cb99453bbf3f14ede8a9fc579f64500497344cb3637aa900ac8618d237580558d9ab5b042ac411fd121713744378c9f4d897907f09a71af9331bfecb3853e3f0577be558c9019881b860c8e6cf45b640fa91385b4f7e891fe68e5ef6847d032d6ee1b52eef0ff577ad796b881537f94adcbd1b52ba3e0e5d7e014e97406029095598a373fd6d9b6c7754aa87b87560e363faee89c11482cae4a063d7cbe65747f2b095cd2f6688a8bd00b86008fb22b9fe04caf62059216dfa1d2274ade1df9e8dc0b3c37c2f04a8b3d30a73f8b7ddd873d08c9b9302b936d303380147ce0e19c4600b780a1814730462147fb8280fbd7fe0aa7290d325a2b7b5092e05c037664a0aaea127b0d95fd13e3d81b86068dd5abe43baf4f4817a49b094c0bb19ed4971c49a6f91863163f655b6f312d80b7c7843b4cb7a27f7e54d48c41c7a01c5e22e1b0e38a5dbb03dfee76076a9af56146359add6003410005332417f6b65db718acce693cfa21a8fd92f6ad72800b86091785b64cfd3ac6025b6b536499ac63868344b8f86660ed73b574b000477807d53dacf1d9da258ee1b113485a01579001c5a510dd3b3c5ff1f417c4d97faf997aecedf7602bd96155f8396f5c9fa53d2c601b0de0241fff49939b8a97ce59f81b86000d869e78871139e8a5ff6d590593d94ea39ea73e87ac8d901f0f524372b93752a488b34e05afe05ab53b1c1b5b9a50040341dc01361110551358c9e982f30755e19ec2ad1c1a40afba9998f763599149b976caaded14c1793fe8c469b17c900b860e87f2bfc49c076239d7522280098c9c4808524c67f3891608c42a510340d64c7e3c1c074c34050007837c13536ee4001108efc87fb2eb8c3236a738122ec086a7b8e6857e82454ff6284a81bf0362424ba96be762d4c06e6aa1b59f20c870780b8608bd2cb218f465c82702aba73a061227cd83dd8e3115ae592811a4d9a8236e3cb99cfe81b2e22e3620635d42f63b7db00cd546bdf9fad7b49d0b4686962c8e0f4544c8df9f41d30d7d489c86745ef9b61a7dfb498f7554eeaf7e24654e5b2e080b8602a5d5145b7a8100575e96cadf2513e7e64dc1354bd891a24f985c2574c9f5f136c6837eab290543d769227785520970133022637837b6e711918f3d2e98291bf3b518247b54e925a0cd080d517731b2725be888fca298ae9ec6f5d2c19146b01b8609cedde7d49e2e115896b789ece09a4e8816fae153de891774f0f716a3088e01754498f8ab82d3a4ef5d53dbe17338f0089d1de1eb60bfe3ec2b9701cd882b1c174bdcfaac2225f57481676bd3ee845825be823b9f9317e407b015159b9ce7e80b8609124b91b223bf9bcb33f75ab8fad0180fdc57536d34349945b80458abc8e59cb06005fabea656b2cd0dc74c0d06160019706965ec3ee0d3b9dd76eb9d39158bd512fe7384bb9e139bc6391d5f7b969397bd85a91bb91670880d861e8fcbd0700b860338fa194daae9ba1245931653fa349ce85d37e2f42f871c6b67397401e190b497d15ff23e8f6e9d8637f84fc2dd4640066fee692f5d38208233e7570c3ed49a4ba032d79c7a974883fa5b5c2a113259b924a346bc4edaf717b3d272ceb152980b8606150a62f3bae3a35a639d66dc37ffbc979dda85d6f5c278a5e3a563ed865018c86563be9b878261ef8d34edd3c313500a4f170e22f386674d538b9e15930f39216a38c2a0b60380a140e5897f42d37077784cd0f1a93746e4da42a5da8de1081b8605fd1581e41fa22e7ea0d3ee0674e80e2168fdb42c1aaa3eb8aa395fdde11de5ca98ee71c50b365ef6ad9850bacf7ab011eb446da79efba3ae91fe1f7d9274dacda39b0b3bfaec7d7904eac59d72683c52b6ea091ca1374d8b744fd1d595c5700b860e04a671c7f9af919093a9c7aaf5c3d04eff31189d65f5a2aef8a08119ed1c150464c40085bfe2fc1b598fc2ebb095101d0103b995e3a762a9063d823ef6686422caa5a390f9cef5ee6c4b911fd2a818f43fa47ab4d21b01cc7b071b517438d81b86014cfe4d455820e0b9189ccb32b565b90d414ed7d315d3e61141f085b6aaea34b0c90d1f502f544408e7ed0573e1d1701d38063b239cf847018daa41b7ef75b4458d2fa23e459e9e8039668aca6bc70df1051a6466a5a5bc636e68bc8e2380a80b86045bab7cfb2814e1e3e1a40779219bb48c5d51419ce4c27359d0dfea9fbf1d193ca1cf07934ebf3d6699093387d0e0f000dc5fd2058e7ac50e67c26e5172567c2e7ba9fefa6376e44de800c8955cb330df27476d8ba9c8ec06bba46fddeb95e81b860a9fc64c64c039cbd8b23c10c706e51e0013289201111cf8c50e22781161df397fa9c1b91dbab44969aa4f8819f222e01bab90190bebfaecff7076de325dae8080bfe921fbb4ca474d45126fe5ae699dadea98a5255c048b955ab9ba1de8f4c01b860aa5729ac27a01f26924e863eea7d7b49e4f8ccb15c758ea5ac4d19691a8df31f70138e7f3011fc1e53d52d7063dd8d01a9b3800a66914956769a13ff8d7960725bf1b9073052f3ff85e57b34165702baede05d4e807bfb565a38c24e3542c780b86014dafe41c0d96b22188f0cf6cb99274e09d8ed0546bb57b28a3590449726aedf809c049663a2fe4e40b91830ac864d006a9c5b41cbddeabeef99cfddf6c298de0d482b6e945993241d8987f7fac004fe159f2206060b69d1f8f7f67f63f26280b860878790bb38b1d31707aa37b5af439d64d4a29ea64418b7c01139a26e4f297da6c61a806361e6fee8e40556500c8a6000183b2a42c54d714a143fe12492081f373e3e27e3921adeb276a8daac8b87a534c0fa1d45195d8a35cbda27f883128680b8607983d25868e1915ca8c20603bb70475b398acb04fef221106475f0fc25a3df25d181050214da347bfcd8f8292e5257014ba77cf67ee5f42202257317808f126930b4eaaf4bec801c4465ced54bd78331f8d3dadfdf2f91de294836c13e946001b860c700f20fab4ebb8ba2f47adf177e3a9dbbfb8d999acbaf0055cc540758f8c00c4564813d910e7be02e4ceaa97fb88000b3e8e6fb4308fb943fa0a3d8ee32c3a16e67eae0817370de54bec1e13193cc845cedb70e48171e097550475684cc6600b8603a3857a5e4a709e1891a13797d55c1698f931755492099926314feec955da31fcea8a8c8e52ce2efd74008f32dbc1c00c1b3d36c1f3097d806f1687eff4a979ff967a8233f923a1af6a3104c12d9d44388bece91a248bd86f253e709cea7a380b860d8704fbf6968ffd9f39f78173726dfebbaaffebd8a33dfe29a72b9a64204debf2016ca94cbecb1b84cab9d5cc168f70082530b8cfab0225a37c8cc3044c288ab0fea2f484b56a33fe6c92d6c50f254e6b1689ac6bb1429cc36a0a7dfa85cf880b86089bc906b5ea07752b1981558fd5d329f6d428bc14dfde022745303eae0077612b9c473cd66e4d91778282ec98bbd74001b61cd71448750df642fb580ce81a62ff2f5ab4378528ccd65acff67ac2175678f598529c768247c77938ca2d529aa01b860fb9de050c059a11175be23daeef1bfc374a688d8fd776e7d2dc81fe301068a3af03ad522bd915a154dc8b5b8e12d38003f17bf9f3001e8bc682e38cfc93c6901417afe1ddbfe11b04f42ca4f321f7ba73fa98f0e8c8d75781b14c0dea847a500b860bef17561ef747e0f11fd339987a9813fa8ac1cbbd6457ab8fae4841f2217de019de7caf421631372b7eec730d9210d0128e6c560948c19ab6141d6699e0283a5b98abb8266d731f2b6435a07b44360a3f5622cff59103ec95938ab74fe1d8f01b860a47fd022dda04d8dd36e0a8127be68736e47e490b946d2d88a9fdcca0a5114a930db2319e7e9f378d1b81da865d38b01a063e9994e620483b08047da39ee2fba35f66df5734e1545d297be0225ddfda34e494c1f09825eed303d166a8b702f01b8605966b41d69c0e94e202f65823338c3ee0357b024a6ef625765bcf3c20e1786258a18221e0b9a34b43380e06984d92f0183d0f86d0dfe0cac237ee38b28876dada3ae9d1a7c1e6627c3b524d0e5d4270bbe159661622821412b3c1162881ead80b8608fad3c2111494834f30e6d8a3368f2aa156c991fa4b9d55c31da88310a61248305697ad5e885404bc474419383de4f006c89c84955321716f6ceb4d5db433fcabe843d566a5e9526d29c58b38fda9ff2a13f7841f25cda8ff091c965bdf91780b8607f9df4fdb96e20e0a480a62c48896646d96982d7fccccdf70c61f2f52ab4ea2901b5ef468203f39d9d8325843ada0d00e9562c64f79ec16d69b5921ad36306ae9ae2ab97806b354af8cb63722a96aed5fa0542fff58d2e41f6aee3cb641f7781b8609cc39207797e5c37f6336c4444cf275d0afd43a9b257a08086f15867886833744c9b5753fcff76fce3790d7f25a45e004af9831464bf43e39634ecfce8da4641da78ad4ba20e540c007dbc19e391ae69cfb7809b2d20627d553a16d7d71b5a80b860e6631bd0b82c41327b582d7b239c9893cd1162cae05f360d8808700b38ee0ee965e9bd9246d79e00c234c87aa7699800c73428f7eccd77337bf79bf6b43f48345be265c38d128d2cd7f37167cadb3565d66e6a7f67b12f4bed63e5d50748010080b8410000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c3808080f86480b86000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080", + "gasUsed": "0x0", + "number": "0x0", + "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000", + "timestamp": "0x5ea06a00" +} + diff --git a/celo/mainnet/rollup.json b/celo/mainnet/rollup.json new file mode 100644 index 00000000..ff6bd239 --- /dev/null +++ b/celo/mainnet/rollup.json @@ -0,0 +1,49 @@ +{ + "genesis": { + "l1": { + "hash": "0xe499ec12e12fc2c94e6714a94f2640dbc748ff6c26fd3f420b25264a3d90066f", + "number": 22128103 + }, + "l2": { + "hash": "0x7586014e20c69b3fa7c9070baf1a7edd95833db57853126f32593b455da2e5c5", + "number": 31056500 + }, + "l2_time": 1742957258, + "system_config": { + "batcherAddr": "0x0cd08c7f7a96aa9635f761b49216b9ea74c5ca60", + "overhead": "0x0000000000000000000000000000000000000000000000000000000000000000", + "scalar": "0x0100000000000000000000000000000000000000000000000000000000000000", + "gasLimit": 30000000, + "eip1559Params": "0x0000000000000000" + } + }, + "block_time": 1, + "max_sequencer_drift": 2892, + "seq_window_size": 7200, + "channel_timeout": 50, + "l1_chain_id": 1, + "l2_chain_id": 42220, + "regolith_time": 0, + "cel2_time": 0, + "canyon_time": 0, + "delta_time": 0, + "ecotone_time": 0, + "fjord_time": 0, + "granite_time": 0, + "batch_inbox_address": "0xff00000000000000000000000000000000042220", + "deposit_contract_address": "0xc5c5d157928bdbd2acf6d0777626b6c75a9eaedc", + "l1_system_config_address": "0x89e31965d844a309231b1f17759ccaf1b7c09861", + "protocol_versions_address": "0x1b6deb2197418075ab314ac4d52ca1d104a8f663", + "alt_da": { + "da_challenge_contract_address": "0x0000000000000000000000000000000000000000", + "da_commitment_type": "GenericCommitment", + "da_challenge_window": 1, + "da_resolve_window": 1 + }, + "chain_op_config": { + "eip1559Elasticity": 5, + "eip1559Denominator": 400, + "eip1559DenominatorCanyon": 400 + } +} + diff --git a/celo/op-geth/celo-alfajores-op-geth-archive-leveldb-hash.yml b/celo/op-geth/celo-alfajores-op-geth-archive-leveldb-hash.yml new file mode 100644 index 00000000..04b83a33 --- /dev/null +++ b/celo/op-geth/celo-alfajores-op-geth-archive-leveldb-hash.yml @@ -0,0 +1,113 @@ +services: + celo-alfajores-archive: + image: us-west1-docker.pkg.dev/devopsre/celo-blockchain-public/op-geth:${CELO_L2_VERSION:-celo-v2.0.0} + volumes: + - "celo-alfajores-op-geth-archive-leveldb-hash:/datadir" + - ".jwtsecret:/shared/jwt.txt" + - "./celo/alfajores/:/chainconfig" + - "./celo/scripts/:/scripts" + ports: + - "10895:10895" + - "10895:10895/udp" + expose: + - 8545 + - 8551 + networks: + - chains + restart: always + stop_grace_period: 5m + entrypoint: /scripts/start-op-geth.sh + environment: + - NETWORK_NAME=alfajores + - GETH_BOOTNODES=enode://ac0f42fa46f8cc10bd02a103894d71d495537465133e7c442bc02dc76721a5f41761cc2d8c69e7ba1b33e14e28f516436864d3e0836e2dcdaf032387f72447dd@34.83.164.192:30303,enode://596002969b8b269a4fa34b4709b9600b64201e7d02e2f5f1350affd021b0cbda6ce2b913ebe24f0fb1edcf66b6c730a8a3b02cd940f4de995f73d3b290a0fc92@34.82.177.77:30303,enode://3619455064ef1ce667171bba1df80cfd4c097f018cf0205aaad496f0d509611b7c40396893d9e490ee390cd098888279e177a4d9bb09c58387bb0a6031d237f1@34.19.90.27:30303,enode://e3c54db6004a92d4ee87504f073f3234a25759b485274cc224037e3e5ee792f3b482c3f4fffcb764af6e1859a1aea9710b71e1991e32c1dee7f40352124bb182@35.233.249.87:30303,enode://674410b34fd54c8406a4f945292b96111688d4bab49aecdc34b4f1b346891f4673dcb03ed44c38ab467ef7bec0b20f6031ad88aa1d35ce1333b343d00fa19fb1@34.168.43.76:30303 + - BEDROCK_DATADIR=/datadir + - OP_GETH__SYNCMODE=full + - GETH_STATE_SCHEME=hash + - GETH_DB_ENGINE=leveldb + - GETH_NAT=extip:${IP} + - NODE_TYPE=archive + - BEDROCK_SEQUENCER_HTTP=https://sequencer.alfajores.celo-testnet.org + - PORT__OP_GETH_P2P=10895 + - IS_CUSTOM_CHAIN=true + - OP_GETH__HISTORICAL_RPC=${CELO_ALFAJORES_ARCHIVE_GETH:-celo-alfajores-archive-geth:8545} + + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.celo-alfajores-op-geth-archive-leveldb-hash-stripprefix.stripprefix.prefixes=/celo-alfajores-archive" + - "traefik.http.services.celo-alfajores-op-geth-archive-leveldb-hash-op-geth-pruned-pebble-path.loadbalancer.server.port=8545" + - "traefik.http.routers.celo-alfajores-op-geth-archive-leveldb-hash.entrypoints=websecure" + - "traefik.http.routers.celo-alfajores-op-geth-archive-leveldb-hash.tls.certresolver=myresolver" + - "traefik.http.routers.celo-alfajores-op-geth-archive-leveldb-hash.rule=Host(`$DOMAIN`) && PathPrefix(`/celo-alfajores-archive`)" + - "traefik.http.routers.celo-alfajores-op-geth-archive-leveldb-hash.middlewares=celo-alfajores-op-geth-archive-leveldb-hash-stripprefix, ipwhitelist" + + + celo-alfajores-archive-node: + image: us-west1-docker.pkg.dev/devopsre/celo-blockchain-public/op-node:${CELO_L2_VERSION:-celo-v2.0.0} + depends_on: + - celo-alfajores-archive + expose: + - 9545 # RPC + - 7300 # metrics + - 6060 # pprof + networks: + - chains + ports: + - "15895:15895" + - "15895:15895/udp" + environment: + - HEALTHCHECK__REFERENCE_RPC_PROVIDER=https://forno.celo.org + - OP_NODE_ALTDA_DA_SERVER="http://celo-alfajores-archive-eigenda-proxy:4242" + - OP_NODE_P2P_LISTEN_TCP_PORT=15895 + - OP_NODE_P2P_LISTEN_UDP_PORT=15895 + - OP_NODE_P2P_STATIC=/ip4/35.197.25.52/tcp/9222/p2p/16Uiu2HAmQEdyLRSAVZDr5SqbJ1RnKmNDhtQJcEKmemrVxe4FxKwR,/ip4/34.105.22.4/tcp/9222/p2p/16Uiu2HAm1SZBDSugT5MMu7vBY8auDgfZFNhoDeXPLc9Me5FsAxwT,/ip4/34.83.209.168/tcp/9222/p2p/16Uiu2HAmGJAiUX6HLSo4nLh8T984qxzokwL23cVsYuNZy2SrK7C6,/ip4/34.83.214.149/tcp/9222/p2p/16Uiu2HAmAko2Kr3eAjM7tnshtEhYrxQYfKUvN2kwiygeFoBAoi8S,/ip4/34.169.5.52/tcp/9222/p2p/16Uiu2HAmKc6YKHzYgsjBDaj36uAufxpgZFgrzDqVBt6zTPwdhhJD + - OP_NODE_ALTDA_ENABLED=true + - OP_NODE_ALTDA_DA_SERVICE=true + - OP_NODE_ALTDA_VERIFY_ON_READ=false + - OP_NODE_ALTDA_DA_SERVER=http://celo-alfajores-archive-eigenda-proxy:4242 + - OP_NODE_L2_ENGINE_AUTH=/jwtsecret + command: > + op-node + --l1="${ETHEREUM_HOLESKY_EXECUTION_RPC}" + --l2=http://celo-alfajores-archive:8551 + --rpc.addr=0.0.0.0 + --rpc.port=9545 + --l1.trustrpc + --l1.rpckind=basic + --l1.beacon="${ETHEREUM_HOLESKY_BEACON_REST}" + --syncmode=execution-layer + --p2p.priv.path=/chainconfigs/p2p_node_key_txt + --rollup.config=/chainconfigs/rollup.json + --rollup.load-protocol-versions=true + --rollup.halt=major + restart: always + volumes: + - .jwtsecret:/jwtsecret + - ./celo/alfajores/:/chainconfigs/ + stop_grace_period: 30s + + celo-alfajores-archive-eigenda-proxy: + platform: linux/amd64 + image: ghcr.io/layr-labs/eigenda-proxy:v1.6.4 + restart: unless-stopped + stop_grace_period: 5m + entrypoint: /scripts/start-eigenda-proxy.sh + environment: + - EIGENDA_LOCAL_DISPERSER_RPC=disperser-holesky.eigenda.xyz:443 + - EIGENDA_LOCAL_SVC_MANAGER_ADDR=0xD4A7E1Bd8015057293f0D0A557088c286942e84b + - OP_NODE__RPC_ENDPOINT=${ETHEREUM_HOLESKY_EXECUTION_RPC} + volumes: + - celo-alfajores-op-geth-archive-leveldb-hash_eigenda:/data + - ./celo/scripts:/scripts + + celo-alfajores-archive-key-generator: + image: ghcr.io/foundry-rs/foundry + volumes: + - "./celo/alfajores:/config" + entrypoint: sh + command: "[ -f /config/p2p_node_key_txt ] && exit 0 || cast w n | grep -i 'Private Key' | awk -F ': ' '{print $2}' | sed 's/0x//' > /config/p2p_node_key_txt" + +volumes: + celo-alfajores-op-geth-archive-leveldb-hash: + celo-alfajores-op-geth-archive-leveldb-hash_eigenda: + + \ No newline at end of file diff --git a/celo/op-geth/celo-alfajores-op-geth-pruned-pebble-path.yml b/celo/op-geth/celo-alfajores-op-geth-pruned-pebble-path.yml new file mode 100644 index 00000000..1dd8a32a --- /dev/null +++ b/celo/op-geth/celo-alfajores-op-geth-pruned-pebble-path.yml @@ -0,0 +1,113 @@ +services: + celo-alfajores: + image: us-west1-docker.pkg.dev/devopsre/celo-blockchain-public/op-geth:${CELO_L2_VERSION:-celo-v2.0.0} + volumes: + - "celo-alfajores-op-geth-pruned-pebble-path:/datadir" + - ".jwtsecret:/shared/jwt.txt" + - "./celo/alfajores/:/chainconfig" + - "./celo/scripts/:/scripts" + ports: + - "10457:10457" + - "10457:10457/udp" + expose: + - 8545 + - 8551 + networks: + - chains + restart: always + stop_grace_period: 5m + entrypoint: /scripts/start-op-geth.sh + environment: + - NETWORK_NAME=alfajores + - GETH_BOOTNODES=enode://ac0f42fa46f8cc10bd02a103894d71d495537465133e7c442bc02dc76721a5f41761cc2d8c69e7ba1b33e14e28f516436864d3e0836e2dcdaf032387f72447dd@34.83.164.192:30303,enode://596002969b8b269a4fa34b4709b9600b64201e7d02e2f5f1350affd021b0cbda6ce2b913ebe24f0fb1edcf66b6c730a8a3b02cd940f4de995f73d3b290a0fc92@34.82.177.77:30303,enode://3619455064ef1ce667171bba1df80cfd4c097f018cf0205aaad496f0d509611b7c40396893d9e490ee390cd098888279e177a4d9bb09c58387bb0a6031d237f1@34.19.90.27:30303,enode://e3c54db6004a92d4ee87504f073f3234a25759b485274cc224037e3e5ee792f3b482c3f4fffcb764af6e1859a1aea9710b71e1991e32c1dee7f40352124bb182@35.233.249.87:30303,enode://674410b34fd54c8406a4f945292b96111688d4bab49aecdc34b4f1b346891f4673dcb03ed44c38ab467ef7bec0b20f6031ad88aa1d35ce1333b343d00fa19fb1@34.168.43.76:30303 + - BEDROCK_DATADIR=/datadir + - OP_GETH__SYNCMODE=snap + - GETH_STATE_SCHEME=path + - GETH_DB_ENGINE=pebble + - GETH_NAT=extip:${IP} + - NODE_TYPE=full + - BEDROCK_SEQUENCER_HTTP=https://sequencer.alfajores.celo-testnet.org + - PORT__OP_GETH_P2P=10457 + - IS_CUSTOM_CHAIN=true + - OP_GETH__HISTORICAL_RPC=${CELO_ALFAJORES_GETH:-celo-alfajores-geth:8545} + + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.celo-alfajores-op-geth-pruned-pebble-path-stripprefix.stripprefix.prefixes=/celo-alfajores" + - "traefik.http.services.celo-alfajores-op-geth-pruned-pebble-path-op-geth-pruned-pebble-path.loadbalancer.server.port=8545" + - "traefik.http.routers.celo-alfajores-op-geth-pruned-pebble-path.entrypoints=websecure" + - "traefik.http.routers.celo-alfajores-op-geth-pruned-pebble-path.tls.certresolver=myresolver" + - "traefik.http.routers.celo-alfajores-op-geth-pruned-pebble-path.rule=Host(`$DOMAIN`) && PathPrefix(`/celo-alfajores`)" + - "traefik.http.routers.celo-alfajores-op-geth-pruned-pebble-path.middlewares=celo-alfajores-op-geth-pruned-pebble-path-stripprefix, ipwhitelist" + + + celo-alfajores-node: + image: us-west1-docker.pkg.dev/devopsre/celo-blockchain-public/op-node:${CELO_L2_VERSION:-celo-v2.0.0} + depends_on: + - celo-alfajores + expose: + - 9545 # RPC + - 7300 # metrics + - 6060 # pprof + networks: + - chains + ports: + - "15457:15457" + - "15457:15457/udp" + environment: + - HEALTHCHECK__REFERENCE_RPC_PROVIDER=https://forno.celo.org + - OP_NODE_ALTDA_DA_SERVER="http://celo-alfajores-eigenda-proxy:4242" + - OP_NODE_P2P_LISTEN_TCP_PORT=15457 + - OP_NODE_P2P_LISTEN_UDP_PORT=15457 + - OP_NODE_P2P_STATIC=/ip4/35.197.25.52/tcp/9222/p2p/16Uiu2HAmQEdyLRSAVZDr5SqbJ1RnKmNDhtQJcEKmemrVxe4FxKwR,/ip4/34.105.22.4/tcp/9222/p2p/16Uiu2HAm1SZBDSugT5MMu7vBY8auDgfZFNhoDeXPLc9Me5FsAxwT,/ip4/34.83.209.168/tcp/9222/p2p/16Uiu2HAmGJAiUX6HLSo4nLh8T984qxzokwL23cVsYuNZy2SrK7C6,/ip4/34.83.214.149/tcp/9222/p2p/16Uiu2HAmAko2Kr3eAjM7tnshtEhYrxQYfKUvN2kwiygeFoBAoi8S,/ip4/34.169.5.52/tcp/9222/p2p/16Uiu2HAmKc6YKHzYgsjBDaj36uAufxpgZFgrzDqVBt6zTPwdhhJD + - OP_NODE_ALTDA_ENABLED=true + - OP_NODE_ALTDA_DA_SERVICE=true + - OP_NODE_ALTDA_VERIFY_ON_READ=false + - OP_NODE_ALTDA_DA_SERVER=http://celo-alfajores-eigenda-proxy:4242 + - OP_NODE_L2_ENGINE_AUTH=/jwtsecret + command: > + op-node + --l1="${ETHEREUM_HOLESKY_EXECUTION_RPC}" + --l2=http://celo-alfajores:8551 + --rpc.addr=0.0.0.0 + --rpc.port=9545 + --l1.trustrpc + --l1.rpckind=basic + --l1.beacon="${ETHEREUM_HOLESKY_BEACON_REST}" + --syncmode=execution-layer + --p2p.priv.path=/chainconfigs/p2p_node_key_txt + --rollup.config=/chainconfigs/rollup.json + --rollup.load-protocol-versions=true + --rollup.halt=major + restart: always + volumes: + - .jwtsecret:/jwtsecret + - ./celo/alfajores/:/chainconfigs/ + stop_grace_period: 30s + + celo-alfajores-eigenda-proxy: + platform: linux/amd64 + image: ghcr.io/layr-labs/eigenda-proxy:v1.6.4 + restart: unless-stopped + stop_grace_period: 5m + entrypoint: /scripts/start-eigenda-proxy.sh + environment: + - EIGENDA_LOCAL_DISPERSER_RPC=disperser-holesky.eigenda.xyz:443 + - EIGENDA_LOCAL_SVC_MANAGER_ADDR=0xD4A7E1Bd8015057293f0D0A557088c286942e84b + - OP_NODE__RPC_ENDPOINT=${ETHEREUM_HOLESKY_EXECUTION_RPC} + volumes: + - celo-alfajores-op-geth-pruned-pebble-path_eigenda:/data + - ./celo/scripts:/scripts + + celo-alfajores-key-generator: + image: ghcr.io/foundry-rs/foundry + volumes: + - "./celo/alfajores:/config" + entrypoint: sh + command: "[ -f /config/p2p_node_key_txt ] && exit 0 || cast w n | grep -i 'Private Key' | awk -F ': ' '{print $2}' | sed 's/0x//' > /config/p2p_node_key_txt" + +volumes: + celo-alfajores-op-geth-pruned-pebble-path: + celo-alfajores-op-geth-pruned-pebble-path_eigenda: + + \ No newline at end of file diff --git a/celo/op-geth/celo-mainnet-op-geth-archive-leveldb-hash.yml b/celo/op-geth/celo-mainnet-op-geth-archive-leveldb-hash.yml new file mode 100644 index 00000000..507a7fa9 --- /dev/null +++ b/celo/op-geth/celo-mainnet-op-geth-archive-leveldb-hash.yml @@ -0,0 +1,113 @@ +services: + celo-mainnet-archive: + image: us-west1-docker.pkg.dev/devopsre/celo-blockchain-public/op-geth:${CELO_L2_VERSION:-celo-v2.0.0} + volumes: + - "${CELO_MAINNET_OP_GETH_ARCHIVE_LEVELDB_HASH_DATA:-celo-mainnet-op-geth-archive-leveldb-hash}:/datadir" + - ".jwtsecret:/shared/jwt.txt" + - "./celo/mainnet/:/chainconfig" + - "./celo/scripts/:/scripts" + ports: + - "10111:10111" + - "10111:10111/udp" + expose: + - 8545 + - 8551 + networks: + - chains + restart: always + stop_grace_period: 5m + entrypoint: /scripts/start-op-geth.sh + environment: + - NETWORK_NAME=mainnet + - GETH_BOOTNODES=enode://28f4fcb7f38c1b012087f7aef25dcb0a1257ccf1cdc4caa88584dc25416129069b514908c8cead5d0105cb0041dd65cd4ee185ae0d379a586fb07b1447e9de38@34.169.39.223:30303,enode://a9077c3e030206954c5c7f22cc16a32cb5013112aa8985e3575fadda7884a508384e1e63c077b7d9fcb4a15c716465d8585567f047c564ada2e823145591e444@34.169.212.31:30303,enode://029b007a7a56acbaa8ea50ec62cda279484bf3843fae1646f690566f784aca50e7d732a9a0530f0541e5ed82ba9bf2a4e21b9021559c5b8b527b91c9c7a38579@34.82.139.199:30303,enode://f3c96b73a5772c5efb48d5a33bf193e58080d826ba7f03e9d5bdef20c0634a4f83475add92ab6313b7a24aa4f729689efb36f5093e5d527bb25e823f8a377224@34.82.84.247:30303,enode://daa5ad65d16bcb0967cf478d9f20544bf1b6de617634e452dff7b947279f41f408b548261d62483f2034d237f61cbcf92a83fc992dbae884156f28ce68533205@34.168.45.168:30303,enode://c79d596d77268387e599695d23e941c14c220745052ea6642a71ef7df31a13874cb7f2ce2ecf5a8a458cfc9b5d9219ce3e8bc6e5c279656177579605a5533c4f@35.247.32.229:30303,enode://4151336075dd08eb6c75bfd63855e8a4bd6fd0f91ae4a81b14930f2671e16aee55495c139380c16e1094a49691875e69e40a3a5e2b4960c7859e7eb5745f9387@35.205.149.224:30303,enode://ab999db751265c714b171344de1972ed74348162de465a0444f56e50b8cfd048725b213ba1fe48c15e3dfb0638e685ea9a21b8447a54eb2962c6768f43018e5c@34.79.3.199:30303,enode://9d86d92fb38a429330546fe1aefce264e1f55c5d40249b63153e7df744005fa3c1e2da295e307041fd30ab1c618715f362c932c28715bc20bed7ae4fc76dea81@34.77.144.164:30303,enode://c82c31f21dd5bbb8dc35686ff67a4353382b4017c9ec7660a383ccb5b8e3b04c6d7aefe71203e550382f6f892795728570f8190afd885efcb7b78fa398608699@34.76.202.74:30303,enode://3bad5f57ad8de6541f02e36d806b87e7e9ca6d533c956e89a56b3054ae85d608784f2cd948dc685f7d6bbd5a2f6dd1a23cc03e529ea370dd72d880864a2af6a3@104.199.93.87:30303,enode://1decf3b8b9a0d0b8332d15218f3bf0ceb9606b0efe18f352c51effc14bbf1f4f3f46711e1d460230cb361302ceaad2be48b5b187ad946e50d729b34e463268d2@35.240.26.148:30303 + - BEDROCK_DATADIR=/datadir + - OP_GETH__SYNCMODE=full + - GETH_STATE_SCHEME=hash + - GETH_DB_ENGINE=leveldb + - GETH_NAT=extip:${IP} + - NODE_TYPE=archive + - BEDROCK_SEQUENCER_HTTP=https://cel2-sequencer.celo.org + - PORT__OP_GETH_P2P=10111 + - IS_CUSTOM_CHAIN=true + - OP_GETH__HISTORICAL_RPC=${CELO_MAINNET_ARCHIVE_GETH:-celo-mainnet-archive-geth:8545} + + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.celo-mainnet-op-geth-archive-leveldb-hash-stripprefix.stripprefix.prefixes=/celo-mainnet-archive" + - "traefik.http.services.celo-mainnet-op-geth-archive-leveldb-hash-op-geth-pruned-pebble-path.loadbalancer.server.port=8545" + - "traefik.http.routers.celo-mainnet-op-geth-archive-leveldb-hash.entrypoints=websecure" + - "traefik.http.routers.celo-mainnet-op-geth-archive-leveldb-hash.tls.certresolver=myresolver" + - "traefik.http.routers.celo-mainnet-op-geth-archive-leveldb-hash.rule=Host(`$DOMAIN`) && PathPrefix(`/celo-mainnet-archive`)" + - "traefik.http.routers.celo-mainnet-op-geth-archive-leveldb-hash.middlewares=celo-mainnet-op-geth-archive-leveldb-hash-stripprefix, ipwhitelist" + + + celo-mainnet-archive-node: + image: us-west1-docker.pkg.dev/devopsre/celo-blockchain-public/op-node:${CELO_L2_VERSION:-celo-v2.0.0} + depends_on: + - celo-mainnet-archive + expose: + - 9545 # RPC + - 7300 # metrics + - 6060 # pprof + networks: + - chains + ports: + - "15111:15111" + - "15111:15111/udp" + environment: + - HEALTHCHECK__REFERENCE_RPC_PROVIDER=https://forno.celo.org + - OP_NODE_ALTDA_DA_SERVER="http://celo-mainnet-archive-eigenda-proxy:4242" + - OP_NODE_P2P_LISTEN_TCP_PORT=15111 + - OP_NODE_P2P_LISTEN_UDP_PORT=15111 + - OP_NODE_P2P_STATIC=/ip4/34.83.180.111/tcp/9222/p2p/16Uiu2HAkxBYxPd4eDFJzwm84XPzymkXud847vu65eju4UCDRpDSM,/ip4/34.169.135.64/tcp/9222/p2p/16Uiu2HAm6oVW1YeKheAuhnJSySnVvbXZ5gXL4g36XrWb1imF9K3m,/ip4/34.169.201.36/tcp/9222/p2p/16Uiu2HAmCqAFUoq72tjGJfCkkzHoNbjTjshjEED4kWtRKMSxcMgb,/ip4/34.83.127.51/tcp/9222/p2p/16Uiu2HAmBqKBoxkk95CsZiXQmQHv9WMiHXU4Di6wzFuYEKo1i7dg,/ip4/35.227.175.30/tcp/9222/p2p/16Uiu2HAmTNVkin4vogHsqwJwShUkHtx48aDoxygGwgp9Tv5zQWTM,/ip4/34.82.198.98/tcp/9222/p2p/16Uiu2HAmS6CeFPUXMztLf4VDh9NLbauuXLSYx9YkXfyiscqoxsKt,/ip4/34.38.181.223/tcp/9222/p2p/16Uiu2HAmH3xfYGjaJDw6sxa8ds3bVwMYLZRpPzpTtTrYq7G4nZs3,/ip4/34.76.38.6/tcp/9222/p2p/16Uiu2HAm6yXZ9oRTSJfZzXe8wXJ165X3pfzAKdLB9sa27eRZgTwD,/ip4/35.187.106.54/tcp/9222/p2p/16Uiu2HAmPFucuARxzAqtXcD3evFoutKh7tSmfQCxwPKUXfkoyaqY,/ip4/34.76.16.183/tcp/9222/p2p/16Uiu2HAmS8NybNYedzHf4nuFfqyCDH9xiMpgMWxctMtau8dTUxeP,/ip4/104.199.39.59/tcp/9222/p2p/16Uiu2HAmGfwjf1XPikWYDN4NFpTBuuvs6C7eF2iyyKvvjK2MGrVM,/ip4/34.140.117.79/tcp/9222/p2p/16Uiu2HAkwSVN7WHohhoE1sh932y2q3Pv7AFiSugM8K6iFZLALq66 + - OP_NODE_ALTDA_ENABLED=true + - OP_NODE_ALTDA_DA_SERVICE=true + - OP_NODE_ALTDA_VERIFY_ON_READ=false + - OP_NODE_ALTDA_DA_SERVER=http://celo-mainnet-archive-eigenda-proxy:4242 + - OP_NODE_L2_ENGINE_AUTH=/jwtsecret + command: > + op-node + --l1="${ETHEREUM_MAINNET_EXECUTION_RPC}" + --l2=http://celo-mainnet-archive:8551 + --rpc.addr=0.0.0.0 + --rpc.port=9545 + --l1.trustrpc + --l1.rpckind=basic + --l1.beacon="${ETHEREUM_MAINNET_BEACON_REST}" + --syncmode=execution-layer + --p2p.priv.path=/chainconfigs/p2p_node_key_txt + --rollup.config=/chainconfigs/rollup.json + --rollup.load-protocol-versions=true + --rollup.halt=major + restart: always + volumes: + - .jwtsecret:/jwtsecret + - ./celo/mainnet/:/chainconfigs/ + stop_grace_period: 30s + + celo-mainnet-archive-eigenda-proxy: + platform: linux/amd64 + image: ghcr.io/layr-labs/eigenda-proxy:v1.6.4 + restart: unless-stopped + stop_grace_period: 5m + entrypoint: /scripts/start-eigenda-proxy.sh + environment: + - EIGENDA_LOCAL_DISPERSER_RPC=disperser.eigenda.xyz:443 + - EIGENDA_LOCAL_SVC_MANAGER_ADDR=0x870679e138bcdf293b7ff14dd44b70fc97e12fc0 + - OP_NODE__RPC_ENDPOINT=${ETHEREUM_MAINNET_EXECUTION_RPC} + volumes: + - ${CELO_MAINNET_OP_GETH_ARCHIVE_LEVELDB_HASH__EIGENDA_DATA:-celo-mainnet-op-geth-archive-leveldb-hash_eigenda}:/data + - ./celo/scripts:/scripts + + celo-mainnet-archive-key-generator: + image: ghcr.io/foundry-rs/foundry + volumes: + - "./celo/mainnet:/config" + entrypoint: sh + command: "[ -f /config/p2p_node_key_txt ] && exit 0 || cast w n | grep -i 'Private Key' | awk -F ': ' '{print $2}' | sed 's/0x//' > /config/p2p_node_key_txt" + +volumes: + celo-mainnet-op-geth-archive-leveldb-hash: + celo-mainnet-op-geth-archive-leveldb-hash_eigenda: + + diff --git a/celo/op-geth/celo-mainnet-op-geth-pruned-pebble-path.yml b/celo/op-geth/celo-mainnet-op-geth-pruned-pebble-path.yml new file mode 100644 index 00000000..e8b70588 --- /dev/null +++ b/celo/op-geth/celo-mainnet-op-geth-pruned-pebble-path.yml @@ -0,0 +1,113 @@ +services: + celo-mainnet: + image: us-west1-docker.pkg.dev/devopsre/celo-blockchain-public/op-geth:${CELO_L2_VERSION:-celo-v2.0.0} + volumes: + - "celo-mainnet-op-geth-pruned-pebble-path:/datadir" + - ".jwtsecret:/shared/jwt.txt" + - "./celo/mainnet/:/chainconfig" + - "./celo/scripts/:/scripts" + ports: + - "10993:10993" + - "10993:10993/udp" + expose: + - 8545 + - 8551 + networks: + - chains + restart: always + stop_grace_period: 5m + entrypoint: /scripts/start-op-geth.sh + environment: + - NETWORK_NAME=mainnet + - GETH_BOOTNODES=enode://28f4fcb7f38c1b012087f7aef25dcb0a1257ccf1cdc4caa88584dc25416129069b514908c8cead5d0105cb0041dd65cd4ee185ae0d379a586fb07b1447e9de38@34.169.39.223:30303,enode://a9077c3e030206954c5c7f22cc16a32cb5013112aa8985e3575fadda7884a508384e1e63c077b7d9fcb4a15c716465d8585567f047c564ada2e823145591e444@34.169.212.31:30303,enode://029b007a7a56acbaa8ea50ec62cda279484bf3843fae1646f690566f784aca50e7d732a9a0530f0541e5ed82ba9bf2a4e21b9021559c5b8b527b91c9c7a38579@34.82.139.199:30303,enode://f3c96b73a5772c5efb48d5a33bf193e58080d826ba7f03e9d5bdef20c0634a4f83475add92ab6313b7a24aa4f729689efb36f5093e5d527bb25e823f8a377224@34.82.84.247:30303,enode://daa5ad65d16bcb0967cf478d9f20544bf1b6de617634e452dff7b947279f41f408b548261d62483f2034d237f61cbcf92a83fc992dbae884156f28ce68533205@34.168.45.168:30303,enode://c79d596d77268387e599695d23e941c14c220745052ea6642a71ef7df31a13874cb7f2ce2ecf5a8a458cfc9b5d9219ce3e8bc6e5c279656177579605a5533c4f@35.247.32.229:30303,enode://4151336075dd08eb6c75bfd63855e8a4bd6fd0f91ae4a81b14930f2671e16aee55495c139380c16e1094a49691875e69e40a3a5e2b4960c7859e7eb5745f9387@35.205.149.224:30303,enode://ab999db751265c714b171344de1972ed74348162de465a0444f56e50b8cfd048725b213ba1fe48c15e3dfb0638e685ea9a21b8447a54eb2962c6768f43018e5c@34.79.3.199:30303,enode://9d86d92fb38a429330546fe1aefce264e1f55c5d40249b63153e7df744005fa3c1e2da295e307041fd30ab1c618715f362c932c28715bc20bed7ae4fc76dea81@34.77.144.164:30303,enode://c82c31f21dd5bbb8dc35686ff67a4353382b4017c9ec7660a383ccb5b8e3b04c6d7aefe71203e550382f6f892795728570f8190afd885efcb7b78fa398608699@34.76.202.74:30303,enode://3bad5f57ad8de6541f02e36d806b87e7e9ca6d533c956e89a56b3054ae85d608784f2cd948dc685f7d6bbd5a2f6dd1a23cc03e529ea370dd72d880864a2af6a3@104.199.93.87:30303,enode://1decf3b8b9a0d0b8332d15218f3bf0ceb9606b0efe18f352c51effc14bbf1f4f3f46711e1d460230cb361302ceaad2be48b5b187ad946e50d729b34e463268d2@35.240.26.148:30303 + - BEDROCK_DATADIR=/datadir + - OP_GETH__SYNCMODE=snap + - GETH_STATE_SCHEME=path + - GETH_DB_ENGINE=pebble + - GETH_NAT=extip:${IP} + - NODE_TYPE=full + - BEDROCK_SEQUENCER_HTTP=https://cel2-sequencer.celo.org + - PORT__OP_GETH_P2P=10993 + - IS_CUSTOM_CHAIN=true + - OP_GETH__HISTORICAL_RPC=${CELO_MAINNET_GETH:-celo-mainnet-geth:8545} + + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.celo-mainnet-op-geth-pruned-pebble-path-stripprefix.stripprefix.prefixes=/celo-mainnet" + - "traefik.http.services.celo-mainnet-op-geth-pruned-pebble-path-op-geth-pruned-pebble-path.loadbalancer.server.port=8545" + - "traefik.http.routers.celo-mainnet-op-geth-pruned-pebble-path.entrypoints=websecure" + - "traefik.http.routers.celo-mainnet-op-geth-pruned-pebble-path.tls.certresolver=myresolver" + - "traefik.http.routers.celo-mainnet-op-geth-pruned-pebble-path.rule=Host(`$DOMAIN`) && PathPrefix(`/celo-mainnet`)" + - "traefik.http.routers.celo-mainnet-op-geth-pruned-pebble-path.middlewares=celo-mainnet-op-geth-pruned-pebble-path-stripprefix, ipwhitelist" + + + celo-mainnet-node: + image: us-west1-docker.pkg.dev/devopsre/celo-blockchain-public/op-node:${CELO_L2_VERSION:-celo-v2.0.0} + depends_on: + - celo-mainnet + expose: + - 9545 # RPC + - 7300 # metrics + - 6060 # pprof + networks: + - chains + ports: + - "15993:15993" + - "15993:15993/udp" + environment: + - HEALTHCHECK__REFERENCE_RPC_PROVIDER=https://forno.celo.org + - OP_NODE_ALTDA_DA_SERVER="http://celo-mainnet-eigenda-proxy:4242" + - OP_NODE_P2P_LISTEN_TCP_PORT=15993 + - OP_NODE_P2P_LISTEN_UDP_PORT=15993 + - OP_NODE_P2P_STATIC=/ip4/34.83.180.111/tcp/9222/p2p/16Uiu2HAkxBYxPd4eDFJzwm84XPzymkXud847vu65eju4UCDRpDSM,/ip4/34.169.135.64/tcp/9222/p2p/16Uiu2HAm6oVW1YeKheAuhnJSySnVvbXZ5gXL4g36XrWb1imF9K3m,/ip4/34.169.201.36/tcp/9222/p2p/16Uiu2HAmCqAFUoq72tjGJfCkkzHoNbjTjshjEED4kWtRKMSxcMgb,/ip4/34.83.127.51/tcp/9222/p2p/16Uiu2HAmBqKBoxkk95CsZiXQmQHv9WMiHXU4Di6wzFuYEKo1i7dg,/ip4/35.227.175.30/tcp/9222/p2p/16Uiu2HAmTNVkin4vogHsqwJwShUkHtx48aDoxygGwgp9Tv5zQWTM,/ip4/34.82.198.98/tcp/9222/p2p/16Uiu2HAmS6CeFPUXMztLf4VDh9NLbauuXLSYx9YkXfyiscqoxsKt,/ip4/34.38.181.223/tcp/9222/p2p/16Uiu2HAmH3xfYGjaJDw6sxa8ds3bVwMYLZRpPzpTtTrYq7G4nZs3,/ip4/34.76.38.6/tcp/9222/p2p/16Uiu2HAm6yXZ9oRTSJfZzXe8wXJ165X3pfzAKdLB9sa27eRZgTwD,/ip4/35.187.106.54/tcp/9222/p2p/16Uiu2HAmPFucuARxzAqtXcD3evFoutKh7tSmfQCxwPKUXfkoyaqY,/ip4/34.76.16.183/tcp/9222/p2p/16Uiu2HAmS8NybNYedzHf4nuFfqyCDH9xiMpgMWxctMtau8dTUxeP,/ip4/104.199.39.59/tcp/9222/p2p/16Uiu2HAmGfwjf1XPikWYDN4NFpTBuuvs6C7eF2iyyKvvjK2MGrVM,/ip4/34.140.117.79/tcp/9222/p2p/16Uiu2HAkwSVN7WHohhoE1sh932y2q3Pv7AFiSugM8K6iFZLALq66 + - OP_NODE_ALTDA_ENABLED=true + - OP_NODE_ALTDA_DA_SERVICE=true + - OP_NODE_ALTDA_VERIFY_ON_READ=false + - OP_NODE_ALTDA_DA_SERVER=http://celo-mainnet-eigenda-proxy:4242 + - OP_NODE_L2_ENGINE_AUTH=/jwtsecret + command: > + op-node + --l1="${ETHEREUM_MAINNET_EXECUTION_RPC}" + --l2=http://celo-mainnet:8551 + --rpc.addr=0.0.0.0 + --rpc.port=9545 + --l1.trustrpc + --l1.rpckind=basic + --l1.beacon="${ETHEREUM_MAINNET_BEACON_REST}" + --syncmode=execution-layer + --p2p.priv.path=/chainconfigs/p2p_node_key_txt + --rollup.config=/chainconfigs/rollup.json + --rollup.load-protocol-versions=true + --rollup.halt=major + restart: always + volumes: + - .jwtsecret:/jwtsecret + - ./celo/mainnet/:/chainconfigs/ + stop_grace_period: 30s + + celo-mainnet-eigenda-proxy: + platform: linux/amd64 + image: ghcr.io/layr-labs/eigenda-proxy:v1.6.4 + restart: unless-stopped + stop_grace_period: 5m + entrypoint: /scripts/start-eigenda-proxy.sh + environment: + - EIGENDA_LOCAL_DISPERSER_RPC=disperser.eigenda.xyz:443 + - EIGENDA_LOCAL_SVC_MANAGER_ADDR=0x870679e138bcdf293b7ff14dd44b70fc97e12fc0 + - OP_NODE__RPC_ENDPOINT=${ETHEREUM_MAINNET_EXECUTION_RPC} + volumes: + - celo-mainnet-op-geth-pruned-pebble-path_eigenda:/data + - ./celo/scripts:/scripts + + celo-mainnet-key-generator: + image: ghcr.io/foundry-rs/foundry + volumes: + - "./celo/mainnet:/config" + entrypoint: sh + command: "[ -f /config/p2p_node_key_txt ] && exit 0 || cast w n | grep -i 'Private Key' | awk -F ': ' '{print $2}' | sed 's/0x//' > /config/p2p_node_key_txt" + +volumes: + celo-mainnet-op-geth-pruned-pebble-path: + celo-mainnet-op-geth-pruned-pebble-path_eigenda: + + \ No newline at end of file diff --git a/celo/scripts/start-eigenda-proxy.sh b/celo/scripts/start-eigenda-proxy.sh new file mode 100755 index 00000000..e582776f --- /dev/null +++ b/celo/scripts/start-eigenda-proxy.sh @@ -0,0 +1,25 @@ +#!/bin/sh +set -e + +# Archive blobs configuration +if [ -n "$EIGENDA_LOCAL_ARCHIVE_BLOBS" ]; then + export EXTENDED_EIGENDA_PARAMETERS="${EXTENDED_EIGENDA_PARAMETERS:-} --s3.credential-type=$EIGENDA_LOCAL_S3_CREDENTIAL_TYPE \ + --s3.access-key-id=$EIGENDA_LOCAL_S3_ACCESS_KEY_ID \ + --s3.access-key-secret=$EIGENDA_LOCAL_S3_ACCESS_KEY_SECRET \ + --s3.bucket=$EIGENDA_LOCAL_S3_BUCKET \ + --s3.path=$EIGENDA_LOCAL_S3_PATH \ + --s3.endpoint=$EIGENDA_LOCAL_S3_ENDPOINT \ + --storage.fallback-targets=s3" +fi + +exec ./eigenda-proxy --addr=0.0.0.0 \ + --port=4242 \ + --eigenda.disperser-rpc="$EIGENDA_LOCAL_DISPERSER_RPC" \ + --eigenda.eth-rpc="$OP_NODE__RPC_ENDPOINT" \ + --eigenda.signer-private-key-hex=$(head -c 32 /dev/urandom | xxd -p -c 32) \ + --eigenda.svc-manager-addr="$EIGENDA_LOCAL_SVC_MANAGER_ADDR" \ + --eigenda.status-query-timeout="45m" \ + --eigenda.disable-tls=false \ + --eigenda.confirmation-depth=1 \ + --eigenda.max-blob-length="32MiB" \ + $EXTENDED_EIGENDA_PARAMETERS diff --git a/celo/scripts/start-op-geth.sh b/celo/scripts/start-op-geth.sh new file mode 100755 index 00000000..70cece93 --- /dev/null +++ b/celo/scripts/start-op-geth.sh @@ -0,0 +1,76 @@ +#!/bin/sh +set -e + +# Create JWT if it doesn't exist +if [ ! -f "/shared/jwt.txt" ]; then + echo "Creating JWT..." + mkdir -p /shared + dd bs=1 count=32 if=/dev/urandom of=/dev/stdout | xxd -p -c 32 > /shared/jwt.txt +fi + +# Check if either OP_GETH__HISTORICAL_RPC or HISTORICAL_RPC_DATADIR_PATH is set and if so set the historical rpc option. +if [ -n "$OP_GETH__HISTORICAL_RPC" ] || [ -n "$HISTORICAL_RPC_DATADIR_PATH" ] ; then + export EXTENDED_ARG="${EXTENDED_ARG:-} --rollup.historicalrpc=${OP_GETH__HISTORICAL_RPC:-http://historical-rpc-node:8545}" +fi + +if [ -n "$IPC_PATH" ]; then + export EXTENDED_ARG="${EXTENDED_ARG:-} --ipcpath=$IPC_PATH" +fi + +# Init genesis if it's a custom chain and the datadir is empty +if [ -n "${IS_CUSTOM_CHAIN}" ] && [ -z "$(ls -A "$BEDROCK_DATADIR")" ]; then + echo "Initializing custom chain genesis..." + if [ ! -f /chainconfig/genesis.json ]; then + echo "Missing genesis.json file: Either update the repo to pull the published genesis.json or migrate your Celo L1 datadir to generate genesis.json." + exit + fi + geth init --datadir="$BEDROCK_DATADIR" /chainconfig/genesis.json +fi + +# Determine syncmode based on NODE_TYPE +if [ -z "$OP_GETH__SYNCMODE" ]; then + if [ "$NODE_TYPE" = "full" ]; then + export OP_GETH__SYNCMODE="snap" + else + export OP_GETH__SYNCMODE="full" + fi +fi + +METRICS_ARGS="--metrics" +if [ "$MONITORING_ENABLED" = "true" ]; then + METRICS_ARGS="$METRICS_ARGS \ + --metrics.influxdb \ + --metrics.influxdb.endpoint=http://influxdb:8086 \ + --metrics.influxdb.database=opgeth" +fi + +# Start op-geth. +exec geth \ + --datadir="$BEDROCK_DATADIR" \ + --http \ + --http.corsdomain="*" \ + --http.vhosts="*" \ + --http.addr=0.0.0.0 \ + --http.port=8545 \ + --http.api=web3,debug,eth,txpool,net,engine \ + --ws \ + --ws.addr=0.0.0.0 \ + --ws.port=8545 \ + --ws.origins="*" \ + --ws.api=debug,eth,txpool,net,engine,web3 \ + $METRICS_ARGS \ + --syncmode="$OP_GETH__SYNCMODE" \ + --gcmode="$NODE_TYPE" \ + --authrpc.vhosts="*" \ + --authrpc.addr=0.0.0.0 \ + --authrpc.port=8551 \ + --authrpc.jwtsecret=/shared/jwt.txt \ + --rollup.sequencerhttp="$BEDROCK_SEQUENCER_HTTP" \ + --rollup.disabletxpoolgossip=true \ + --port="${PORT__OP_GETH_P2P:-39393}" \ + --discovery.port="${PORT__OP_GETH_P2P:-39393}" \ + --snapshot=true \ + --verbosity=3 \ + --history.transactions=0 \ + $EXTENDED_ARG $@ + diff --git a/check-health.sh b/check-health.sh index 7f85504d..99a39d05 100755 --- a/check-health.sh +++ b/check-health.sh @@ -1,9 +1,25 @@ #!/bin/bash -RPC_URL="$1" -ref="$2" +BASEPATH="$(dirname "$0")" -timeout=5 # seconds +if [ $# -lt 2 ]; then + echo "Error: At least two parameters are required." + exit 1 +fi + +RPC_URL=$1 +REF="" + +for url in "${@:2}"; do + REF+="--url $url " +done + +# Optional: You can remove the trailing space if needed +ref=${REF% } + +# echo "ref: $ref" + +timeout=3 # seconds response_file=$(mktemp) @@ -26,7 +42,7 @@ if [ $? -eq 0 ]; then sleep 3 # to give the reference node more time to import the block if it is very current - http_status_code2=$(curl --ipv4 -m $timeout -s -X POST -w "%{http_code}" -o "$response_file2" -H "Content-Type: application/json" --data "{\"jsonrpc\":\"2.0\",\"method\":\"eth_getBlockByNumber\",\"params\":[\"$latest_block_number\", false],\"id\":1}" $ref) + http_status_code2=$($BASEPATH/multicurl.sh --ipv4 -m $timeout -s -X POST -w "%{http_code}" -o "$response_file2" -H "Content-Type: application/json" --data "{\"jsonrpc\":\"2.0\",\"method\":\"eth_getBlockByNumber\",\"params\":[\"$latest_block_number\", false],\"id\":1}" $ref) curl_code2=$? @@ -41,7 +57,7 @@ if [ $? -eq 0 ]; then response_file3=$(mktemp) status_file3=$(mktemp) { - curl --ipv4 -m $timeout -s -X POST -w "%{http_code} %{time_total}" -o "$response_file3" -H "Content-Type: application/json" --data "{\"jsonrpc\":\"2.0\",\"method\":\"eth_getBlockByNumber\",\"params\":[\"latest\", false],\"id\":1}" $ref > "$status_file3" + $BASEPATH/multicurl.sh --ipv4 -m $timeout -s -X POST -w "%{http_code} %{time_total}" -o "$response_file3" -H "Content-Type: application/json" --data "{\"jsonrpc\":\"2.0\",\"method\":\"eth_getBlockByNumber\",\"params\":[\"latest\", false],\"id\":1}" $ref > "$status_file3" } & pid3=$! @@ -66,6 +82,7 @@ if [ $? -eq 0 ]; then rm "$status_file4" # echo "lets check" + if [ $curl_code3 -eq 0 ]; then if [[ $http_status_code3 -eq 200 ]]; then response3=$(cat "$response_file3") diff --git a/erigon-holesky.yml b/erigon-holesky.yml index 8d7ecacf..1b63f5d4 100644 --- a/erigon-holesky.yml +++ b/erigon-holesky.yml @@ -17,6 +17,8 @@ services: - erigon-holesky:/root/.local/share/erigon - /slowdisk:/slowdisk - .jwtsecret:/jwtsecret + environment: + - "IP=${IP}" networks: - chains command: > @@ -26,7 +28,7 @@ services: --private.api.addr=0.0.0.0:9090 --torrent.upload.rate="1250mb" --torrent.download.rate="1250mb" - --nat=stun + --nat=extip:${IP} --pprof --pprof.addr=0.0.0.0 --pprof.port=6061 diff --git a/erigon-sepolia-minimal.yml b/erigon-sepolia-minimal.yml index 4d0e62bc..2de54f5a 100644 --- a/erigon-sepolia-minimal.yml +++ b/erigon-sepolia-minimal.yml @@ -1,6 +1,6 @@ services: erigon-sepolia-minimal: - image: erigontech/erigon:${ERIGON3_VERSION:-v3.0.0-beta1} + image: erigontech/erigon:${ERIGON3_VERSION:-v3.0.0-beta2} user: root expose: - "16630" diff --git a/ethereum-holesky.yml b/ethereum-holesky.yml new file mode 120000 index 00000000..71b30413 --- /dev/null +++ b/ethereum-holesky.yml @@ -0,0 +1 @@ +ethereum/geth/ethereum-holesky-geth-pruned-pebble-path.yml \ No newline at end of file diff --git a/ethereum/geth/ethereum-holesky-geth-pruned-pebble-path.yml b/ethereum/geth/ethereum-holesky-geth-pruned-pebble-path.yml new file mode 100644 index 00000000..bd840cf8 --- /dev/null +++ b/ethereum/geth/ethereum-holesky-geth-pruned-pebble-path.yml @@ -0,0 +1,76 @@ +services: + ethereum-holesky: + image: ethereum/client-go:${GETH_VERSION:-v1.15.5} + expose: + - 8545 + - 8551 + ports: + - "10993:10993" + - "10993:10993/udp" + environment: + - "GETH_DATADIR=/data" + - "GETH_HOLESKY=true" + - "GETH_GCMODE=full" + - "GETH_SYNCMODE=snap" + - "GETH_STATE_SCHEME=path" + - "GETH_DB_ENGINE=pebble" + - "GETH_NAT=extip:${IP}" + - "GETH_PORT=19809" + - "GETH_WS_PORT=8545" + - "GETH_HTTP=true" + - "GETH_HTTP_ADDR=0.0.0.0" + - "GETH_HTTP_VHOSTS=*" + - "GETH_WS=true" + - "GETH_WS_ADDR=0.0.0.0" + - "GETH_WS_ORIGINS=*" + - "GETH_HTTP_API=eth,net,debug,admin,web3" + - "GETH_AUTHRPC_JWTSECRET=/jwtsecret" + - "GETH_AUTHRPC_ADDR=0.0.0.0" + - "GETH_AUTHRPC_VHOSTS=*" + networks: + - chains + volumes: + - "ethereum-holesky-geth-pruned-pebble-path:/data" + - ".jwtsecret:/jwtsecret" + restart: unless-stopped + stop_grace_period: 1m + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.ethereum-holesky-geth-pruned-pebble-path-stripprefix.stripprefix.prefixes=/ethereum-holesky" + - "traefik.http.services.ethereum-holesky-geth-pruned-pebble-path.loadbalancer.server.port=8545" + - "traefik.http.routers.ethereum-holesky-geth-pruned-pebble-path.entrypoints=websecure" + - "traefik.http.routers.ethereum-holesky-geth-pruned-pebble-path.tls.certresolver=myresolver" + - "traefik.http.routers.ethereum-holesky-geth-pruned-pebble-path.rule=Host(`$DOMAIN`) && PathPrefix(`/ethereum-holesky`)" + - "traefik.http.routers.ethereum-holesky-geth-pruned-pebble-path.middlewares=ethereum-holesky-geth-pruned-pebble-path-stripprefix, ipwhitelist" + + ethereum-holesky-node: + image: prysmaticlabs/prysm-beacon-chain:${PRYSM_VERSION:-v5.3.1} + ports: + - "15993:15993" + - "15993:15993/udp" + command: + [ + "--holesky", + "--datadir=/data", + "--jwt-secret=/jwtsecret", + "--rpc-host=0.0.0.0", + "--grpc-gateway-host=0.0.0.0", + "--monitoring-host=0.0.0.0", + "--p2p-tcp-port=15993", + "--p2p-udp-port=15993", + "--checkpoint-sync-url=https://holesky.beaconstate.info", + "--execution-endpoint=http://ethereum-holesky:8551", + "--enable-historical-state-representation=false", + "--beacon-db-pruning", + "--accept-terms-of-use" + ] + networks: + - chains + volumes: + - "ethereum-holesky-geth-pruned-pebble-path_prysm:/data" + - ".jwtsecret:/jwtsecret" + restart: unless-stopped + +volumes: + ethereum-holesky-geth-pruned-pebble-path: + ethereum-holesky-geth-pruned-pebble-path_prysm: \ No newline at end of file diff --git a/ethereum/geth/ethereum-mainnet-geth-pruned-pebble-path.yml b/ethereum/geth/ethereum-mainnet-geth-pruned-pebble-path.yml new file mode 100644 index 00000000..5fa466a7 --- /dev/null +++ b/ethereum/geth/ethereum-mainnet-geth-pruned-pebble-path.yml @@ -0,0 +1,76 @@ +services: + ethereum-mainnet: + image: ethereum/client-go:${GETH_VERSION:-v1.15.5} + expose: + - 8545 + - 8551 + ports: + - "10023:10023" + - "10023:10023/udp" + environment: + - "GETH_DATADIR=/data" + - "GETH_MAINNET=true" + - "GETH_GCMODE=full" + - "GETH_SYNCMODE=snap" + - "GETH_STATE_SCHEME=path" + - "GETH_DB_ENGINE=pebble" + - "GETH_NAT=extip:${IP}" + - "GETH_PORT=19809" + - "GETH_WS_PORT=8545" + - "GETH_HTTP=true" + - "GETH_HTTP_ADDR=0.0.0.0" + - "GETH_HTTP_VHOSTS=*" + - "GETH_WS=true" + - "GETH_WS_ADDR=0.0.0.0" + - "GETH_WS_ORIGINS=*" + - "GETH_HTTP_API=eth,net,debug,admin,web3" + - "GETH_AUTHRPC_JWTSECRET=/jwtsecret" + - "GETH_AUTHRPC_ADDR=0.0.0.0" + - "GETH_AUTHRPC_VHOSTS=*" + networks: + - chains + volumes: + - "ethereum-mainnet-geth-pruned-pebble-path:/data" + - ".jwtsecret:/jwtsecret" + restart: unless-stopped + stop_grace_period: 1m + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.ethereum-mainnet-geth-pruned-pebble-path-stripprefix.stripprefix.prefixes=/ethereum-mainnet" + - "traefik.http.services.ethereum-mainnet-geth-pruned-pebble-path.loadbalancer.server.port=8545" + - "traefik.http.routers.ethereum-mainnet-geth-pruned-pebble-path.entrypoints=websecure" + - "traefik.http.routers.ethereum-mainnet-geth-pruned-pebble-path.tls.certresolver=myresolver" + - "traefik.http.routers.ethereum-mainnet-geth-pruned-pebble-path.rule=Host(`$DOMAIN`) && PathPrefix(`/ethereum-mainnet`)" + - "traefik.http.routers.ethereum-mainnet-geth-pruned-pebble-path.middlewares=ethereum-mainnet-geth-pruned-pebble-path-stripprefix, ipwhitelist" + + ethereum-mainnet-node: + image: prysmaticlabs/prysm-beacon-chain:${PRYSM_VERSION:-v5.3.1} + ports: + - "15023:15023" + - "15023:15023/udp" + command: + [ + "--mainnet", + "--datadir=/data", + "--jwt-secret=/jwtsecret", + "--rpc-host=0.0.0.0", + "--grpc-gateway-host=0.0.0.0", + "--monitoring-host=0.0.0.0", + "--p2p-tcp-port=15023", + "--p2p-udp-port=15023", + "--checkpoint-sync-url=https://sync-mainnet.beaconcha.in", + "--execution-endpoint=http://ethereum-mainnet:8551", + "--enable-historical-state-representation=false", + "--beacon-db-pruning", + "--accept-terms-of-use" + ] + networks: + - chains + volumes: + - "ethereum-mainnet-geth-pruned-pebble-path_prysm:/data" + - ".jwtsecret:/jwtsecret" + restart: unless-stopped + +volumes: + ethereum-mainnet-geth-pruned-pebble-path: + ethereum-mainnet-geth-pruned-pebble-path_prysm: \ No newline at end of file diff --git a/ethereum/geth/ethereum-sepolia-geth-pruned-pebble-path.yml b/ethereum/geth/ethereum-sepolia-geth-pruned-pebble-path.yml new file mode 100644 index 00000000..64002545 --- /dev/null +++ b/ethereum/geth/ethereum-sepolia-geth-pruned-pebble-path.yml @@ -0,0 +1,76 @@ +services: + ethereum-sepolia: + image: ethereum/client-go:${GETH_VERSION:-v1.15.5} + expose: + - 8545 + - 8551 + ports: + - "10710:10710" + - "10710:10710/udp" + environment: + - "GETH_DATADIR=/data" + - "GETH_SEPOLIA=true" + - "GETH_GCMODE=full" + - "GETH_SYNCMODE=snap" + - "GETH_STATE_SCHEME=path" + - "GETH_DB_ENGINE=pebble" + - "GETH_NAT=extip:${IP}" + - "GETH_PORT=19809" + - "GETH_WS_PORT=8545" + - "GETH_HTTP=true" + - "GETH_HTTP_ADDR=0.0.0.0" + - "GETH_HTTP_VHOSTS=*" + - "GETH_WS=true" + - "GETH_WS_ADDR=0.0.0.0" + - "GETH_WS_ORIGINS=*" + - "GETH_HTTP_API=eth,net,debug,admin,web3" + - "GETH_AUTHRPC_JWTSECRET=/jwtsecret" + - "GETH_AUTHRPC_ADDR=0.0.0.0" + - "GETH_AUTHRPC_VHOSTS=*" + networks: + - chains + volumes: + - "ethereum-sepolia-geth-pruned-pebble-path:/data" + - ".jwtsecret:/jwtsecret" + restart: unless-stopped + stop_grace_period: 1m + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.ethereum-sepolia-geth-pruned-pebble-path-stripprefix.stripprefix.prefixes=/ethereum-sepolia" + - "traefik.http.services.ethereum-sepolia-geth-pruned-pebble-path.loadbalancer.server.port=8545" + - "traefik.http.routers.ethereum-sepolia-geth-pruned-pebble-path.entrypoints=websecure" + - "traefik.http.routers.ethereum-sepolia-geth-pruned-pebble-path.tls.certresolver=myresolver" + - "traefik.http.routers.ethereum-sepolia-geth-pruned-pebble-path.rule=Host(`$DOMAIN`) && PathPrefix(`/ethereum-sepolia`)" + - "traefik.http.routers.ethereum-sepolia-geth-pruned-pebble-path.middlewares=ethereum-sepolia-geth-pruned-pebble-path-stripprefix, ipwhitelist" + + ethereum-sepolia-node: + image: prysmaticlabs/prysm-beacon-chain:${PRYSM_VERSION:-v5.3.1} + ports: + - "15710:15710" + - "15710:15710/udp" + command: + [ + "--sepolia", + "--datadir=/data", + "--jwt-secret=/jwtsecret", + "--rpc-host=0.0.0.0", + "--grpc-gateway-host=0.0.0.0", + "--monitoring-host=0.0.0.0", + "--p2p-tcp-port=15710", + "--p2p-udp-port=15710", + "--checkpoint-sync-url=https://sepolia.beaconstate.info", + "--execution-endpoint=http://ethereum-sepolia:8551", + "--enable-historical-state-representation=false", + "--beacon-db-pruning", + "--accept-terms-of-use" + ] + networks: + - chains + volumes: + - "ethereum-sepolia-geth-pruned-pebble-path_prysm:/data" + - ".jwtsecret:/jwtsecret" + restart: unless-stopped + +volumes: + ethereum-sepolia-geth-pruned-pebble-path: + ethereum-sepolia-geth-pruned-pebble-path_prysm: \ No newline at end of file diff --git a/fantom-archive.yml b/fantom-archive.yml deleted file mode 100644 index 26147858..00000000 --- a/fantom-archive.yml +++ /dev/null @@ -1,30 +0,0 @@ -version: "3.1" -services: - fantom-archive: - build: - args: - VERSION: release/txtracing/1.1.2-rc.6 - context: ./fantom - dockerfile: Dockerfile - environment: - - SNAPSHOT_URL_DISABLED=https://download.fantom.network/opera_5may22.tgz - - CACHE_SIZE=${FANTOM_CACHE_SIZE} - volumes: - - "fantom-archive:/datadir" - expose: - - "18544" - - "5050" - networks: - - chains - restart: unless-stopped - labels: - - "traefik.enable=true" - - "traefik.http.middlewares.fantom-archive-stripprefix.stripprefix.prefixes=/fantom-archive" - - "traefik.http.services.fantom-archive.loadbalancer.server.port=18544" - - "traefik.http.routers.fantom-archive.entrypoints=websecure" - - "traefik.http.routers.fantom-archive.tls.certresolver=myresolver" - - "traefik.http.routers.fantom-archive.rule=Host(`$DOMAIN`) && PathPrefix(`/fantom-archive`)" - - "traefik.http.routers.fantom-archive.middlewares=fantom-archive-stripprefix, ipwhitelist" - -volumes: - fantom-archive: diff --git a/fantom-archive.yml b/fantom-archive.yml new file mode 120000 index 00000000..ebd97821 --- /dev/null +++ b/fantom-archive.yml @@ -0,0 +1 @@ +fantom/opera/fantom-mainnet-opera-archive-trace.yml \ No newline at end of file diff --git a/fantom-mainnet-opera-archive-trace.yml b/fantom-mainnet-opera-archive-trace.yml deleted file mode 100644 index 904f35ec..00000000 --- a/fantom-mainnet-opera-archive-trace.yml +++ /dev/null @@ -1,34 +0,0 @@ -services: - fantom-archive-trace: - build: - args: - VERSION: release/txtracing/1.1.3-rc.5 - context: ./fantom - stop_grace_period: 3m - environment: - - CACHE_SIZE=${FANTOM_ARCHIVE_TRACE_CACHE_SIZE:-16000} - - IP=${IP} - volumes: - - "${FANTOM_MAINNET_OPERA_ARCHIVE_TRACE_DATA:-fantom-mainnet-opera-archive-trace}:/datadir" - - "./fantom/config:/config" - expose: - - "18544" - - "19921" - ports: - - "19921:19921" - - "19921:19921/udp" - networks: - - chains - restart: unless-stopped - labels: - - "traefik.enable=true" - - "traefik.http.middlewares.fantom-mainnet-opera-archive-trace-stripprefix.stripprefix.prefixes=/fantom-archive-trace" - - "traefik.http.services.fantom-mainnet-opera-archive-trace.loadbalancer.server.port=18544" - - "${NO_SSL:-traefik.http.routers.fantom-mainnet-opera-archive-trace.entrypoints=websecure}" - - "${NO_SSL:-traefik.http.routers.fantom-mainnet-opera-archive-trace.tls.certresolver=myresolver}" - - "${NO_SSL:-traefik.http.routers.fantom-mainnet-opera-archive-trace.rule=Host(`$DOMAIN`) && PathPrefix(`/fantom-archive-trace`)}" - - "${NO_SSL:+traefik.http.routers.fantom-mainnet-opera-archive-trace.rule=PathPrefix(`/fantom-archive-trace`)}" - - "traefik.http.routers.fantom-mainnet-opera-archive-trace.middlewares=fantom-mainnet-opera-archive-trace-stripprefix, ipwhitelist" - -volumes: - fantom-mainnet-opera-archive-trace: diff --git a/fantom-mainnet-opera-archive-trace.yml b/fantom-mainnet-opera-archive-trace.yml new file mode 120000 index 00000000..ebd97821 --- /dev/null +++ b/fantom-mainnet-opera-archive-trace.yml @@ -0,0 +1 @@ +fantom/opera/fantom-mainnet-opera-archive-trace.yml \ No newline at end of file diff --git a/fantom-testnet-archive.yml b/fantom-testnet-archive.yml new file mode 120000 index 00000000..665677bd --- /dev/null +++ b/fantom-testnet-archive.yml @@ -0,0 +1 @@ +fantom/sonic/fantom-testnet-sonic-archive.yml \ No newline at end of file diff --git a/fantom-testnet.yml b/fantom-testnet.yml deleted file mode 100644 index 32403763..00000000 --- a/fantom-testnet.yml +++ /dev/null @@ -1,33 +0,0 @@ -version: "3.1" -services: - fantom-testnet: - build: - args: - VERSION: release/1.1.3-rc.5 - context: ./fantom - dockerfile: Dockerfile-testnet - stop_grace_period: 3m - environment: - - CACHE_SIZE=${FANTOM_CACHE_SIZE:-16000} - volumes: - - "fantom-testnet:/datadir" - expose: - - "18544" - - "44629" - ports: - - "44629:44629" - - "44629:44629/udp" - networks: - - chains - restart: unless-stopped - labels: - - "traefik.enable=true" - - "traefik.http.middlewares.fantom-testnet-stripprefix.stripprefix.prefixes=/fantom-testnet" - - "traefik.http.services.fantom-testnet.loadbalancer.server.port=18544" - - "traefik.http.routers.fantom-testnet.entrypoints=websecure" - - "traefik.http.routers.fantom-testnet.tls.certresolver=myresolver" - - "traefik.http.routers.fantom-testnet.rule=Host(`$DOMAIN`) && PathPrefix(`/fantom-testnet`)" - - "traefik.http.routers.fantom-testnet.middlewares=fantom-testnet-stripprefix, ipwhitelist" - -volumes: - fantom-testnet: diff --git a/fantom-testnet.yml b/fantom-testnet.yml new file mode 120000 index 00000000..aaa4f5ec --- /dev/null +++ b/fantom-testnet.yml @@ -0,0 +1 @@ +fantom/opera/fantom-testnet-opera-pruned-traces.yml \ No newline at end of file diff --git a/fantom/Dockerfile.opera b/fantom/Dockerfile.opera new file mode 100644 index 00000000..ab4b641b --- /dev/null +++ b/fantom/Dockerfile.opera @@ -0,0 +1,30 @@ +# Build Fantom in a stock Go builder container +FROM golang:1.19-alpine as builder + +# Install packages we need +RUN apk add --no-cache make gcc musl-dev linux-headers git + +# Make a folder to work in +RUN mkdir /fantom + +# Grab VERSION from Build Args +ARG VERSION +ARG REPO + +# Clone the repo to that folder +RUN git clone --branch ${VERSION} ${REPO:-https://github.com/Fantom-foundation/go-opera.git} /fantom + +# Build Fantom +RUN cd /fantom && make + +# Pull Fantom into a second stage deploy alpine container +FROM alpine:latest + +RUN apk add --no-cache ca-certificates wget tzdata +COPY --from=builder /fantom/build/opera /usr/local/bin/ + +VOLUME /datadir + +COPY ./scripts/entrypoint.opera.sh /usr/local/bin/entrypoint.sh +RUN chmod u+x /usr/local/bin/entrypoint.sh +ENTRYPOINT [ "/usr/local/bin/entrypoint.sh" ] diff --git a/fantom/Dockerfile.sonic b/fantom/Dockerfile.sonic new file mode 100644 index 00000000..d111cb4f --- /dev/null +++ b/fantom/Dockerfile.sonic @@ -0,0 +1,26 @@ +FROM golang:1.22 as builder + +ARG VERSION +ARG REPO + +RUN apt-get update && apt-get install -y git musl-dev make + +RUN cd /go && git clone ${REPO:-https://github.com/Fantom-foundation/sonic.git} sonic && cd sonic && git fetch --tags && git checkout -b ${VERSION} tags/${VERSION} + +WORKDIR /go/sonic + +ARG GOPROXY +RUN go mod download +RUN make all + +FROM golang:1.22 + +COPY --from=builder /go/sonic/build/sonicd /usr/local/bin/ +COPY --from=builder /go/sonic/build/sonictool /usr/local/bin/ + +COPY ./scripts/entrypoint.sonic.sh /usr/local/bin/entrypoint.sh + +VOLUME /var/sonic + +RUN chmod u+x /usr/local/bin/entrypoint.sh +ENTRYPOINT [ "/usr/local/bin/entrypoint.sh" ] diff --git a/fantom/opera/fantom-mainnet-opera-archive-trace.yml b/fantom/opera/fantom-mainnet-opera-archive-trace.yml new file mode 100644 index 00000000..11b5a949 --- /dev/null +++ b/fantom/opera/fantom-mainnet-opera-archive-trace.yml @@ -0,0 +1,55 @@ +services: + fantom-mainnet-archive: + build: + context: ./fantom + dockerfile: Dockerfile.opera + args: + VERSION: "${FANTOM_OPERA_VERSION:-release/txtracing/1.1.3-rc.5}" + REPO: "https://github.com/Fantom-foundation/go-opera.git" + stop_grace_period: 3m + volumes: + - "fantom-mainnet-opera-archive-trace:/datadir" + expose: + - "8545" + ports: + - "10897:10897" + - "10897:10897/udp" + networks: + - chains + environment: + - "IP=${IP}" + - "GENESIS=https://download.fantom.network/opera/mainnet/mainnet-5577-full-mpt.g" + restart: unless-stopped + command: > + --port=10897 + --nat=extip:${IP} + --maxpeers=200 + --http + --http.addr=0.0.0.0 + --http.port=8545 + --http.api=admin,debug,web3,eth,dag,txpool,personal,abft,net,trace,ftm,sfc + --http.corsdomain="*" + --http.vhosts="*" + --ws + --ws.addr=0.0.0.0 + --ws.port=8545 + --ws.api=admin,debug,web3,eth,dag,txpool,personal,abft,net,trace,ftm,sfc + --ws.origins="*" + --rpc.gascap=600000000 + --db.migration.mode reformat + --db.preset pbl-1 + --syncmode=full + --cache=${FANTOM_MAINNET_OPERA_ARCHIVE_TRACE_CACHE_MB:-16000} + --tracenode + --bootnodes=enode://94dfec3eb6e50187d22d12f7dd965169bab5a63022934ef0b3b82a819574e0940b5bcb471f62360f1b58cf61a89e634bd14ae7c2e29ce48088890f4a7aff44fe@75.98.207.227:5050,enode://7fb3f43273f4dfeb19c3129c6ed999e14246d2f219ff284d0ef87417cd9514c6d542abc988a654b4a77005ea896c5b4e4ca0d40f97f3bf9ee37be33cc749835f@209.172.40.68:5050,enode://27a80a1db08a40636415d4ff9bb272882b6a6f97a9a5d596006de843f35cbbc679e5252d89d3de05bd74c36cf9f5ce2446dd66cdd5dc7e942a585eb4add61124@37.27.70.18:5050,enode://946fef1538abd165f8bd2ae1c290e7689ff5e209ab6c085eaced9b91e93684b1efe05f79a9a9b460504c450065baaeda5ecb72c03f8adf7e7a559042ce4950da@136.243.252.124:5078,enode://cf762e3a68f8a96676d6383cd3286b85ef7454ef37bb39283efe00d3d573d88f05db3daab7c35a4d3ba9edd9d089e359a25de5beeb24f79f6c1b9e5341958cee@15.235.54.211:5050 + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.fantom-mainnet-opera-archive-trace-stripprefix.stripprefix.prefixes=/fantom-mainnet-archive" + - "traefik.http.services.fantom-mainnet-opera-archive-trace.loadbalancer.server.port=8545" + - "traefik.http.routers.fantom-mainnet-opera-archive-trace.entrypoints=websecure" + - "traefik.http.routers.fantom-mainnet-opera-archive-trace.tls.certresolver=myresolver" + - "traefik.http.routers.fantom-mainnet-opera-archive-trace.rule=Host(`$DOMAIN`) && PathPrefix(`/fantom-mainnet-archive`)" + - "traefik.http.routers.fantom-mainnet-opera-archive-trace.middlewares=fantom-mainnet-opera-archive-trace-stripprefix, ipwhitelist" + +volumes: + fantom-mainnet-opera-archive-trace: \ No newline at end of file diff --git a/fantom/opera/fantom-mainnet-opera-archive.yml b/fantom/opera/fantom-mainnet-opera-archive.yml new file mode 100644 index 00000000..044ffb22 --- /dev/null +++ b/fantom/opera/fantom-mainnet-opera-archive.yml @@ -0,0 +1,55 @@ +services: + fantom-mainnet-archive: + build: + context: ./fantom + dockerfile: Dockerfile.opera + args: + VERSION: "${FANTOM_OPERA_VERSION:-v1.1.3-rc.5}" + REPO: "https://github.com/Fantom-foundation/go-opera.git" + stop_grace_period: 3m + volumes: + - "fantom-mainnet-opera-archive:/datadir" + expose: + - "8545" + ports: + - "10723:10723" + - "10723:10723/udp" + networks: + - chains + environment: + - "IP=${IP}" + - "GENESIS=https://download.fantom.network/opera/mainnet/mainnet-5577-full-mpt.g" + restart: unless-stopped + command: > + --port=10723 + --nat=extip:${IP} + --maxpeers=200 + --http + --http.addr=0.0.0.0 + --http.port=8545 + --http.api=admin,debug,web3,eth,dag,txpool,personal,abft,net,trace,ftm,sfc + --http.corsdomain="*" + --http.vhosts="*" + --ws + --ws.addr=0.0.0.0 + --ws.port=8545 + --ws.api=admin,debug,web3,eth,dag,txpool,personal,abft,net,trace,ftm,sfc + --ws.origins="*" + --rpc.gascap=600000000 + --db.migration.mode reformat + --db.preset pbl-1 + --syncmode=full + --cache=${FANTOM_MAINNET_OPERA_ARCHIVE_CACHE_MB:-16000} + + --bootnodes=enode://94dfec3eb6e50187d22d12f7dd965169bab5a63022934ef0b3b82a819574e0940b5bcb471f62360f1b58cf61a89e634bd14ae7c2e29ce48088890f4a7aff44fe@75.98.207.227:5050,enode://7fb3f43273f4dfeb19c3129c6ed999e14246d2f219ff284d0ef87417cd9514c6d542abc988a654b4a77005ea896c5b4e4ca0d40f97f3bf9ee37be33cc749835f@209.172.40.68:5050,enode://27a80a1db08a40636415d4ff9bb272882b6a6f97a9a5d596006de843f35cbbc679e5252d89d3de05bd74c36cf9f5ce2446dd66cdd5dc7e942a585eb4add61124@37.27.70.18:5050,enode://946fef1538abd165f8bd2ae1c290e7689ff5e209ab6c085eaced9b91e93684b1efe05f79a9a9b460504c450065baaeda5ecb72c03f8adf7e7a559042ce4950da@136.243.252.124:5078,enode://cf762e3a68f8a96676d6383cd3286b85ef7454ef37bb39283efe00d3d573d88f05db3daab7c35a4d3ba9edd9d089e359a25de5beeb24f79f6c1b9e5341958cee@15.235.54.211:5050 + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.fantom-mainnet-opera-archive-stripprefix.stripprefix.prefixes=/fantom-mainnet-archive" + - "traefik.http.services.fantom-mainnet-opera-archive.loadbalancer.server.port=8545" + - "traefik.http.routers.fantom-mainnet-opera-archive.entrypoints=websecure" + - "traefik.http.routers.fantom-mainnet-opera-archive.tls.certresolver=myresolver" + - "traefik.http.routers.fantom-mainnet-opera-archive.rule=Host(`$DOMAIN`) && PathPrefix(`/fantom-mainnet-archive`)" + - "traefik.http.routers.fantom-mainnet-opera-archive.middlewares=fantom-mainnet-opera-archive-stripprefix, ipwhitelist" + +volumes: + fantom-mainnet-opera-archive: \ No newline at end of file diff --git a/fantom/opera/fantom-mainnet-opera-pruned-trace.yml b/fantom/opera/fantom-mainnet-opera-pruned-trace.yml new file mode 100644 index 00000000..98925717 --- /dev/null +++ b/fantom/opera/fantom-mainnet-opera-pruned-trace.yml @@ -0,0 +1,55 @@ +services: + fantom-mainnet: + build: + context: ./fantom + dockerfile: Dockerfile.opera + args: + VERSION: "${FANTOM_OPERA_VERSION:-release/txtracing/1.1.3-rc.5}" + REPO: "https://github.com/Fantom-foundation/go-opera.git" + stop_grace_period: 3m + volumes: + - "fantom-mainnet-opera-pruned-trace:/datadir" + expose: + - "8545" + ports: + - "10916:10916" + - "10916:10916/udp" + networks: + - chains + environment: + - "IP=${IP}" + - "GENESIS=https://download.fantom.network/opera/mainnet/mainnet-109331-no-history.g" + restart: unless-stopped + command: > + --port=10916 + --nat=extip:${IP} + --maxpeers=200 + --http + --http.addr=0.0.0.0 + --http.port=8545 + --http.api=admin,debug,web3,eth,dag,txpool,personal,abft,net,trace,ftm,sfc + --http.corsdomain="*" + --http.vhosts="*" + --ws + --ws.addr=0.0.0.0 + --ws.port=8545 + --ws.api=admin,debug,web3,eth,dag,txpool,personal,abft,net,trace,ftm,sfc + --ws.origins="*" + --rpc.gascap=600000000 + --db.migration.mode reformat + --db.preset pbl-1 + --syncmode=snap + --cache=${FANTOM_MAINNET_OPERA_PRUNED_TRACE_CACHE_MB:-16000} + --tracenode + --bootnodes=enode://94dfec3eb6e50187d22d12f7dd965169bab5a63022934ef0b3b82a819574e0940b5bcb471f62360f1b58cf61a89e634bd14ae7c2e29ce48088890f4a7aff44fe@75.98.207.227:5050,enode://7fb3f43273f4dfeb19c3129c6ed999e14246d2f219ff284d0ef87417cd9514c6d542abc988a654b4a77005ea896c5b4e4ca0d40f97f3bf9ee37be33cc749835f@209.172.40.68:5050,enode://27a80a1db08a40636415d4ff9bb272882b6a6f97a9a5d596006de843f35cbbc679e5252d89d3de05bd74c36cf9f5ce2446dd66cdd5dc7e942a585eb4add61124@37.27.70.18:5050,enode://946fef1538abd165f8bd2ae1c290e7689ff5e209ab6c085eaced9b91e93684b1efe05f79a9a9b460504c450065baaeda5ecb72c03f8adf7e7a559042ce4950da@136.243.252.124:5078,enode://cf762e3a68f8a96676d6383cd3286b85ef7454ef37bb39283efe00d3d573d88f05db3daab7c35a4d3ba9edd9d089e359a25de5beeb24f79f6c1b9e5341958cee@15.235.54.211:5050 + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.fantom-mainnet-opera-pruned-trace-stripprefix.stripprefix.prefixes=/fantom-mainnet" + - "traefik.http.services.fantom-mainnet-opera-pruned-trace.loadbalancer.server.port=8545" + - "traefik.http.routers.fantom-mainnet-opera-pruned-trace.entrypoints=websecure" + - "traefik.http.routers.fantom-mainnet-opera-pruned-trace.tls.certresolver=myresolver" + - "traefik.http.routers.fantom-mainnet-opera-pruned-trace.rule=Host(`$DOMAIN`) && PathPrefix(`/fantom-mainnet`)" + - "traefik.http.routers.fantom-mainnet-opera-pruned-trace.middlewares=fantom-mainnet-opera-pruned-trace-stripprefix, ipwhitelist" + +volumes: + fantom-mainnet-opera-pruned-trace: \ No newline at end of file diff --git a/fantom/opera/fantom-mainnet-opera-pruned.yml b/fantom/opera/fantom-mainnet-opera-pruned.yml new file mode 100644 index 00000000..18d891a5 --- /dev/null +++ b/fantom/opera/fantom-mainnet-opera-pruned.yml @@ -0,0 +1,55 @@ +services: + fantom-mainnet: + build: + context: ./fantom + dockerfile: Dockerfile.opera + args: + VERSION: "${FANTOM_OPERA_VERSION:-v1.1.3-rc.5}" + REPO: "https://github.com/Fantom-foundation/go-opera.git" + stop_grace_period: 3m + volumes: + - "fantom-mainnet-opera-pruned:/datadir" + expose: + - "8545" + ports: + - "10439:10439" + - "10439:10439/udp" + networks: + - chains + environment: + - "IP=${IP}" + - "GENESIS=https://download.fantom.network/opera/mainnet/mainnet-109331-no-history.g" + restart: unless-stopped + command: > + --port=10439 + --nat=extip:${IP} + --maxpeers=200 + --http + --http.addr=0.0.0.0 + --http.port=8545 + --http.api=admin,debug,web3,eth,dag,txpool,personal,abft,net,trace,ftm,sfc + --http.corsdomain="*" + --http.vhosts="*" + --ws + --ws.addr=0.0.0.0 + --ws.port=8545 + --ws.api=admin,debug,web3,eth,dag,txpool,personal,abft,net,trace,ftm,sfc + --ws.origins="*" + --rpc.gascap=600000000 + --db.migration.mode reformat + --db.preset pbl-1 + --syncmode=snap + --cache=${FANTOM_MAINNET_OPERA_PRUNED_CACHE_MB:-16000} + + --bootnodes=enode://94dfec3eb6e50187d22d12f7dd965169bab5a63022934ef0b3b82a819574e0940b5bcb471f62360f1b58cf61a89e634bd14ae7c2e29ce48088890f4a7aff44fe@75.98.207.227:5050,enode://7fb3f43273f4dfeb19c3129c6ed999e14246d2f219ff284d0ef87417cd9514c6d542abc988a654b4a77005ea896c5b4e4ca0d40f97f3bf9ee37be33cc749835f@209.172.40.68:5050,enode://27a80a1db08a40636415d4ff9bb272882b6a6f97a9a5d596006de843f35cbbc679e5252d89d3de05bd74c36cf9f5ce2446dd66cdd5dc7e942a585eb4add61124@37.27.70.18:5050,enode://946fef1538abd165f8bd2ae1c290e7689ff5e209ab6c085eaced9b91e93684b1efe05f79a9a9b460504c450065baaeda5ecb72c03f8adf7e7a559042ce4950da@136.243.252.124:5078,enode://cf762e3a68f8a96676d6383cd3286b85ef7454ef37bb39283efe00d3d573d88f05db3daab7c35a4d3ba9edd9d089e359a25de5beeb24f79f6c1b9e5341958cee@15.235.54.211:5050 + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.fantom-mainnet-opera-pruned-stripprefix.stripprefix.prefixes=/fantom-mainnet" + - "traefik.http.services.fantom-mainnet-opera-pruned.loadbalancer.server.port=8545" + - "traefik.http.routers.fantom-mainnet-opera-pruned.entrypoints=websecure" + - "traefik.http.routers.fantom-mainnet-opera-pruned.tls.certresolver=myresolver" + - "traefik.http.routers.fantom-mainnet-opera-pruned.rule=Host(`$DOMAIN`) && PathPrefix(`/fantom-mainnet`)" + - "traefik.http.routers.fantom-mainnet-opera-pruned.middlewares=fantom-mainnet-opera-pruned-stripprefix, ipwhitelist" + +volumes: + fantom-mainnet-opera-pruned: \ No newline at end of file diff --git a/fantom/opera/fantom-testnet-opera-archive-trace.yml b/fantom/opera/fantom-testnet-opera-archive-trace.yml new file mode 100644 index 00000000..b9bf201a --- /dev/null +++ b/fantom/opera/fantom-testnet-opera-archive-trace.yml @@ -0,0 +1,55 @@ +services: + fantom-testnet-archive: + build: + context: ./fantom + dockerfile: Dockerfile.opera + args: + VERSION: "${FANTOM_OPERA_VERSION:-release/txtracing/1.1.3-rc.5}" + REPO: "https://github.com/Fantom-foundation/go-opera.git" + stop_grace_period: 3m + volumes: + - "fantom-testnet-opera-archive-trace:/datadir" + expose: + - "8545" + ports: + - "10196:10196" + - "10196:10196/udp" + networks: + - chains + environment: + - "IP=${IP}" + - "GENESIS=https://download.fantom.network/opera/testnet/testnet-2458-full-mpt.g" + restart: unless-stopped + command: > + --port=10196 + --nat=extip:${IP} + --maxpeers=200 + --http + --http.addr=0.0.0.0 + --http.port=8545 + --http.api=admin,debug,web3,eth,dag,txpool,personal,abft,net,trace,ftm,sfc + --http.corsdomain="*" + --http.vhosts="*" + --ws + --ws.addr=0.0.0.0 + --ws.port=8545 + --ws.api=admin,debug,web3,eth,dag,txpool,personal,abft,net,trace,ftm,sfc + --ws.origins="*" + --rpc.gascap=600000000 + --db.migration.mode reformat + --db.preset pbl-1 + --syncmode=full + --cache=${FANTOM_TESTNET_OPERA_ARCHIVE_TRACE_CACHE_MB:-16000} + --tracenode + --bootnodes=enode://2411cdad2780bf969c0bd6f19b53ac6683710d50f19a7604248d8a6a810d3d6369dffb08535530095c151ecad143393e4fbca2d11f62377fe15b3df4d9883053@34.172.30.235:5050,enode://6f434dc43f826f7c3c817ba7fbe7842aa47c50d1e77a6b57ec51313fd88c7f006240baa105b795712922a05e1b548d413ea6d32d8c1c8feb9ffc206a6c9e37ce@34.55.131.153:5050,enode://64e69ec1f30be48aa8d5f3e6cadf15d06d846d40918f3906e6efbc4a3421f0cc04e3e4f88569b5c90306bbc16ca15df6898ad71b8a73aa36284f1c3076f2956e@35.195.64.211:5050,enode://a76d94105f12d3fb5c31df5a59448d95b723d94543620a02f72ee990e048c43df940f4969ab06d436ef8976c49ec9c2a671c2f5af8d93af911cef63de329a8b8@35.239.100.93:5050,enode://baea3b72d091cb361283af4933da32406d707d3bb077a42c77a58cf98e27b546da837e6e9524d8588f414e1886a3b17e036b86fd2d723170db93831a22324252@35.241.219.197:5050,enode://544f06ceaddcf508a13326d95518a524e14f4980723c9dc5cb8560635a7faa7f8f91483faed19dacd7d251abf72b4a1b0bcacaced1255deb93414d097221a9bc@35.224.88.189:5050,enode://baea3b72d091cb361283af4933da32406d707d3bb077a42c77a58cf98e27b546da837e6e9524d8588f414e1886a3b17e036b86fd2d723170db93831a22324252@35.241.219.197:5050,enode://2cd3fcfe9671d81c0e8bb76bc81a430882ce5d99199c20a004da97bec48e9b03c02c3b6d95edb77498ce2dd8e090c4ce76349e775af7540b04a6e9303e5b69cd@104.155.31.23:5050 + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.fantom-testnet-opera-archive-trace-stripprefix.stripprefix.prefixes=/fantom-testnet-archive" + - "traefik.http.services.fantom-testnet-opera-archive-trace.loadbalancer.server.port=8545" + - "traefik.http.routers.fantom-testnet-opera-archive-trace.entrypoints=websecure" + - "traefik.http.routers.fantom-testnet-opera-archive-trace.tls.certresolver=myresolver" + - "traefik.http.routers.fantom-testnet-opera-archive-trace.rule=Host(`$DOMAIN`) && PathPrefix(`/fantom-testnet-archive`)" + - "traefik.http.routers.fantom-testnet-opera-archive-trace.middlewares=fantom-testnet-opera-archive-trace-stripprefix, ipwhitelist" + +volumes: + fantom-testnet-opera-archive-trace: \ No newline at end of file diff --git a/fantom/opera/fantom-testnet-opera-archive.yml b/fantom/opera/fantom-testnet-opera-archive.yml new file mode 100644 index 00000000..a300a768 --- /dev/null +++ b/fantom/opera/fantom-testnet-opera-archive.yml @@ -0,0 +1,55 @@ +services: + fantom-testnet-archive: + build: + context: ./fantom + dockerfile: Dockerfile.opera + args: + VERSION: "${FANTOM_OPERA_VERSION:-v1.1.3-rc.5}" + REPO: "https://github.com/Fantom-foundation/go-opera.git" + stop_grace_period: 3m + volumes: + - "fantom-testnet-opera-archive:/datadir" + expose: + - "8545" + ports: + - "10055:10055" + - "10055:10055/udp" + networks: + - chains + environment: + - "IP=${IP}" + - "GENESIS=https://download.fantom.network/opera/testnet/testnet-2458-full-mpt.g" + restart: unless-stopped + command: > + --port=10055 + --nat=extip:${IP} + --maxpeers=200 + --http + --http.addr=0.0.0.0 + --http.port=8545 + --http.api=admin,debug,web3,eth,dag,txpool,personal,abft,net,trace,ftm,sfc + --http.corsdomain="*" + --http.vhosts="*" + --ws + --ws.addr=0.0.0.0 + --ws.port=8545 + --ws.api=admin,debug,web3,eth,dag,txpool,personal,abft,net,trace,ftm,sfc + --ws.origins="*" + --rpc.gascap=600000000 + --db.migration.mode reformat + --db.preset pbl-1 + --syncmode=full + --cache=${FANTOM_TESTNET_OPERA_ARCHIVE_CACHE_MB:-16000} + + --bootnodes=enode://2411cdad2780bf969c0bd6f19b53ac6683710d50f19a7604248d8a6a810d3d6369dffb08535530095c151ecad143393e4fbca2d11f62377fe15b3df4d9883053@34.172.30.235:5050,enode://6f434dc43f826f7c3c817ba7fbe7842aa47c50d1e77a6b57ec51313fd88c7f006240baa105b795712922a05e1b548d413ea6d32d8c1c8feb9ffc206a6c9e37ce@34.55.131.153:5050,enode://64e69ec1f30be48aa8d5f3e6cadf15d06d846d40918f3906e6efbc4a3421f0cc04e3e4f88569b5c90306bbc16ca15df6898ad71b8a73aa36284f1c3076f2956e@35.195.64.211:5050,enode://a76d94105f12d3fb5c31df5a59448d95b723d94543620a02f72ee990e048c43df940f4969ab06d436ef8976c49ec9c2a671c2f5af8d93af911cef63de329a8b8@35.239.100.93:5050,enode://baea3b72d091cb361283af4933da32406d707d3bb077a42c77a58cf98e27b546da837e6e9524d8588f414e1886a3b17e036b86fd2d723170db93831a22324252@35.241.219.197:5050,enode://544f06ceaddcf508a13326d95518a524e14f4980723c9dc5cb8560635a7faa7f8f91483faed19dacd7d251abf72b4a1b0bcacaced1255deb93414d097221a9bc@35.224.88.189:5050,enode://baea3b72d091cb361283af4933da32406d707d3bb077a42c77a58cf98e27b546da837e6e9524d8588f414e1886a3b17e036b86fd2d723170db93831a22324252@35.241.219.197:5050,enode://2cd3fcfe9671d81c0e8bb76bc81a430882ce5d99199c20a004da97bec48e9b03c02c3b6d95edb77498ce2dd8e090c4ce76349e775af7540b04a6e9303e5b69cd@104.155.31.23:5050 + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.fantom-testnet-opera-archive-stripprefix.stripprefix.prefixes=/fantom-testnet-archive" + - "traefik.http.services.fantom-testnet-opera-archive.loadbalancer.server.port=8545" + - "traefik.http.routers.fantom-testnet-opera-archive.entrypoints=websecure" + - "traefik.http.routers.fantom-testnet-opera-archive.tls.certresolver=myresolver" + - "traefik.http.routers.fantom-testnet-opera-archive.rule=Host(`$DOMAIN`) && PathPrefix(`/fantom-testnet-archive`)" + - "traefik.http.routers.fantom-testnet-opera-archive.middlewares=fantom-testnet-opera-archive-stripprefix, ipwhitelist" + +volumes: + fantom-testnet-opera-archive: \ No newline at end of file diff --git a/fantom/opera/fantom-testnet-opera-pruned-trace.yml b/fantom/opera/fantom-testnet-opera-pruned-trace.yml new file mode 100644 index 00000000..e5dddb1c --- /dev/null +++ b/fantom/opera/fantom-testnet-opera-pruned-trace.yml @@ -0,0 +1,55 @@ +services: + fantom-testnet: + build: + context: ./fantom + dockerfile: Dockerfile.opera + args: + VERSION: "${FANTOM_OPERA_VERSION:-release/txtracing/1.1.3-rc.5}" + REPO: "https://github.com/Fantom-foundation/go-opera.git" + stop_grace_period: 3m + volumes: + - "fantom-testnet-opera-pruned-trace:/datadir" + expose: + - "8545" + ports: + - "10037:10037" + - "10037:10037/udp" + networks: + - chains + environment: + - "IP=${IP}" + - "GENESIS=https://download.fantom.network/opera/testnet/testnet-6226-no-history.g" + restart: unless-stopped + command: > + --port=10037 + --nat=extip:${IP} + --maxpeers=200 + --http + --http.addr=0.0.0.0 + --http.port=8545 + --http.api=admin,debug,web3,eth,dag,txpool,personal,abft,net,trace,ftm,sfc + --http.corsdomain="*" + --http.vhosts="*" + --ws + --ws.addr=0.0.0.0 + --ws.port=8545 + --ws.api=admin,debug,web3,eth,dag,txpool,personal,abft,net,trace,ftm,sfc + --ws.origins="*" + --rpc.gascap=600000000 + --db.migration.mode reformat + --db.preset pbl-1 + --syncmode=snap + --cache=${FANTOM_TESTNET_OPERA_PRUNED_TRACE_CACHE_MB:-16000} + --tracenode + --bootnodes=enode://2411cdad2780bf969c0bd6f19b53ac6683710d50f19a7604248d8a6a810d3d6369dffb08535530095c151ecad143393e4fbca2d11f62377fe15b3df4d9883053@34.172.30.235:5050,enode://6f434dc43f826f7c3c817ba7fbe7842aa47c50d1e77a6b57ec51313fd88c7f006240baa105b795712922a05e1b548d413ea6d32d8c1c8feb9ffc206a6c9e37ce@34.55.131.153:5050,enode://64e69ec1f30be48aa8d5f3e6cadf15d06d846d40918f3906e6efbc4a3421f0cc04e3e4f88569b5c90306bbc16ca15df6898ad71b8a73aa36284f1c3076f2956e@35.195.64.211:5050,enode://a76d94105f12d3fb5c31df5a59448d95b723d94543620a02f72ee990e048c43df940f4969ab06d436ef8976c49ec9c2a671c2f5af8d93af911cef63de329a8b8@35.239.100.93:5050,enode://baea3b72d091cb361283af4933da32406d707d3bb077a42c77a58cf98e27b546da837e6e9524d8588f414e1886a3b17e036b86fd2d723170db93831a22324252@35.241.219.197:5050,enode://544f06ceaddcf508a13326d95518a524e14f4980723c9dc5cb8560635a7faa7f8f91483faed19dacd7d251abf72b4a1b0bcacaced1255deb93414d097221a9bc@35.224.88.189:5050,enode://baea3b72d091cb361283af4933da32406d707d3bb077a42c77a58cf98e27b546da837e6e9524d8588f414e1886a3b17e036b86fd2d723170db93831a22324252@35.241.219.197:5050,enode://2cd3fcfe9671d81c0e8bb76bc81a430882ce5d99199c20a004da97bec48e9b03c02c3b6d95edb77498ce2dd8e090c4ce76349e775af7540b04a6e9303e5b69cd@104.155.31.23:5050 + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.fantom-testnet-opera-pruned-trace-stripprefix.stripprefix.prefixes=/fantom-testnet" + - "traefik.http.services.fantom-testnet-opera-pruned-trace.loadbalancer.server.port=8545" + - "traefik.http.routers.fantom-testnet-opera-pruned-trace.entrypoints=websecure" + - "traefik.http.routers.fantom-testnet-opera-pruned-trace.tls.certresolver=myresolver" + - "traefik.http.routers.fantom-testnet-opera-pruned-trace.rule=Host(`$DOMAIN`) && PathPrefix(`/fantom-testnet`)" + - "traefik.http.routers.fantom-testnet-opera-pruned-trace.middlewares=fantom-testnet-opera-pruned-trace-stripprefix, ipwhitelist" + +volumes: + fantom-testnet-opera-pruned-trace: \ No newline at end of file diff --git a/fantom/opera/fantom-testnet-opera-pruned.yml b/fantom/opera/fantom-testnet-opera-pruned.yml new file mode 100644 index 00000000..ad44bb00 --- /dev/null +++ b/fantom/opera/fantom-testnet-opera-pruned.yml @@ -0,0 +1,55 @@ +services: + fantom-testnet: + build: + context: ./fantom + dockerfile: Dockerfile.opera + args: + VERSION: "${FANTOM_OPERA_VERSION:-v1.1.3-rc.5}" + REPO: "https://github.com/Fantom-foundation/go-opera.git" + stop_grace_period: 3m + volumes: + - "fantom-testnet-opera-pruned:/datadir" + expose: + - "8545" + ports: + - "10846:10846" + - "10846:10846/udp" + networks: + - chains + environment: + - "IP=${IP}" + - "GENESIS=https://download.fantom.network/opera/testnet/testnet-6226-no-history.g" + restart: unless-stopped + command: > + --port=10846 + --nat=extip:${IP} + --maxpeers=200 + --http + --http.addr=0.0.0.0 + --http.port=8545 + --http.api=admin,debug,web3,eth,dag,txpool,personal,abft,net,trace,ftm,sfc + --http.corsdomain="*" + --http.vhosts="*" + --ws + --ws.addr=0.0.0.0 + --ws.port=8545 + --ws.api=admin,debug,web3,eth,dag,txpool,personal,abft,net,trace,ftm,sfc + --ws.origins="*" + --rpc.gascap=600000000 + --db.migration.mode reformat + --db.preset pbl-1 + --syncmode=snap + --cache=${FANTOM_TESTNET_OPERA_PRUNED_CACHE_MB:-16000} + + --bootnodes=enode://2411cdad2780bf969c0bd6f19b53ac6683710d50f19a7604248d8a6a810d3d6369dffb08535530095c151ecad143393e4fbca2d11f62377fe15b3df4d9883053@34.172.30.235:5050,enode://6f434dc43f826f7c3c817ba7fbe7842aa47c50d1e77a6b57ec51313fd88c7f006240baa105b795712922a05e1b548d413ea6d32d8c1c8feb9ffc206a6c9e37ce@34.55.131.153:5050,enode://64e69ec1f30be48aa8d5f3e6cadf15d06d846d40918f3906e6efbc4a3421f0cc04e3e4f88569b5c90306bbc16ca15df6898ad71b8a73aa36284f1c3076f2956e@35.195.64.211:5050,enode://a76d94105f12d3fb5c31df5a59448d95b723d94543620a02f72ee990e048c43df940f4969ab06d436ef8976c49ec9c2a671c2f5af8d93af911cef63de329a8b8@35.239.100.93:5050,enode://baea3b72d091cb361283af4933da32406d707d3bb077a42c77a58cf98e27b546da837e6e9524d8588f414e1886a3b17e036b86fd2d723170db93831a22324252@35.241.219.197:5050,enode://544f06ceaddcf508a13326d95518a524e14f4980723c9dc5cb8560635a7faa7f8f91483faed19dacd7d251abf72b4a1b0bcacaced1255deb93414d097221a9bc@35.224.88.189:5050,enode://baea3b72d091cb361283af4933da32406d707d3bb077a42c77a58cf98e27b546da837e6e9524d8588f414e1886a3b17e036b86fd2d723170db93831a22324252@35.241.219.197:5050,enode://2cd3fcfe9671d81c0e8bb76bc81a430882ce5d99199c20a004da97bec48e9b03c02c3b6d95edb77498ce2dd8e090c4ce76349e775af7540b04a6e9303e5b69cd@104.155.31.23:5050 + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.fantom-testnet-opera-pruned-stripprefix.stripprefix.prefixes=/fantom-testnet" + - "traefik.http.services.fantom-testnet-opera-pruned.loadbalancer.server.port=8545" + - "traefik.http.routers.fantom-testnet-opera-pruned.entrypoints=websecure" + - "traefik.http.routers.fantom-testnet-opera-pruned.tls.certresolver=myresolver" + - "traefik.http.routers.fantom-testnet-opera-pruned.rule=Host(`$DOMAIN`) && PathPrefix(`/fantom-testnet`)" + - "traefik.http.routers.fantom-testnet-opera-pruned.middlewares=fantom-testnet-opera-pruned-stripprefix, ipwhitelist" + +volumes: + fantom-testnet-opera-pruned: \ No newline at end of file diff --git a/fantom/scripts/entrypoint-testnet-fullnode.sh b/fantom/scripts/entrypoint-testnet-fullnode.sh index 73b4546d..90d3d126 100644 --- a/fantom/scripts/entrypoint-testnet-fullnode.sh +++ b/fantom/scripts/entrypoint-testnet-fullnode.sh @@ -16,7 +16,7 @@ fi # uncomment the next line and do docker-compose build in case you have to try to fix the db after unclean shutdown etc. # opera --db.preset pbl-1 --datadir=$FANTOM_HOME db heal --experimental -opera \ +exec opera \ --genesis=$FANTOM_HOME/testnet-16200-pruned-mpt.g \ --port=44629 \ --maxpeers=200 \ @@ -24,14 +24,15 @@ opera \ --http \ --http.addr=0.0.0.0 \ --http.port=18544 \ - --http.api=ftm,eth,debug,admin,web3,personal,net,txpool,sfc,trace \ + --http.api=ftm,eth,debug,admin,web3,personal,net,txpool \ --http.corsdomain="*" \ --http.vhosts="*" \ --ws \ --ws.addr=0.0.0.0 \ --ws.port=18544 \ - --ws.api=ftm,eth,debug,admin,web3,personal,net,txpool,sfc \ + --ws.api=ftm,eth,debug,admin,web3,personal,net,txpool \ --ws.origins="*" \ + --nat=extip:${IP} \ --nousb \ --db.migration.mode reformat \ --db.preset pbl-1 \ diff --git a/fantom/scripts/entrypoint.opera.sh b/fantom/scripts/entrypoint.opera.sh new file mode 100644 index 00000000..eedb3c1d --- /dev/null +++ b/fantom/scripts/entrypoint.opera.sh @@ -0,0 +1,34 @@ +#!/bin/sh + +# exit script on any error +set -e + +datadir=/datadir +FANTOM_HOME="$datadir" + +url="${GENESIS:-https://download.fantom.network/opera/mainnet/mainnet-5577-full-mpt.g}" +filename=$(basename "$url") + +if [ ! -f "$datadir/bootstrapped" ]; then + echo "Initializing Opera..." + + if [ ! -f "$datadir/$filename" ]; then + wget -P "$datadir" "$url" + fi + + touch "$datadir/bootstrapped" + + echo "Initialization complete." +else + echo "Opera is already initialized." +fi + +# uncomment the next line and do docker-compose build in case you have to try to fix the db after unclean shutdown etc. +# opera --db.preset pbl-1 --datadir=$datadir db heal --experimental + +# always make a new nodekey + +echo "Generating new Geth node key..." +openssl rand 32 | xxd -p -c 32 | tr -d '\n' > "$datadir/nodekey" + +exec opera --nodekey="$datadir/nodekey" --genesis="$datadir/$filename" --datadir="$datadir" "$@" diff --git a/fantom/scripts/entrypoint.sonic.sh b/fantom/scripts/entrypoint.sonic.sh new file mode 100644 index 00000000..3fb49d5a --- /dev/null +++ b/fantom/scripts/entrypoint.sonic.sh @@ -0,0 +1,26 @@ +#!/bin/bash + +datadir=/var/sonic + +if [ ! -f "$datadir/initialized" ]; then + echo "Initializing Sonic..." + + url="${GENESIS:-https://download.fantom.network/opera/mainnet/mainnet-5577-archive.g}" + filename=$(basename "$url") + + wget -P "$datadir" "$url" + + GOMEMLIMIT="${CACHE_GB}GiB" sonictool --datadir "$datadir" --cache "${CACHE_GB}000" genesis "$datadir/$filename" + rm "$datadir/$filename" + + touch "$datadir/initialized" + + echo "Initialization complete." +else + echo "Sonic is already initialized." +fi + +echo "Generating new Geth node key..." +openssl rand 32 | xxd -p -c 32 | tr -d '\n' > "$datadir/nodekey" + +exec sonicd --nodekey "$datadir/nodekey" --cache "${CACHE_GB}000" --datadir "$datadir" "$@" diff --git a/fantom/sonic/fantom-mainnet-sonic-archive.yml b/fantom/sonic/fantom-mainnet-sonic-archive.yml new file mode 100644 index 00000000..d676aa5b --- /dev/null +++ b/fantom/sonic/fantom-mainnet-sonic-archive.yml @@ -0,0 +1,51 @@ +services: + fantom-mainnet-archive: + build: + context: ./fantom + dockerfile: Dockerfile.sonic + args: + VERSION: "${FANTOM_SONIC_VERSION:-v1.2.1-h}" + REPO: "https://github.com/Fantom-foundation/sonic.git" + stop_grace_period: 3m + volumes: + - "fantom-mainnet-sonic-archive:/var/sonic" + expose: + - "8545" + ports: + - "10335:10335" + - "10335:10335/udp" + networks: + - chains + environment: + - "IP=${IP}" + - "GENESIS=https://download.fantom.network/mainnet-latest-archive.g" + - "CACHE_GB=${FANTOM_MAINNET_SONIC_CACHE_GB:-28}" + restart: unless-stopped + command: > + --port=10335 + --nat=extip:${IP} + --maxpeers=200 + --http + --http.addr=0.0.0.0 + --http.port=8545 + --http.api=admin,debug,web3,eth,dag,txpool,personal,abft,net,trace,ftm + --http.corsdomain="*" + --http.vhosts="*" + --ws + --ws.addr=0.0.0.0 + --ws.port=8545 + --ws.api=admin,debug,web3,eth,dag,txpool,personal,abft,net,trace,ftm + --ws.origins="*" + --rpc.gascap=600000000 + --bootnodes=enode://94dfec3eb6e50187d22d12f7dd965169bab5a63022934ef0b3b82a819574e0940b5bcb471f62360f1b58cf61a89e634bd14ae7c2e29ce48088890f4a7aff44fe@75.98.207.227:5050,enode://7fb3f43273f4dfeb19c3129c6ed999e14246d2f219ff284d0ef87417cd9514c6d542abc988a654b4a77005ea896c5b4e4ca0d40f97f3bf9ee37be33cc749835f@209.172.40.68:5050,enode://27a80a1db08a40636415d4ff9bb272882b6a6f97a9a5d596006de843f35cbbc679e5252d89d3de05bd74c36cf9f5ce2446dd66cdd5dc7e942a585eb4add61124@37.27.70.18:5050,enode://946fef1538abd165f8bd2ae1c290e7689ff5e209ab6c085eaced9b91e93684b1efe05f79a9a9b460504c450065baaeda5ecb72c03f8adf7e7a559042ce4950da@136.243.252.124:5078,enode://cf762e3a68f8a96676d6383cd3286b85ef7454ef37bb39283efe00d3d573d88f05db3daab7c35a4d3ba9edd9d089e359a25de5beeb24f79f6c1b9e5341958cee@15.235.54.211:5050 + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.fantom-mainnet-sonic-archive-stripprefix.stripprefix.prefixes=/fantom-mainnet-archive" + - "traefik.http.services.fantom-mainnet-sonic-archive.loadbalancer.server.port=18544" + - "traefik.http.routers.fantom-mainnet-sonic-archive.entrypoints=websecure" + - "traefik.http.routers.fantom-mainnet-sonic-archive.tls.certresolver=myresolver" + - "traefik.http.routers.fantom-mainnet-sonic-archive.rule=Host(`$DOMAIN`) && PathPrefix(`/fantom-mainnet-archive`)" + - "traefik.http.routers.fantom-mainnet-sonic-archive.middlewares=fantom-mainnet-sonic-archive-stripprefix, ipwhitelist" + +volumes: + fantom-mainnet-sonic-archive: \ No newline at end of file diff --git a/fantom/sonic/fantom-testnet-sonic-archive.yml b/fantom/sonic/fantom-testnet-sonic-archive.yml new file mode 100644 index 00000000..0a55d57f --- /dev/null +++ b/fantom/sonic/fantom-testnet-sonic-archive.yml @@ -0,0 +1,51 @@ +services: + fantom-testnet-archive: + build: + context: ./fantom + dockerfile: Dockerfile.sonic + args: + VERSION: "${FANTOM_SONIC_VERSION:-v1.2.1-h}" + REPO: "https://github.com/Fantom-foundation/sonic.git" + stop_grace_period: 3m + volumes: + - "fantom-testnet-sonic-archive:/var/sonic" + expose: + - "8545" + ports: + - "10652:10652" + - "10652:10652/udp" + networks: + - chains + environment: + - "IP=${IP}" + - "GENESIS=https://download.fantom.network/opera/testnet/testnet-26650-rpc.g" + - "CACHE_GB=${FANTOM_TESTNET_SONIC_CACHE_GB:-28}" + restart: unless-stopped + command: > + --port=10652 + --nat=extip:${IP} + --maxpeers=200 + --http + --http.addr=0.0.0.0 + --http.port=8545 + --http.api=admin,debug,web3,eth,dag,txpool,personal,abft,net,trace,ftm + --http.corsdomain="*" + --http.vhosts="*" + --ws + --ws.addr=0.0.0.0 + --ws.port=8545 + --ws.api=admin,debug,web3,eth,dag,txpool,personal,abft,net,trace,ftm + --ws.origins="*" + --rpc.gascap=600000000 + --bootnodes=enode://2411cdad2780bf969c0bd6f19b53ac6683710d50f19a7604248d8a6a810d3d6369dffb08535530095c151ecad143393e4fbca2d11f62377fe15b3df4d9883053@34.172.30.235:5050,enode://6f434dc43f826f7c3c817ba7fbe7842aa47c50d1e77a6b57ec51313fd88c7f006240baa105b795712922a05e1b548d413ea6d32d8c1c8feb9ffc206a6c9e37ce@34.55.131.153:5050,enode://64e69ec1f30be48aa8d5f3e6cadf15d06d846d40918f3906e6efbc4a3421f0cc04e3e4f88569b5c90306bbc16ca15df6898ad71b8a73aa36284f1c3076f2956e@35.195.64.211:5050,enode://a76d94105f12d3fb5c31df5a59448d95b723d94543620a02f72ee990e048c43df940f4969ab06d436ef8976c49ec9c2a671c2f5af8d93af911cef63de329a8b8@35.239.100.93:5050,enode://baea3b72d091cb361283af4933da32406d707d3bb077a42c77a58cf98e27b546da837e6e9524d8588f414e1886a3b17e036b86fd2d723170db93831a22324252@35.241.219.197:5050,enode://544f06ceaddcf508a13326d95518a524e14f4980723c9dc5cb8560635a7faa7f8f91483faed19dacd7d251abf72b4a1b0bcacaced1255deb93414d097221a9bc@35.224.88.189:5050,enode://baea3b72d091cb361283af4933da32406d707d3bb077a42c77a58cf98e27b546da837e6e9524d8588f414e1886a3b17e036b86fd2d723170db93831a22324252@35.241.219.197:5050,enode://2cd3fcfe9671d81c0e8bb76bc81a430882ce5d99199c20a004da97bec48e9b03c02c3b6d95edb77498ce2dd8e090c4ce76349e775af7540b04a6e9303e5b69cd@104.155.31.23:5050 + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.fantom-testnet-sonic-archive-stripprefix.stripprefix.prefixes=/fantom-testnet-archive" + - "traefik.http.services.fantom-testnet-sonic-archive.loadbalancer.server.port=18544" + - "traefik.http.routers.fantom-testnet-sonic-archive.entrypoints=websecure" + - "traefik.http.routers.fantom-testnet-sonic-archive.tls.certresolver=myresolver" + - "traefik.http.routers.fantom-testnet-sonic-archive.rule=Host(`$DOMAIN`) && PathPrefix(`/fantom-testnet-archive`)" + - "traefik.http.routers.fantom-testnet-sonic-archive.middlewares=fantom-testnet-sonic-archive-stripprefix, ipwhitelist" + +volumes: + fantom-testnet-sonic-archive: \ No newline at end of file diff --git a/get-block.sh b/get-block.sh new file mode 100755 index 00000000..e05d6d9d --- /dev/null +++ b/get-block.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +is_decimal() { + [[ $1 =~ ^[0-9]+$ ]] +} + +block_input=${2:-latest} + +if is_decimal "$block_input"; then + # Convert decimal to hexadecimal + block_input="0x$(printf "%x" "$block_input")" +fi + +request="{\"jsonrpc\":\"2.0\",\"method\":\"eth_getBlockByNumber\",\"params\":[\"${block_input}\", false],\"id\":1}" + +echo "${request}" + +curl -s -X POST "${1}" -H "Content-Type: application/json" --data "${request}" | jq -r '.result.number, .result.hash' | gawk '{if (NR==1) print "Block Number:", strtonum($0); else print "Block Hash:", $0}' diff --git a/geth-holesky.yml b/geth-holesky.yml index 7e346180..d39e977e 100644 --- a/geth-holesky.yml +++ b/geth-holesky.yml @@ -20,12 +20,15 @@ services: "--ws", "--ws.port=8545", "--ws.addr=0.0.0.0", + "--ws.origins=*", + "--ws.api=debug,eth,net,web3,txpool", # Enable the HTTP-RPC server "--http", "--http.port=8545", "--http.addr=0.0.0.0", - "--http.vhosts=*", - # Enable GraphQL on the HTTP-RPC server. Note that GraphQL can only be started if an HTTP server is started as well. + "--http.vhosts=*", + "--http.api=admin,debug,eth,net,web3,txpool", + # Enable GraphQL on the HTTP-RPC server. Note that GraphQL can only be started if an HTTP server is started as well. "--graphql", "--graphql.vhosts=*", # Enable metrics collection and reporting diff --git a/geth-sepolia.yml b/geth-sepolia.yml index cf9980f4..14111d8a 100644 --- a/geth-sepolia.yml +++ b/geth-sepolia.yml @@ -16,17 +16,18 @@ services: "--state.scheme=path", "--db.engine=pebble", "--port=49545", + "--discovery.port=49545", # Megabytes of memory allocated to internal caching "--cache=8192", # Enable the WS-RPC server "--ws", - "--ws.api=eth,net,web3,personal,txpool", + "--ws.api=eth,net,debug,web3,personal,txpool", "--ws.port=8545", "--ws.addr=0.0.0.0", "--ws.origins=*", # Enable the HTTP-RPC server "--http", - "--http.api=eth,net,web3,personal,txpool", + "--http.api=eth,net,debug,admin,web3,personal,txpool", "--http.port=8545", "--http.addr=0.0.0.0", "--http.vhosts=*", diff --git a/goat-mainnet.yml b/goat-mainnet.yml index a45a8678..afbcfd96 100644 --- a/goat-mainnet.yml +++ b/goat-mainnet.yml @@ -1,7 +1,7 @@ services: goat-mainnet: - image: ghcr.io/goatnetwork/goat-geth:v0.2.2 + image: ghcr.io/goatnetwork/goat-geth:v0.3.0 stop_grace_period: 5m restart: unless-stopped #healthcheck: @@ -47,7 +47,7 @@ services: - chains goat-mainnet-node: - image: ghcr.io/goatnetwork/goat:v0.2.2 + image: ghcr.io/goatnetwork/goat:v0.2.3 stop_grace_period: 30s restart: unless-stopped entrypoint: /entrypoint.sh diff --git a/goat-testnet.yml b/goat-testnet.yml index 6601aef6..6e252237 100644 --- a/goat-testnet.yml +++ b/goat-testnet.yml @@ -2,7 +2,7 @@ services: goat-testnet: - image: ghcr.io/goatnetwork/goat-geth:v0.1.6 + image: ghcr.io/goatnetwork/goat-geth:v0.1.7 stop_grace_period: 5m restart: unless-stopped healthcheck: @@ -50,7 +50,7 @@ services: - chains goat-testnet-node: - image: ghcr.io/goatnetwork/goat:v0.2.2 + image: ghcr.io/goatnetwork/goat:v0.2.3 stop_grace_period: 30s restart: unless-stopped entrypoint: /entrypoint.sh diff --git a/goat/mainnet/geth-entrypoint.sh b/goat/mainnet/geth-entrypoint.sh index 29f3c9e6..766d7a8f 100755 --- a/goat/mainnet/geth-entrypoint.sh +++ b/goat/mainnet/geth-entrypoint.sh @@ -1,8 +1,8 @@ #!/bin/sh -if [ ! -d "/root/.ethereum/geth/chaindata" ]; then - exec geth init /genesis/geth.json -else - echo "Chain already initialized." -fi +# if [ ! -d "/root/.ethereum/geth/chaindata" ]; then +# exec geth init /genesis/geth.json +# else +# echo "Chain already initialized." +# fi exec geth --goat=mainnet diff --git a/goat/mainnet/node-entrypoint.sh b/goat/mainnet/node-entrypoint.sh index f03c9a24..8ebd5c28 100755 --- a/goat/mainnet/node-entrypoint.sh +++ b/goat/mainnet/node-entrypoint.sh @@ -4,14 +4,14 @@ echo "Starting initialization steps..." # Check if the genesis.json file exists; if not, initialize and copy it -if [ ! -f /goat/config/genesis.json ]; then - echo "Initializing goatd..." - exec goatd init --home /goat mainnet - echo "Copying genesis file..." - cp /genesis/goat.json /goat/config/genesis.json -else - echo "Genesis file already exists; skipping initialization." -fi +# if [ ! -f /goat/config/genesis.json ]; then +# echo "Initializing goatd..." +# exec goatd init --home /goat mainnet +# echo "Copying genesis file..." +# cp /genesis/goat.json /goat/config/genesis.json +# else +# echo "Genesis file already exists; skipping initialization." +# fi # Pass control to the final command specified in docker-compose.yml exec goatd start --home /goat --chain-id=goat-mainnet --goat.geth /geth/geth.ipc --api.enable --api.address=tcp://0.0.0.0:1317 --p2p.external-address $IP:40258 --p2p.laddr 0.0.0.0:40258 diff --git a/hashkeychain-mainnet.yml b/hashkeychain-mainnet.yml new file mode 120000 index 00000000..67995667 --- /dev/null +++ b/hashkeychain-mainnet.yml @@ -0,0 +1 @@ +op/geth/hashkeychain-mainnet-op-geth-pruned-pebble-path.yml \ No newline at end of file diff --git a/ink-mainnet.yml b/ink-mainnet.yml new file mode 120000 index 00000000..bbd6c4dc --- /dev/null +++ b/ink-mainnet.yml @@ -0,0 +1 @@ +op/geth/ink-mainnet-op-geth-pruned-pebble-path.yml \ No newline at end of file diff --git a/ink-sepolia.yml b/ink-sepolia.yml new file mode 120000 index 00000000..fbf4c026 --- /dev/null +++ b/ink-sepolia.yml @@ -0,0 +1 @@ +op/geth/ink-sepolia-op-geth-pruned-pebble-path.yml \ No newline at end of file diff --git a/lisk-mainnet.yml b/lisk-mainnet.yml new file mode 120000 index 00000000..ed1e6eff --- /dev/null +++ b/lisk-mainnet.yml @@ -0,0 +1 @@ +op/geth/lisk-mainnet-op-geth-pruned-pebble-path.yml \ No newline at end of file diff --git a/lisk-sepolia.yml b/lisk-sepolia.yml new file mode 120000 index 00000000..cab6ea6b --- /dev/null +++ b/lisk-sepolia.yml @@ -0,0 +1 @@ +op/geth/lisk-sepolia-op-geth-pruned-pebble-path.yml \ No newline at end of file diff --git a/metal-mainnet.yml b/metal-mainnet.yml new file mode 120000 index 00000000..75d8742a --- /dev/null +++ b/metal-mainnet.yml @@ -0,0 +1 @@ +op/geth/metal-mainnet-op-geth-pruned-pebble-path.yml \ No newline at end of file diff --git a/metal-sepolia.yml b/metal-sepolia.yml new file mode 120000 index 00000000..46bfd235 --- /dev/null +++ b/metal-sepolia.yml @@ -0,0 +1 @@ +op/geth/metal-sepolia-op-geth-pruned-pebble-path.yml \ No newline at end of file diff --git a/mode-mainnet.yml b/mode-mainnet.yml new file mode 120000 index 00000000..0022da72 --- /dev/null +++ b/mode-mainnet.yml @@ -0,0 +1 @@ +op/geth/mode-mainnet-op-geth-pruned-pebble-path.yml \ No newline at end of file diff --git a/mode-sepolia.yml b/mode-sepolia.yml new file mode 120000 index 00000000..cd76c374 --- /dev/null +++ b/mode-sepolia.yml @@ -0,0 +1 @@ +op/geth/mode-sepolia-op-geth-pruned-pebble-path.yml \ No newline at end of file diff --git a/multicurl.sh b/multicurl.sh new file mode 100755 index 00000000..e2b814d7 --- /dev/null +++ b/multicurl.sh @@ -0,0 +1,69 @@ +#!/bin/bash + +# echo "$@" + +urls=() +options=() + +while [[ $# -gt 0 ]]; do + case "$1" in + --url) + urls+=("$2") + shift 2 + ;; + *) + options+=("$1") + shift 1 + ;; + esac +done + +if [[ ${#urls[@]} -eq 0 ]]; then + echo "No URLs provided" + exit 1 +fi + +original_output="" +temp_file="" + +for i in "${!options[@]}"; do + if [[ "${options[i]}" == "-o" ]]; then + output_file="${options[i+1]}" + temp_file=$(mktemp) + + options[i+1]="$temp_file" + original_output="$output_file" + break + fi +done + +output="" +for url in "${urls[@]}"; do + #echo "curl -s ${options[@]} $url" + output=$(eval "curl -s ${options[@]@Q} '$url' --fail") + if [[ $? -eq 0 ]]; then + + if cat "$temp_file" | jq -e 'has("error")' > /dev/null 2>&1; then + continue # Try the next URL + fi + + if [ -n "$original_output" ]; then + #echo "$(cat $temp_file)" + cat "$temp_file" > "$original_output" + fi + + echo "$output" + exit 0 + else + continue + fi +done + +# Write the final output to the original output file if specified +if [ -n "$original_output" ]; then + cat "$temp_file" > "$original_output" +fi + +# Print the output to stdout +echo "$output" +exit 1 diff --git a/op-mainnet.yml b/op-mainnet.yml new file mode 120000 index 00000000..3cd96d24 --- /dev/null +++ b/op-mainnet.yml @@ -0,0 +1 @@ +op/geth/op-mainnet-op-geth-pruned-pebble-path.yml \ No newline at end of file diff --git a/op-sepolia.yml b/op-sepolia.yml new file mode 120000 index 00000000..1f8bfb10 --- /dev/null +++ b/op-sepolia.yml @@ -0,0 +1 @@ +op/geth/op-sepolia-op-geth-pruned-pebble-path.yml \ No newline at end of file diff --git a/op-zora-archive.yml b/op-zora-archive.yml deleted file mode 100644 index d2ff431f..00000000 --- a/op-zora-archive.yml +++ /dev/null @@ -1,107 +0,0 @@ -version: '3.1' - -services: - op-zora-archive: # this is Optimism's geth client - #image: stakesquid/op-zora-mainnet:v0.1 - build: - context: ./op - expose: - - 8545 # RPC / Websocket - - 18322 # P2P TCP (currently unused) - - 18322/udp # P2P UDP (currently unused) - - 6060 # metrics - ports: - - "18322:18322" - - "18322:18322/udp" - command: [ "sh", "./geth-entrypoint" ] - restart: always - stop_grace_period: 3m - volumes: - - zora-archive:/data - - .jwtsecret:/jwtsecret - environment: - - "GETH_GENESIS_FILE_PATH=/app/mainnet/zora/genesis.json" - - "GETH_ROLLUP_SEQUENCERHTTP=https://rpc-zora-mainnet-0.t.conduit.xyz" - - "GETH_GCMODE=archive" - - "GETH_NODISCOVER=true" - - "GETH_STATE_SCHEME=hash" - - "GETH_DB_ENGINE=leveldb" - - "IP=${IP}" - - "P2P_PORT=18322" - - "WS_PORT=8545" - - "OP_NODE_L2_ENGINE_AUTH=/jwtsecret" - - "HOST_IP=${IP}" - - "GETH_OVERRIDE_CANYON=1704992401" - - "GETH_OVERRIDE_DELTA=1708560000" - - "GETH_OVERRIDE_ECOTONE=1710374401" - - "GETH_OVERRIDE_FJORD=1720627201" - labels: - - "traefik.enable=true" - - "traefik.http.middlewares.zora-stripprefix.stripprefix.prefixes=/zora-archive" - - "traefik.http.services.zora.loadbalancer.server.port=8545" - - "traefik.http.routers.zora.entrypoints=websecure" - - "traefik.http.routers.zora.tls.certresolver=myresolver" - - "traefik.http.routers.zora.rule=Host(`$DOMAIN`) && PathPrefix(`/zora-archive`)" - - "traefik.http.routers.zora.middlewares=zora-stripprefix, ipwhitelist" - networks: - - chains - - - op-zora-archive-node: - #image: stakesquid/op-zora-mainnet:v0.1 - build: - context: ./op - depends_on: - - op-zora-archive - expose: - - 8545 # RPC - - 11398 # P2P TCP - - 11398/udp # P2P UDP - - 7300 # metrics - - 6060 # pprof - ports: - - "11398:11398" - - "11398:11398/udp" - command: [ "sh", "./op-node-entrypoint" ] - restart: always - volumes: - - .jwtsecret:/jwtsecret - stop_grace_period: 30s - environment: - #- "OP_NODE_NETWORK=zora-mainnet-0" - - "OP_NODE_L1_ETH_RPC=${ZORA_MAINNET_L1_ENDPOINT}" - - "OP_NODE_L2_ENGINE_AUTH_RAW=${JWTSECRET}" - - "OP_NODE_L2_ENGINE_AUTH=/jwtsecret" - - "OP_NODE_L2_ENGINE_RPC=http://op-zora-archive:8551" - - "OP_NODE_LOG_LEVEL=info" - - "OP_NODE_METRICS_ADDR=0.0.0.0" - - "OP_NODE_METRICS_ENABLED=true" - - "OP_NODE_METRICS_PORT=7300" - #- "OP_NODE_P2P_AGENT=zora-mainnet" - - "OP_NODE_P2P_BOOTNODES=enode://9d221b41d61cb40162ae573b5ba7063c9535b5088ddc06f87099c461e7969068a54d93cdbd3ab119885481c7aec68f81500b400f36ac1bfef11efa116c1a2c1b@35.227.155.250:9222?discport=30301,enode://d25ce99435982b04d60c4b41ba256b84b888626db7bee45a9419382300fbe907359ae5ef250346785bff8d3b9d07cd3e017a27e2ee3cfda3bcbb0ba762ac9674@bootnode.conduit.xyz:0?discport=30301,enode://2d4e7e9d48f4dd4efe9342706dd1b0024681bd4c3300d021f86fc75eab7865d4e0cbec6fbc883f011cfd6a57423e7e2f6e104baad2b744c3cafaec6bc7dc92c1@34.65.43.171:0?discport=30305,enode://9d7a3efefe442351217e73b3a593bcb8efffb55b4807699972145324eab5e6b382152f8d24f6301baebbfb5ecd4127bd3faab2842c04cd432bdf50ba092f6645@34.65.109.126:0?discport=30305" - - "OP_NODE_P2P_STATIC=/ip4/35.227.155.250/tcp/9222/p2p/16Uiu2HAmPENXJ1a1SFj7tSrwuvTM2dXAAKsKjPobXmjds9U76XUB" - - "OP_NODE_P2P_AGENT=conduit" - - "OP_NODE_P2P_LISTEN_IP=0.0.0.0" - - "OP_NODE_P2P_LISTEN_TCP_PORT=11398" - - "OP_NODE_P2P_LISTEN_UDP_PORT=11398" - - "OP_NODE_ROLLUP_CONFIG=/app/mainnet/zora/rollup.json" - - "OP_NODE_RPC_ADDR=0.0.0.0" - - "OP_NODE_P2P_ADVERTISE_IP=${IP}" - - "OP_NODE_RPC_PORT=8545" - - "OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log" - - "OP_NODE_VERIFIER_L1_CONFS=4" - - "OP_NODE_L1_RPC_MAX_BATCH_SIZE=${ZORA_MAINNET_L1_BATCH_SIZE:-20}" - - "OP_NODE_L1_RPC_RATE_LIMIT=${ZORA_MAINNET_L1_RATE_LIMIT:-30}" - - "OP_NODE_L1_RPC_KIND=${ZORA_MAINNET_L1_ENDPOINT_KIND:-basic}" - - "OP_NODE_L1_TRUST_RPC=${ZORA_MAINNET_L1_ENDPOINT_TRUST:-false}" - - "OP_NODE_L1_BEACON=${ZORA_MAINNET_L1_BEACON_URL}" - - "OP_NODE_L1_BEACON_ARCHIVER=${ZORA_MAINNET_L1_BEACON_ARCHIVER}" - - "OP_NODE_OVERRIDE_CANYON=1704992401" - - "OP_NODE_OVERRIDE_DELTA=1708560000" - - "OP_NODE_OVERRIDE_ECOTONE=1710374401" - - "OP_NODE_OVERRIDE_FJORD=1720627201" - networks: - - chains - -volumes: - zora-archive: diff --git a/op-zora-archive.yml b/op-zora-archive.yml new file mode 120000 index 00000000..5f3b30cb --- /dev/null +++ b/op-zora-archive.yml @@ -0,0 +1 @@ +op/geth/zora-mainnet-op-geth-archive-leveldb-hash.yml \ No newline at end of file diff --git a/op-zora-sepolia-pbss.yml b/op-zora-sepolia-pbss.yml deleted file mode 100644 index e3c12d07..00000000 --- a/op-zora-sepolia-pbss.yml +++ /dev/null @@ -1,110 +0,0 @@ -services: - op-zora-sepolia: # this is Optimism's geth client - #image: stakesquid/op-zora-mainnet:v0.1 - build: - context: ./op - expose: - - 8545 # RPC / Websocket - - 19809 # P2P TCP (currently unused) - - 19809/udp # P2P UDP (currently unused) - - 6060 # metrics - ports: - - "19809:19809" - - "19809:19809/udp" - command: [ "sh", "./geth-entrypoint" ] - restart: always - stop_grace_period: 3m - volumes: - - zora-sepolia:/data - - .jwtsecret:/jwtsecret - environment: - - "GETH_GENESIS_FILE_PATH=/app/sepolia/zora/genesis.json" - - "GETH_ROLLUP_SEQUENCERHTTP=https://rpc-zora-sepolia-0thyhxtf5e.t.conduit.xyz" - - "GETH_CHAINID=999999999" - - "GETH_GCMODE=full" - - "GETH_SYNCMODE=snap" - - "GETH_BOOTNODES=enode://cbabcbbc7211399990a1cf7178f3a9efebde7a7a1637f90d293c454ef5f40c367ffd1149733e5e7497657f73043a31eaad67af04737b2112d86202ea01896ee5@35.230.102.175:9222?discport=30301,enode://d25ce99435982b04d60c4b41ba256b84b888626db7bee45a9419382300fbe907359ae5ef250346785bff8d3b9d07cd3e017a27e2ee3cfda3bcbb0ba762ac9674@bootnode.conduit.xyz:0?discport=30301,enode://2d4e7e9d48f4dd4efe9342706dd1b0024681bd4c3300d021f86fc75eab7865d4e0cbec6fbc883f011cfd6a57423e7e2f6e104baad2b744c3cafaec6bc7dc92c1@34.65.43.171:0?discport=30305,enode://9d7a3efefe442351217e73b3a593bcb8efffb55b4807699972145324eab5e6b382152f8d24f6301baebbfb5ecd4127bd3faab2842c04cd432bdf50ba092f6645@34.65.109.126:0?discport=30305" - - "GETH_STATE_SCHEME=path" - - "GETH_DB_ENGINE=pebble" - - "IP=${IP}" - - "P2P_PORT=19809" - - "WS_PORT=8545" - - "OP_NODE_L2_ENGINE_AUTH=/jwtsecret" - - "HOST_IP=${IP}" - - "GETH_OVERRIDE_CANYON=0" - - "GETH_OVERRIDE_DELTA=0" - - "GETH_OVERRIDE_ECOTONE=1708534800" - - "GETH_OVERRIDE_FJORD=1716998400" - - "GETH_OVERRIDE_GRANITE=1723478400" - labels: - - "traefik.enable=true" - - "traefik.http.middlewares.zora-stripprefix.stripprefix.prefixes=/zora-sepolia" - - "traefik.http.services.zora.loadbalancer.server.port=8545" - - "traefik.http.routers.zora.entrypoints=websecure" - - "traefik.http.routers.zora.tls.certresolver=myresolver" - - "traefik.http.routers.zora.rule=Host(`$DOMAIN`) && PathPrefix(`/zora-sepolia`)" - - "traefik.http.routers.zora.middlewares=zora-stripprefix, ipwhitelist" - networks: - - chains - - - op-zora-sepolia-node: - #image: stakesquid/op-zora-mainnet:v0.1 - build: - context: ./op - depends_on: - - op-zora-sepolia - expose: - - 8545 # RPC - - 3306 # P2P TCP - - 3306/udp # P2P UDP - - 7300 # metrics - - 6060 # pprof - ports: - - "3306:3306" - - "3306:3306/udp" - command: [ "sh", "./op-node-entrypoint" ] - restart: always - volumes: - - .jwtsecret:/jwtsecret - stop_grace_period: 30s - environment: - #- "OP_NODE_NETWORK=zora-sepolia-0thyhxtf5e" - - "OP_NODE_SYNCMODE=execution-layer" - - "OP_NODE_L1_ETH_RPC=${ZORA_SEPOLIA_L1_ENDPOINT}" - - "OP_NODE_L2_ENGINE_AUTH_RAW=${JWTSECRET}" - - "OP_NODE_L2_ENGINE_AUTH=/jwtsecret" - - "OP_NODE_L2_ENGINE_RPC=http://op-zora-sepolia:8551" - - "OP_NODE_LOG_LEVEL=info" - - "OP_NODE_METRICS_ADDR=0.0.0.0" - - "OP_NODE_METRICS_ENABLED=true" - - "OP_NODE_METRICS_PORT=7300" - #- "OP_NODE_P2P_AGENT=zora-sepolia" - #- "OP_NODE_P2P_BOOTNODES=enode://cbabcbbc7211399990a1cf7178f3a9efebde7a7a1637f90d293c454ef5f40c367ffd1149733e5e7497657f73043a31eaad67af04737b2112d86202ea01896ee5@35.230.102.175:9222?discport=30301,enode://d25ce99435982b04d60c4b41ba256b84b888626db7bee45a9419382300fbe907359ae5ef250346785bff8d3b9d07cd3e017a27e2ee3cfda3bcbb0ba762ac9674@bootnode.conduit.xyz:0?discport=30301,enode://2d4e7e9d48f4dd4efe9342706dd1b0024681bd4c3300d021f86fc75eab7865d4e0cbec6fbc883f011cfd6a57423e7e2f6e104baad2b744c3cafaec6bc7dc92c1@34.65.43.171:0?discport=30305,enode://9d7a3efefe442351217e73b3a593bcb8efffb55b4807699972145324eab5e6b382152f8d24f6301baebbfb5ecd4127bd3faab2842c04cd432bdf50ba092f6645@34.65.109.126:0?discport=30305" - - "OP_NODE_P2P_STATIC=/ip4/35.230.102.175/tcp/9222/p2p/16Uiu2HAmSN33smB46ZtueBL2Hz1hsDy8tgSm1mqR38qAhwkX7ntd" - - "OP_NODE_P2P_AGENT=conduit" - - "OP_NODE_P2P_LISTEN_IP=0.0.0.0" - - "OP_NODE_P2P_LISTEN_TCP_PORT=3306" - - "OP_NODE_P2P_LISTEN_UDP_PORT=3306" - - "OP_NODE_ROLLUP_CONFIG=/app/sepolia/zora/rollup.json" - - "OP_NODE_RPC_ADDR=0.0.0.0" - - "OP_NODE_P2P_ADVERTISE_IP=${IP}" - - "OP_NODE_RPC_PORT=8545" - - "OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log" - - "OP_NODE_VERIFIER_L1_CONFS=4" - - "OP_NODE_L1_RPC_MAX_BATCH_SIZE=${ZORA_SEPOLIA_L1_BATCH_SIZE:-20}" - - "OP_NODE_L1_RPC_RATE_LIMIT=${ZORA_SEPOLIA_L1_RATE_LIMIT:-30}" - - "OP_NODE_L1_RPC_KIND=${ZORA_SEPOLIA_L1_ENDPOINT_KIND:-basic}" - - "OP_NODE_L1_TRUST_RPC=${ZORA_SEPOLIA_L1_ENDPOINT_TRUST:-false}" - - "OP_NODE_L1_BEACON=${ZORA_SEPOLIA_L1_BEACON_URL}" - - "OP_NODE_L1_BEACON_ARCHIVER=${ZORA_SEPOLIA_L1_BEACON_ARCHIVER}" - - "OP_NODE_OVERRIDE_DELTA=0" - - "OP_NODE_OVERRIDE_CANYON=0" - - "OP_NODE_OVERRIDE_ECOTONE=1708534800" - - "OP_NODE_OVERRIDE_FJORD=1716998400" - - "OP_NODE_OVERRIDE_GRANITE=1723478400" - networks: - - chains - -volumes: - zora-sepolia: diff --git a/op-zora-sepolia-pbss.yml b/op-zora-sepolia-pbss.yml new file mode 120000 index 00000000..b02438e4 --- /dev/null +++ b/op-zora-sepolia-pbss.yml @@ -0,0 +1 @@ +zora-sepolia-op-geth-pruned-pebble-path.yml \ No newline at end of file diff --git a/op/.dockerignore b/op/.dockerignore new file mode 100644 index 00000000..c58ce82c --- /dev/null +++ b/op/.dockerignore @@ -0,0 +1 @@ +geth \ No newline at end of file diff --git a/op/geth/base-mainnet-op-geth-archive-leveldb-hash.yml b/op/geth/base-mainnet-op-geth-archive-leveldb-hash.yml new file mode 100644 index 00000000..634358d0 --- /dev/null +++ b/op/geth/base-mainnet-op-geth-archive-leveldb-hash.yml @@ -0,0 +1,99 @@ +services: + base-mainnet-archive: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 6060 + ports: + - "10596:10596" + - "10596:10596/udp" + entrypoint: [ "./geth" ] + restart: unless-stopped + stop_grace_period: 3m + volumes: + - base-mainnet-op-geth-archive-leveldb-hash:/data + - .jwtsecret:/jwtsecret + environment: + - "GETH_DATADIR=/data" + - "GETH_OP_NETWORK=base-mainnet" + - "GETH_GCMODE=archive" + - "GETH_SYNCMODE=full" + - "GETH_STATE_SCHEME=hash" + - "GETH_DB_ENGINE=leveldb" + - "GETH_NAT=extip:${IP}" + - "GETH_PORT=19809" + - "GETH_WS_PORT=8545" + - "GETH_HTTP=true" + - "GETH_HTTP_ADDR=0.0.0.0" + - "GETH_HTTP_VHOSTS=*" + - "GETH_WS=true" + - "GETH_WS_ADDR=0.0.0.0" + - "GETH_WS_ORIGINS=*" + - "GETH_HTTP_API=eth,net,debug,admin,web3" + - "GETH_AUTHRPC_JWTSECRET=/jwtsecret" + - "GETH_AUTHRPC_ADDR=0.0.0.0" + - "GETH_AUTHRPC_VHOSTS=*" + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.base-mainnet-op-geth-archive-leveldb-hash-stripprefix.stripprefix.prefixes=/base-mainnet-archive" + - "traefik.http.services.base-mainnet-op-geth-archive-leveldb-hash.loadbalancer.server.port=8545" + - "traefik.http.routers.base-mainnet-op-geth-archive-leveldb-hash.entrypoints=websecure" + - "traefik.http.routers.base-mainnet-op-geth-archive-leveldb-hash.tls.certresolver=myresolver" + - "traefik.http.routers.base-mainnet-op-geth-archive-leveldb-hash.rule=Host(`$DOMAIN`) && PathPrefix(`/base-mainnet-archive`)" + - "traefik.http.routers.base-mainnet-op-geth-archive-leveldb-hash.middlewares=base-mainnet-op-geth-archive-leveldb-hash-stripprefix, ipwhitelist" + networks: + - chains + + + base-mainnet-archive-node: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 7300 + - 6060 + ports: + - "15596:15596" + - "15596:15596/udp" + entrypoint: [ "./op-node" ] + restart: unless-stopped + volumes: + - .jwtsecret:/jwtsecret + stop_grace_period: 30s + environment: + - "OP_NODE_NETWORK=base-mainnet" + - "OP_NODE_SYNCMODE=execution-layer" + - "OP_NODE_L1_ETH_RPC=${ETHEREUM_MAINNET_EXECUTION_RPC}" + - "OP_NODE_L2_ENGINE_AUTH=/jwtsecret" + - "OP_NODE_L2_ENGINE_RPC=http://base-mainnet-archive:8551" + - "OP_NODE_LOG_LEVEL=info" + - "OP_NODE_METRICS_ADDR=0.0.0.0" + - "OP_NODE_METRICS_ENABLED=true" + - "OP_NODE_METRICS_PORT=7300" + - "OP_NODE_P2P_LISTEN_IP=0.0.0.0" + - "OP_NODE_P2P_LISTEN_TCP_PORT=15596" + - "OP_NODE_P2P_LISTEN_UDP_PORT=15596" + - "OP_NODE_RPC_ADDR=0.0.0.0" + - "OP_NODE_P2P_ADVERTISE_IP=${IP}" + - "OP_NODE_RPC_PORT=8545" + - "OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log" + - "OP_NODE_VERIFIER_L1_CONFS=4" + - "OP_NODE_L1_RPC_KIND=${ETHEREUM_MAINNET_EXECUTION_KIND:-basic}" + - "OP_NODE_L1_TRUST_RPC=${ETHEREUM_MAINNET_EXECUTION_TRUST:-false}" + - "OP_NODE_L1_BEACON=${ETHEREUM_MAINNET_BEACON_REST}" + - "OP_NODE_L1_BEACON_ARCHIVER=${ETHEREUM_MAINNET_BEACON_ARCHIVER}" + + networks: + - chains + +volumes: + base-mainnet-op-geth-archive-leveldb-hash: \ No newline at end of file diff --git a/op/geth/base-mainnet-op-geth-pruned-pebble-path.yml b/op/geth/base-mainnet-op-geth-pruned-pebble-path.yml new file mode 100644 index 00000000..5f3524df --- /dev/null +++ b/op/geth/base-mainnet-op-geth-pruned-pebble-path.yml @@ -0,0 +1,99 @@ +services: + base-mainnet: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 6060 + ports: + - "10422:10422" + - "10422:10422/udp" + entrypoint: [ "./geth" ] + restart: unless-stopped + stop_grace_period: 3m + volumes: + - base-mainnet-op-geth-pruned-pebble-path:/data + - .jwtsecret:/jwtsecret + environment: + - "GETH_DATADIR=/data" + - "GETH_OP_NETWORK=base-mainnet" + - "GETH_GCMODE=full" + - "GETH_SYNCMODE=snap" + - "GETH_STATE_SCHEME=path" + - "GETH_DB_ENGINE=pebble" + - "GETH_NAT=extip:${IP}" + - "GETH_PORT=19809" + - "GETH_WS_PORT=8545" + - "GETH_HTTP=true" + - "GETH_HTTP_ADDR=0.0.0.0" + - "GETH_HTTP_VHOSTS=*" + - "GETH_WS=true" + - "GETH_WS_ADDR=0.0.0.0" + - "GETH_WS_ORIGINS=*" + - "GETH_HTTP_API=eth,net,debug,admin,web3" + - "GETH_AUTHRPC_JWTSECRET=/jwtsecret" + - "GETH_AUTHRPC_ADDR=0.0.0.0" + - "GETH_AUTHRPC_VHOSTS=*" + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.base-mainnet-op-geth-pruned-pebble-path-stripprefix.stripprefix.prefixes=/base-mainnet" + - "traefik.http.services.base-mainnet-op-geth-pruned-pebble-path.loadbalancer.server.port=8545" + - "traefik.http.routers.base-mainnet-op-geth-pruned-pebble-path.entrypoints=websecure" + - "traefik.http.routers.base-mainnet-op-geth-pruned-pebble-path.tls.certresolver=myresolver" + - "traefik.http.routers.base-mainnet-op-geth-pruned-pebble-path.rule=Host(`$DOMAIN`) && PathPrefix(`/base-mainnet`)" + - "traefik.http.routers.base-mainnet-op-geth-pruned-pebble-path.middlewares=base-mainnet-op-geth-pruned-pebble-path-stripprefix, ipwhitelist" + networks: + - chains + + + base-mainnet-node: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 7300 + - 6060 + ports: + - "15422:15422" + - "15422:15422/udp" + entrypoint: [ "./op-node" ] + restart: unless-stopped + volumes: + - .jwtsecret:/jwtsecret + stop_grace_period: 30s + environment: + - "OP_NODE_NETWORK=base-mainnet" + - "OP_NODE_SYNCMODE=execution-layer" + - "OP_NODE_L1_ETH_RPC=${ETHEREUM_MAINNET_EXECUTION_RPC}" + - "OP_NODE_L2_ENGINE_AUTH=/jwtsecret" + - "OP_NODE_L2_ENGINE_RPC=http://base-mainnet:8551" + - "OP_NODE_LOG_LEVEL=info" + - "OP_NODE_METRICS_ADDR=0.0.0.0" + - "OP_NODE_METRICS_ENABLED=true" + - "OP_NODE_METRICS_PORT=7300" + - "OP_NODE_P2P_LISTEN_IP=0.0.0.0" + - "OP_NODE_P2P_LISTEN_TCP_PORT=15422" + - "OP_NODE_P2P_LISTEN_UDP_PORT=15422" + - "OP_NODE_RPC_ADDR=0.0.0.0" + - "OP_NODE_P2P_ADVERTISE_IP=${IP}" + - "OP_NODE_RPC_PORT=8545" + - "OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log" + - "OP_NODE_VERIFIER_L1_CONFS=4" + - "OP_NODE_L1_RPC_KIND=${ETHEREUM_MAINNET_EXECUTION_KIND:-basic}" + - "OP_NODE_L1_TRUST_RPC=${ETHEREUM_MAINNET_EXECUTION_TRUST:-false}" + - "OP_NODE_L1_BEACON=${ETHEREUM_MAINNET_BEACON_REST}" + - "OP_NODE_L1_BEACON_ARCHIVER=${ETHEREUM_MAINNET_BEACON_ARCHIVER}" + + networks: + - chains + +volumes: + base-mainnet-op-geth-pruned-pebble-path: \ No newline at end of file diff --git a/op/geth/base-sepolia-op-geth-archive-leveldb-hash.yml b/op/geth/base-sepolia-op-geth-archive-leveldb-hash.yml new file mode 100644 index 00000000..70f4d954 --- /dev/null +++ b/op/geth/base-sepolia-op-geth-archive-leveldb-hash.yml @@ -0,0 +1,99 @@ +services: + base-sepolia-archive: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 6060 + ports: + - "10910:10910" + - "10910:10910/udp" + entrypoint: [ "./geth" ] + restart: unless-stopped + stop_grace_period: 3m + volumes: + - base-sepolia-op-geth-archive-leveldb-hash:/data + - .jwtsecret:/jwtsecret + environment: + - "GETH_DATADIR=/data" + - "GETH_OP_NETWORK=base-sepolia" + - "GETH_GCMODE=archive" + - "GETH_SYNCMODE=full" + - "GETH_STATE_SCHEME=hash" + - "GETH_DB_ENGINE=leveldb" + - "GETH_NAT=extip:${IP}" + - "GETH_PORT=19809" + - "GETH_WS_PORT=8545" + - "GETH_HTTP=true" + - "GETH_HTTP_ADDR=0.0.0.0" + - "GETH_HTTP_VHOSTS=*" + - "GETH_WS=true" + - "GETH_WS_ADDR=0.0.0.0" + - "GETH_WS_ORIGINS=*" + - "GETH_HTTP_API=eth,net,debug,admin,web3" + - "GETH_AUTHRPC_JWTSECRET=/jwtsecret" + - "GETH_AUTHRPC_ADDR=0.0.0.0" + - "GETH_AUTHRPC_VHOSTS=*" + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.base-sepolia-op-geth-archive-leveldb-hash-stripprefix.stripprefix.prefixes=/base-sepolia-archive" + - "traefik.http.services.base-sepolia-op-geth-archive-leveldb-hash.loadbalancer.server.port=8545" + - "traefik.http.routers.base-sepolia-op-geth-archive-leveldb-hash.entrypoints=websecure" + - "traefik.http.routers.base-sepolia-op-geth-archive-leveldb-hash.tls.certresolver=myresolver" + - "traefik.http.routers.base-sepolia-op-geth-archive-leveldb-hash.rule=Host(`$DOMAIN`) && PathPrefix(`/base-sepolia-archive`)" + - "traefik.http.routers.base-sepolia-op-geth-archive-leveldb-hash.middlewares=base-sepolia-op-geth-archive-leveldb-hash-stripprefix, ipwhitelist" + networks: + - chains + + + base-sepolia-archive-node: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 7300 + - 6060 + ports: + - "15910:15910" + - "15910:15910/udp" + entrypoint: [ "./op-node" ] + restart: unless-stopped + volumes: + - .jwtsecret:/jwtsecret + stop_grace_period: 30s + environment: + - "OP_NODE_NETWORK=base-sepolia" + - "OP_NODE_SYNCMODE=execution-layer" + - "OP_NODE_L1_ETH_RPC=${ETHEREUM_SEPOLIA_EXECUTION_RPC}" + - "OP_NODE_L2_ENGINE_AUTH=/jwtsecret" + - "OP_NODE_L2_ENGINE_RPC=http://base-sepolia-archive:8551" + - "OP_NODE_LOG_LEVEL=info" + - "OP_NODE_METRICS_ADDR=0.0.0.0" + - "OP_NODE_METRICS_ENABLED=true" + - "OP_NODE_METRICS_PORT=7300" + - "OP_NODE_P2P_LISTEN_IP=0.0.0.0" + - "OP_NODE_P2P_LISTEN_TCP_PORT=15910" + - "OP_NODE_P2P_LISTEN_UDP_PORT=15910" + - "OP_NODE_RPC_ADDR=0.0.0.0" + - "OP_NODE_P2P_ADVERTISE_IP=${IP}" + - "OP_NODE_RPC_PORT=8545" + - "OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log" + - "OP_NODE_VERIFIER_L1_CONFS=4" + - "OP_NODE_L1_RPC_KIND=${ETHEREUM_SEPOLIA_EXECUTION_KIND:-basic}" + - "OP_NODE_L1_TRUST_RPC=${ETHEREUM_SEPOLIA_EXECUTION_TRUST:-false}" + - "OP_NODE_L1_BEACON=${ETHEREUM_SEPOLIA_BEACON_REST}" + - "OP_NODE_L1_BEACON_ARCHIVER=${ETHEREUM_SEPOLIA_BEACON_ARCHIVER}" + - "OP_NODE_OVERRIDE_PECTRABLOBSCHEDULE=1742486400" + networks: + - chains + +volumes: + base-sepolia-op-geth-archive-leveldb-hash: \ No newline at end of file diff --git a/op/geth/base-sepolia-op-geth-pruned-pebble-path.yml b/op/geth/base-sepolia-op-geth-pruned-pebble-path.yml new file mode 100644 index 00000000..62400273 --- /dev/null +++ b/op/geth/base-sepolia-op-geth-pruned-pebble-path.yml @@ -0,0 +1,99 @@ +services: + base-sepolia: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 6060 + ports: + - "10022:10022" + - "10022:10022/udp" + entrypoint: [ "./geth" ] + restart: unless-stopped + stop_grace_period: 3m + volumes: + - base-sepolia-op-geth-pruned-pebble-path:/data + - .jwtsecret:/jwtsecret + environment: + - "GETH_DATADIR=/data" + - "GETH_OP_NETWORK=base-sepolia" + - "GETH_GCMODE=full" + - "GETH_SYNCMODE=snap" + - "GETH_STATE_SCHEME=path" + - "GETH_DB_ENGINE=pebble" + - "GETH_NAT=extip:${IP}" + - "GETH_PORT=19809" + - "GETH_WS_PORT=8545" + - "GETH_HTTP=true" + - "GETH_HTTP_ADDR=0.0.0.0" + - "GETH_HTTP_VHOSTS=*" + - "GETH_WS=true" + - "GETH_WS_ADDR=0.0.0.0" + - "GETH_WS_ORIGINS=*" + - "GETH_HTTP_API=eth,net,debug,admin,web3" + - "GETH_AUTHRPC_JWTSECRET=/jwtsecret" + - "GETH_AUTHRPC_ADDR=0.0.0.0" + - "GETH_AUTHRPC_VHOSTS=*" + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.base-sepolia-op-geth-pruned-pebble-path-stripprefix.stripprefix.prefixes=/base-sepolia" + - "traefik.http.services.base-sepolia-op-geth-pruned-pebble-path.loadbalancer.server.port=8545" + - "traefik.http.routers.base-sepolia-op-geth-pruned-pebble-path.entrypoints=websecure" + - "traefik.http.routers.base-sepolia-op-geth-pruned-pebble-path.tls.certresolver=myresolver" + - "traefik.http.routers.base-sepolia-op-geth-pruned-pebble-path.rule=Host(`$DOMAIN`) && PathPrefix(`/base-sepolia`)" + - "traefik.http.routers.base-sepolia-op-geth-pruned-pebble-path.middlewares=base-sepolia-op-geth-pruned-pebble-path-stripprefix, ipwhitelist" + networks: + - chains + + + base-sepolia-node: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 7300 + - 6060 + ports: + - "15022:15022" + - "15022:15022/udp" + entrypoint: [ "./op-node" ] + restart: unless-stopped + volumes: + - .jwtsecret:/jwtsecret + stop_grace_period: 30s + environment: + - "OP_NODE_NETWORK=base-sepolia" + - "OP_NODE_SYNCMODE=execution-layer" + - "OP_NODE_L1_ETH_RPC=${ETHEREUM_SEPOLIA_EXECUTION_RPC}" + - "OP_NODE_L2_ENGINE_AUTH=/jwtsecret" + - "OP_NODE_L2_ENGINE_RPC=http://base-sepolia:8551" + - "OP_NODE_LOG_LEVEL=info" + - "OP_NODE_METRICS_ADDR=0.0.0.0" + - "OP_NODE_METRICS_ENABLED=true" + - "OP_NODE_METRICS_PORT=7300" + - "OP_NODE_P2P_LISTEN_IP=0.0.0.0" + - "OP_NODE_P2P_LISTEN_TCP_PORT=15022" + - "OP_NODE_P2P_LISTEN_UDP_PORT=15022" + - "OP_NODE_RPC_ADDR=0.0.0.0" + - "OP_NODE_P2P_ADVERTISE_IP=${IP}" + - "OP_NODE_RPC_PORT=8545" + - "OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log" + - "OP_NODE_VERIFIER_L1_CONFS=4" + - "OP_NODE_L1_RPC_KIND=${ETHEREUM_SEPOLIA_EXECUTION_KIND:-basic}" + - "OP_NODE_L1_TRUST_RPC=${ETHEREUM_SEPOLIA_EXECUTION_TRUST:-false}" + - "OP_NODE_L1_BEACON=${ETHEREUM_SEPOLIA_BEACON_REST}" + - "OP_NODE_L1_BEACON_ARCHIVER=${ETHEREUM_SEPOLIA_BEACON_ARCHIVER}" + - "OP_NODE_OVERRIDE_PECTRABLOBSCHEDULE=1742486400" + networks: + - chains + +volumes: + base-sepolia-op-geth-pruned-pebble-path: \ No newline at end of file diff --git a/op/geth/bob-mainnet-op-geth-archive-leveldb-hash.yml b/op/geth/bob-mainnet-op-geth-archive-leveldb-hash.yml new file mode 100644 index 00000000..275ae70d --- /dev/null +++ b/op/geth/bob-mainnet-op-geth-archive-leveldb-hash.yml @@ -0,0 +1,99 @@ +services: + bob-mainnet-archive: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 6060 + ports: + - "10046:10046" + - "10046:10046/udp" + entrypoint: [ "./geth" ] + restart: unless-stopped + stop_grace_period: 3m + volumes: + - bob-mainnet-op-geth-archive-leveldb-hash:/data + - .jwtsecret:/jwtsecret + environment: + - "GETH_DATADIR=/data" + - "GETH_OP_NETWORK=bob-mainnet" + - "GETH_GCMODE=archive" + - "GETH_SYNCMODE=full" + - "GETH_STATE_SCHEME=hash" + - "GETH_DB_ENGINE=leveldb" + - "GETH_NAT=extip:${IP}" + - "GETH_PORT=19809" + - "GETH_WS_PORT=8545" + - "GETH_HTTP=true" + - "GETH_HTTP_ADDR=0.0.0.0" + - "GETH_HTTP_VHOSTS=*" + - "GETH_WS=true" + - "GETH_WS_ADDR=0.0.0.0" + - "GETH_WS_ORIGINS=*" + - "GETH_HTTP_API=eth,net,debug,admin,web3" + - "GETH_AUTHRPC_JWTSECRET=/jwtsecret" + - "GETH_AUTHRPC_ADDR=0.0.0.0" + - "GETH_AUTHRPC_VHOSTS=*" + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.bob-mainnet-op-geth-archive-leveldb-hash-stripprefix.stripprefix.prefixes=/bob-mainnet-archive" + - "traefik.http.services.bob-mainnet-op-geth-archive-leveldb-hash.loadbalancer.server.port=8545" + - "traefik.http.routers.bob-mainnet-op-geth-archive-leveldb-hash.entrypoints=websecure" + - "traefik.http.routers.bob-mainnet-op-geth-archive-leveldb-hash.tls.certresolver=myresolver" + - "traefik.http.routers.bob-mainnet-op-geth-archive-leveldb-hash.rule=Host(`$DOMAIN`) && PathPrefix(`/bob-mainnet-archive`)" + - "traefik.http.routers.bob-mainnet-op-geth-archive-leveldb-hash.middlewares=bob-mainnet-op-geth-archive-leveldb-hash-stripprefix, ipwhitelist" + networks: + - chains + + + bob-mainnet-archive-node: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 7300 + - 6060 + ports: + - "15046:15046" + - "15046:15046/udp" + entrypoint: [ "./op-node" ] + restart: unless-stopped + volumes: + - .jwtsecret:/jwtsecret + stop_grace_period: 30s + environment: + - "OP_NODE_NETWORK=bob-mainnet" + - "OP_NODE_SYNCMODE=execution-layer" + - "OP_NODE_L1_ETH_RPC=${ETHEREUM_MAINNET_EXECUTION_RPC}" + - "OP_NODE_L2_ENGINE_AUTH=/jwtsecret" + - "OP_NODE_L2_ENGINE_RPC=http://bob-mainnet-archive:8551" + - "OP_NODE_LOG_LEVEL=info" + - "OP_NODE_METRICS_ADDR=0.0.0.0" + - "OP_NODE_METRICS_ENABLED=true" + - "OP_NODE_METRICS_PORT=7300" + - "OP_NODE_P2P_LISTEN_IP=0.0.0.0" + - "OP_NODE_P2P_LISTEN_TCP_PORT=15046" + - "OP_NODE_P2P_LISTEN_UDP_PORT=15046" + - "OP_NODE_RPC_ADDR=0.0.0.0" + - "OP_NODE_P2P_ADVERTISE_IP=${IP}" + - "OP_NODE_RPC_PORT=8545" + - "OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log" + - "OP_NODE_VERIFIER_L1_CONFS=4" + - "OP_NODE_L1_RPC_KIND=${ETHEREUM_MAINNET_EXECUTION_KIND:-basic}" + - "OP_NODE_L1_TRUST_RPC=${ETHEREUM_MAINNET_EXECUTION_TRUST:-false}" + - "OP_NODE_L1_BEACON=${ETHEREUM_MAINNET_BEACON_REST}" + - "OP_NODE_L1_BEACON_ARCHIVER=${ETHEREUM_MAINNET_BEACON_ARCHIVER}" + + networks: + - chains + +volumes: + bob-mainnet-op-geth-archive-leveldb-hash: \ No newline at end of file diff --git a/op/geth/bob-mainnet-op-geth-pruned-pebble-path.yml b/op/geth/bob-mainnet-op-geth-pruned-pebble-path.yml new file mode 100644 index 00000000..a15d8271 --- /dev/null +++ b/op/geth/bob-mainnet-op-geth-pruned-pebble-path.yml @@ -0,0 +1,99 @@ +services: + bob-mainnet: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 6060 + ports: + - "10347:10347" + - "10347:10347/udp" + entrypoint: [ "./geth" ] + restart: unless-stopped + stop_grace_period: 3m + volumes: + - bob-mainnet-op-geth-pruned-pebble-path:/data + - .jwtsecret:/jwtsecret + environment: + - "GETH_DATADIR=/data" + - "GETH_OP_NETWORK=bob-mainnet" + - "GETH_GCMODE=full" + - "GETH_SYNCMODE=snap" + - "GETH_STATE_SCHEME=path" + - "GETH_DB_ENGINE=pebble" + - "GETH_NAT=extip:${IP}" + - "GETH_PORT=19809" + - "GETH_WS_PORT=8545" + - "GETH_HTTP=true" + - "GETH_HTTP_ADDR=0.0.0.0" + - "GETH_HTTP_VHOSTS=*" + - "GETH_WS=true" + - "GETH_WS_ADDR=0.0.0.0" + - "GETH_WS_ORIGINS=*" + - "GETH_HTTP_API=eth,net,debug,admin,web3" + - "GETH_AUTHRPC_JWTSECRET=/jwtsecret" + - "GETH_AUTHRPC_ADDR=0.0.0.0" + - "GETH_AUTHRPC_VHOSTS=*" + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.bob-mainnet-op-geth-pruned-pebble-path-stripprefix.stripprefix.prefixes=/bob-mainnet" + - "traefik.http.services.bob-mainnet-op-geth-pruned-pebble-path.loadbalancer.server.port=8545" + - "traefik.http.routers.bob-mainnet-op-geth-pruned-pebble-path.entrypoints=websecure" + - "traefik.http.routers.bob-mainnet-op-geth-pruned-pebble-path.tls.certresolver=myresolver" + - "traefik.http.routers.bob-mainnet-op-geth-pruned-pebble-path.rule=Host(`$DOMAIN`) && PathPrefix(`/bob-mainnet`)" + - "traefik.http.routers.bob-mainnet-op-geth-pruned-pebble-path.middlewares=bob-mainnet-op-geth-pruned-pebble-path-stripprefix, ipwhitelist" + networks: + - chains + + + bob-mainnet-node: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 7300 + - 6060 + ports: + - "15347:15347" + - "15347:15347/udp" + entrypoint: [ "./op-node" ] + restart: unless-stopped + volumes: + - .jwtsecret:/jwtsecret + stop_grace_period: 30s + environment: + - "OP_NODE_NETWORK=bob-mainnet" + - "OP_NODE_SYNCMODE=execution-layer" + - "OP_NODE_L1_ETH_RPC=${ETHEREUM_MAINNET_EXECUTION_RPC}" + - "OP_NODE_L2_ENGINE_AUTH=/jwtsecret" + - "OP_NODE_L2_ENGINE_RPC=http://bob-mainnet:8551" + - "OP_NODE_LOG_LEVEL=info" + - "OP_NODE_METRICS_ADDR=0.0.0.0" + - "OP_NODE_METRICS_ENABLED=true" + - "OP_NODE_METRICS_PORT=7300" + - "OP_NODE_P2P_LISTEN_IP=0.0.0.0" + - "OP_NODE_P2P_LISTEN_TCP_PORT=15347" + - "OP_NODE_P2P_LISTEN_UDP_PORT=15347" + - "OP_NODE_RPC_ADDR=0.0.0.0" + - "OP_NODE_P2P_ADVERTISE_IP=${IP}" + - "OP_NODE_RPC_PORT=8545" + - "OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log" + - "OP_NODE_VERIFIER_L1_CONFS=4" + - "OP_NODE_L1_RPC_KIND=${ETHEREUM_MAINNET_EXECUTION_KIND:-basic}" + - "OP_NODE_L1_TRUST_RPC=${ETHEREUM_MAINNET_EXECUTION_TRUST:-false}" + - "OP_NODE_L1_BEACON=${ETHEREUM_MAINNET_BEACON_REST}" + - "OP_NODE_L1_BEACON_ARCHIVER=${ETHEREUM_MAINNET_BEACON_ARCHIVER}" + + networks: + - chains + +volumes: + bob-mainnet-op-geth-pruned-pebble-path: \ No newline at end of file diff --git a/op/geth/hashkeychain-mainnet-op-geth-archive-leveldb-hash.yml b/op/geth/hashkeychain-mainnet-op-geth-archive-leveldb-hash.yml new file mode 100644 index 00000000..d107b444 --- /dev/null +++ b/op/geth/hashkeychain-mainnet-op-geth-archive-leveldb-hash.yml @@ -0,0 +1,99 @@ +services: + hashkeychain-mainnet-archive: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 6060 + ports: + - "10113:10113" + - "10113:10113/udp" + entrypoint: [ "./geth" ] + restart: unless-stopped + stop_grace_period: 3m + volumes: + - hashkeychain-mainnet-op-geth-archive-leveldb-hash:/data + - .jwtsecret:/jwtsecret + environment: + - "GETH_DATADIR=/data" + - "GETH_OP_NETWORK=hashkeychain-mainnet" + - "GETH_GCMODE=archive" + - "GETH_SYNCMODE=full" + - "GETH_STATE_SCHEME=hash" + - "GETH_DB_ENGINE=leveldb" + - "GETH_NAT=extip:${IP}" + - "GETH_PORT=19809" + - "GETH_WS_PORT=8545" + - "GETH_HTTP=true" + - "GETH_HTTP_ADDR=0.0.0.0" + - "GETH_HTTP_VHOSTS=*" + - "GETH_WS=true" + - "GETH_WS_ADDR=0.0.0.0" + - "GETH_WS_ORIGINS=*" + - "GETH_HTTP_API=eth,net,debug,admin,web3" + - "GETH_AUTHRPC_JWTSECRET=/jwtsecret" + - "GETH_AUTHRPC_ADDR=0.0.0.0" + - "GETH_AUTHRPC_VHOSTS=*" + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.hashkeychain-mainnet-op-geth-archive-leveldb-hash-stripprefix.stripprefix.prefixes=/hashkeychain-mainnet-archive" + - "traefik.http.services.hashkeychain-mainnet-op-geth-archive-leveldb-hash.loadbalancer.server.port=8545" + - "traefik.http.routers.hashkeychain-mainnet-op-geth-archive-leveldb-hash.entrypoints=websecure" + - "traefik.http.routers.hashkeychain-mainnet-op-geth-archive-leveldb-hash.tls.certresolver=myresolver" + - "traefik.http.routers.hashkeychain-mainnet-op-geth-archive-leveldb-hash.rule=Host(`$DOMAIN`) && PathPrefix(`/hashkeychain-mainnet-archive`)" + - "traefik.http.routers.hashkeychain-mainnet-op-geth-archive-leveldb-hash.middlewares=hashkeychain-mainnet-op-geth-archive-leveldb-hash-stripprefix, ipwhitelist" + networks: + - chains + + + hashkeychain-mainnet-archive-node: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 7300 + - 6060 + ports: + - "15113:15113" + - "15113:15113/udp" + entrypoint: [ "./op-node" ] + restart: unless-stopped + volumes: + - .jwtsecret:/jwtsecret + stop_grace_period: 30s + environment: + - "OP_NODE_NETWORK=hashkeychain-mainnet" + - "OP_NODE_SYNCMODE=execution-layer" + - "OP_NODE_L1_ETH_RPC=${ETHEREUM_MAINNET_EXECUTION_RPC}" + - "OP_NODE_L2_ENGINE_AUTH=/jwtsecret" + - "OP_NODE_L2_ENGINE_RPC=http://hashkeychain-mainnet-archive:8551" + - "OP_NODE_LOG_LEVEL=info" + - "OP_NODE_METRICS_ADDR=0.0.0.0" + - "OP_NODE_METRICS_ENABLED=true" + - "OP_NODE_METRICS_PORT=7300" + - "OP_NODE_P2P_LISTEN_IP=0.0.0.0" + - "OP_NODE_P2P_LISTEN_TCP_PORT=15113" + - "OP_NODE_P2P_LISTEN_UDP_PORT=15113" + - "OP_NODE_RPC_ADDR=0.0.0.0" + - "OP_NODE_P2P_ADVERTISE_IP=${IP}" + - "OP_NODE_RPC_PORT=8545" + - "OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log" + - "OP_NODE_VERIFIER_L1_CONFS=4" + - "OP_NODE_L1_RPC_KIND=${ETHEREUM_MAINNET_EXECUTION_KIND:-basic}" + - "OP_NODE_L1_TRUST_RPC=${ETHEREUM_MAINNET_EXECUTION_TRUST:-false}" + - "OP_NODE_L1_BEACON=${ETHEREUM_MAINNET_BEACON_REST}" + - "OP_NODE_L1_BEACON_ARCHIVER=${ETHEREUM_MAINNET_BEACON_ARCHIVER}" + + networks: + - chains + +volumes: + hashkeychain-mainnet-op-geth-archive-leveldb-hash: \ No newline at end of file diff --git a/op/geth/hashkeychain-mainnet-op-geth-pruned-pebble-path.yml b/op/geth/hashkeychain-mainnet-op-geth-pruned-pebble-path.yml new file mode 100644 index 00000000..d4d6b968 --- /dev/null +++ b/op/geth/hashkeychain-mainnet-op-geth-pruned-pebble-path.yml @@ -0,0 +1,99 @@ +services: + hashkeychain-mainnet: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 6060 + ports: + - "10188:10188" + - "10188:10188/udp" + entrypoint: [ "./geth" ] + restart: unless-stopped + stop_grace_period: 3m + volumes: + - hashkeychain-mainnet-op-geth-pruned-pebble-path:/data + - .jwtsecret:/jwtsecret + environment: + - "GETH_DATADIR=/data" + - "GETH_OP_NETWORK=hashkeychain-mainnet" + - "GETH_GCMODE=full" + - "GETH_SYNCMODE=snap" + - "GETH_STATE_SCHEME=path" + - "GETH_DB_ENGINE=pebble" + - "GETH_NAT=extip:${IP}" + - "GETH_PORT=19809" + - "GETH_WS_PORT=8545" + - "GETH_HTTP=true" + - "GETH_HTTP_ADDR=0.0.0.0" + - "GETH_HTTP_VHOSTS=*" + - "GETH_WS=true" + - "GETH_WS_ADDR=0.0.0.0" + - "GETH_WS_ORIGINS=*" + - "GETH_HTTP_API=eth,net,debug,admin,web3" + - "GETH_AUTHRPC_JWTSECRET=/jwtsecret" + - "GETH_AUTHRPC_ADDR=0.0.0.0" + - "GETH_AUTHRPC_VHOSTS=*" + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.hashkeychain-mainnet-op-geth-pruned-pebble-path-stripprefix.stripprefix.prefixes=/hashkeychain-mainnet" + - "traefik.http.services.hashkeychain-mainnet-op-geth-pruned-pebble-path.loadbalancer.server.port=8545" + - "traefik.http.routers.hashkeychain-mainnet-op-geth-pruned-pebble-path.entrypoints=websecure" + - "traefik.http.routers.hashkeychain-mainnet-op-geth-pruned-pebble-path.tls.certresolver=myresolver" + - "traefik.http.routers.hashkeychain-mainnet-op-geth-pruned-pebble-path.rule=Host(`$DOMAIN`) && PathPrefix(`/hashkeychain-mainnet`)" + - "traefik.http.routers.hashkeychain-mainnet-op-geth-pruned-pebble-path.middlewares=hashkeychain-mainnet-op-geth-pruned-pebble-path-stripprefix, ipwhitelist" + networks: + - chains + + + hashkeychain-mainnet-node: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 7300 + - 6060 + ports: + - "15188:15188" + - "15188:15188/udp" + entrypoint: [ "./op-node" ] + restart: unless-stopped + volumes: + - .jwtsecret:/jwtsecret + stop_grace_period: 30s + environment: + - "OP_NODE_NETWORK=hashkeychain-mainnet" + - "OP_NODE_SYNCMODE=execution-layer" + - "OP_NODE_L1_ETH_RPC=${ETHEREUM_MAINNET_EXECUTION_RPC}" + - "OP_NODE_L2_ENGINE_AUTH=/jwtsecret" + - "OP_NODE_L2_ENGINE_RPC=http://hashkeychain-mainnet:8551" + - "OP_NODE_LOG_LEVEL=info" + - "OP_NODE_METRICS_ADDR=0.0.0.0" + - "OP_NODE_METRICS_ENABLED=true" + - "OP_NODE_METRICS_PORT=7300" + - "OP_NODE_P2P_LISTEN_IP=0.0.0.0" + - "OP_NODE_P2P_LISTEN_TCP_PORT=15188" + - "OP_NODE_P2P_LISTEN_UDP_PORT=15188" + - "OP_NODE_RPC_ADDR=0.0.0.0" + - "OP_NODE_P2P_ADVERTISE_IP=${IP}" + - "OP_NODE_RPC_PORT=8545" + - "OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log" + - "OP_NODE_VERIFIER_L1_CONFS=4" + - "OP_NODE_L1_RPC_KIND=${ETHEREUM_MAINNET_EXECUTION_KIND:-basic}" + - "OP_NODE_L1_TRUST_RPC=${ETHEREUM_MAINNET_EXECUTION_TRUST:-false}" + - "OP_NODE_L1_BEACON=${ETHEREUM_MAINNET_BEACON_REST}" + - "OP_NODE_L1_BEACON_ARCHIVER=${ETHEREUM_MAINNET_BEACON_ARCHIVER}" + + networks: + - chains + +volumes: + hashkeychain-mainnet-op-geth-pruned-pebble-path: \ No newline at end of file diff --git a/op/geth/ink-mainnet-op-geth-archive-leveldb-hash.yml b/op/geth/ink-mainnet-op-geth-archive-leveldb-hash.yml new file mode 100644 index 00000000..d684031e --- /dev/null +++ b/op/geth/ink-mainnet-op-geth-archive-leveldb-hash.yml @@ -0,0 +1,99 @@ +services: + ink-mainnet-archive: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 6060 + ports: + - "10713:10713" + - "10713:10713/udp" + entrypoint: [ "./geth" ] + restart: unless-stopped + stop_grace_period: 3m + volumes: + - ink-mainnet-op-geth-archive-leveldb-hash:/data + - .jwtsecret:/jwtsecret + environment: + - "GETH_DATADIR=/data" + - "GETH_OP_NETWORK=ink-mainnet" + - "GETH_GCMODE=archive" + - "GETH_SYNCMODE=full" + - "GETH_STATE_SCHEME=hash" + - "GETH_DB_ENGINE=leveldb" + - "GETH_NAT=extip:${IP}" + - "GETH_PORT=19809" + - "GETH_WS_PORT=8545" + - "GETH_HTTP=true" + - "GETH_HTTP_ADDR=0.0.0.0" + - "GETH_HTTP_VHOSTS=*" + - "GETH_WS=true" + - "GETH_WS_ADDR=0.0.0.0" + - "GETH_WS_ORIGINS=*" + - "GETH_HTTP_API=eth,net,debug,admin,web3" + - "GETH_AUTHRPC_JWTSECRET=/jwtsecret" + - "GETH_AUTHRPC_ADDR=0.0.0.0" + - "GETH_AUTHRPC_VHOSTS=*" + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.ink-mainnet-op-geth-archive-leveldb-hash-stripprefix.stripprefix.prefixes=/ink-mainnet-archive" + - "traefik.http.services.ink-mainnet-op-geth-archive-leveldb-hash.loadbalancer.server.port=8545" + - "traefik.http.routers.ink-mainnet-op-geth-archive-leveldb-hash.entrypoints=websecure" + - "traefik.http.routers.ink-mainnet-op-geth-archive-leveldb-hash.tls.certresolver=myresolver" + - "traefik.http.routers.ink-mainnet-op-geth-archive-leveldb-hash.rule=Host(`$DOMAIN`) && PathPrefix(`/ink-mainnet-archive`)" + - "traefik.http.routers.ink-mainnet-op-geth-archive-leveldb-hash.middlewares=ink-mainnet-op-geth-archive-leveldb-hash-stripprefix, ipwhitelist" + networks: + - chains + + + ink-mainnet-archive-node: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 7300 + - 6060 + ports: + - "15713:15713" + - "15713:15713/udp" + entrypoint: [ "./op-node" ] + restart: unless-stopped + volumes: + - .jwtsecret:/jwtsecret + stop_grace_period: 30s + environment: + - "OP_NODE_NETWORK=ink-mainnet" + - "OP_NODE_SYNCMODE=execution-layer" + - "OP_NODE_L1_ETH_RPC=${ETHEREUM_MAINNET_EXECUTION_RPC}" + - "OP_NODE_L2_ENGINE_AUTH=/jwtsecret" + - "OP_NODE_L2_ENGINE_RPC=http://ink-mainnet-archive:8551" + - "OP_NODE_LOG_LEVEL=info" + - "OP_NODE_METRICS_ADDR=0.0.0.0" + - "OP_NODE_METRICS_ENABLED=true" + - "OP_NODE_METRICS_PORT=7300" + - "OP_NODE_P2P_LISTEN_IP=0.0.0.0" + - "OP_NODE_P2P_LISTEN_TCP_PORT=15713" + - "OP_NODE_P2P_LISTEN_UDP_PORT=15713" + - "OP_NODE_RPC_ADDR=0.0.0.0" + - "OP_NODE_P2P_ADVERTISE_IP=${IP}" + - "OP_NODE_RPC_PORT=8545" + - "OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log" + - "OP_NODE_VERIFIER_L1_CONFS=4" + - "OP_NODE_L1_RPC_KIND=${ETHEREUM_MAINNET_EXECUTION_KIND:-basic}" + - "OP_NODE_L1_TRUST_RPC=${ETHEREUM_MAINNET_EXECUTION_TRUST:-false}" + - "OP_NODE_L1_BEACON=${ETHEREUM_MAINNET_BEACON_REST}" + - "OP_NODE_L1_BEACON_ARCHIVER=${ETHEREUM_MAINNET_BEACON_ARCHIVER}" + + networks: + - chains + +volumes: + ink-mainnet-op-geth-archive-leveldb-hash: \ No newline at end of file diff --git a/op/geth/ink-mainnet-op-geth-pruned-pebble-path.yml b/op/geth/ink-mainnet-op-geth-pruned-pebble-path.yml new file mode 100644 index 00000000..3d27218e --- /dev/null +++ b/op/geth/ink-mainnet-op-geth-pruned-pebble-path.yml @@ -0,0 +1,99 @@ +services: + ink-mainnet: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 6060 + ports: + - "10271:10271" + - "10271:10271/udp" + entrypoint: [ "./geth" ] + restart: unless-stopped + stop_grace_period: 3m + volumes: + - ink-mainnet-op-geth-pruned-pebble-path:/data + - .jwtsecret:/jwtsecret + environment: + - "GETH_DATADIR=/data" + - "GETH_OP_NETWORK=ink-mainnet" + - "GETH_GCMODE=full" + - "GETH_SYNCMODE=snap" + - "GETH_STATE_SCHEME=path" + - "GETH_DB_ENGINE=pebble" + - "GETH_NAT=extip:${IP}" + - "GETH_PORT=19809" + - "GETH_WS_PORT=8545" + - "GETH_HTTP=true" + - "GETH_HTTP_ADDR=0.0.0.0" + - "GETH_HTTP_VHOSTS=*" + - "GETH_WS=true" + - "GETH_WS_ADDR=0.0.0.0" + - "GETH_WS_ORIGINS=*" + - "GETH_HTTP_API=eth,net,debug,admin,web3" + - "GETH_AUTHRPC_JWTSECRET=/jwtsecret" + - "GETH_AUTHRPC_ADDR=0.0.0.0" + - "GETH_AUTHRPC_VHOSTS=*" + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.ink-mainnet-op-geth-pruned-pebble-path-stripprefix.stripprefix.prefixes=/ink-mainnet" + - "traefik.http.services.ink-mainnet-op-geth-pruned-pebble-path.loadbalancer.server.port=8545" + - "traefik.http.routers.ink-mainnet-op-geth-pruned-pebble-path.entrypoints=websecure" + - "traefik.http.routers.ink-mainnet-op-geth-pruned-pebble-path.tls.certresolver=myresolver" + - "traefik.http.routers.ink-mainnet-op-geth-pruned-pebble-path.rule=Host(`$DOMAIN`) && PathPrefix(`/ink-mainnet`)" + - "traefik.http.routers.ink-mainnet-op-geth-pruned-pebble-path.middlewares=ink-mainnet-op-geth-pruned-pebble-path-stripprefix, ipwhitelist" + networks: + - chains + + + ink-mainnet-node: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 7300 + - 6060 + ports: + - "15271:15271" + - "15271:15271/udp" + entrypoint: [ "./op-node" ] + restart: unless-stopped + volumes: + - .jwtsecret:/jwtsecret + stop_grace_period: 30s + environment: + - "OP_NODE_NETWORK=ink-mainnet" + - "OP_NODE_SYNCMODE=execution-layer" + - "OP_NODE_L1_ETH_RPC=${ETHEREUM_MAINNET_EXECUTION_RPC}" + - "OP_NODE_L2_ENGINE_AUTH=/jwtsecret" + - "OP_NODE_L2_ENGINE_RPC=http://ink-mainnet:8551" + - "OP_NODE_LOG_LEVEL=info" + - "OP_NODE_METRICS_ADDR=0.0.0.0" + - "OP_NODE_METRICS_ENABLED=true" + - "OP_NODE_METRICS_PORT=7300" + - "OP_NODE_P2P_LISTEN_IP=0.0.0.0" + - "OP_NODE_P2P_LISTEN_TCP_PORT=15271" + - "OP_NODE_P2P_LISTEN_UDP_PORT=15271" + - "OP_NODE_RPC_ADDR=0.0.0.0" + - "OP_NODE_P2P_ADVERTISE_IP=${IP}" + - "OP_NODE_RPC_PORT=8545" + - "OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log" + - "OP_NODE_VERIFIER_L1_CONFS=4" + - "OP_NODE_L1_RPC_KIND=${ETHEREUM_MAINNET_EXECUTION_KIND:-basic}" + - "OP_NODE_L1_TRUST_RPC=${ETHEREUM_MAINNET_EXECUTION_TRUST:-false}" + - "OP_NODE_L1_BEACON=${ETHEREUM_MAINNET_BEACON_REST}" + - "OP_NODE_L1_BEACON_ARCHIVER=${ETHEREUM_MAINNET_BEACON_ARCHIVER}" + + networks: + - chains + +volumes: + ink-mainnet-op-geth-pruned-pebble-path: \ No newline at end of file diff --git a/op/geth/ink-sepolia-op-geth-archive-leveldb-hash.yml b/op/geth/ink-sepolia-op-geth-archive-leveldb-hash.yml new file mode 100644 index 00000000..27e8cf05 --- /dev/null +++ b/op/geth/ink-sepolia-op-geth-archive-leveldb-hash.yml @@ -0,0 +1,99 @@ +services: + ink-sepolia-archive: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 6060 + ports: + - "10659:10659" + - "10659:10659/udp" + entrypoint: [ "./geth" ] + restart: unless-stopped + stop_grace_period: 3m + volumes: + - ink-sepolia-op-geth-archive-leveldb-hash:/data + - .jwtsecret:/jwtsecret + environment: + - "GETH_DATADIR=/data" + - "GETH_OP_NETWORK=ink-sepolia" + - "GETH_GCMODE=archive" + - "GETH_SYNCMODE=full" + - "GETH_STATE_SCHEME=hash" + - "GETH_DB_ENGINE=leveldb" + - "GETH_NAT=extip:${IP}" + - "GETH_PORT=19809" + - "GETH_WS_PORT=8545" + - "GETH_HTTP=true" + - "GETH_HTTP_ADDR=0.0.0.0" + - "GETH_HTTP_VHOSTS=*" + - "GETH_WS=true" + - "GETH_WS_ADDR=0.0.0.0" + - "GETH_WS_ORIGINS=*" + - "GETH_HTTP_API=eth,net,debug,admin,web3" + - "GETH_AUTHRPC_JWTSECRET=/jwtsecret" + - "GETH_AUTHRPC_ADDR=0.0.0.0" + - "GETH_AUTHRPC_VHOSTS=*" + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.ink-sepolia-op-geth-archive-leveldb-hash-stripprefix.stripprefix.prefixes=/ink-sepolia-archive" + - "traefik.http.services.ink-sepolia-op-geth-archive-leveldb-hash.loadbalancer.server.port=8545" + - "traefik.http.routers.ink-sepolia-op-geth-archive-leveldb-hash.entrypoints=websecure" + - "traefik.http.routers.ink-sepolia-op-geth-archive-leveldb-hash.tls.certresolver=myresolver" + - "traefik.http.routers.ink-sepolia-op-geth-archive-leveldb-hash.rule=Host(`$DOMAIN`) && PathPrefix(`/ink-sepolia-archive`)" + - "traefik.http.routers.ink-sepolia-op-geth-archive-leveldb-hash.middlewares=ink-sepolia-op-geth-archive-leveldb-hash-stripprefix, ipwhitelist" + networks: + - chains + + + ink-sepolia-archive-node: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 7300 + - 6060 + ports: + - "15659:15659" + - "15659:15659/udp" + entrypoint: [ "./op-node" ] + restart: unless-stopped + volumes: + - .jwtsecret:/jwtsecret + stop_grace_period: 30s + environment: + - "OP_NODE_NETWORK=ink-sepolia" + - "OP_NODE_SYNCMODE=execution-layer" + - "OP_NODE_L1_ETH_RPC=${ETHEREUM_SEPOLIA_EXECUTION_RPC}" + - "OP_NODE_L2_ENGINE_AUTH=/jwtsecret" + - "OP_NODE_L2_ENGINE_RPC=http://ink-sepolia-archive:8551" + - "OP_NODE_LOG_LEVEL=info" + - "OP_NODE_METRICS_ADDR=0.0.0.0" + - "OP_NODE_METRICS_ENABLED=true" + - "OP_NODE_METRICS_PORT=7300" + - "OP_NODE_P2P_LISTEN_IP=0.0.0.0" + - "OP_NODE_P2P_LISTEN_TCP_PORT=15659" + - "OP_NODE_P2P_LISTEN_UDP_PORT=15659" + - "OP_NODE_RPC_ADDR=0.0.0.0" + - "OP_NODE_P2P_ADVERTISE_IP=${IP}" + - "OP_NODE_RPC_PORT=8545" + - "OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log" + - "OP_NODE_VERIFIER_L1_CONFS=4" + - "OP_NODE_L1_RPC_KIND=${ETHEREUM_SEPOLIA_EXECUTION_KIND:-basic}" + - "OP_NODE_L1_TRUST_RPC=${ETHEREUM_SEPOLIA_EXECUTION_TRUST:-false}" + - "OP_NODE_L1_BEACON=${ETHEREUM_SEPOLIA_BEACON_REST}" + - "OP_NODE_L1_BEACON_ARCHIVER=${ETHEREUM_SEPOLIA_BEACON_ARCHIVER}" + - "OP_NODE_OVERRIDE_PECTRABLOBSCHEDULE=1742486400" + networks: + - chains + +volumes: + ink-sepolia-op-geth-archive-leveldb-hash: \ No newline at end of file diff --git a/op/geth/ink-sepolia-op-geth-pruned-pebble-path.yml b/op/geth/ink-sepolia-op-geth-pruned-pebble-path.yml new file mode 100644 index 00000000..843110c3 --- /dev/null +++ b/op/geth/ink-sepolia-op-geth-pruned-pebble-path.yml @@ -0,0 +1,99 @@ +services: + ink-sepolia: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 6060 + ports: + - "10869:10869" + - "10869:10869/udp" + entrypoint: [ "./geth" ] + restart: unless-stopped + stop_grace_period: 3m + volumes: + - ink-sepolia-op-geth-pruned-pebble-path:/data + - .jwtsecret:/jwtsecret + environment: + - "GETH_DATADIR=/data" + - "GETH_OP_NETWORK=ink-sepolia" + - "GETH_GCMODE=full" + - "GETH_SYNCMODE=snap" + - "GETH_STATE_SCHEME=path" + - "GETH_DB_ENGINE=pebble" + - "GETH_NAT=extip:${IP}" + - "GETH_PORT=19809" + - "GETH_WS_PORT=8545" + - "GETH_HTTP=true" + - "GETH_HTTP_ADDR=0.0.0.0" + - "GETH_HTTP_VHOSTS=*" + - "GETH_WS=true" + - "GETH_WS_ADDR=0.0.0.0" + - "GETH_WS_ORIGINS=*" + - "GETH_HTTP_API=eth,net,debug,admin,web3" + - "GETH_AUTHRPC_JWTSECRET=/jwtsecret" + - "GETH_AUTHRPC_ADDR=0.0.0.0" + - "GETH_AUTHRPC_VHOSTS=*" + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.ink-sepolia-op-geth-pruned-pebble-path-stripprefix.stripprefix.prefixes=/ink-sepolia" + - "traefik.http.services.ink-sepolia-op-geth-pruned-pebble-path.loadbalancer.server.port=8545" + - "traefik.http.routers.ink-sepolia-op-geth-pruned-pebble-path.entrypoints=websecure" + - "traefik.http.routers.ink-sepolia-op-geth-pruned-pebble-path.tls.certresolver=myresolver" + - "traefik.http.routers.ink-sepolia-op-geth-pruned-pebble-path.rule=Host(`$DOMAIN`) && PathPrefix(`/ink-sepolia`)" + - "traefik.http.routers.ink-sepolia-op-geth-pruned-pebble-path.middlewares=ink-sepolia-op-geth-pruned-pebble-path-stripprefix, ipwhitelist" + networks: + - chains + + + ink-sepolia-node: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 7300 + - 6060 + ports: + - "15869:15869" + - "15869:15869/udp" + entrypoint: [ "./op-node" ] + restart: unless-stopped + volumes: + - .jwtsecret:/jwtsecret + stop_grace_period: 30s + environment: + - "OP_NODE_NETWORK=ink-sepolia" + - "OP_NODE_SYNCMODE=execution-layer" + - "OP_NODE_L1_ETH_RPC=${ETHEREUM_SEPOLIA_EXECUTION_RPC}" + - "OP_NODE_L2_ENGINE_AUTH=/jwtsecret" + - "OP_NODE_L2_ENGINE_RPC=http://ink-sepolia:8551" + - "OP_NODE_LOG_LEVEL=info" + - "OP_NODE_METRICS_ADDR=0.0.0.0" + - "OP_NODE_METRICS_ENABLED=true" + - "OP_NODE_METRICS_PORT=7300" + - "OP_NODE_P2P_LISTEN_IP=0.0.0.0" + - "OP_NODE_P2P_LISTEN_TCP_PORT=15869" + - "OP_NODE_P2P_LISTEN_UDP_PORT=15869" + - "OP_NODE_RPC_ADDR=0.0.0.0" + - "OP_NODE_P2P_ADVERTISE_IP=${IP}" + - "OP_NODE_RPC_PORT=8545" + - "OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log" + - "OP_NODE_VERIFIER_L1_CONFS=4" + - "OP_NODE_L1_RPC_KIND=${ETHEREUM_SEPOLIA_EXECUTION_KIND:-basic}" + - "OP_NODE_L1_TRUST_RPC=${ETHEREUM_SEPOLIA_EXECUTION_TRUST:-false}" + - "OP_NODE_L1_BEACON=${ETHEREUM_SEPOLIA_BEACON_REST}" + - "OP_NODE_L1_BEACON_ARCHIVER=${ETHEREUM_SEPOLIA_BEACON_ARCHIVER}" + - "OP_NODE_OVERRIDE_PECTRABLOBSCHEDULE=1742486400" + networks: + - chains + +volumes: + ink-sepolia-op-geth-pruned-pebble-path: \ No newline at end of file diff --git a/op/geth/lisk-mainnet-op-geth-archive-leveldb-hash.yml b/op/geth/lisk-mainnet-op-geth-archive-leveldb-hash.yml new file mode 100644 index 00000000..22c22df6 --- /dev/null +++ b/op/geth/lisk-mainnet-op-geth-archive-leveldb-hash.yml @@ -0,0 +1,99 @@ +services: + lisk-mainnet-archive: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 6060 + ports: + - "10157:10157" + - "10157:10157/udp" + entrypoint: [ "./geth" ] + restart: unless-stopped + stop_grace_period: 3m + volumes: + - lisk-mainnet-op-geth-archive-leveldb-hash:/data + - .jwtsecret:/jwtsecret + environment: + - "GETH_DATADIR=/data" + - "GETH_OP_NETWORK=lisk-mainnet" + - "GETH_GCMODE=archive" + - "GETH_SYNCMODE=full" + - "GETH_STATE_SCHEME=hash" + - "GETH_DB_ENGINE=leveldb" + - "GETH_NAT=extip:${IP}" + - "GETH_PORT=19809" + - "GETH_WS_PORT=8545" + - "GETH_HTTP=true" + - "GETH_HTTP_ADDR=0.0.0.0" + - "GETH_HTTP_VHOSTS=*" + - "GETH_WS=true" + - "GETH_WS_ADDR=0.0.0.0" + - "GETH_WS_ORIGINS=*" + - "GETH_HTTP_API=eth,net,debug,admin,web3" + - "GETH_AUTHRPC_JWTSECRET=/jwtsecret" + - "GETH_AUTHRPC_ADDR=0.0.0.0" + - "GETH_AUTHRPC_VHOSTS=*" + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.lisk-mainnet-op-geth-archive-leveldb-hash-stripprefix.stripprefix.prefixes=/lisk-mainnet-archive" + - "traefik.http.services.lisk-mainnet-op-geth-archive-leveldb-hash.loadbalancer.server.port=8545" + - "traefik.http.routers.lisk-mainnet-op-geth-archive-leveldb-hash.entrypoints=websecure" + - "traefik.http.routers.lisk-mainnet-op-geth-archive-leveldb-hash.tls.certresolver=myresolver" + - "traefik.http.routers.lisk-mainnet-op-geth-archive-leveldb-hash.rule=Host(`$DOMAIN`) && PathPrefix(`/lisk-mainnet-archive`)" + - "traefik.http.routers.lisk-mainnet-op-geth-archive-leveldb-hash.middlewares=lisk-mainnet-op-geth-archive-leveldb-hash-stripprefix, ipwhitelist" + networks: + - chains + + + lisk-mainnet-archive-node: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 7300 + - 6060 + ports: + - "15157:15157" + - "15157:15157/udp" + entrypoint: [ "./op-node" ] + restart: unless-stopped + volumes: + - .jwtsecret:/jwtsecret + stop_grace_period: 30s + environment: + - "OP_NODE_NETWORK=lisk-mainnet" + - "OP_NODE_SYNCMODE=execution-layer" + - "OP_NODE_L1_ETH_RPC=${ETHEREUM_MAINNET_EXECUTION_RPC}" + - "OP_NODE_L2_ENGINE_AUTH=/jwtsecret" + - "OP_NODE_L2_ENGINE_RPC=http://lisk-mainnet-archive:8551" + - "OP_NODE_LOG_LEVEL=info" + - "OP_NODE_METRICS_ADDR=0.0.0.0" + - "OP_NODE_METRICS_ENABLED=true" + - "OP_NODE_METRICS_PORT=7300" + - "OP_NODE_P2P_LISTEN_IP=0.0.0.0" + - "OP_NODE_P2P_LISTEN_TCP_PORT=15157" + - "OP_NODE_P2P_LISTEN_UDP_PORT=15157" + - "OP_NODE_RPC_ADDR=0.0.0.0" + - "OP_NODE_P2P_ADVERTISE_IP=${IP}" + - "OP_NODE_RPC_PORT=8545" + - "OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log" + - "OP_NODE_VERIFIER_L1_CONFS=4" + - "OP_NODE_L1_RPC_KIND=${ETHEREUM_MAINNET_EXECUTION_KIND:-basic}" + - "OP_NODE_L1_TRUST_RPC=${ETHEREUM_MAINNET_EXECUTION_TRUST:-false}" + - "OP_NODE_L1_BEACON=${ETHEREUM_MAINNET_BEACON_REST}" + - "OP_NODE_L1_BEACON_ARCHIVER=${ETHEREUM_MAINNET_BEACON_ARCHIVER}" + + networks: + - chains + +volumes: + lisk-mainnet-op-geth-archive-leveldb-hash: \ No newline at end of file diff --git a/op/geth/lisk-mainnet-op-geth-pruned-pebble-path.yml b/op/geth/lisk-mainnet-op-geth-pruned-pebble-path.yml new file mode 100644 index 00000000..c3fc8b5a --- /dev/null +++ b/op/geth/lisk-mainnet-op-geth-pruned-pebble-path.yml @@ -0,0 +1,99 @@ +services: + lisk-mainnet: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 6060 + ports: + - "10971:10971" + - "10971:10971/udp" + entrypoint: [ "./geth" ] + restart: unless-stopped + stop_grace_period: 3m + volumes: + - lisk-mainnet-op-geth-pruned-pebble-path:/data + - .jwtsecret:/jwtsecret + environment: + - "GETH_DATADIR=/data" + - "GETH_OP_NETWORK=lisk-mainnet" + - "GETH_GCMODE=full" + - "GETH_SYNCMODE=snap" + - "GETH_STATE_SCHEME=path" + - "GETH_DB_ENGINE=pebble" + - "GETH_NAT=extip:${IP}" + - "GETH_PORT=19809" + - "GETH_WS_PORT=8545" + - "GETH_HTTP=true" + - "GETH_HTTP_ADDR=0.0.0.0" + - "GETH_HTTP_VHOSTS=*" + - "GETH_WS=true" + - "GETH_WS_ADDR=0.0.0.0" + - "GETH_WS_ORIGINS=*" + - "GETH_HTTP_API=eth,net,debug,admin,web3" + - "GETH_AUTHRPC_JWTSECRET=/jwtsecret" + - "GETH_AUTHRPC_ADDR=0.0.0.0" + - "GETH_AUTHRPC_VHOSTS=*" + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.lisk-mainnet-op-geth-pruned-pebble-path-stripprefix.stripprefix.prefixes=/lisk-mainnet" + - "traefik.http.services.lisk-mainnet-op-geth-pruned-pebble-path.loadbalancer.server.port=8545" + - "traefik.http.routers.lisk-mainnet-op-geth-pruned-pebble-path.entrypoints=websecure" + - "traefik.http.routers.lisk-mainnet-op-geth-pruned-pebble-path.tls.certresolver=myresolver" + - "traefik.http.routers.lisk-mainnet-op-geth-pruned-pebble-path.rule=Host(`$DOMAIN`) && PathPrefix(`/lisk-mainnet`)" + - "traefik.http.routers.lisk-mainnet-op-geth-pruned-pebble-path.middlewares=lisk-mainnet-op-geth-pruned-pebble-path-stripprefix, ipwhitelist" + networks: + - chains + + + lisk-mainnet-node: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 7300 + - 6060 + ports: + - "15971:15971" + - "15971:15971/udp" + entrypoint: [ "./op-node" ] + restart: unless-stopped + volumes: + - .jwtsecret:/jwtsecret + stop_grace_period: 30s + environment: + - "OP_NODE_NETWORK=lisk-mainnet" + - "OP_NODE_SYNCMODE=execution-layer" + - "OP_NODE_L1_ETH_RPC=${ETHEREUM_MAINNET_EXECUTION_RPC}" + - "OP_NODE_L2_ENGINE_AUTH=/jwtsecret" + - "OP_NODE_L2_ENGINE_RPC=http://lisk-mainnet:8551" + - "OP_NODE_LOG_LEVEL=info" + - "OP_NODE_METRICS_ADDR=0.0.0.0" + - "OP_NODE_METRICS_ENABLED=true" + - "OP_NODE_METRICS_PORT=7300" + - "OP_NODE_P2P_LISTEN_IP=0.0.0.0" + - "OP_NODE_P2P_LISTEN_TCP_PORT=15971" + - "OP_NODE_P2P_LISTEN_UDP_PORT=15971" + - "OP_NODE_RPC_ADDR=0.0.0.0" + - "OP_NODE_P2P_ADVERTISE_IP=${IP}" + - "OP_NODE_RPC_PORT=8545" + - "OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log" + - "OP_NODE_VERIFIER_L1_CONFS=4" + - "OP_NODE_L1_RPC_KIND=${ETHEREUM_MAINNET_EXECUTION_KIND:-basic}" + - "OP_NODE_L1_TRUST_RPC=${ETHEREUM_MAINNET_EXECUTION_TRUST:-false}" + - "OP_NODE_L1_BEACON=${ETHEREUM_MAINNET_BEACON_REST}" + - "OP_NODE_L1_BEACON_ARCHIVER=${ETHEREUM_MAINNET_BEACON_ARCHIVER}" + + networks: + - chains + +volumes: + lisk-mainnet-op-geth-pruned-pebble-path: \ No newline at end of file diff --git a/op/geth/lisk-sepolia-op-geth-archive-leveldb-hash.yml b/op/geth/lisk-sepolia-op-geth-archive-leveldb-hash.yml new file mode 100644 index 00000000..0dcbbeec --- /dev/null +++ b/op/geth/lisk-sepolia-op-geth-archive-leveldb-hash.yml @@ -0,0 +1,99 @@ +services: + lisk-sepolia-archive: + build: + context: ./op + args: + OP_VERSION: v1.12.1 + GETH_VERSION: v1.101503.1 + OP_PATCH: sepolia/lisk/op-node.patch + expose: + - 8545 + - 6060 + ports: + - "10457:10457" + - "10457:10457/udp" + entrypoint: [ "./geth" ] + restart: unless-stopped + stop_grace_period: 3m + volumes: + - lisk-sepolia-op-geth-archive-leveldb-hash:/data + - .jwtsecret:/jwtsecret + environment: + - "GETH_DATADIR=/data" + - "GETH_OP_NETWORK=lisk-sepolia" + - "GETH_GCMODE=archive" + - "GETH_SYNCMODE=full" + - "GETH_STATE_SCHEME=hash" + - "GETH_DB_ENGINE=leveldb" + - "GETH_NAT=extip:${IP}" + - "GETH_PORT=19809" + - "GETH_WS_PORT=8545" + - "GETH_HTTP=true" + - "GETH_HTTP_ADDR=0.0.0.0" + - "GETH_HTTP_VHOSTS=*" + - "GETH_WS=true" + - "GETH_WS_ADDR=0.0.0.0" + - "GETH_WS_ORIGINS=*" + - "GETH_HTTP_API=eth,net,debug,admin,web3" + - "GETH_AUTHRPC_JWTSECRET=/jwtsecret" + - "GETH_AUTHRPC_ADDR=0.0.0.0" + - "GETH_AUTHRPC_VHOSTS=*" + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.lisk-sepolia-op-geth-archive-leveldb-hash-stripprefix.stripprefix.prefixes=/lisk-sepolia-archive" + - "traefik.http.services.lisk-sepolia-op-geth-archive-leveldb-hash.loadbalancer.server.port=8545" + - "traefik.http.routers.lisk-sepolia-op-geth-archive-leveldb-hash.entrypoints=websecure" + - "traefik.http.routers.lisk-sepolia-op-geth-archive-leveldb-hash.tls.certresolver=myresolver" + - "traefik.http.routers.lisk-sepolia-op-geth-archive-leveldb-hash.rule=Host(`$DOMAIN`) && PathPrefix(`/lisk-sepolia-archive`)" + - "traefik.http.routers.lisk-sepolia-op-geth-archive-leveldb-hash.middlewares=lisk-sepolia-op-geth-archive-leveldb-hash-stripprefix, ipwhitelist" + networks: + - chains + + + lisk-sepolia-archive-node: + build: + context: ./op + args: + OP_VERSION: v1.12.1 + GETH_VERSION: v1.101503.1 + OP_PATCH: sepolia/lisk/op-node.patch + expose: + - 8545 + - 7300 + - 6060 + ports: + - "15457:15457" + - "15457:15457/udp" + entrypoint: [ "./op-node" ] + restart: unless-stopped + volumes: + - .jwtsecret:/jwtsecret + stop_grace_period: 30s + environment: + - "OP_NODE_NETWORK=lisk-sepolia" + - "OP_NODE_SYNCMODE=execution-layer" + - "OP_NODE_L1_ETH_RPC=${ETHEREUM_SEPOLIA_EXECUTION_RPC}" + - "OP_NODE_L2_ENGINE_AUTH=/jwtsecret" + - "OP_NODE_L2_ENGINE_RPC=http://lisk-sepolia-archive:8551" + - "OP_NODE_LOG_LEVEL=info" + - "OP_NODE_METRICS_ADDR=0.0.0.0" + - "OP_NODE_METRICS_ENABLED=true" + - "OP_NODE_METRICS_PORT=7300" + - "OP_NODE_P2P_LISTEN_IP=0.0.0.0" + - "OP_NODE_P2P_LISTEN_TCP_PORT=15457" + - "OP_NODE_P2P_LISTEN_UDP_PORT=15457" + - "OP_NODE_RPC_ADDR=0.0.0.0" + - "OP_NODE_P2P_ADVERTISE_IP=${IP}" + - "OP_NODE_RPC_PORT=8545" + - "OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log" + - "OP_NODE_VERIFIER_L1_CONFS=4" + - "OP_NODE_L1_RPC_KIND=${ETHEREUM_SEPOLIA_EXECUTION_KIND:-basic}" + - "OP_NODE_L1_TRUST_RPC=${ETHEREUM_SEPOLIA_EXECUTION_TRUST:-false}" + - "OP_NODE_L1_BEACON=${ETHEREUM_SEPOLIA_BEACON_REST}" + - "OP_NODE_L1_BEACON_ARCHIVER=${ETHEREUM_SEPOLIA_BEACON_ARCHIVER}" + - "OP_NODE_OVERRIDE_PECTRABLOBSCHEDULE=1742486400" + networks: + - chains + +volumes: + lisk-sepolia-op-geth-archive-leveldb-hash: \ No newline at end of file diff --git a/op/geth/lisk-sepolia-op-geth-pruned-pebble-path.yml b/op/geth/lisk-sepolia-op-geth-pruned-pebble-path.yml new file mode 100644 index 00000000..c9093bf8 --- /dev/null +++ b/op/geth/lisk-sepolia-op-geth-pruned-pebble-path.yml @@ -0,0 +1,99 @@ +services: + lisk-sepolia: + build: + context: ./op + args: + OP_VERSION: v1.12.1 + GETH_VERSION: v1.101503.1 + OP_PATCH: sepolia/lisk/op-node.patch + expose: + - 8545 + - 6060 + ports: + - "10490:10490" + - "10490:10490/udp" + entrypoint: [ "./geth" ] + restart: unless-stopped + stop_grace_period: 3m + volumes: + - lisk-sepolia-op-geth-pruned-pebble-path:/data + - .jwtsecret:/jwtsecret + environment: + - "GETH_DATADIR=/data" + - "GETH_OP_NETWORK=lisk-sepolia" + - "GETH_GCMODE=full" + - "GETH_SYNCMODE=snap" + - "GETH_STATE_SCHEME=path" + - "GETH_DB_ENGINE=pebble" + - "GETH_NAT=extip:${IP}" + - "GETH_PORT=19809" + - "GETH_WS_PORT=8545" + - "GETH_HTTP=true" + - "GETH_HTTP_ADDR=0.0.0.0" + - "GETH_HTTP_VHOSTS=*" + - "GETH_WS=true" + - "GETH_WS_ADDR=0.0.0.0" + - "GETH_WS_ORIGINS=*" + - "GETH_HTTP_API=eth,net,debug,admin,web3" + - "GETH_AUTHRPC_JWTSECRET=/jwtsecret" + - "GETH_AUTHRPC_ADDR=0.0.0.0" + - "GETH_AUTHRPC_VHOSTS=*" + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.lisk-sepolia-op-geth-pruned-pebble-path-stripprefix.stripprefix.prefixes=/lisk-sepolia" + - "traefik.http.services.lisk-sepolia-op-geth-pruned-pebble-path.loadbalancer.server.port=8545" + - "traefik.http.routers.lisk-sepolia-op-geth-pruned-pebble-path.entrypoints=websecure" + - "traefik.http.routers.lisk-sepolia-op-geth-pruned-pebble-path.tls.certresolver=myresolver" + - "traefik.http.routers.lisk-sepolia-op-geth-pruned-pebble-path.rule=Host(`$DOMAIN`) && PathPrefix(`/lisk-sepolia`)" + - "traefik.http.routers.lisk-sepolia-op-geth-pruned-pebble-path.middlewares=lisk-sepolia-op-geth-pruned-pebble-path-stripprefix, ipwhitelist" + networks: + - chains + + + lisk-sepolia-node: + build: + context: ./op + args: + OP_VERSION: v1.12.1 + GETH_VERSION: v1.101503.1 + OP_PATCH: sepolia/lisk/op-node.patch + expose: + - 8545 + - 7300 + - 6060 + ports: + - "15490:15490" + - "15490:15490/udp" + entrypoint: [ "./op-node" ] + restart: unless-stopped + volumes: + - .jwtsecret:/jwtsecret + stop_grace_period: 30s + environment: + - "OP_NODE_NETWORK=lisk-sepolia" + - "OP_NODE_SYNCMODE=execution-layer" + - "OP_NODE_L1_ETH_RPC=${ETHEREUM_SEPOLIA_EXECUTION_RPC}" + - "OP_NODE_L2_ENGINE_AUTH=/jwtsecret" + - "OP_NODE_L2_ENGINE_RPC=http://lisk-sepolia:8551" + - "OP_NODE_LOG_LEVEL=info" + - "OP_NODE_METRICS_ADDR=0.0.0.0" + - "OP_NODE_METRICS_ENABLED=true" + - "OP_NODE_METRICS_PORT=7300" + - "OP_NODE_P2P_LISTEN_IP=0.0.0.0" + - "OP_NODE_P2P_LISTEN_TCP_PORT=15490" + - "OP_NODE_P2P_LISTEN_UDP_PORT=15490" + - "OP_NODE_RPC_ADDR=0.0.0.0" + - "OP_NODE_P2P_ADVERTISE_IP=${IP}" + - "OP_NODE_RPC_PORT=8545" + - "OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log" + - "OP_NODE_VERIFIER_L1_CONFS=4" + - "OP_NODE_L1_RPC_KIND=${ETHEREUM_SEPOLIA_EXECUTION_KIND:-basic}" + - "OP_NODE_L1_TRUST_RPC=${ETHEREUM_SEPOLIA_EXECUTION_TRUST:-false}" + - "OP_NODE_L1_BEACON=${ETHEREUM_SEPOLIA_BEACON_REST}" + - "OP_NODE_L1_BEACON_ARCHIVER=${ETHEREUM_SEPOLIA_BEACON_ARCHIVER}" + - "OP_NODE_OVERRIDE_PECTRABLOBSCHEDULE=1742486400" + networks: + - chains + +volumes: + lisk-sepolia-op-geth-pruned-pebble-path: \ No newline at end of file diff --git a/op/geth/metal-mainnet-op-geth-archive-leveldb-hash.yml b/op/geth/metal-mainnet-op-geth-archive-leveldb-hash.yml new file mode 100644 index 00000000..9d8e50c7 --- /dev/null +++ b/op/geth/metal-mainnet-op-geth-archive-leveldb-hash.yml @@ -0,0 +1,99 @@ +services: + metal-mainnet-archive: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 6060 + ports: + - "10324:10324" + - "10324:10324/udp" + entrypoint: [ "./geth" ] + restart: unless-stopped + stop_grace_period: 3m + volumes: + - metal-mainnet-op-geth-archive-leveldb-hash:/data + - .jwtsecret:/jwtsecret + environment: + - "GETH_DATADIR=/data" + - "GETH_OP_NETWORK=metal-mainnet" + - "GETH_GCMODE=archive" + - "GETH_SYNCMODE=full" + - "GETH_STATE_SCHEME=hash" + - "GETH_DB_ENGINE=leveldb" + - "GETH_NAT=extip:${IP}" + - "GETH_PORT=19809" + - "GETH_WS_PORT=8545" + - "GETH_HTTP=true" + - "GETH_HTTP_ADDR=0.0.0.0" + - "GETH_HTTP_VHOSTS=*" + - "GETH_WS=true" + - "GETH_WS_ADDR=0.0.0.0" + - "GETH_WS_ORIGINS=*" + - "GETH_HTTP_API=eth,net,debug,admin,web3" + - "GETH_AUTHRPC_JWTSECRET=/jwtsecret" + - "GETH_AUTHRPC_ADDR=0.0.0.0" + - "GETH_AUTHRPC_VHOSTS=*" + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.metal-mainnet-op-geth-archive-leveldb-hash-stripprefix.stripprefix.prefixes=/metal-mainnet-archive" + - "traefik.http.services.metal-mainnet-op-geth-archive-leveldb-hash.loadbalancer.server.port=8545" + - "traefik.http.routers.metal-mainnet-op-geth-archive-leveldb-hash.entrypoints=websecure" + - "traefik.http.routers.metal-mainnet-op-geth-archive-leveldb-hash.tls.certresolver=myresolver" + - "traefik.http.routers.metal-mainnet-op-geth-archive-leveldb-hash.rule=Host(`$DOMAIN`) && PathPrefix(`/metal-mainnet-archive`)" + - "traefik.http.routers.metal-mainnet-op-geth-archive-leveldb-hash.middlewares=metal-mainnet-op-geth-archive-leveldb-hash-stripprefix, ipwhitelist" + networks: + - chains + + + metal-mainnet-archive-node: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 7300 + - 6060 + ports: + - "15324:15324" + - "15324:15324/udp" + entrypoint: [ "./op-node" ] + restart: unless-stopped + volumes: + - .jwtsecret:/jwtsecret + stop_grace_period: 30s + environment: + - "OP_NODE_NETWORK=metal-mainnet" + - "OP_NODE_SYNCMODE=execution-layer" + - "OP_NODE_L1_ETH_RPC=${ETHEREUM_MAINNET_EXECUTION_RPC}" + - "OP_NODE_L2_ENGINE_AUTH=/jwtsecret" + - "OP_NODE_L2_ENGINE_RPC=http://metal-mainnet-archive:8551" + - "OP_NODE_LOG_LEVEL=info" + - "OP_NODE_METRICS_ADDR=0.0.0.0" + - "OP_NODE_METRICS_ENABLED=true" + - "OP_NODE_METRICS_PORT=7300" + - "OP_NODE_P2P_LISTEN_IP=0.0.0.0" + - "OP_NODE_P2P_LISTEN_TCP_PORT=15324" + - "OP_NODE_P2P_LISTEN_UDP_PORT=15324" + - "OP_NODE_RPC_ADDR=0.0.0.0" + - "OP_NODE_P2P_ADVERTISE_IP=${IP}" + - "OP_NODE_RPC_PORT=8545" + - "OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log" + - "OP_NODE_VERIFIER_L1_CONFS=4" + - "OP_NODE_L1_RPC_KIND=${ETHEREUM_MAINNET_EXECUTION_KIND:-basic}" + - "OP_NODE_L1_TRUST_RPC=${ETHEREUM_MAINNET_EXECUTION_TRUST:-false}" + - "OP_NODE_L1_BEACON=${ETHEREUM_MAINNET_BEACON_REST}" + - "OP_NODE_L1_BEACON_ARCHIVER=${ETHEREUM_MAINNET_BEACON_ARCHIVER}" + + networks: + - chains + +volumes: + metal-mainnet-op-geth-archive-leveldb-hash: \ No newline at end of file diff --git a/op/geth/metal-mainnet-op-geth-pruned-pebble-path.yml b/op/geth/metal-mainnet-op-geth-pruned-pebble-path.yml new file mode 100644 index 00000000..e0213172 --- /dev/null +++ b/op/geth/metal-mainnet-op-geth-pruned-pebble-path.yml @@ -0,0 +1,99 @@ +services: + metal-mainnet: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 6060 + ports: + - "10821:10821" + - "10821:10821/udp" + entrypoint: [ "./geth" ] + restart: unless-stopped + stop_grace_period: 3m + volumes: + - metal-mainnet-op-geth-pruned-pebble-path:/data + - .jwtsecret:/jwtsecret + environment: + - "GETH_DATADIR=/data" + - "GETH_OP_NETWORK=metal-mainnet" + - "GETH_GCMODE=full" + - "GETH_SYNCMODE=snap" + - "GETH_STATE_SCHEME=path" + - "GETH_DB_ENGINE=pebble" + - "GETH_NAT=extip:${IP}" + - "GETH_PORT=19809" + - "GETH_WS_PORT=8545" + - "GETH_HTTP=true" + - "GETH_HTTP_ADDR=0.0.0.0" + - "GETH_HTTP_VHOSTS=*" + - "GETH_WS=true" + - "GETH_WS_ADDR=0.0.0.0" + - "GETH_WS_ORIGINS=*" + - "GETH_HTTP_API=eth,net,debug,admin,web3" + - "GETH_AUTHRPC_JWTSECRET=/jwtsecret" + - "GETH_AUTHRPC_ADDR=0.0.0.0" + - "GETH_AUTHRPC_VHOSTS=*" + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.metal-mainnet-op-geth-pruned-pebble-path-stripprefix.stripprefix.prefixes=/metal-mainnet" + - "traefik.http.services.metal-mainnet-op-geth-pruned-pebble-path.loadbalancer.server.port=8545" + - "traefik.http.routers.metal-mainnet-op-geth-pruned-pebble-path.entrypoints=websecure" + - "traefik.http.routers.metal-mainnet-op-geth-pruned-pebble-path.tls.certresolver=myresolver" + - "traefik.http.routers.metal-mainnet-op-geth-pruned-pebble-path.rule=Host(`$DOMAIN`) && PathPrefix(`/metal-mainnet`)" + - "traefik.http.routers.metal-mainnet-op-geth-pruned-pebble-path.middlewares=metal-mainnet-op-geth-pruned-pebble-path-stripprefix, ipwhitelist" + networks: + - chains + + + metal-mainnet-node: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 7300 + - 6060 + ports: + - "15821:15821" + - "15821:15821/udp" + entrypoint: [ "./op-node" ] + restart: unless-stopped + volumes: + - .jwtsecret:/jwtsecret + stop_grace_period: 30s + environment: + - "OP_NODE_NETWORK=metal-mainnet" + - "OP_NODE_SYNCMODE=execution-layer" + - "OP_NODE_L1_ETH_RPC=${ETHEREUM_MAINNET_EXECUTION_RPC}" + - "OP_NODE_L2_ENGINE_AUTH=/jwtsecret" + - "OP_NODE_L2_ENGINE_RPC=http://metal-mainnet:8551" + - "OP_NODE_LOG_LEVEL=info" + - "OP_NODE_METRICS_ADDR=0.0.0.0" + - "OP_NODE_METRICS_ENABLED=true" + - "OP_NODE_METRICS_PORT=7300" + - "OP_NODE_P2P_LISTEN_IP=0.0.0.0" + - "OP_NODE_P2P_LISTEN_TCP_PORT=15821" + - "OP_NODE_P2P_LISTEN_UDP_PORT=15821" + - "OP_NODE_RPC_ADDR=0.0.0.0" + - "OP_NODE_P2P_ADVERTISE_IP=${IP}" + - "OP_NODE_RPC_PORT=8545" + - "OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log" + - "OP_NODE_VERIFIER_L1_CONFS=4" + - "OP_NODE_L1_RPC_KIND=${ETHEREUM_MAINNET_EXECUTION_KIND:-basic}" + - "OP_NODE_L1_TRUST_RPC=${ETHEREUM_MAINNET_EXECUTION_TRUST:-false}" + - "OP_NODE_L1_BEACON=${ETHEREUM_MAINNET_BEACON_REST}" + - "OP_NODE_L1_BEACON_ARCHIVER=${ETHEREUM_MAINNET_BEACON_ARCHIVER}" + + networks: + - chains + +volumes: + metal-mainnet-op-geth-pruned-pebble-path: \ No newline at end of file diff --git a/op/geth/metal-sepolia-op-geth-archive-leveldb-hash.yml b/op/geth/metal-sepolia-op-geth-archive-leveldb-hash.yml new file mode 100644 index 00000000..04608b92 --- /dev/null +++ b/op/geth/metal-sepolia-op-geth-archive-leveldb-hash.yml @@ -0,0 +1,99 @@ +services: + metal-sepolia-archive: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 6060 + ports: + - "10770:10770" + - "10770:10770/udp" + entrypoint: [ "./geth" ] + restart: unless-stopped + stop_grace_period: 3m + volumes: + - metal-sepolia-op-geth-archive-leveldb-hash:/data + - .jwtsecret:/jwtsecret + environment: + - "GETH_DATADIR=/data" + - "GETH_OP_NETWORK=metal-sepolia" + - "GETH_GCMODE=archive" + - "GETH_SYNCMODE=full" + - "GETH_STATE_SCHEME=hash" + - "GETH_DB_ENGINE=leveldb" + - "GETH_NAT=extip:${IP}" + - "GETH_PORT=19809" + - "GETH_WS_PORT=8545" + - "GETH_HTTP=true" + - "GETH_HTTP_ADDR=0.0.0.0" + - "GETH_HTTP_VHOSTS=*" + - "GETH_WS=true" + - "GETH_WS_ADDR=0.0.0.0" + - "GETH_WS_ORIGINS=*" + - "GETH_HTTP_API=eth,net,debug,admin,web3" + - "GETH_AUTHRPC_JWTSECRET=/jwtsecret" + - "GETH_AUTHRPC_ADDR=0.0.0.0" + - "GETH_AUTHRPC_VHOSTS=*" + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.metal-sepolia-op-geth-archive-leveldb-hash-stripprefix.stripprefix.prefixes=/metal-sepolia-archive" + - "traefik.http.services.metal-sepolia-op-geth-archive-leveldb-hash.loadbalancer.server.port=8545" + - "traefik.http.routers.metal-sepolia-op-geth-archive-leveldb-hash.entrypoints=websecure" + - "traefik.http.routers.metal-sepolia-op-geth-archive-leveldb-hash.tls.certresolver=myresolver" + - "traefik.http.routers.metal-sepolia-op-geth-archive-leveldb-hash.rule=Host(`$DOMAIN`) && PathPrefix(`/metal-sepolia-archive`)" + - "traefik.http.routers.metal-sepolia-op-geth-archive-leveldb-hash.middlewares=metal-sepolia-op-geth-archive-leveldb-hash-stripprefix, ipwhitelist" + networks: + - chains + + + metal-sepolia-archive-node: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 7300 + - 6060 + ports: + - "15770:15770" + - "15770:15770/udp" + entrypoint: [ "./op-node" ] + restart: unless-stopped + volumes: + - .jwtsecret:/jwtsecret + stop_grace_period: 30s + environment: + - "OP_NODE_NETWORK=metal-sepolia" + - "OP_NODE_SYNCMODE=execution-layer" + - "OP_NODE_L1_ETH_RPC=${ETHEREUM_SEPOLIA_EXECUTION_RPC}" + - "OP_NODE_L2_ENGINE_AUTH=/jwtsecret" + - "OP_NODE_L2_ENGINE_RPC=http://metal-sepolia-archive:8551" + - "OP_NODE_LOG_LEVEL=info" + - "OP_NODE_METRICS_ADDR=0.0.0.0" + - "OP_NODE_METRICS_ENABLED=true" + - "OP_NODE_METRICS_PORT=7300" + - "OP_NODE_P2P_LISTEN_IP=0.0.0.0" + - "OP_NODE_P2P_LISTEN_TCP_PORT=15770" + - "OP_NODE_P2P_LISTEN_UDP_PORT=15770" + - "OP_NODE_RPC_ADDR=0.0.0.0" + - "OP_NODE_P2P_ADVERTISE_IP=${IP}" + - "OP_NODE_RPC_PORT=8545" + - "OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log" + - "OP_NODE_VERIFIER_L1_CONFS=4" + - "OP_NODE_L1_RPC_KIND=${ETHEREUM_SEPOLIA_EXECUTION_KIND:-basic}" + - "OP_NODE_L1_TRUST_RPC=${ETHEREUM_SEPOLIA_EXECUTION_TRUST:-false}" + - "OP_NODE_L1_BEACON=${ETHEREUM_SEPOLIA_BEACON_REST}" + - "OP_NODE_L1_BEACON_ARCHIVER=${ETHEREUM_SEPOLIA_BEACON_ARCHIVER}" + - "OP_NODE_OVERRIDE_PECTRABLOBSCHEDULE=1742486400" + networks: + - chains + +volumes: + metal-sepolia-op-geth-archive-leveldb-hash: \ No newline at end of file diff --git a/op/geth/metal-sepolia-op-geth-pruned-pebble-path.yml b/op/geth/metal-sepolia-op-geth-pruned-pebble-path.yml new file mode 100644 index 00000000..8b407f28 --- /dev/null +++ b/op/geth/metal-sepolia-op-geth-pruned-pebble-path.yml @@ -0,0 +1,99 @@ +services: + metal-sepolia: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 6060 + ports: + - "10701:10701" + - "10701:10701/udp" + entrypoint: [ "./geth" ] + restart: unless-stopped + stop_grace_period: 3m + volumes: + - metal-sepolia-op-geth-pruned-pebble-path:/data + - .jwtsecret:/jwtsecret + environment: + - "GETH_DATADIR=/data" + - "GETH_OP_NETWORK=metal-sepolia" + - "GETH_GCMODE=full" + - "GETH_SYNCMODE=snap" + - "GETH_STATE_SCHEME=path" + - "GETH_DB_ENGINE=pebble" + - "GETH_NAT=extip:${IP}" + - "GETH_PORT=19809" + - "GETH_WS_PORT=8545" + - "GETH_HTTP=true" + - "GETH_HTTP_ADDR=0.0.0.0" + - "GETH_HTTP_VHOSTS=*" + - "GETH_WS=true" + - "GETH_WS_ADDR=0.0.0.0" + - "GETH_WS_ORIGINS=*" + - "GETH_HTTP_API=eth,net,debug,admin,web3" + - "GETH_AUTHRPC_JWTSECRET=/jwtsecret" + - "GETH_AUTHRPC_ADDR=0.0.0.0" + - "GETH_AUTHRPC_VHOSTS=*" + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.metal-sepolia-op-geth-pruned-pebble-path-stripprefix.stripprefix.prefixes=/metal-sepolia" + - "traefik.http.services.metal-sepolia-op-geth-pruned-pebble-path.loadbalancer.server.port=8545" + - "traefik.http.routers.metal-sepolia-op-geth-pruned-pebble-path.entrypoints=websecure" + - "traefik.http.routers.metal-sepolia-op-geth-pruned-pebble-path.tls.certresolver=myresolver" + - "traefik.http.routers.metal-sepolia-op-geth-pruned-pebble-path.rule=Host(`$DOMAIN`) && PathPrefix(`/metal-sepolia`)" + - "traefik.http.routers.metal-sepolia-op-geth-pruned-pebble-path.middlewares=metal-sepolia-op-geth-pruned-pebble-path-stripprefix, ipwhitelist" + networks: + - chains + + + metal-sepolia-node: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 7300 + - 6060 + ports: + - "15701:15701" + - "15701:15701/udp" + entrypoint: [ "./op-node" ] + restart: unless-stopped + volumes: + - .jwtsecret:/jwtsecret + stop_grace_period: 30s + environment: + - "OP_NODE_NETWORK=metal-sepolia" + - "OP_NODE_SYNCMODE=execution-layer" + - "OP_NODE_L1_ETH_RPC=${ETHEREUM_SEPOLIA_EXECUTION_RPC}" + - "OP_NODE_L2_ENGINE_AUTH=/jwtsecret" + - "OP_NODE_L2_ENGINE_RPC=http://metal-sepolia:8551" + - "OP_NODE_LOG_LEVEL=info" + - "OP_NODE_METRICS_ADDR=0.0.0.0" + - "OP_NODE_METRICS_ENABLED=true" + - "OP_NODE_METRICS_PORT=7300" + - "OP_NODE_P2P_LISTEN_IP=0.0.0.0" + - "OP_NODE_P2P_LISTEN_TCP_PORT=15701" + - "OP_NODE_P2P_LISTEN_UDP_PORT=15701" + - "OP_NODE_RPC_ADDR=0.0.0.0" + - "OP_NODE_P2P_ADVERTISE_IP=${IP}" + - "OP_NODE_RPC_PORT=8545" + - "OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log" + - "OP_NODE_VERIFIER_L1_CONFS=4" + - "OP_NODE_L1_RPC_KIND=${ETHEREUM_SEPOLIA_EXECUTION_KIND:-basic}" + - "OP_NODE_L1_TRUST_RPC=${ETHEREUM_SEPOLIA_EXECUTION_TRUST:-false}" + - "OP_NODE_L1_BEACON=${ETHEREUM_SEPOLIA_BEACON_REST}" + - "OP_NODE_L1_BEACON_ARCHIVER=${ETHEREUM_SEPOLIA_BEACON_ARCHIVER}" + - "OP_NODE_OVERRIDE_PECTRABLOBSCHEDULE=1742486400" + networks: + - chains + +volumes: + metal-sepolia-op-geth-pruned-pebble-path: \ No newline at end of file diff --git a/op/geth/mode-mainnet-op-geth-archive-leveldb-hash.yml b/op/geth/mode-mainnet-op-geth-archive-leveldb-hash.yml new file mode 100644 index 00000000..126b2f51 --- /dev/null +++ b/op/geth/mode-mainnet-op-geth-archive-leveldb-hash.yml @@ -0,0 +1,99 @@ +services: + mode-mainnet-archive: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 6060 + ports: + - "10430:10430" + - "10430:10430/udp" + entrypoint: [ "./geth" ] + restart: unless-stopped + stop_grace_period: 3m + volumes: + - mode-mainnet-op-geth-archive-leveldb-hash:/data + - .jwtsecret:/jwtsecret + environment: + - "GETH_DATADIR=/data" + - "GETH_OP_NETWORK=mode-mainnet" + - "GETH_GCMODE=archive" + - "GETH_SYNCMODE=full" + - "GETH_STATE_SCHEME=hash" + - "GETH_DB_ENGINE=leveldb" + - "GETH_NAT=extip:${IP}" + - "GETH_PORT=19809" + - "GETH_WS_PORT=8545" + - "GETH_HTTP=true" + - "GETH_HTTP_ADDR=0.0.0.0" + - "GETH_HTTP_VHOSTS=*" + - "GETH_WS=true" + - "GETH_WS_ADDR=0.0.0.0" + - "GETH_WS_ORIGINS=*" + - "GETH_HTTP_API=eth,net,debug,admin,web3" + - "GETH_AUTHRPC_JWTSECRET=/jwtsecret" + - "GETH_AUTHRPC_ADDR=0.0.0.0" + - "GETH_AUTHRPC_VHOSTS=*" + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.mode-mainnet-op-geth-archive-leveldb-hash-stripprefix.stripprefix.prefixes=/mode-mainnet-archive" + - "traefik.http.services.mode-mainnet-op-geth-archive-leveldb-hash.loadbalancer.server.port=8545" + - "traefik.http.routers.mode-mainnet-op-geth-archive-leveldb-hash.entrypoints=websecure" + - "traefik.http.routers.mode-mainnet-op-geth-archive-leveldb-hash.tls.certresolver=myresolver" + - "traefik.http.routers.mode-mainnet-op-geth-archive-leveldb-hash.rule=Host(`$DOMAIN`) && PathPrefix(`/mode-mainnet-archive`)" + - "traefik.http.routers.mode-mainnet-op-geth-archive-leveldb-hash.middlewares=mode-mainnet-op-geth-archive-leveldb-hash-stripprefix, ipwhitelist" + networks: + - chains + + + mode-mainnet-archive-node: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 7300 + - 6060 + ports: + - "15430:15430" + - "15430:15430/udp" + entrypoint: [ "./op-node" ] + restart: unless-stopped + volumes: + - .jwtsecret:/jwtsecret + stop_grace_period: 30s + environment: + - "OP_NODE_NETWORK=mode-mainnet" + - "OP_NODE_SYNCMODE=execution-layer" + - "OP_NODE_L1_ETH_RPC=${ETHEREUM_MAINNET_EXECUTION_RPC}" + - "OP_NODE_L2_ENGINE_AUTH=/jwtsecret" + - "OP_NODE_L2_ENGINE_RPC=http://mode-mainnet-archive:8551" + - "OP_NODE_LOG_LEVEL=info" + - "OP_NODE_METRICS_ADDR=0.0.0.0" + - "OP_NODE_METRICS_ENABLED=true" + - "OP_NODE_METRICS_PORT=7300" + - "OP_NODE_P2P_LISTEN_IP=0.0.0.0" + - "OP_NODE_P2P_LISTEN_TCP_PORT=15430" + - "OP_NODE_P2P_LISTEN_UDP_PORT=15430" + - "OP_NODE_RPC_ADDR=0.0.0.0" + - "OP_NODE_P2P_ADVERTISE_IP=${IP}" + - "OP_NODE_RPC_PORT=8545" + - "OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log" + - "OP_NODE_VERIFIER_L1_CONFS=4" + - "OP_NODE_L1_RPC_KIND=${ETHEREUM_MAINNET_EXECUTION_KIND:-basic}" + - "OP_NODE_L1_TRUST_RPC=${ETHEREUM_MAINNET_EXECUTION_TRUST:-false}" + - "OP_NODE_L1_BEACON=${ETHEREUM_MAINNET_BEACON_REST}" + - "OP_NODE_L1_BEACON_ARCHIVER=${ETHEREUM_MAINNET_BEACON_ARCHIVER}" + + networks: + - chains + +volumes: + mode-mainnet-op-geth-archive-leveldb-hash: \ No newline at end of file diff --git a/op/geth/mode-mainnet-op-geth-pruned-pebble-path.yml b/op/geth/mode-mainnet-op-geth-pruned-pebble-path.yml new file mode 100644 index 00000000..4e905b17 --- /dev/null +++ b/op/geth/mode-mainnet-op-geth-pruned-pebble-path.yml @@ -0,0 +1,99 @@ +services: + mode-mainnet: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 6060 + ports: + - "10054:10054" + - "10054:10054/udp" + entrypoint: [ "./geth" ] + restart: unless-stopped + stop_grace_period: 3m + volumes: + - mode-mainnet-op-geth-pruned-pebble-path:/data + - .jwtsecret:/jwtsecret + environment: + - "GETH_DATADIR=/data" + - "GETH_OP_NETWORK=mode-mainnet" + - "GETH_GCMODE=full" + - "GETH_SYNCMODE=snap" + - "GETH_STATE_SCHEME=path" + - "GETH_DB_ENGINE=pebble" + - "GETH_NAT=extip:${IP}" + - "GETH_PORT=19809" + - "GETH_WS_PORT=8545" + - "GETH_HTTP=true" + - "GETH_HTTP_ADDR=0.0.0.0" + - "GETH_HTTP_VHOSTS=*" + - "GETH_WS=true" + - "GETH_WS_ADDR=0.0.0.0" + - "GETH_WS_ORIGINS=*" + - "GETH_HTTP_API=eth,net,debug,admin,web3" + - "GETH_AUTHRPC_JWTSECRET=/jwtsecret" + - "GETH_AUTHRPC_ADDR=0.0.0.0" + - "GETH_AUTHRPC_VHOSTS=*" + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.mode-mainnet-op-geth-pruned-pebble-path-stripprefix.stripprefix.prefixes=/mode-mainnet" + - "traefik.http.services.mode-mainnet-op-geth-pruned-pebble-path.loadbalancer.server.port=8545" + - "traefik.http.routers.mode-mainnet-op-geth-pruned-pebble-path.entrypoints=websecure" + - "traefik.http.routers.mode-mainnet-op-geth-pruned-pebble-path.tls.certresolver=myresolver" + - "traefik.http.routers.mode-mainnet-op-geth-pruned-pebble-path.rule=Host(`$DOMAIN`) && PathPrefix(`/mode-mainnet`)" + - "traefik.http.routers.mode-mainnet-op-geth-pruned-pebble-path.middlewares=mode-mainnet-op-geth-pruned-pebble-path-stripprefix, ipwhitelist" + networks: + - chains + + + mode-mainnet-node: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 7300 + - 6060 + ports: + - "15054:15054" + - "15054:15054/udp" + entrypoint: [ "./op-node" ] + restart: unless-stopped + volumes: + - .jwtsecret:/jwtsecret + stop_grace_period: 30s + environment: + - "OP_NODE_NETWORK=mode-mainnet" + - "OP_NODE_SYNCMODE=execution-layer" + - "OP_NODE_L1_ETH_RPC=${ETHEREUM_MAINNET_EXECUTION_RPC}" + - "OP_NODE_L2_ENGINE_AUTH=/jwtsecret" + - "OP_NODE_L2_ENGINE_RPC=http://mode-mainnet:8551" + - "OP_NODE_LOG_LEVEL=info" + - "OP_NODE_METRICS_ADDR=0.0.0.0" + - "OP_NODE_METRICS_ENABLED=true" + - "OP_NODE_METRICS_PORT=7300" + - "OP_NODE_P2P_LISTEN_IP=0.0.0.0" + - "OP_NODE_P2P_LISTEN_TCP_PORT=15054" + - "OP_NODE_P2P_LISTEN_UDP_PORT=15054" + - "OP_NODE_RPC_ADDR=0.0.0.0" + - "OP_NODE_P2P_ADVERTISE_IP=${IP}" + - "OP_NODE_RPC_PORT=8545" + - "OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log" + - "OP_NODE_VERIFIER_L1_CONFS=4" + - "OP_NODE_L1_RPC_KIND=${ETHEREUM_MAINNET_EXECUTION_KIND:-basic}" + - "OP_NODE_L1_TRUST_RPC=${ETHEREUM_MAINNET_EXECUTION_TRUST:-false}" + - "OP_NODE_L1_BEACON=${ETHEREUM_MAINNET_BEACON_REST}" + - "OP_NODE_L1_BEACON_ARCHIVER=${ETHEREUM_MAINNET_BEACON_ARCHIVER}" + + networks: + - chains + +volumes: + mode-mainnet-op-geth-pruned-pebble-path: \ No newline at end of file diff --git a/op/geth/mode-sepolia-op-geth-archive-leveldb-hash.yml b/op/geth/mode-sepolia-op-geth-archive-leveldb-hash.yml new file mode 100644 index 00000000..29efe3ca --- /dev/null +++ b/op/geth/mode-sepolia-op-geth-archive-leveldb-hash.yml @@ -0,0 +1,99 @@ +services: + mode-sepolia-archive: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 6060 + ports: + - "10835:10835" + - "10835:10835/udp" + entrypoint: [ "./geth" ] + restart: unless-stopped + stop_grace_period: 3m + volumes: + - mode-sepolia-op-geth-archive-leveldb-hash:/data + - .jwtsecret:/jwtsecret + environment: + - "GETH_DATADIR=/data" + - "GETH_OP_NETWORK=mode-sepolia" + - "GETH_GCMODE=archive" + - "GETH_SYNCMODE=full" + - "GETH_STATE_SCHEME=hash" + - "GETH_DB_ENGINE=leveldb" + - "GETH_NAT=extip:${IP}" + - "GETH_PORT=19809" + - "GETH_WS_PORT=8545" + - "GETH_HTTP=true" + - "GETH_HTTP_ADDR=0.0.0.0" + - "GETH_HTTP_VHOSTS=*" + - "GETH_WS=true" + - "GETH_WS_ADDR=0.0.0.0" + - "GETH_WS_ORIGINS=*" + - "GETH_HTTP_API=eth,net,debug,admin,web3" + - "GETH_AUTHRPC_JWTSECRET=/jwtsecret" + - "GETH_AUTHRPC_ADDR=0.0.0.0" + - "GETH_AUTHRPC_VHOSTS=*" + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.mode-sepolia-op-geth-archive-leveldb-hash-stripprefix.stripprefix.prefixes=/mode-sepolia-archive" + - "traefik.http.services.mode-sepolia-op-geth-archive-leveldb-hash.loadbalancer.server.port=8545" + - "traefik.http.routers.mode-sepolia-op-geth-archive-leveldb-hash.entrypoints=websecure" + - "traefik.http.routers.mode-sepolia-op-geth-archive-leveldb-hash.tls.certresolver=myresolver" + - "traefik.http.routers.mode-sepolia-op-geth-archive-leveldb-hash.rule=Host(`$DOMAIN`) && PathPrefix(`/mode-sepolia-archive`)" + - "traefik.http.routers.mode-sepolia-op-geth-archive-leveldb-hash.middlewares=mode-sepolia-op-geth-archive-leveldb-hash-stripprefix, ipwhitelist" + networks: + - chains + + + mode-sepolia-archive-node: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 7300 + - 6060 + ports: + - "15835:15835" + - "15835:15835/udp" + entrypoint: [ "./op-node" ] + restart: unless-stopped + volumes: + - .jwtsecret:/jwtsecret + stop_grace_period: 30s + environment: + - "OP_NODE_NETWORK=mode-sepolia" + - "OP_NODE_SYNCMODE=execution-layer" + - "OP_NODE_L1_ETH_RPC=${ETHEREUM_SEPOLIA_EXECUTION_RPC}" + - "OP_NODE_L2_ENGINE_AUTH=/jwtsecret" + - "OP_NODE_L2_ENGINE_RPC=http://mode-sepolia-archive:8551" + - "OP_NODE_LOG_LEVEL=info" + - "OP_NODE_METRICS_ADDR=0.0.0.0" + - "OP_NODE_METRICS_ENABLED=true" + - "OP_NODE_METRICS_PORT=7300" + - "OP_NODE_P2P_LISTEN_IP=0.0.0.0" + - "OP_NODE_P2P_LISTEN_TCP_PORT=15835" + - "OP_NODE_P2P_LISTEN_UDP_PORT=15835" + - "OP_NODE_RPC_ADDR=0.0.0.0" + - "OP_NODE_P2P_ADVERTISE_IP=${IP}" + - "OP_NODE_RPC_PORT=8545" + - "OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log" + - "OP_NODE_VERIFIER_L1_CONFS=4" + - "OP_NODE_L1_RPC_KIND=${ETHEREUM_SEPOLIA_EXECUTION_KIND:-basic}" + - "OP_NODE_L1_TRUST_RPC=${ETHEREUM_SEPOLIA_EXECUTION_TRUST:-false}" + - "OP_NODE_L1_BEACON=${ETHEREUM_SEPOLIA_BEACON_REST}" + - "OP_NODE_L1_BEACON_ARCHIVER=${ETHEREUM_SEPOLIA_BEACON_ARCHIVER}" + - "OP_NODE_OVERRIDE_PECTRABLOBSCHEDULE=1742486400" + networks: + - chains + +volumes: + mode-sepolia-op-geth-archive-leveldb-hash: \ No newline at end of file diff --git a/op/geth/mode-sepolia-op-geth-pruned-pebble-path.yml b/op/geth/mode-sepolia-op-geth-pruned-pebble-path.yml new file mode 100644 index 00000000..469c5ed3 --- /dev/null +++ b/op/geth/mode-sepolia-op-geth-pruned-pebble-path.yml @@ -0,0 +1,99 @@ +services: + mode-sepolia: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 6060 + ports: + - "10308:10308" + - "10308:10308/udp" + entrypoint: [ "./geth" ] + restart: unless-stopped + stop_grace_period: 3m + volumes: + - mode-sepolia-op-geth-pruned-pebble-path:/data + - .jwtsecret:/jwtsecret + environment: + - "GETH_DATADIR=/data" + - "GETH_OP_NETWORK=mode-sepolia" + - "GETH_GCMODE=full" + - "GETH_SYNCMODE=snap" + - "GETH_STATE_SCHEME=path" + - "GETH_DB_ENGINE=pebble" + - "GETH_NAT=extip:${IP}" + - "GETH_PORT=19809" + - "GETH_WS_PORT=8545" + - "GETH_HTTP=true" + - "GETH_HTTP_ADDR=0.0.0.0" + - "GETH_HTTP_VHOSTS=*" + - "GETH_WS=true" + - "GETH_WS_ADDR=0.0.0.0" + - "GETH_WS_ORIGINS=*" + - "GETH_HTTP_API=eth,net,debug,admin,web3" + - "GETH_AUTHRPC_JWTSECRET=/jwtsecret" + - "GETH_AUTHRPC_ADDR=0.0.0.0" + - "GETH_AUTHRPC_VHOSTS=*" + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.mode-sepolia-op-geth-pruned-pebble-path-stripprefix.stripprefix.prefixes=/mode-sepolia" + - "traefik.http.services.mode-sepolia-op-geth-pruned-pebble-path.loadbalancer.server.port=8545" + - "traefik.http.routers.mode-sepolia-op-geth-pruned-pebble-path.entrypoints=websecure" + - "traefik.http.routers.mode-sepolia-op-geth-pruned-pebble-path.tls.certresolver=myresolver" + - "traefik.http.routers.mode-sepolia-op-geth-pruned-pebble-path.rule=Host(`$DOMAIN`) && PathPrefix(`/mode-sepolia`)" + - "traefik.http.routers.mode-sepolia-op-geth-pruned-pebble-path.middlewares=mode-sepolia-op-geth-pruned-pebble-path-stripprefix, ipwhitelist" + networks: + - chains + + + mode-sepolia-node: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 7300 + - 6060 + ports: + - "15308:15308" + - "15308:15308/udp" + entrypoint: [ "./op-node" ] + restart: unless-stopped + volumes: + - .jwtsecret:/jwtsecret + stop_grace_period: 30s + environment: + - "OP_NODE_NETWORK=mode-sepolia" + - "OP_NODE_SYNCMODE=execution-layer" + - "OP_NODE_L1_ETH_RPC=${ETHEREUM_SEPOLIA_EXECUTION_RPC}" + - "OP_NODE_L2_ENGINE_AUTH=/jwtsecret" + - "OP_NODE_L2_ENGINE_RPC=http://mode-sepolia:8551" + - "OP_NODE_LOG_LEVEL=info" + - "OP_NODE_METRICS_ADDR=0.0.0.0" + - "OP_NODE_METRICS_ENABLED=true" + - "OP_NODE_METRICS_PORT=7300" + - "OP_NODE_P2P_LISTEN_IP=0.0.0.0" + - "OP_NODE_P2P_LISTEN_TCP_PORT=15308" + - "OP_NODE_P2P_LISTEN_UDP_PORT=15308" + - "OP_NODE_RPC_ADDR=0.0.0.0" + - "OP_NODE_P2P_ADVERTISE_IP=${IP}" + - "OP_NODE_RPC_PORT=8545" + - "OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log" + - "OP_NODE_VERIFIER_L1_CONFS=4" + - "OP_NODE_L1_RPC_KIND=${ETHEREUM_SEPOLIA_EXECUTION_KIND:-basic}" + - "OP_NODE_L1_TRUST_RPC=${ETHEREUM_SEPOLIA_EXECUTION_TRUST:-false}" + - "OP_NODE_L1_BEACON=${ETHEREUM_SEPOLIA_BEACON_REST}" + - "OP_NODE_L1_BEACON_ARCHIVER=${ETHEREUM_SEPOLIA_BEACON_ARCHIVER}" + - "OP_NODE_OVERRIDE_PECTRABLOBSCHEDULE=1742486400" + networks: + - chains + +volumes: + mode-sepolia-op-geth-pruned-pebble-path: \ No newline at end of file diff --git a/op/geth/op-mainnet-op-geth-archive-leveldb-hash.yml b/op/geth/op-mainnet-op-geth-archive-leveldb-hash.yml new file mode 100644 index 00000000..6e977823 --- /dev/null +++ b/op/geth/op-mainnet-op-geth-archive-leveldb-hash.yml @@ -0,0 +1,99 @@ +services: + op-mainnet-archive: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 6060 + ports: + - "10399:10399" + - "10399:10399/udp" + entrypoint: [ "./geth" ] + restart: unless-stopped + stop_grace_period: 3m + volumes: + - op-mainnet-op-geth-archive-leveldb-hash:/data + - .jwtsecret:/jwtsecret + environment: + - "GETH_DATADIR=/data" + - "GETH_OP_NETWORK=op-mainnet" + - "GETH_GCMODE=archive" + - "GETH_SYNCMODE=full" + - "GETH_STATE_SCHEME=hash" + - "GETH_DB_ENGINE=leveldb" + - "GETH_NAT=extip:${IP}" + - "GETH_PORT=19809" + - "GETH_WS_PORT=8545" + - "GETH_HTTP=true" + - "GETH_HTTP_ADDR=0.0.0.0" + - "GETH_HTTP_VHOSTS=*" + - "GETH_WS=true" + - "GETH_WS_ADDR=0.0.0.0" + - "GETH_WS_ORIGINS=*" + - "GETH_HTTP_API=eth,net,debug,admin,web3" + - "GETH_AUTHRPC_JWTSECRET=/jwtsecret" + - "GETH_AUTHRPC_ADDR=0.0.0.0" + - "GETH_AUTHRPC_VHOSTS=*" + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.op-mainnet-op-geth-archive-leveldb-hash-stripprefix.stripprefix.prefixes=/op-mainnet-archive" + - "traefik.http.services.op-mainnet-op-geth-archive-leveldb-hash.loadbalancer.server.port=8545" + - "traefik.http.routers.op-mainnet-op-geth-archive-leveldb-hash.entrypoints=websecure" + - "traefik.http.routers.op-mainnet-op-geth-archive-leveldb-hash.tls.certresolver=myresolver" + - "traefik.http.routers.op-mainnet-op-geth-archive-leveldb-hash.rule=Host(`$DOMAIN`) && PathPrefix(`/op-mainnet-archive`)" + - "traefik.http.routers.op-mainnet-op-geth-archive-leveldb-hash.middlewares=op-mainnet-op-geth-archive-leveldb-hash-stripprefix, ipwhitelist" + networks: + - chains + + + op-mainnet-archive-node: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 7300 + - 6060 + ports: + - "15399:15399" + - "15399:15399/udp" + entrypoint: [ "./op-node" ] + restart: unless-stopped + volumes: + - .jwtsecret:/jwtsecret + stop_grace_period: 30s + environment: + - "OP_NODE_NETWORK=op-mainnet" + - "OP_NODE_SYNCMODE=execution-layer" + - "OP_NODE_L1_ETH_RPC=${ETHEREUM_MAINNET_EXECUTION_RPC}" + - "OP_NODE_L2_ENGINE_AUTH=/jwtsecret" + - "OP_NODE_L2_ENGINE_RPC=http://op-mainnet-archive:8551" + - "OP_NODE_LOG_LEVEL=info" + - "OP_NODE_METRICS_ADDR=0.0.0.0" + - "OP_NODE_METRICS_ENABLED=true" + - "OP_NODE_METRICS_PORT=7300" + - "OP_NODE_P2P_LISTEN_IP=0.0.0.0" + - "OP_NODE_P2P_LISTEN_TCP_PORT=15399" + - "OP_NODE_P2P_LISTEN_UDP_PORT=15399" + - "OP_NODE_RPC_ADDR=0.0.0.0" + - "OP_NODE_P2P_ADVERTISE_IP=${IP}" + - "OP_NODE_RPC_PORT=8545" + - "OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log" + - "OP_NODE_VERIFIER_L1_CONFS=4" + - "OP_NODE_L1_RPC_KIND=${ETHEREUM_MAINNET_EXECUTION_KIND:-basic}" + - "OP_NODE_L1_TRUST_RPC=${ETHEREUM_MAINNET_EXECUTION_TRUST:-false}" + - "OP_NODE_L1_BEACON=${ETHEREUM_MAINNET_BEACON_REST}" + - "OP_NODE_L1_BEACON_ARCHIVER=${ETHEREUM_MAINNET_BEACON_ARCHIVER}" + + networks: + - chains + +volumes: + op-mainnet-op-geth-archive-leveldb-hash: \ No newline at end of file diff --git a/op/geth/op-mainnet-op-geth-pruned-pebble-path.yml b/op/geth/op-mainnet-op-geth-pruned-pebble-path.yml new file mode 100644 index 00000000..d71ac7ce --- /dev/null +++ b/op/geth/op-mainnet-op-geth-pruned-pebble-path.yml @@ -0,0 +1,99 @@ +services: + op-mainnet: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 6060 + ports: + - "10687:10687" + - "10687:10687/udp" + entrypoint: [ "./geth" ] + restart: unless-stopped + stop_grace_period: 3m + volumes: + - op-mainnet-op-geth-pruned-pebble-path:/data + - .jwtsecret:/jwtsecret + environment: + - "GETH_DATADIR=/data" + - "GETH_OP_NETWORK=op-mainnet" + - "GETH_GCMODE=full" + - "GETH_SYNCMODE=snap" + - "GETH_STATE_SCHEME=path" + - "GETH_DB_ENGINE=pebble" + - "GETH_NAT=extip:${IP}" + - "GETH_PORT=19809" + - "GETH_WS_PORT=8545" + - "GETH_HTTP=true" + - "GETH_HTTP_ADDR=0.0.0.0" + - "GETH_HTTP_VHOSTS=*" + - "GETH_WS=true" + - "GETH_WS_ADDR=0.0.0.0" + - "GETH_WS_ORIGINS=*" + - "GETH_HTTP_API=eth,net,debug,admin,web3" + - "GETH_AUTHRPC_JWTSECRET=/jwtsecret" + - "GETH_AUTHRPC_ADDR=0.0.0.0" + - "GETH_AUTHRPC_VHOSTS=*" + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.op-mainnet-op-geth-pruned-pebble-path-stripprefix.stripprefix.prefixes=/op-mainnet" + - "traefik.http.services.op-mainnet-op-geth-pruned-pebble-path.loadbalancer.server.port=8545" + - "traefik.http.routers.op-mainnet-op-geth-pruned-pebble-path.entrypoints=websecure" + - "traefik.http.routers.op-mainnet-op-geth-pruned-pebble-path.tls.certresolver=myresolver" + - "traefik.http.routers.op-mainnet-op-geth-pruned-pebble-path.rule=Host(`$DOMAIN`) && PathPrefix(`/op-mainnet`)" + - "traefik.http.routers.op-mainnet-op-geth-pruned-pebble-path.middlewares=op-mainnet-op-geth-pruned-pebble-path-stripprefix, ipwhitelist" + networks: + - chains + + + op-mainnet-node: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 7300 + - 6060 + ports: + - "15687:15687" + - "15687:15687/udp" + entrypoint: [ "./op-node" ] + restart: unless-stopped + volumes: + - .jwtsecret:/jwtsecret + stop_grace_period: 30s + environment: + - "OP_NODE_NETWORK=op-mainnet" + - "OP_NODE_SYNCMODE=execution-layer" + - "OP_NODE_L1_ETH_RPC=${ETHEREUM_MAINNET_EXECUTION_RPC}" + - "OP_NODE_L2_ENGINE_AUTH=/jwtsecret" + - "OP_NODE_L2_ENGINE_RPC=http://op-mainnet:8551" + - "OP_NODE_LOG_LEVEL=info" + - "OP_NODE_METRICS_ADDR=0.0.0.0" + - "OP_NODE_METRICS_ENABLED=true" + - "OP_NODE_METRICS_PORT=7300" + - "OP_NODE_P2P_LISTEN_IP=0.0.0.0" + - "OP_NODE_P2P_LISTEN_TCP_PORT=15687" + - "OP_NODE_P2P_LISTEN_UDP_PORT=15687" + - "OP_NODE_RPC_ADDR=0.0.0.0" + - "OP_NODE_P2P_ADVERTISE_IP=${IP}" + - "OP_NODE_RPC_PORT=8545" + - "OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log" + - "OP_NODE_VERIFIER_L1_CONFS=4" + - "OP_NODE_L1_RPC_KIND=${ETHEREUM_MAINNET_EXECUTION_KIND:-basic}" + - "OP_NODE_L1_TRUST_RPC=${ETHEREUM_MAINNET_EXECUTION_TRUST:-false}" + - "OP_NODE_L1_BEACON=${ETHEREUM_MAINNET_BEACON_REST}" + - "OP_NODE_L1_BEACON_ARCHIVER=${ETHEREUM_MAINNET_BEACON_ARCHIVER}" + + networks: + - chains + +volumes: + op-mainnet-op-geth-pruned-pebble-path: \ No newline at end of file diff --git a/op/geth/op-sepolia-op-geth-archive-leveldb-hash.yml b/op/geth/op-sepolia-op-geth-archive-leveldb-hash.yml new file mode 100644 index 00000000..002e3b9c --- /dev/null +++ b/op/geth/op-sepolia-op-geth-archive-leveldb-hash.yml @@ -0,0 +1,99 @@ +services: + op-sepolia-archive: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 6060 + ports: + - "10257:10257" + - "10257:10257/udp" + entrypoint: [ "./geth" ] + restart: unless-stopped + stop_grace_period: 3m + volumes: + - op-sepolia-op-geth-archive-leveldb-hash:/data + - .jwtsecret:/jwtsecret + environment: + - "GETH_DATADIR=/data" + - "GETH_OP_NETWORK=op-sepolia" + - "GETH_GCMODE=archive" + - "GETH_SYNCMODE=full" + - "GETH_STATE_SCHEME=hash" + - "GETH_DB_ENGINE=leveldb" + - "GETH_NAT=extip:${IP}" + - "GETH_PORT=19809" + - "GETH_WS_PORT=8545" + - "GETH_HTTP=true" + - "GETH_HTTP_ADDR=0.0.0.0" + - "GETH_HTTP_VHOSTS=*" + - "GETH_WS=true" + - "GETH_WS_ADDR=0.0.0.0" + - "GETH_WS_ORIGINS=*" + - "GETH_HTTP_API=eth,net,debug,admin,web3" + - "GETH_AUTHRPC_JWTSECRET=/jwtsecret" + - "GETH_AUTHRPC_ADDR=0.0.0.0" + - "GETH_AUTHRPC_VHOSTS=*" + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.op-sepolia-op-geth-archive-leveldb-hash-stripprefix.stripprefix.prefixes=/op-sepolia-archive" + - "traefik.http.services.op-sepolia-op-geth-archive-leveldb-hash.loadbalancer.server.port=8545" + - "traefik.http.routers.op-sepolia-op-geth-archive-leveldb-hash.entrypoints=websecure" + - "traefik.http.routers.op-sepolia-op-geth-archive-leveldb-hash.tls.certresolver=myresolver" + - "traefik.http.routers.op-sepolia-op-geth-archive-leveldb-hash.rule=Host(`$DOMAIN`) && PathPrefix(`/op-sepolia-archive`)" + - "traefik.http.routers.op-sepolia-op-geth-archive-leveldb-hash.middlewares=op-sepolia-op-geth-archive-leveldb-hash-stripprefix, ipwhitelist" + networks: + - chains + + + op-sepolia-archive-node: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 7300 + - 6060 + ports: + - "15257:15257" + - "15257:15257/udp" + entrypoint: [ "./op-node" ] + restart: unless-stopped + volumes: + - .jwtsecret:/jwtsecret + stop_grace_period: 30s + environment: + - "OP_NODE_NETWORK=op-sepolia" + - "OP_NODE_SYNCMODE=execution-layer" + - "OP_NODE_L1_ETH_RPC=${ETHEREUM_SEPOLIA_EXECUTION_RPC}" + - "OP_NODE_L2_ENGINE_AUTH=/jwtsecret" + - "OP_NODE_L2_ENGINE_RPC=http://op-sepolia-archive:8551" + - "OP_NODE_LOG_LEVEL=info" + - "OP_NODE_METRICS_ADDR=0.0.0.0" + - "OP_NODE_METRICS_ENABLED=true" + - "OP_NODE_METRICS_PORT=7300" + - "OP_NODE_P2P_LISTEN_IP=0.0.0.0" + - "OP_NODE_P2P_LISTEN_TCP_PORT=15257" + - "OP_NODE_P2P_LISTEN_UDP_PORT=15257" + - "OP_NODE_RPC_ADDR=0.0.0.0" + - "OP_NODE_P2P_ADVERTISE_IP=${IP}" + - "OP_NODE_RPC_PORT=8545" + - "OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log" + - "OP_NODE_VERIFIER_L1_CONFS=4" + - "OP_NODE_L1_RPC_KIND=${ETHEREUM_SEPOLIA_EXECUTION_KIND:-basic}" + - "OP_NODE_L1_TRUST_RPC=${ETHEREUM_SEPOLIA_EXECUTION_TRUST:-false}" + - "OP_NODE_L1_BEACON=${ETHEREUM_SEPOLIA_BEACON_REST}" + - "OP_NODE_L1_BEACON_ARCHIVER=${ETHEREUM_SEPOLIA_BEACON_ARCHIVER}" + - "OP_NODE_OVERRIDE_PECTRABLOBSCHEDULE=1742486400" + networks: + - chains + +volumes: + op-sepolia-op-geth-archive-leveldb-hash: \ No newline at end of file diff --git a/op/geth/op-sepolia-op-geth-pruned-pebble-path.yml b/op/geth/op-sepolia-op-geth-pruned-pebble-path.yml new file mode 100644 index 00000000..2d53f29c --- /dev/null +++ b/op/geth/op-sepolia-op-geth-pruned-pebble-path.yml @@ -0,0 +1,99 @@ +services: + op-sepolia: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 6060 + ports: + - "10981:10981" + - "10981:10981/udp" + entrypoint: [ "./geth" ] + restart: unless-stopped + stop_grace_period: 3m + volumes: + - op-sepolia-op-geth-pruned-pebble-path:/data + - .jwtsecret:/jwtsecret + environment: + - "GETH_DATADIR=/data" + - "GETH_OP_NETWORK=op-sepolia" + - "GETH_GCMODE=full" + - "GETH_SYNCMODE=snap" + - "GETH_STATE_SCHEME=path" + - "GETH_DB_ENGINE=pebble" + - "GETH_NAT=extip:${IP}" + - "GETH_PORT=19809" + - "GETH_WS_PORT=8545" + - "GETH_HTTP=true" + - "GETH_HTTP_ADDR=0.0.0.0" + - "GETH_HTTP_VHOSTS=*" + - "GETH_WS=true" + - "GETH_WS_ADDR=0.0.0.0" + - "GETH_WS_ORIGINS=*" + - "GETH_HTTP_API=eth,net,debug,admin,web3" + - "GETH_AUTHRPC_JWTSECRET=/jwtsecret" + - "GETH_AUTHRPC_ADDR=0.0.0.0" + - "GETH_AUTHRPC_VHOSTS=*" + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.op-sepolia-op-geth-pruned-pebble-path-stripprefix.stripprefix.prefixes=/op-sepolia" + - "traefik.http.services.op-sepolia-op-geth-pruned-pebble-path.loadbalancer.server.port=8545" + - "traefik.http.routers.op-sepolia-op-geth-pruned-pebble-path.entrypoints=websecure" + - "traefik.http.routers.op-sepolia-op-geth-pruned-pebble-path.tls.certresolver=myresolver" + - "traefik.http.routers.op-sepolia-op-geth-pruned-pebble-path.rule=Host(`$DOMAIN`) && PathPrefix(`/op-sepolia`)" + - "traefik.http.routers.op-sepolia-op-geth-pruned-pebble-path.middlewares=op-sepolia-op-geth-pruned-pebble-path-stripprefix, ipwhitelist" + networks: + - chains + + + op-sepolia-node: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 7300 + - 6060 + ports: + - "15981:15981" + - "15981:15981/udp" + entrypoint: [ "./op-node" ] + restart: unless-stopped + volumes: + - .jwtsecret:/jwtsecret + stop_grace_period: 30s + environment: + - "OP_NODE_NETWORK=op-sepolia" + - "OP_NODE_SYNCMODE=execution-layer" + - "OP_NODE_L1_ETH_RPC=${ETHEREUM_SEPOLIA_EXECUTION_RPC}" + - "OP_NODE_L2_ENGINE_AUTH=/jwtsecret" + - "OP_NODE_L2_ENGINE_RPC=http://op-sepolia:8551" + - "OP_NODE_LOG_LEVEL=info" + - "OP_NODE_METRICS_ADDR=0.0.0.0" + - "OP_NODE_METRICS_ENABLED=true" + - "OP_NODE_METRICS_PORT=7300" + - "OP_NODE_P2P_LISTEN_IP=0.0.0.0" + - "OP_NODE_P2P_LISTEN_TCP_PORT=15981" + - "OP_NODE_P2P_LISTEN_UDP_PORT=15981" + - "OP_NODE_RPC_ADDR=0.0.0.0" + - "OP_NODE_P2P_ADVERTISE_IP=${IP}" + - "OP_NODE_RPC_PORT=8545" + - "OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log" + - "OP_NODE_VERIFIER_L1_CONFS=4" + - "OP_NODE_L1_RPC_KIND=${ETHEREUM_SEPOLIA_EXECUTION_KIND:-basic}" + - "OP_NODE_L1_TRUST_RPC=${ETHEREUM_SEPOLIA_EXECUTION_TRUST:-false}" + - "OP_NODE_L1_BEACON=${ETHEREUM_SEPOLIA_BEACON_REST}" + - "OP_NODE_L1_BEACON_ARCHIVER=${ETHEREUM_SEPOLIA_BEACON_ARCHIVER}" + - "OP_NODE_OVERRIDE_PECTRABLOBSCHEDULE=1742486400" + networks: + - chains + +volumes: + op-sepolia-op-geth-pruned-pebble-path: \ No newline at end of file diff --git a/op/geth/snax-mainnet-op-geth-archive-leveldb-hash.yml b/op/geth/snax-mainnet-op-geth-archive-leveldb-hash.yml new file mode 100644 index 00000000..8bd0d375 --- /dev/null +++ b/op/geth/snax-mainnet-op-geth-archive-leveldb-hash.yml @@ -0,0 +1,99 @@ +services: + snax-mainnet-archive: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 6060 + ports: + - "10249:10249" + - "10249:10249/udp" + entrypoint: [ "./geth" ] + restart: unless-stopped + stop_grace_period: 3m + volumes: + - snax-mainnet-op-geth-archive-leveldb-hash:/data + - .jwtsecret:/jwtsecret + environment: + - "GETH_DATADIR=/data" + - "GETH_OP_NETWORK=snax-mainnet" + - "GETH_GCMODE=archive" + - "GETH_SYNCMODE=full" + - "GETH_STATE_SCHEME=hash" + - "GETH_DB_ENGINE=leveldb" + - "GETH_NAT=extip:${IP}" + - "GETH_PORT=19809" + - "GETH_WS_PORT=8545" + - "GETH_HTTP=true" + - "GETH_HTTP_ADDR=0.0.0.0" + - "GETH_HTTP_VHOSTS=*" + - "GETH_WS=true" + - "GETH_WS_ADDR=0.0.0.0" + - "GETH_WS_ORIGINS=*" + - "GETH_HTTP_API=eth,net,debug,admin,web3" + - "GETH_AUTHRPC_JWTSECRET=/jwtsecret" + - "GETH_AUTHRPC_ADDR=0.0.0.0" + - "GETH_AUTHRPC_VHOSTS=*" + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.snax-mainnet-op-geth-archive-leveldb-hash-stripprefix.stripprefix.prefixes=/snax-mainnet-archive" + - "traefik.http.services.snax-mainnet-op-geth-archive-leveldb-hash.loadbalancer.server.port=8545" + - "traefik.http.routers.snax-mainnet-op-geth-archive-leveldb-hash.entrypoints=websecure" + - "traefik.http.routers.snax-mainnet-op-geth-archive-leveldb-hash.tls.certresolver=myresolver" + - "traefik.http.routers.snax-mainnet-op-geth-archive-leveldb-hash.rule=Host(`$DOMAIN`) && PathPrefix(`/snax-mainnet-archive`)" + - "traefik.http.routers.snax-mainnet-op-geth-archive-leveldb-hash.middlewares=snax-mainnet-op-geth-archive-leveldb-hash-stripprefix, ipwhitelist" + networks: + - chains + + + snax-mainnet-archive-node: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 7300 + - 6060 + ports: + - "15249:15249" + - "15249:15249/udp" + entrypoint: [ "./op-node" ] + restart: unless-stopped + volumes: + - .jwtsecret:/jwtsecret + stop_grace_period: 30s + environment: + - "OP_NODE_NETWORK=snax-mainnet" + - "OP_NODE_SYNCMODE=execution-layer" + - "OP_NODE_L1_ETH_RPC=${ETHEREUM_MAINNET_EXECUTION_RPC}" + - "OP_NODE_L2_ENGINE_AUTH=/jwtsecret" + - "OP_NODE_L2_ENGINE_RPC=http://snax-mainnet-archive:8551" + - "OP_NODE_LOG_LEVEL=info" + - "OP_NODE_METRICS_ADDR=0.0.0.0" + - "OP_NODE_METRICS_ENABLED=true" + - "OP_NODE_METRICS_PORT=7300" + - "OP_NODE_P2P_LISTEN_IP=0.0.0.0" + - "OP_NODE_P2P_LISTEN_TCP_PORT=15249" + - "OP_NODE_P2P_LISTEN_UDP_PORT=15249" + - "OP_NODE_RPC_ADDR=0.0.0.0" + - "OP_NODE_P2P_ADVERTISE_IP=${IP}" + - "OP_NODE_RPC_PORT=8545" + - "OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log" + - "OP_NODE_VERIFIER_L1_CONFS=4" + - "OP_NODE_L1_RPC_KIND=${ETHEREUM_MAINNET_EXECUTION_KIND:-basic}" + - "OP_NODE_L1_TRUST_RPC=${ETHEREUM_MAINNET_EXECUTION_TRUST:-false}" + - "OP_NODE_L1_BEACON=${ETHEREUM_MAINNET_BEACON_REST}" + - "OP_NODE_L1_BEACON_ARCHIVER=${ETHEREUM_MAINNET_BEACON_ARCHIVER}" + + networks: + - chains + +volumes: + snax-mainnet-op-geth-archive-leveldb-hash: \ No newline at end of file diff --git a/op/geth/snax-mainnet-op-geth-pruned-pebble-path.yml b/op/geth/snax-mainnet-op-geth-pruned-pebble-path.yml new file mode 100644 index 00000000..a7e40663 --- /dev/null +++ b/op/geth/snax-mainnet-op-geth-pruned-pebble-path.yml @@ -0,0 +1,99 @@ +services: + snax-mainnet: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 6060 + ports: + - "10332:10332" + - "10332:10332/udp" + entrypoint: [ "./geth" ] + restart: unless-stopped + stop_grace_period: 3m + volumes: + - snax-mainnet-op-geth-pruned-pebble-path:/data + - .jwtsecret:/jwtsecret + environment: + - "GETH_DATADIR=/data" + - "GETH_OP_NETWORK=snax-mainnet" + - "GETH_GCMODE=full" + - "GETH_SYNCMODE=snap" + - "GETH_STATE_SCHEME=path" + - "GETH_DB_ENGINE=pebble" + - "GETH_NAT=extip:${IP}" + - "GETH_PORT=19809" + - "GETH_WS_PORT=8545" + - "GETH_HTTP=true" + - "GETH_HTTP_ADDR=0.0.0.0" + - "GETH_HTTP_VHOSTS=*" + - "GETH_WS=true" + - "GETH_WS_ADDR=0.0.0.0" + - "GETH_WS_ORIGINS=*" + - "GETH_HTTP_API=eth,net,debug,admin,web3" + - "GETH_AUTHRPC_JWTSECRET=/jwtsecret" + - "GETH_AUTHRPC_ADDR=0.0.0.0" + - "GETH_AUTHRPC_VHOSTS=*" + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.snax-mainnet-op-geth-pruned-pebble-path-stripprefix.stripprefix.prefixes=/snax-mainnet" + - "traefik.http.services.snax-mainnet-op-geth-pruned-pebble-path.loadbalancer.server.port=8545" + - "traefik.http.routers.snax-mainnet-op-geth-pruned-pebble-path.entrypoints=websecure" + - "traefik.http.routers.snax-mainnet-op-geth-pruned-pebble-path.tls.certresolver=myresolver" + - "traefik.http.routers.snax-mainnet-op-geth-pruned-pebble-path.rule=Host(`$DOMAIN`) && PathPrefix(`/snax-mainnet`)" + - "traefik.http.routers.snax-mainnet-op-geth-pruned-pebble-path.middlewares=snax-mainnet-op-geth-pruned-pebble-path-stripprefix, ipwhitelist" + networks: + - chains + + + snax-mainnet-node: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 7300 + - 6060 + ports: + - "15332:15332" + - "15332:15332/udp" + entrypoint: [ "./op-node" ] + restart: unless-stopped + volumes: + - .jwtsecret:/jwtsecret + stop_grace_period: 30s + environment: + - "OP_NODE_NETWORK=snax-mainnet" + - "OP_NODE_SYNCMODE=execution-layer" + - "OP_NODE_L1_ETH_RPC=${ETHEREUM_MAINNET_EXECUTION_RPC}" + - "OP_NODE_L2_ENGINE_AUTH=/jwtsecret" + - "OP_NODE_L2_ENGINE_RPC=http://snax-mainnet:8551" + - "OP_NODE_LOG_LEVEL=info" + - "OP_NODE_METRICS_ADDR=0.0.0.0" + - "OP_NODE_METRICS_ENABLED=true" + - "OP_NODE_METRICS_PORT=7300" + - "OP_NODE_P2P_LISTEN_IP=0.0.0.0" + - "OP_NODE_P2P_LISTEN_TCP_PORT=15332" + - "OP_NODE_P2P_LISTEN_UDP_PORT=15332" + - "OP_NODE_RPC_ADDR=0.0.0.0" + - "OP_NODE_P2P_ADVERTISE_IP=${IP}" + - "OP_NODE_RPC_PORT=8545" + - "OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log" + - "OP_NODE_VERIFIER_L1_CONFS=4" + - "OP_NODE_L1_RPC_KIND=${ETHEREUM_MAINNET_EXECUTION_KIND:-basic}" + - "OP_NODE_L1_TRUST_RPC=${ETHEREUM_MAINNET_EXECUTION_TRUST:-false}" + - "OP_NODE_L1_BEACON=${ETHEREUM_MAINNET_BEACON_REST}" + - "OP_NODE_L1_BEACON_ARCHIVER=${ETHEREUM_MAINNET_BEACON_ARCHIVER}" + + networks: + - chains + +volumes: + snax-mainnet-op-geth-pruned-pebble-path: \ No newline at end of file diff --git a/op/geth/swell-mainnet-op-geth-archive-leveldb-hash.yml b/op/geth/swell-mainnet-op-geth-archive-leveldb-hash.yml new file mode 100644 index 00000000..c4ea7482 --- /dev/null +++ b/op/geth/swell-mainnet-op-geth-archive-leveldb-hash.yml @@ -0,0 +1,99 @@ +services: + swell-mainnet-archive: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 6060 + ports: + - "10863:10863" + - "10863:10863/udp" + entrypoint: [ "./geth" ] + restart: unless-stopped + stop_grace_period: 3m + volumes: + - swell-mainnet-op-geth-archive-leveldb-hash:/data + - .jwtsecret:/jwtsecret + environment: + - "GETH_DATADIR=/data" + - "GETH_OP_NETWORK=swell-mainnet" + - "GETH_GCMODE=archive" + - "GETH_SYNCMODE=full" + - "GETH_STATE_SCHEME=hash" + - "GETH_DB_ENGINE=leveldb" + - "GETH_NAT=extip:${IP}" + - "GETH_PORT=19809" + - "GETH_WS_PORT=8545" + - "GETH_HTTP=true" + - "GETH_HTTP_ADDR=0.0.0.0" + - "GETH_HTTP_VHOSTS=*" + - "GETH_WS=true" + - "GETH_WS_ADDR=0.0.0.0" + - "GETH_WS_ORIGINS=*" + - "GETH_HTTP_API=eth,net,debug,admin,web3" + - "GETH_AUTHRPC_JWTSECRET=/jwtsecret" + - "GETH_AUTHRPC_ADDR=0.0.0.0" + - "GETH_AUTHRPC_VHOSTS=*" + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.swell-mainnet-op-geth-archive-leveldb-hash-stripprefix.stripprefix.prefixes=/swell-mainnet-archive" + - "traefik.http.services.swell-mainnet-op-geth-archive-leveldb-hash.loadbalancer.server.port=8545" + - "traefik.http.routers.swell-mainnet-op-geth-archive-leveldb-hash.entrypoints=websecure" + - "traefik.http.routers.swell-mainnet-op-geth-archive-leveldb-hash.tls.certresolver=myresolver" + - "traefik.http.routers.swell-mainnet-op-geth-archive-leveldb-hash.rule=Host(`$DOMAIN`) && PathPrefix(`/swell-mainnet-archive`)" + - "traefik.http.routers.swell-mainnet-op-geth-archive-leveldb-hash.middlewares=swell-mainnet-op-geth-archive-leveldb-hash-stripprefix, ipwhitelist" + networks: + - chains + + + swell-mainnet-archive-node: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 7300 + - 6060 + ports: + - "15863:15863" + - "15863:15863/udp" + entrypoint: [ "./op-node" ] + restart: unless-stopped + volumes: + - .jwtsecret:/jwtsecret + stop_grace_period: 30s + environment: + - "OP_NODE_NETWORK=swell-mainnet" + - "OP_NODE_SYNCMODE=execution-layer" + - "OP_NODE_L1_ETH_RPC=${ETHEREUM_MAINNET_EXECUTION_RPC}" + - "OP_NODE_L2_ENGINE_AUTH=/jwtsecret" + - "OP_NODE_L2_ENGINE_RPC=http://swell-mainnet-archive:8551" + - "OP_NODE_LOG_LEVEL=info" + - "OP_NODE_METRICS_ADDR=0.0.0.0" + - "OP_NODE_METRICS_ENABLED=true" + - "OP_NODE_METRICS_PORT=7300" + - "OP_NODE_P2P_LISTEN_IP=0.0.0.0" + - "OP_NODE_P2P_LISTEN_TCP_PORT=15863" + - "OP_NODE_P2P_LISTEN_UDP_PORT=15863" + - "OP_NODE_RPC_ADDR=0.0.0.0" + - "OP_NODE_P2P_ADVERTISE_IP=${IP}" + - "OP_NODE_RPC_PORT=8545" + - "OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log" + - "OP_NODE_VERIFIER_L1_CONFS=4" + - "OP_NODE_L1_RPC_KIND=${ETHEREUM_MAINNET_EXECUTION_KIND:-basic}" + - "OP_NODE_L1_TRUST_RPC=${ETHEREUM_MAINNET_EXECUTION_TRUST:-false}" + - "OP_NODE_L1_BEACON=${ETHEREUM_MAINNET_BEACON_REST}" + - "OP_NODE_L1_BEACON_ARCHIVER=${ETHEREUM_MAINNET_BEACON_ARCHIVER}" + + networks: + - chains + +volumes: + swell-mainnet-op-geth-archive-leveldb-hash: \ No newline at end of file diff --git a/op/geth/swell-mainnet-op-geth-pruned-pebble-path.yml b/op/geth/swell-mainnet-op-geth-pruned-pebble-path.yml new file mode 100644 index 00000000..0bbe7c30 --- /dev/null +++ b/op/geth/swell-mainnet-op-geth-pruned-pebble-path.yml @@ -0,0 +1,99 @@ +services: + swell-mainnet: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 6060 + ports: + - "10312:10312" + - "10312:10312/udp" + entrypoint: [ "./geth" ] + restart: unless-stopped + stop_grace_period: 3m + volumes: + - swell-mainnet-op-geth-pruned-pebble-path:/data + - .jwtsecret:/jwtsecret + environment: + - "GETH_DATADIR=/data" + - "GETH_OP_NETWORK=swell-mainnet" + - "GETH_GCMODE=full" + - "GETH_SYNCMODE=snap" + - "GETH_STATE_SCHEME=path" + - "GETH_DB_ENGINE=pebble" + - "GETH_NAT=extip:${IP}" + - "GETH_PORT=19809" + - "GETH_WS_PORT=8545" + - "GETH_HTTP=true" + - "GETH_HTTP_ADDR=0.0.0.0" + - "GETH_HTTP_VHOSTS=*" + - "GETH_WS=true" + - "GETH_WS_ADDR=0.0.0.0" + - "GETH_WS_ORIGINS=*" + - "GETH_HTTP_API=eth,net,debug,admin,web3" + - "GETH_AUTHRPC_JWTSECRET=/jwtsecret" + - "GETH_AUTHRPC_ADDR=0.0.0.0" + - "GETH_AUTHRPC_VHOSTS=*" + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.swell-mainnet-op-geth-pruned-pebble-path-stripprefix.stripprefix.prefixes=/swell-mainnet" + - "traefik.http.services.swell-mainnet-op-geth-pruned-pebble-path.loadbalancer.server.port=8545" + - "traefik.http.routers.swell-mainnet-op-geth-pruned-pebble-path.entrypoints=websecure" + - "traefik.http.routers.swell-mainnet-op-geth-pruned-pebble-path.tls.certresolver=myresolver" + - "traefik.http.routers.swell-mainnet-op-geth-pruned-pebble-path.rule=Host(`$DOMAIN`) && PathPrefix(`/swell-mainnet`)" + - "traefik.http.routers.swell-mainnet-op-geth-pruned-pebble-path.middlewares=swell-mainnet-op-geth-pruned-pebble-path-stripprefix, ipwhitelist" + networks: + - chains + + + swell-mainnet-node: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 7300 + - 6060 + ports: + - "15312:15312" + - "15312:15312/udp" + entrypoint: [ "./op-node" ] + restart: unless-stopped + volumes: + - .jwtsecret:/jwtsecret + stop_grace_period: 30s + environment: + - "OP_NODE_NETWORK=swell-mainnet" + - "OP_NODE_SYNCMODE=execution-layer" + - "OP_NODE_L1_ETH_RPC=${ETHEREUM_MAINNET_EXECUTION_RPC}" + - "OP_NODE_L2_ENGINE_AUTH=/jwtsecret" + - "OP_NODE_L2_ENGINE_RPC=http://swell-mainnet:8551" + - "OP_NODE_LOG_LEVEL=info" + - "OP_NODE_METRICS_ADDR=0.0.0.0" + - "OP_NODE_METRICS_ENABLED=true" + - "OP_NODE_METRICS_PORT=7300" + - "OP_NODE_P2P_LISTEN_IP=0.0.0.0" + - "OP_NODE_P2P_LISTEN_TCP_PORT=15312" + - "OP_NODE_P2P_LISTEN_UDP_PORT=15312" + - "OP_NODE_RPC_ADDR=0.0.0.0" + - "OP_NODE_P2P_ADVERTISE_IP=${IP}" + - "OP_NODE_RPC_PORT=8545" + - "OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log" + - "OP_NODE_VERIFIER_L1_CONFS=4" + - "OP_NODE_L1_RPC_KIND=${ETHEREUM_MAINNET_EXECUTION_KIND:-basic}" + - "OP_NODE_L1_TRUST_RPC=${ETHEREUM_MAINNET_EXECUTION_TRUST:-false}" + - "OP_NODE_L1_BEACON=${ETHEREUM_MAINNET_BEACON_REST}" + - "OP_NODE_L1_BEACON_ARCHIVER=${ETHEREUM_MAINNET_BEACON_ARCHIVER}" + + networks: + - chains + +volumes: + swell-mainnet-op-geth-pruned-pebble-path: \ No newline at end of file diff --git a/op/geth/unichain-mainnet-op-geth-archive-leveldb-hash.yml b/op/geth/unichain-mainnet-op-geth-archive-leveldb-hash.yml new file mode 100644 index 00000000..a616fe0e --- /dev/null +++ b/op/geth/unichain-mainnet-op-geth-archive-leveldb-hash.yml @@ -0,0 +1,99 @@ +services: + unichain-mainnet-archive: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 6060 + ports: + - "10789:10789" + - "10789:10789/udp" + entrypoint: [ "./geth" ] + restart: unless-stopped + stop_grace_period: 3m + volumes: + - unichain-mainnet-op-geth-archive-leveldb-hash:/data + - .jwtsecret:/jwtsecret + environment: + - "GETH_DATADIR=/data" + - "GETH_OP_NETWORK=unichain-mainnet" + - "GETH_GCMODE=archive" + - "GETH_SYNCMODE=full" + - "GETH_STATE_SCHEME=hash" + - "GETH_DB_ENGINE=leveldb" + - "GETH_NAT=extip:${IP}" + - "GETH_PORT=19809" + - "GETH_WS_PORT=8545" + - "GETH_HTTP=true" + - "GETH_HTTP_ADDR=0.0.0.0" + - "GETH_HTTP_VHOSTS=*" + - "GETH_WS=true" + - "GETH_WS_ADDR=0.0.0.0" + - "GETH_WS_ORIGINS=*" + - "GETH_HTTP_API=eth,net,debug,admin,web3" + - "GETH_AUTHRPC_JWTSECRET=/jwtsecret" + - "GETH_AUTHRPC_ADDR=0.0.0.0" + - "GETH_AUTHRPC_VHOSTS=*" + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.unichain-mainnet-op-geth-archive-leveldb-hash-stripprefix.stripprefix.prefixes=/unichain-mainnet-archive" + - "traefik.http.services.unichain-mainnet-op-geth-archive-leveldb-hash.loadbalancer.server.port=8545" + - "traefik.http.routers.unichain-mainnet-op-geth-archive-leveldb-hash.entrypoints=websecure" + - "traefik.http.routers.unichain-mainnet-op-geth-archive-leveldb-hash.tls.certresolver=myresolver" + - "traefik.http.routers.unichain-mainnet-op-geth-archive-leveldb-hash.rule=Host(`$DOMAIN`) && PathPrefix(`/unichain-mainnet-archive`)" + - "traefik.http.routers.unichain-mainnet-op-geth-archive-leveldb-hash.middlewares=unichain-mainnet-op-geth-archive-leveldb-hash-stripprefix, ipwhitelist" + networks: + - chains + + + unichain-mainnet-archive-node: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 7300 + - 6060 + ports: + - "15789:15789" + - "15789:15789/udp" + entrypoint: [ "./op-node" ] + restart: unless-stopped + volumes: + - .jwtsecret:/jwtsecret + stop_grace_period: 30s + environment: + - "OP_NODE_NETWORK=unichain-mainnet" + - "OP_NODE_SYNCMODE=execution-layer" + - "OP_NODE_L1_ETH_RPC=${ETHEREUM_MAINNET_EXECUTION_RPC}" + - "OP_NODE_L2_ENGINE_AUTH=/jwtsecret" + - "OP_NODE_L2_ENGINE_RPC=http://unichain-mainnet-archive:8551" + - "OP_NODE_LOG_LEVEL=info" + - "OP_NODE_METRICS_ADDR=0.0.0.0" + - "OP_NODE_METRICS_ENABLED=true" + - "OP_NODE_METRICS_PORT=7300" + - "OP_NODE_P2P_LISTEN_IP=0.0.0.0" + - "OP_NODE_P2P_LISTEN_TCP_PORT=15789" + - "OP_NODE_P2P_LISTEN_UDP_PORT=15789" + - "OP_NODE_RPC_ADDR=0.0.0.0" + - "OP_NODE_P2P_ADVERTISE_IP=${IP}" + - "OP_NODE_RPC_PORT=8545" + - "OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log" + - "OP_NODE_VERIFIER_L1_CONFS=4" + - "OP_NODE_L1_RPC_KIND=${ETHEREUM_MAINNET_EXECUTION_KIND:-basic}" + - "OP_NODE_L1_TRUST_RPC=${ETHEREUM_MAINNET_EXECUTION_TRUST:-false}" + - "OP_NODE_L1_BEACON=${ETHEREUM_MAINNET_BEACON_REST}" + - "OP_NODE_L1_BEACON_ARCHIVER=${ETHEREUM_MAINNET_BEACON_ARCHIVER}" + + networks: + - chains + +volumes: + unichain-mainnet-op-geth-archive-leveldb-hash: \ No newline at end of file diff --git a/op/geth/unichain-mainnet-op-geth-pruned-pebble-path.yml b/op/geth/unichain-mainnet-op-geth-pruned-pebble-path.yml new file mode 100644 index 00000000..170c5303 --- /dev/null +++ b/op/geth/unichain-mainnet-op-geth-pruned-pebble-path.yml @@ -0,0 +1,99 @@ +services: + unichain-mainnet: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 6060 + ports: + - "10954:10954" + - "10954:10954/udp" + entrypoint: [ "./geth" ] + restart: unless-stopped + stop_grace_period: 3m + volumes: + - unichain-mainnet-op-geth-pruned-pebble-path:/data + - .jwtsecret:/jwtsecret + environment: + - "GETH_DATADIR=/data" + - "GETH_OP_NETWORK=unichain-mainnet" + - "GETH_GCMODE=full" + - "GETH_SYNCMODE=snap" + - "GETH_STATE_SCHEME=path" + - "GETH_DB_ENGINE=pebble" + - "GETH_NAT=extip:${IP}" + - "GETH_PORT=19809" + - "GETH_WS_PORT=8545" + - "GETH_HTTP=true" + - "GETH_HTTP_ADDR=0.0.0.0" + - "GETH_HTTP_VHOSTS=*" + - "GETH_WS=true" + - "GETH_WS_ADDR=0.0.0.0" + - "GETH_WS_ORIGINS=*" + - "GETH_HTTP_API=eth,net,debug,admin,web3" + - "GETH_AUTHRPC_JWTSECRET=/jwtsecret" + - "GETH_AUTHRPC_ADDR=0.0.0.0" + - "GETH_AUTHRPC_VHOSTS=*" + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.unichain-mainnet-op-geth-pruned-pebble-path-stripprefix.stripprefix.prefixes=/unichain-mainnet" + - "traefik.http.services.unichain-mainnet-op-geth-pruned-pebble-path.loadbalancer.server.port=8545" + - "traefik.http.routers.unichain-mainnet-op-geth-pruned-pebble-path.entrypoints=websecure" + - "traefik.http.routers.unichain-mainnet-op-geth-pruned-pebble-path.tls.certresolver=myresolver" + - "traefik.http.routers.unichain-mainnet-op-geth-pruned-pebble-path.rule=Host(`$DOMAIN`) && PathPrefix(`/unichain-mainnet`)" + - "traefik.http.routers.unichain-mainnet-op-geth-pruned-pebble-path.middlewares=unichain-mainnet-op-geth-pruned-pebble-path-stripprefix, ipwhitelist" + networks: + - chains + + + unichain-mainnet-node: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 7300 + - 6060 + ports: + - "15954:15954" + - "15954:15954/udp" + entrypoint: [ "./op-node" ] + restart: unless-stopped + volumes: + - .jwtsecret:/jwtsecret + stop_grace_period: 30s + environment: + - "OP_NODE_NETWORK=unichain-mainnet" + - "OP_NODE_SYNCMODE=execution-layer" + - "OP_NODE_L1_ETH_RPC=${ETHEREUM_MAINNET_EXECUTION_RPC}" + - "OP_NODE_L2_ENGINE_AUTH=/jwtsecret" + - "OP_NODE_L2_ENGINE_RPC=http://unichain-mainnet:8551" + - "OP_NODE_LOG_LEVEL=info" + - "OP_NODE_METRICS_ADDR=0.0.0.0" + - "OP_NODE_METRICS_ENABLED=true" + - "OP_NODE_METRICS_PORT=7300" + - "OP_NODE_P2P_LISTEN_IP=0.0.0.0" + - "OP_NODE_P2P_LISTEN_TCP_PORT=15954" + - "OP_NODE_P2P_LISTEN_UDP_PORT=15954" + - "OP_NODE_RPC_ADDR=0.0.0.0" + - "OP_NODE_P2P_ADVERTISE_IP=${IP}" + - "OP_NODE_RPC_PORT=8545" + - "OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log" + - "OP_NODE_VERIFIER_L1_CONFS=4" + - "OP_NODE_L1_RPC_KIND=${ETHEREUM_MAINNET_EXECUTION_KIND:-basic}" + - "OP_NODE_L1_TRUST_RPC=${ETHEREUM_MAINNET_EXECUTION_TRUST:-false}" + - "OP_NODE_L1_BEACON=${ETHEREUM_MAINNET_BEACON_REST}" + - "OP_NODE_L1_BEACON_ARCHIVER=${ETHEREUM_MAINNET_BEACON_ARCHIVER}" + + networks: + - chains + +volumes: + unichain-mainnet-op-geth-pruned-pebble-path: \ No newline at end of file diff --git a/op/geth/unichain-sepolia-op-geth-archive-leveldb-hash.yml b/op/geth/unichain-sepolia-op-geth-archive-leveldb-hash.yml new file mode 100644 index 00000000..bc9571a5 --- /dev/null +++ b/op/geth/unichain-sepolia-op-geth-archive-leveldb-hash.yml @@ -0,0 +1,99 @@ +services: + unichain-sepolia-archive: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 6060 + ports: + - "10589:10589" + - "10589:10589/udp" + entrypoint: [ "./geth" ] + restart: unless-stopped + stop_grace_period: 3m + volumes: + - unichain-sepolia-op-geth-archive-leveldb-hash:/data + - .jwtsecret:/jwtsecret + environment: + - "GETH_DATADIR=/data" + - "GETH_OP_NETWORK=unichain-sepolia" + - "GETH_GCMODE=archive" + - "GETH_SYNCMODE=full" + - "GETH_STATE_SCHEME=hash" + - "GETH_DB_ENGINE=leveldb" + - "GETH_NAT=extip:${IP}" + - "GETH_PORT=19809" + - "GETH_WS_PORT=8545" + - "GETH_HTTP=true" + - "GETH_HTTP_ADDR=0.0.0.0" + - "GETH_HTTP_VHOSTS=*" + - "GETH_WS=true" + - "GETH_WS_ADDR=0.0.0.0" + - "GETH_WS_ORIGINS=*" + - "GETH_HTTP_API=eth,net,debug,admin,web3" + - "GETH_AUTHRPC_JWTSECRET=/jwtsecret" + - "GETH_AUTHRPC_ADDR=0.0.0.0" + - "GETH_AUTHRPC_VHOSTS=*" + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.unichain-sepolia-op-geth-archive-leveldb-hash-stripprefix.stripprefix.prefixes=/unichain-sepolia-archive" + - "traefik.http.services.unichain-sepolia-op-geth-archive-leveldb-hash.loadbalancer.server.port=8545" + - "traefik.http.routers.unichain-sepolia-op-geth-archive-leveldb-hash.entrypoints=websecure" + - "traefik.http.routers.unichain-sepolia-op-geth-archive-leveldb-hash.tls.certresolver=myresolver" + - "traefik.http.routers.unichain-sepolia-op-geth-archive-leveldb-hash.rule=Host(`$DOMAIN`) && PathPrefix(`/unichain-sepolia-archive`)" + - "traefik.http.routers.unichain-sepolia-op-geth-archive-leveldb-hash.middlewares=unichain-sepolia-op-geth-archive-leveldb-hash-stripprefix, ipwhitelist" + networks: + - chains + + + unichain-sepolia-archive-node: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 7300 + - 6060 + ports: + - "15589:15589" + - "15589:15589/udp" + entrypoint: [ "./op-node" ] + restart: unless-stopped + volumes: + - .jwtsecret:/jwtsecret + stop_grace_period: 30s + environment: + - "OP_NODE_NETWORK=unichain-sepolia" + - "OP_NODE_SYNCMODE=execution-layer" + - "OP_NODE_L1_ETH_RPC=${ETHEREUM_SEPOLIA_EXECUTION_RPC}" + - "OP_NODE_L2_ENGINE_AUTH=/jwtsecret" + - "OP_NODE_L2_ENGINE_RPC=http://unichain-sepolia-archive:8551" + - "OP_NODE_LOG_LEVEL=info" + - "OP_NODE_METRICS_ADDR=0.0.0.0" + - "OP_NODE_METRICS_ENABLED=true" + - "OP_NODE_METRICS_PORT=7300" + - "OP_NODE_P2P_LISTEN_IP=0.0.0.0" + - "OP_NODE_P2P_LISTEN_TCP_PORT=15589" + - "OP_NODE_P2P_LISTEN_UDP_PORT=15589" + - "OP_NODE_RPC_ADDR=0.0.0.0" + - "OP_NODE_P2P_ADVERTISE_IP=${IP}" + - "OP_NODE_RPC_PORT=8545" + - "OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log" + - "OP_NODE_VERIFIER_L1_CONFS=4" + - "OP_NODE_L1_RPC_KIND=${ETHEREUM_SEPOLIA_EXECUTION_KIND:-basic}" + - "OP_NODE_L1_TRUST_RPC=${ETHEREUM_SEPOLIA_EXECUTION_TRUST:-false}" + - "OP_NODE_L1_BEACON=${ETHEREUM_SEPOLIA_BEACON_REST}" + - "OP_NODE_L1_BEACON_ARCHIVER=${ETHEREUM_SEPOLIA_BEACON_ARCHIVER}" + - "OP_NODE_OVERRIDE_PECTRABLOBSCHEDULE=1742486400" + networks: + - chains + +volumes: + unichain-sepolia-op-geth-archive-leveldb-hash: \ No newline at end of file diff --git a/op/geth/unichain-sepolia-op-geth-pruned-pebble-path.yml b/op/geth/unichain-sepolia-op-geth-pruned-pebble-path.yml new file mode 100644 index 00000000..1bb40054 --- /dev/null +++ b/op/geth/unichain-sepolia-op-geth-pruned-pebble-path.yml @@ -0,0 +1,99 @@ +services: + unichain-sepolia: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 6060 + ports: + - "10226:10226" + - "10226:10226/udp" + entrypoint: [ "./geth" ] + restart: unless-stopped + stop_grace_period: 3m + volumes: + - unichain-sepolia-op-geth-pruned-pebble-path:/data + - .jwtsecret:/jwtsecret + environment: + - "GETH_DATADIR=/data" + - "GETH_OP_NETWORK=unichain-sepolia" + - "GETH_GCMODE=full" + - "GETH_SYNCMODE=snap" + - "GETH_STATE_SCHEME=path" + - "GETH_DB_ENGINE=pebble" + - "GETH_NAT=extip:${IP}" + - "GETH_PORT=19809" + - "GETH_WS_PORT=8545" + - "GETH_HTTP=true" + - "GETH_HTTP_ADDR=0.0.0.0" + - "GETH_HTTP_VHOSTS=*" + - "GETH_WS=true" + - "GETH_WS_ADDR=0.0.0.0" + - "GETH_WS_ORIGINS=*" + - "GETH_HTTP_API=eth,net,debug,admin,web3" + - "GETH_AUTHRPC_JWTSECRET=/jwtsecret" + - "GETH_AUTHRPC_ADDR=0.0.0.0" + - "GETH_AUTHRPC_VHOSTS=*" + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.unichain-sepolia-op-geth-pruned-pebble-path-stripprefix.stripprefix.prefixes=/unichain-sepolia" + - "traefik.http.services.unichain-sepolia-op-geth-pruned-pebble-path.loadbalancer.server.port=8545" + - "traefik.http.routers.unichain-sepolia-op-geth-pruned-pebble-path.entrypoints=websecure" + - "traefik.http.routers.unichain-sepolia-op-geth-pruned-pebble-path.tls.certresolver=myresolver" + - "traefik.http.routers.unichain-sepolia-op-geth-pruned-pebble-path.rule=Host(`$DOMAIN`) && PathPrefix(`/unichain-sepolia`)" + - "traefik.http.routers.unichain-sepolia-op-geth-pruned-pebble-path.middlewares=unichain-sepolia-op-geth-pruned-pebble-path-stripprefix, ipwhitelist" + networks: + - chains + + + unichain-sepolia-node: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 7300 + - 6060 + ports: + - "15226:15226" + - "15226:15226/udp" + entrypoint: [ "./op-node" ] + restart: unless-stopped + volumes: + - .jwtsecret:/jwtsecret + stop_grace_period: 30s + environment: + - "OP_NODE_NETWORK=unichain-sepolia" + - "OP_NODE_SYNCMODE=execution-layer" + - "OP_NODE_L1_ETH_RPC=${ETHEREUM_SEPOLIA_EXECUTION_RPC}" + - "OP_NODE_L2_ENGINE_AUTH=/jwtsecret" + - "OP_NODE_L2_ENGINE_RPC=http://unichain-sepolia:8551" + - "OP_NODE_LOG_LEVEL=info" + - "OP_NODE_METRICS_ADDR=0.0.0.0" + - "OP_NODE_METRICS_ENABLED=true" + - "OP_NODE_METRICS_PORT=7300" + - "OP_NODE_P2P_LISTEN_IP=0.0.0.0" + - "OP_NODE_P2P_LISTEN_TCP_PORT=15226" + - "OP_NODE_P2P_LISTEN_UDP_PORT=15226" + - "OP_NODE_RPC_ADDR=0.0.0.0" + - "OP_NODE_P2P_ADVERTISE_IP=${IP}" + - "OP_NODE_RPC_PORT=8545" + - "OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log" + - "OP_NODE_VERIFIER_L1_CONFS=4" + - "OP_NODE_L1_RPC_KIND=${ETHEREUM_SEPOLIA_EXECUTION_KIND:-basic}" + - "OP_NODE_L1_TRUST_RPC=${ETHEREUM_SEPOLIA_EXECUTION_TRUST:-false}" + - "OP_NODE_L1_BEACON=${ETHEREUM_SEPOLIA_BEACON_REST}" + - "OP_NODE_L1_BEACON_ARCHIVER=${ETHEREUM_SEPOLIA_BEACON_ARCHIVER}" + - "OP_NODE_OVERRIDE_PECTRABLOBSCHEDULE=1742486400" + networks: + - chains + +volumes: + unichain-sepolia-op-geth-pruned-pebble-path: \ No newline at end of file diff --git a/op/geth/worldchain-mainnet-op-geth-archive-leveldb-hash.yml b/op/geth/worldchain-mainnet-op-geth-archive-leveldb-hash.yml new file mode 100644 index 00000000..1163a666 --- /dev/null +++ b/op/geth/worldchain-mainnet-op-geth-archive-leveldb-hash.yml @@ -0,0 +1,99 @@ +services: + worldchain-mainnet-archive: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 6060 + ports: + - "10162:10162" + - "10162:10162/udp" + entrypoint: [ "./geth" ] + restart: unless-stopped + stop_grace_period: 3m + volumes: + - worldchain-mainnet-op-geth-archive-leveldb-hash:/data + - .jwtsecret:/jwtsecret + environment: + - "GETH_DATADIR=/data" + - "GETH_OP_NETWORK=worldchain-mainnet" + - "GETH_GCMODE=archive" + - "GETH_SYNCMODE=full" + - "GETH_STATE_SCHEME=hash" + - "GETH_DB_ENGINE=leveldb" + - "GETH_NAT=extip:${IP}" + - "GETH_PORT=19809" + - "GETH_WS_PORT=8545" + - "GETH_HTTP=true" + - "GETH_HTTP_ADDR=0.0.0.0" + - "GETH_HTTP_VHOSTS=*" + - "GETH_WS=true" + - "GETH_WS_ADDR=0.0.0.0" + - "GETH_WS_ORIGINS=*" + - "GETH_HTTP_API=eth,net,debug,admin,web3" + - "GETH_AUTHRPC_JWTSECRET=/jwtsecret" + - "GETH_AUTHRPC_ADDR=0.0.0.0" + - "GETH_AUTHRPC_VHOSTS=*" + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.worldchain-mainnet-op-geth-archive-leveldb-hash-stripprefix.stripprefix.prefixes=/worldchain-mainnet-archive" + - "traefik.http.services.worldchain-mainnet-op-geth-archive-leveldb-hash.loadbalancer.server.port=8545" + - "traefik.http.routers.worldchain-mainnet-op-geth-archive-leveldb-hash.entrypoints=websecure" + - "traefik.http.routers.worldchain-mainnet-op-geth-archive-leveldb-hash.tls.certresolver=myresolver" + - "traefik.http.routers.worldchain-mainnet-op-geth-archive-leveldb-hash.rule=Host(`$DOMAIN`) && PathPrefix(`/worldchain-mainnet-archive`)" + - "traefik.http.routers.worldchain-mainnet-op-geth-archive-leveldb-hash.middlewares=worldchain-mainnet-op-geth-archive-leveldb-hash-stripprefix, ipwhitelist" + networks: + - chains + + + worldchain-mainnet-archive-node: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 7300 + - 6060 + ports: + - "15162:15162" + - "15162:15162/udp" + entrypoint: [ "./op-node" ] + restart: unless-stopped + volumes: + - .jwtsecret:/jwtsecret + stop_grace_period: 30s + environment: + - "OP_NODE_NETWORK=worldchain-mainnet" + - "OP_NODE_SYNCMODE=execution-layer" + - "OP_NODE_L1_ETH_RPC=${ETHEREUM_MAINNET_EXECUTION_RPC}" + - "OP_NODE_L2_ENGINE_AUTH=/jwtsecret" + - "OP_NODE_L2_ENGINE_RPC=http://worldchain-mainnet-archive:8551" + - "OP_NODE_LOG_LEVEL=info" + - "OP_NODE_METRICS_ADDR=0.0.0.0" + - "OP_NODE_METRICS_ENABLED=true" + - "OP_NODE_METRICS_PORT=7300" + - "OP_NODE_P2P_LISTEN_IP=0.0.0.0" + - "OP_NODE_P2P_LISTEN_TCP_PORT=15162" + - "OP_NODE_P2P_LISTEN_UDP_PORT=15162" + - "OP_NODE_RPC_ADDR=0.0.0.0" + - "OP_NODE_P2P_ADVERTISE_IP=${IP}" + - "OP_NODE_RPC_PORT=8545" + - "OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log" + - "OP_NODE_VERIFIER_L1_CONFS=4" + - "OP_NODE_L1_RPC_KIND=${ETHEREUM_MAINNET_EXECUTION_KIND:-basic}" + - "OP_NODE_L1_TRUST_RPC=${ETHEREUM_MAINNET_EXECUTION_TRUST:-false}" + - "OP_NODE_L1_BEACON=${ETHEREUM_MAINNET_BEACON_REST}" + - "OP_NODE_L1_BEACON_ARCHIVER=${ETHEREUM_MAINNET_BEACON_ARCHIVER}" + + networks: + - chains + +volumes: + worldchain-mainnet-op-geth-archive-leveldb-hash: \ No newline at end of file diff --git a/op/geth/worldchain-mainnet-op-geth-pruned-pebble-path.yml b/op/geth/worldchain-mainnet-op-geth-pruned-pebble-path.yml new file mode 100644 index 00000000..7978a638 --- /dev/null +++ b/op/geth/worldchain-mainnet-op-geth-pruned-pebble-path.yml @@ -0,0 +1,99 @@ +services: + worldchain-mainnet: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 6060 + ports: + - "10096:10096" + - "10096:10096/udp" + entrypoint: [ "./geth" ] + restart: unless-stopped + stop_grace_period: 3m + volumes: + - worldchain-mainnet-op-geth-pruned-pebble-path:/data + - .jwtsecret:/jwtsecret + environment: + - "GETH_DATADIR=/data" + - "GETH_OP_NETWORK=worldchain-mainnet" + - "GETH_GCMODE=full" + - "GETH_SYNCMODE=snap" + - "GETH_STATE_SCHEME=path" + - "GETH_DB_ENGINE=pebble" + - "GETH_NAT=extip:${IP}" + - "GETH_PORT=19809" + - "GETH_WS_PORT=8545" + - "GETH_HTTP=true" + - "GETH_HTTP_ADDR=0.0.0.0" + - "GETH_HTTP_VHOSTS=*" + - "GETH_WS=true" + - "GETH_WS_ADDR=0.0.0.0" + - "GETH_WS_ORIGINS=*" + - "GETH_HTTP_API=eth,net,debug,admin,web3" + - "GETH_AUTHRPC_JWTSECRET=/jwtsecret" + - "GETH_AUTHRPC_ADDR=0.0.0.0" + - "GETH_AUTHRPC_VHOSTS=*" + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.worldchain-mainnet-op-geth-pruned-pebble-path-stripprefix.stripprefix.prefixes=/worldchain-mainnet" + - "traefik.http.services.worldchain-mainnet-op-geth-pruned-pebble-path.loadbalancer.server.port=8545" + - "traefik.http.routers.worldchain-mainnet-op-geth-pruned-pebble-path.entrypoints=websecure" + - "traefik.http.routers.worldchain-mainnet-op-geth-pruned-pebble-path.tls.certresolver=myresolver" + - "traefik.http.routers.worldchain-mainnet-op-geth-pruned-pebble-path.rule=Host(`$DOMAIN`) && PathPrefix(`/worldchain-mainnet`)" + - "traefik.http.routers.worldchain-mainnet-op-geth-pruned-pebble-path.middlewares=worldchain-mainnet-op-geth-pruned-pebble-path-stripprefix, ipwhitelist" + networks: + - chains + + + worldchain-mainnet-node: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 7300 + - 6060 + ports: + - "15096:15096" + - "15096:15096/udp" + entrypoint: [ "./op-node" ] + restart: unless-stopped + volumes: + - .jwtsecret:/jwtsecret + stop_grace_period: 30s + environment: + - "OP_NODE_NETWORK=worldchain-mainnet" + - "OP_NODE_SYNCMODE=execution-layer" + - "OP_NODE_L1_ETH_RPC=${ETHEREUM_MAINNET_EXECUTION_RPC}" + - "OP_NODE_L2_ENGINE_AUTH=/jwtsecret" + - "OP_NODE_L2_ENGINE_RPC=http://worldchain-mainnet:8551" + - "OP_NODE_LOG_LEVEL=info" + - "OP_NODE_METRICS_ADDR=0.0.0.0" + - "OP_NODE_METRICS_ENABLED=true" + - "OP_NODE_METRICS_PORT=7300" + - "OP_NODE_P2P_LISTEN_IP=0.0.0.0" + - "OP_NODE_P2P_LISTEN_TCP_PORT=15096" + - "OP_NODE_P2P_LISTEN_UDP_PORT=15096" + - "OP_NODE_RPC_ADDR=0.0.0.0" + - "OP_NODE_P2P_ADVERTISE_IP=${IP}" + - "OP_NODE_RPC_PORT=8545" + - "OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log" + - "OP_NODE_VERIFIER_L1_CONFS=4" + - "OP_NODE_L1_RPC_KIND=${ETHEREUM_MAINNET_EXECUTION_KIND:-basic}" + - "OP_NODE_L1_TRUST_RPC=${ETHEREUM_MAINNET_EXECUTION_TRUST:-false}" + - "OP_NODE_L1_BEACON=${ETHEREUM_MAINNET_BEACON_REST}" + - "OP_NODE_L1_BEACON_ARCHIVER=${ETHEREUM_MAINNET_BEACON_ARCHIVER}" + + networks: + - chains + +volumes: + worldchain-mainnet-op-geth-pruned-pebble-path: \ No newline at end of file diff --git a/op/geth/worldchain-sepolia-op-geth-archive-leveldb-hash.yml b/op/geth/worldchain-sepolia-op-geth-archive-leveldb-hash.yml new file mode 100644 index 00000000..e4b5c8a3 --- /dev/null +++ b/op/geth/worldchain-sepolia-op-geth-archive-leveldb-hash.yml @@ -0,0 +1,99 @@ +services: + worldchain-sepolia-archive: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 6060 + ports: + - "10720:10720" + - "10720:10720/udp" + entrypoint: [ "./geth" ] + restart: unless-stopped + stop_grace_period: 3m + volumes: + - worldchain-sepolia-op-geth-archive-leveldb-hash:/data + - .jwtsecret:/jwtsecret + environment: + - "GETH_DATADIR=/data" + - "GETH_OP_NETWORK=worldchain-sepolia" + - "GETH_GCMODE=archive" + - "GETH_SYNCMODE=full" + - "GETH_STATE_SCHEME=hash" + - "GETH_DB_ENGINE=leveldb" + - "GETH_NAT=extip:${IP}" + - "GETH_PORT=19809" + - "GETH_WS_PORT=8545" + - "GETH_HTTP=true" + - "GETH_HTTP_ADDR=0.0.0.0" + - "GETH_HTTP_VHOSTS=*" + - "GETH_WS=true" + - "GETH_WS_ADDR=0.0.0.0" + - "GETH_WS_ORIGINS=*" + - "GETH_HTTP_API=eth,net,debug,admin,web3" + - "GETH_AUTHRPC_JWTSECRET=/jwtsecret" + - "GETH_AUTHRPC_ADDR=0.0.0.0" + - "GETH_AUTHRPC_VHOSTS=*" + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.worldchain-sepolia-op-geth-archive-leveldb-hash-stripprefix.stripprefix.prefixes=/worldchain-sepolia-archive" + - "traefik.http.services.worldchain-sepolia-op-geth-archive-leveldb-hash.loadbalancer.server.port=8545" + - "traefik.http.routers.worldchain-sepolia-op-geth-archive-leveldb-hash.entrypoints=websecure" + - "traefik.http.routers.worldchain-sepolia-op-geth-archive-leveldb-hash.tls.certresolver=myresolver" + - "traefik.http.routers.worldchain-sepolia-op-geth-archive-leveldb-hash.rule=Host(`$DOMAIN`) && PathPrefix(`/worldchain-sepolia-archive`)" + - "traefik.http.routers.worldchain-sepolia-op-geth-archive-leveldb-hash.middlewares=worldchain-sepolia-op-geth-archive-leveldb-hash-stripprefix, ipwhitelist" + networks: + - chains + + + worldchain-sepolia-archive-node: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 7300 + - 6060 + ports: + - "15720:15720" + - "15720:15720/udp" + entrypoint: [ "./op-node" ] + restart: unless-stopped + volumes: + - .jwtsecret:/jwtsecret + stop_grace_period: 30s + environment: + - "OP_NODE_NETWORK=worldchain-sepolia" + - "OP_NODE_SYNCMODE=execution-layer" + - "OP_NODE_L1_ETH_RPC=${ETHEREUM_SEPOLIA_EXECUTION_RPC}" + - "OP_NODE_L2_ENGINE_AUTH=/jwtsecret" + - "OP_NODE_L2_ENGINE_RPC=http://worldchain-sepolia-archive:8551" + - "OP_NODE_LOG_LEVEL=info" + - "OP_NODE_METRICS_ADDR=0.0.0.0" + - "OP_NODE_METRICS_ENABLED=true" + - "OP_NODE_METRICS_PORT=7300" + - "OP_NODE_P2P_LISTEN_IP=0.0.0.0" + - "OP_NODE_P2P_LISTEN_TCP_PORT=15720" + - "OP_NODE_P2P_LISTEN_UDP_PORT=15720" + - "OP_NODE_RPC_ADDR=0.0.0.0" + - "OP_NODE_P2P_ADVERTISE_IP=${IP}" + - "OP_NODE_RPC_PORT=8545" + - "OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log" + - "OP_NODE_VERIFIER_L1_CONFS=4" + - "OP_NODE_L1_RPC_KIND=${ETHEREUM_SEPOLIA_EXECUTION_KIND:-basic}" + - "OP_NODE_L1_TRUST_RPC=${ETHEREUM_SEPOLIA_EXECUTION_TRUST:-false}" + - "OP_NODE_L1_BEACON=${ETHEREUM_SEPOLIA_BEACON_REST}" + - "OP_NODE_L1_BEACON_ARCHIVER=${ETHEREUM_SEPOLIA_BEACON_ARCHIVER}" + - "OP_NODE_OVERRIDE_PECTRABLOBSCHEDULE=1742486400" + networks: + - chains + +volumes: + worldchain-sepolia-op-geth-archive-leveldb-hash: \ No newline at end of file diff --git a/op/geth/worldchain-sepolia-op-geth-pruned-pebble-path.yml b/op/geth/worldchain-sepolia-op-geth-pruned-pebble-path.yml new file mode 100644 index 00000000..e2d17cc6 --- /dev/null +++ b/op/geth/worldchain-sepolia-op-geth-pruned-pebble-path.yml @@ -0,0 +1,99 @@ +services: + worldchain-sepolia: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 6060 + ports: + - "10620:10620" + - "10620:10620/udp" + entrypoint: [ "./geth" ] + restart: unless-stopped + stop_grace_period: 3m + volumes: + - worldchain-sepolia-op-geth-pruned-pebble-path:/data + - .jwtsecret:/jwtsecret + environment: + - "GETH_DATADIR=/data" + - "GETH_OP_NETWORK=worldchain-sepolia" + - "GETH_GCMODE=full" + - "GETH_SYNCMODE=snap" + - "GETH_STATE_SCHEME=path" + - "GETH_DB_ENGINE=pebble" + - "GETH_NAT=extip:${IP}" + - "GETH_PORT=19809" + - "GETH_WS_PORT=8545" + - "GETH_HTTP=true" + - "GETH_HTTP_ADDR=0.0.0.0" + - "GETH_HTTP_VHOSTS=*" + - "GETH_WS=true" + - "GETH_WS_ADDR=0.0.0.0" + - "GETH_WS_ORIGINS=*" + - "GETH_HTTP_API=eth,net,debug,admin,web3" + - "GETH_AUTHRPC_JWTSECRET=/jwtsecret" + - "GETH_AUTHRPC_ADDR=0.0.0.0" + - "GETH_AUTHRPC_VHOSTS=*" + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.worldchain-sepolia-op-geth-pruned-pebble-path-stripprefix.stripprefix.prefixes=/worldchain-sepolia" + - "traefik.http.services.worldchain-sepolia-op-geth-pruned-pebble-path.loadbalancer.server.port=8545" + - "traefik.http.routers.worldchain-sepolia-op-geth-pruned-pebble-path.entrypoints=websecure" + - "traefik.http.routers.worldchain-sepolia-op-geth-pruned-pebble-path.tls.certresolver=myresolver" + - "traefik.http.routers.worldchain-sepolia-op-geth-pruned-pebble-path.rule=Host(`$DOMAIN`) && PathPrefix(`/worldchain-sepolia`)" + - "traefik.http.routers.worldchain-sepolia-op-geth-pruned-pebble-path.middlewares=worldchain-sepolia-op-geth-pruned-pebble-path-stripprefix, ipwhitelist" + networks: + - chains + + + worldchain-sepolia-node: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 7300 + - 6060 + ports: + - "15620:15620" + - "15620:15620/udp" + entrypoint: [ "./op-node" ] + restart: unless-stopped + volumes: + - .jwtsecret:/jwtsecret + stop_grace_period: 30s + environment: + - "OP_NODE_NETWORK=worldchain-sepolia" + - "OP_NODE_SYNCMODE=execution-layer" + - "OP_NODE_L1_ETH_RPC=${ETHEREUM_SEPOLIA_EXECUTION_RPC}" + - "OP_NODE_L2_ENGINE_AUTH=/jwtsecret" + - "OP_NODE_L2_ENGINE_RPC=http://worldchain-sepolia:8551" + - "OP_NODE_LOG_LEVEL=info" + - "OP_NODE_METRICS_ADDR=0.0.0.0" + - "OP_NODE_METRICS_ENABLED=true" + - "OP_NODE_METRICS_PORT=7300" + - "OP_NODE_P2P_LISTEN_IP=0.0.0.0" + - "OP_NODE_P2P_LISTEN_TCP_PORT=15620" + - "OP_NODE_P2P_LISTEN_UDP_PORT=15620" + - "OP_NODE_RPC_ADDR=0.0.0.0" + - "OP_NODE_P2P_ADVERTISE_IP=${IP}" + - "OP_NODE_RPC_PORT=8545" + - "OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log" + - "OP_NODE_VERIFIER_L1_CONFS=4" + - "OP_NODE_L1_RPC_KIND=${ETHEREUM_SEPOLIA_EXECUTION_KIND:-basic}" + - "OP_NODE_L1_TRUST_RPC=${ETHEREUM_SEPOLIA_EXECUTION_TRUST:-false}" + - "OP_NODE_L1_BEACON=${ETHEREUM_SEPOLIA_BEACON_REST}" + - "OP_NODE_L1_BEACON_ARCHIVER=${ETHEREUM_SEPOLIA_BEACON_ARCHIVER}" + - "OP_NODE_OVERRIDE_PECTRABLOBSCHEDULE=1742486400" + networks: + - chains + +volumes: + worldchain-sepolia-op-geth-pruned-pebble-path: \ No newline at end of file diff --git a/op/geth/zora-mainnet-op-geth-archive-leveldb-hash.yml b/op/geth/zora-mainnet-op-geth-archive-leveldb-hash.yml new file mode 100644 index 00000000..ee93c3f2 --- /dev/null +++ b/op/geth/zora-mainnet-op-geth-archive-leveldb-hash.yml @@ -0,0 +1,99 @@ +services: + zora-mainnet-archive: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 6060 + ports: + - "10066:10066" + - "10066:10066/udp" + entrypoint: [ "./geth" ] + restart: unless-stopped + stop_grace_period: 3m + volumes: + - zora-mainnet-op-geth-archive-leveldb-hash:/data + - .jwtsecret:/jwtsecret + environment: + - "GETH_DATADIR=/data" + - "GETH_OP_NETWORK=zora-mainnet" + - "GETH_GCMODE=archive" + - "GETH_SYNCMODE=full" + - "GETH_STATE_SCHEME=hash" + - "GETH_DB_ENGINE=leveldb" + - "GETH_NAT=extip:${IP}" + - "GETH_PORT=19809" + - "GETH_WS_PORT=8545" + - "GETH_HTTP=true" + - "GETH_HTTP_ADDR=0.0.0.0" + - "GETH_HTTP_VHOSTS=*" + - "GETH_WS=true" + - "GETH_WS_ADDR=0.0.0.0" + - "GETH_WS_ORIGINS=*" + - "GETH_HTTP_API=eth,net,debug,admin,web3" + - "GETH_AUTHRPC_JWTSECRET=/jwtsecret" + - "GETH_AUTHRPC_ADDR=0.0.0.0" + - "GETH_AUTHRPC_VHOSTS=*" + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.zora-mainnet-op-geth-archive-leveldb-hash-stripprefix.stripprefix.prefixes=/zora-mainnet-archive" + - "traefik.http.services.zora-mainnet-op-geth-archive-leveldb-hash.loadbalancer.server.port=8545" + - "traefik.http.routers.zora-mainnet-op-geth-archive-leveldb-hash.entrypoints=websecure" + - "traefik.http.routers.zora-mainnet-op-geth-archive-leveldb-hash.tls.certresolver=myresolver" + - "traefik.http.routers.zora-mainnet-op-geth-archive-leveldb-hash.rule=Host(`$DOMAIN`) && PathPrefix(`/zora-mainnet-archive`)" + - "traefik.http.routers.zora-mainnet-op-geth-archive-leveldb-hash.middlewares=zora-mainnet-op-geth-archive-leveldb-hash-stripprefix, ipwhitelist" + networks: + - chains + + + zora-mainnet-archive-node: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 7300 + - 6060 + ports: + - "15066:15066" + - "15066:15066/udp" + entrypoint: [ "./op-node" ] + restart: unless-stopped + volumes: + - .jwtsecret:/jwtsecret + stop_grace_period: 30s + environment: + - "OP_NODE_NETWORK=zora-mainnet" + - "OP_NODE_SYNCMODE=execution-layer" + - "OP_NODE_L1_ETH_RPC=${ETHEREUM_MAINNET_EXECUTION_RPC}" + - "OP_NODE_L2_ENGINE_AUTH=/jwtsecret" + - "OP_NODE_L2_ENGINE_RPC=http://zora-mainnet-archive:8551" + - "OP_NODE_LOG_LEVEL=info" + - "OP_NODE_METRICS_ADDR=0.0.0.0" + - "OP_NODE_METRICS_ENABLED=true" + - "OP_NODE_METRICS_PORT=7300" + - "OP_NODE_P2P_LISTEN_IP=0.0.0.0" + - "OP_NODE_P2P_LISTEN_TCP_PORT=15066" + - "OP_NODE_P2P_LISTEN_UDP_PORT=15066" + - "OP_NODE_RPC_ADDR=0.0.0.0" + - "OP_NODE_P2P_ADVERTISE_IP=${IP}" + - "OP_NODE_RPC_PORT=8545" + - "OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log" + - "OP_NODE_VERIFIER_L1_CONFS=4" + - "OP_NODE_L1_RPC_KIND=${ETHEREUM_MAINNET_EXECUTION_KIND:-basic}" + - "OP_NODE_L1_TRUST_RPC=${ETHEREUM_MAINNET_EXECUTION_TRUST:-false}" + - "OP_NODE_L1_BEACON=${ETHEREUM_MAINNET_BEACON_REST}" + - "OP_NODE_L1_BEACON_ARCHIVER=${ETHEREUM_MAINNET_BEACON_ARCHIVER}" + + networks: + - chains + +volumes: + zora-mainnet-op-geth-archive-leveldb-hash: \ No newline at end of file diff --git a/op/geth/zora-mainnet-op-geth-pruned-pebble-path.yml b/op/geth/zora-mainnet-op-geth-pruned-pebble-path.yml new file mode 100644 index 00000000..7cda1879 --- /dev/null +++ b/op/geth/zora-mainnet-op-geth-pruned-pebble-path.yml @@ -0,0 +1,99 @@ +services: + zora-mainnet: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 6060 + ports: + - "10714:10714" + - "10714:10714/udp" + entrypoint: [ "./geth" ] + restart: unless-stopped + stop_grace_period: 3m + volumes: + - zora-mainnet-op-geth-pruned-pebble-path:/data + - .jwtsecret:/jwtsecret + environment: + - "GETH_DATADIR=/data" + - "GETH_OP_NETWORK=zora-mainnet" + - "GETH_GCMODE=full" + - "GETH_SYNCMODE=snap" + - "GETH_STATE_SCHEME=path" + - "GETH_DB_ENGINE=pebble" + - "GETH_NAT=extip:${IP}" + - "GETH_PORT=19809" + - "GETH_WS_PORT=8545" + - "GETH_HTTP=true" + - "GETH_HTTP_ADDR=0.0.0.0" + - "GETH_HTTP_VHOSTS=*" + - "GETH_WS=true" + - "GETH_WS_ADDR=0.0.0.0" + - "GETH_WS_ORIGINS=*" + - "GETH_HTTP_API=eth,net,debug,admin,web3" + - "GETH_AUTHRPC_JWTSECRET=/jwtsecret" + - "GETH_AUTHRPC_ADDR=0.0.0.0" + - "GETH_AUTHRPC_VHOSTS=*" + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.zora-mainnet-op-geth-pruned-pebble-path-stripprefix.stripprefix.prefixes=/zora-mainnet" + - "traefik.http.services.zora-mainnet-op-geth-pruned-pebble-path.loadbalancer.server.port=8545" + - "traefik.http.routers.zora-mainnet-op-geth-pruned-pebble-path.entrypoints=websecure" + - "traefik.http.routers.zora-mainnet-op-geth-pruned-pebble-path.tls.certresolver=myresolver" + - "traefik.http.routers.zora-mainnet-op-geth-pruned-pebble-path.rule=Host(`$DOMAIN`) && PathPrefix(`/zora-mainnet`)" + - "traefik.http.routers.zora-mainnet-op-geth-pruned-pebble-path.middlewares=zora-mainnet-op-geth-pruned-pebble-path-stripprefix, ipwhitelist" + networks: + - chains + + + zora-mainnet-node: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 7300 + - 6060 + ports: + - "15714:15714" + - "15714:15714/udp" + entrypoint: [ "./op-node" ] + restart: unless-stopped + volumes: + - .jwtsecret:/jwtsecret + stop_grace_period: 30s + environment: + - "OP_NODE_NETWORK=zora-mainnet" + - "OP_NODE_SYNCMODE=execution-layer" + - "OP_NODE_L1_ETH_RPC=${ETHEREUM_MAINNET_EXECUTION_RPC}" + - "OP_NODE_L2_ENGINE_AUTH=/jwtsecret" + - "OP_NODE_L2_ENGINE_RPC=http://zora-mainnet:8551" + - "OP_NODE_LOG_LEVEL=info" + - "OP_NODE_METRICS_ADDR=0.0.0.0" + - "OP_NODE_METRICS_ENABLED=true" + - "OP_NODE_METRICS_PORT=7300" + - "OP_NODE_P2P_LISTEN_IP=0.0.0.0" + - "OP_NODE_P2P_LISTEN_TCP_PORT=15714" + - "OP_NODE_P2P_LISTEN_UDP_PORT=15714" + - "OP_NODE_RPC_ADDR=0.0.0.0" + - "OP_NODE_P2P_ADVERTISE_IP=${IP}" + - "OP_NODE_RPC_PORT=8545" + - "OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log" + - "OP_NODE_VERIFIER_L1_CONFS=4" + - "OP_NODE_L1_RPC_KIND=${ETHEREUM_MAINNET_EXECUTION_KIND:-basic}" + - "OP_NODE_L1_TRUST_RPC=${ETHEREUM_MAINNET_EXECUTION_TRUST:-false}" + - "OP_NODE_L1_BEACON=${ETHEREUM_MAINNET_BEACON_REST}" + - "OP_NODE_L1_BEACON_ARCHIVER=${ETHEREUM_MAINNET_BEACON_ARCHIVER}" + + networks: + - chains + +volumes: + zora-mainnet-op-geth-pruned-pebble-path: \ No newline at end of file diff --git a/op/geth/zora-sepolia-op-geth-archive-leveldb-hash.yml b/op/geth/zora-sepolia-op-geth-archive-leveldb-hash.yml new file mode 100644 index 00000000..c2636098 --- /dev/null +++ b/op/geth/zora-sepolia-op-geth-archive-leveldb-hash.yml @@ -0,0 +1,99 @@ +services: + zora-sepolia-archive: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 6060 + ports: + - "10308:10308" + - "10308:10308/udp" + entrypoint: [ "./geth" ] + restart: unless-stopped + stop_grace_period: 3m + volumes: + - zora-sepolia-op-geth-archive-leveldb-hash:/data + - .jwtsecret:/jwtsecret + environment: + - "GETH_DATADIR=/data" + - "GETH_OP_NETWORK=zora-sepolia" + - "GETH_GCMODE=archive" + - "GETH_SYNCMODE=full" + - "GETH_STATE_SCHEME=hash" + - "GETH_DB_ENGINE=leveldb" + - "GETH_NAT=extip:${IP}" + - "GETH_PORT=19809" + - "GETH_WS_PORT=8545" + - "GETH_HTTP=true" + - "GETH_HTTP_ADDR=0.0.0.0" + - "GETH_HTTP_VHOSTS=*" + - "GETH_WS=true" + - "GETH_WS_ADDR=0.0.0.0" + - "GETH_WS_ORIGINS=*" + - "GETH_HTTP_API=eth,net,debug,admin,web3" + - "GETH_AUTHRPC_JWTSECRET=/jwtsecret" + - "GETH_AUTHRPC_ADDR=0.0.0.0" + - "GETH_AUTHRPC_VHOSTS=*" + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.zora-sepolia-op-geth-archive-leveldb-hash-stripprefix.stripprefix.prefixes=/zora-sepolia-archive" + - "traefik.http.services.zora-sepolia-op-geth-archive-leveldb-hash.loadbalancer.server.port=8545" + - "traefik.http.routers.zora-sepolia-op-geth-archive-leveldb-hash.entrypoints=websecure" + - "traefik.http.routers.zora-sepolia-op-geth-archive-leveldb-hash.tls.certresolver=myresolver" + - "traefik.http.routers.zora-sepolia-op-geth-archive-leveldb-hash.rule=Host(`$DOMAIN`) && PathPrefix(`/zora-sepolia-archive`)" + - "traefik.http.routers.zora-sepolia-op-geth-archive-leveldb-hash.middlewares=zora-sepolia-op-geth-archive-leveldb-hash-stripprefix, ipwhitelist" + networks: + - chains + + + zora-sepolia-archive-node: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 7300 + - 6060 + ports: + - "15308:15308" + - "15308:15308/udp" + entrypoint: [ "./op-node" ] + restart: unless-stopped + volumes: + - .jwtsecret:/jwtsecret + stop_grace_period: 30s + environment: + - "OP_NODE_NETWORK=zora-sepolia" + - "OP_NODE_SYNCMODE=execution-layer" + - "OP_NODE_L1_ETH_RPC=${ETHEREUM_SEPOLIA_EXECUTION_RPC}" + - "OP_NODE_L2_ENGINE_AUTH=/jwtsecret" + - "OP_NODE_L2_ENGINE_RPC=http://zora-sepolia-archive:8551" + - "OP_NODE_LOG_LEVEL=info" + - "OP_NODE_METRICS_ADDR=0.0.0.0" + - "OP_NODE_METRICS_ENABLED=true" + - "OP_NODE_METRICS_PORT=7300" + - "OP_NODE_P2P_LISTEN_IP=0.0.0.0" + - "OP_NODE_P2P_LISTEN_TCP_PORT=15308" + - "OP_NODE_P2P_LISTEN_UDP_PORT=15308" + - "OP_NODE_RPC_ADDR=0.0.0.0" + - "OP_NODE_P2P_ADVERTISE_IP=${IP}" + - "OP_NODE_RPC_PORT=8545" + - "OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log" + - "OP_NODE_VERIFIER_L1_CONFS=4" + - "OP_NODE_L1_RPC_KIND=${ETHEREUM_SEPOLIA_EXECUTION_KIND:-basic}" + - "OP_NODE_L1_TRUST_RPC=${ETHEREUM_SEPOLIA_EXECUTION_TRUST:-false}" + - "OP_NODE_L1_BEACON=${ETHEREUM_SEPOLIA_BEACON_REST}" + - "OP_NODE_L1_BEACON_ARCHIVER=${ETHEREUM_SEPOLIA_BEACON_ARCHIVER}" + - "OP_NODE_OVERRIDE_PECTRABLOBSCHEDULE=1742486400" + networks: + - chains + +volumes: + zora-sepolia-op-geth-archive-leveldb-hash: \ No newline at end of file diff --git a/op/geth/zora-sepolia-op-geth-pruned-pebble-path.yml b/op/geth/zora-sepolia-op-geth-pruned-pebble-path.yml new file mode 100644 index 00000000..d140d27f --- /dev/null +++ b/op/geth/zora-sepolia-op-geth-pruned-pebble-path.yml @@ -0,0 +1,99 @@ +services: + zora-sepolia: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 6060 + ports: + - "10083:10083" + - "10083:10083/udp" + entrypoint: [ "./geth" ] + restart: unless-stopped + stop_grace_period: 3m + volumes: + - zora-sepolia-op-geth-pruned-pebble-path:/data + - .jwtsecret:/jwtsecret + environment: + - "GETH_DATADIR=/data" + - "GETH_OP_NETWORK=zora-sepolia" + - "GETH_GCMODE=full" + - "GETH_SYNCMODE=snap" + - "GETH_STATE_SCHEME=path" + - "GETH_DB_ENGINE=pebble" + - "GETH_NAT=extip:${IP}" + - "GETH_PORT=19809" + - "GETH_WS_PORT=8545" + - "GETH_HTTP=true" + - "GETH_HTTP_ADDR=0.0.0.0" + - "GETH_HTTP_VHOSTS=*" + - "GETH_WS=true" + - "GETH_WS_ADDR=0.0.0.0" + - "GETH_WS_ORIGINS=*" + - "GETH_HTTP_API=eth,net,debug,admin,web3" + - "GETH_AUTHRPC_JWTSECRET=/jwtsecret" + - "GETH_AUTHRPC_ADDR=0.0.0.0" + - "GETH_AUTHRPC_VHOSTS=*" + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.zora-sepolia-op-geth-pruned-pebble-path-stripprefix.stripprefix.prefixes=/zora-sepolia" + - "traefik.http.services.zora-sepolia-op-geth-pruned-pebble-path.loadbalancer.server.port=8545" + - "traefik.http.routers.zora-sepolia-op-geth-pruned-pebble-path.entrypoints=websecure" + - "traefik.http.routers.zora-sepolia-op-geth-pruned-pebble-path.tls.certresolver=myresolver" + - "traefik.http.routers.zora-sepolia-op-geth-pruned-pebble-path.rule=Host(`$DOMAIN`) && PathPrefix(`/zora-sepolia`)" + - "traefik.http.routers.zora-sepolia-op-geth-pruned-pebble-path.middlewares=zora-sepolia-op-geth-pruned-pebble-path-stripprefix, ipwhitelist" + networks: + - chains + + + zora-sepolia-node: + build: + context: ./op + args: + OP_VERSION: ${OP_NODE_VERSION:-v1.12.2} + GETH_VERSION: ${OP_GETH_VERSION:-v1.101503.1} + + expose: + - 8545 + - 7300 + - 6060 + ports: + - "15083:15083" + - "15083:15083/udp" + entrypoint: [ "./op-node" ] + restart: unless-stopped + volumes: + - .jwtsecret:/jwtsecret + stop_grace_period: 30s + environment: + - "OP_NODE_NETWORK=zora-sepolia" + - "OP_NODE_SYNCMODE=execution-layer" + - "OP_NODE_L1_ETH_RPC=${ETHEREUM_SEPOLIA_EXECUTION_RPC}" + - "OP_NODE_L2_ENGINE_AUTH=/jwtsecret" + - "OP_NODE_L2_ENGINE_RPC=http://zora-sepolia:8551" + - "OP_NODE_LOG_LEVEL=info" + - "OP_NODE_METRICS_ADDR=0.0.0.0" + - "OP_NODE_METRICS_ENABLED=true" + - "OP_NODE_METRICS_PORT=7300" + - "OP_NODE_P2P_LISTEN_IP=0.0.0.0" + - "OP_NODE_P2P_LISTEN_TCP_PORT=15083" + - "OP_NODE_P2P_LISTEN_UDP_PORT=15083" + - "OP_NODE_RPC_ADDR=0.0.0.0" + - "OP_NODE_P2P_ADVERTISE_IP=${IP}" + - "OP_NODE_RPC_PORT=8545" + - "OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log" + - "OP_NODE_VERIFIER_L1_CONFS=4" + - "OP_NODE_L1_RPC_KIND=${ETHEREUM_SEPOLIA_EXECUTION_KIND:-basic}" + - "OP_NODE_L1_TRUST_RPC=${ETHEREUM_SEPOLIA_EXECUTION_TRUST:-false}" + - "OP_NODE_L1_BEACON=${ETHEREUM_SEPOLIA_BEACON_REST}" + - "OP_NODE_L1_BEACON_ARCHIVER=${ETHEREUM_SEPOLIA_BEACON_ARCHIVER}" + - "OP_NODE_OVERRIDE_PECTRABLOBSCHEDULE=1742486400" + networks: + - chains + +volumes: + zora-sepolia-op-geth-pruned-pebble-path: \ No newline at end of file diff --git a/optimism-reth-fullnode.yml b/optimism-reth-fullnode.yml index 4275abdb..ce1324cc 100644 --- a/optimism-reth-fullnode.yml +++ b/optimism-reth-fullnode.yml @@ -2,7 +2,7 @@ version: '3.1' services: optimism-fullnode: # this is Optimism's geth client - image: ghcr.io/paradigmxyz/op-reth:${RETH_VERSION:-v1.1.5} + image: ghcr.io/paradigmxyz/op-reth:${RETH_VERSION:-v1.3.2} expose: - 9551 - 8545 # RPC / Websocket @@ -57,6 +57,7 @@ services: environment: - "OP_NODE_NETWORK=op-mainnet" - "OP_NODE_SYNCMODE=execution-layer" + - "OP_NODE_L2_SKIP_SYNC_START_CHECK=true" - "OP_NODE_L1_ETH_RPC=${OPTIMISM_ETHEREUM_ENDPOINT}" - "OP_NODE_L2_ENGINE_AUTH_RAW=${JWTSECRET}" - "OP_NODE_L2_ENGINE_AUTH=/jwtsecret" diff --git a/reference-rpc-endpoint.json b/reference-rpc-endpoint.json index b02ea157..a912c5ae 100644 --- a/reference-rpc-endpoint.json +++ b/reference-rpc-endpoint.json @@ -1,586 +1,1222 @@ { - "base": { - "id": 8453, - "urls": [ - "https://mainnet.base.org" - ], - "default": [ - "base-fullnode", "base-reth-fullnode" - ], - "archive": ["base-reth", "base-mainnet-op-erigon-archive-trace"] - }, - "snaxchain": { - "id": 2192, - "urls": [ - "https://mainnet.snaxchain.io" - ], - "default": [ - "op-snaxchain-fullnode" - ] - }, - "base-sepolia": { - "id": 84532, - "urls": [ - "https://sepolia.base.org" - ], - "default": [ - "base-sepolia" - ] - }, - "metis": { - "id": 1088, - "urls": [ - "https://andromeda.metis.io/?owner=1088" - ], - "default": ["metis"], - "archive": ["metis-archive"] - }, - "taiko": { - "id": 167000, - "urls": ["https://rpc.mainnet.taiko.xyz"], - "default": ["taiko"] - }, - "taiko-hekla": { - "id": 167009, - "urls": ["https://rpc.hekla.taiko.xyz"], - "default": ["taiko-hekla"] - }, - "haqq": { - "id": 11235, - "urls": [ - "https://evm.haqq.sh" - ], - "default": ["haqq"] - }, "ethereum": { "id": 1, - "urls": [ - "https://eth.drpc.org" - ], - "default": [ - "erigon-mainnet-minimal", - "erigon-fullnode", - "nethermind-mainnet", - "geth-mainnet", - "besu-fullnode", - "reth-mainnet-fullnode" - ], - "archive": [ - "reth-mainnet", - "erigon-mainnet", - "ethereum-mainnet-erigon3-archive-trace", - "ethereum-mainnet-erigon-archive-trace" + "urls": [ + "https://api.mycryptoapi.com/eth", + "https://cloudflare-eth.com", + "https://ethereum-rpc.publicnode.com", + "https://mainnet.gateway.tenderly.co", + "https://rpc.blocknative.com/boost", + "https://rpc.flashbots.net", + "https://rpc.flashbots.net/fast", + "https://rpc.mevblocker.io", + "https://rpc.mevblocker.io/fast", + "https://rpc.mevblocker.io/noreverts", + "https://rpc.mevblocker.io/fullprivacy", + "https://eth.drpc.org", + "https://api.securerpc.com/v1" + ] + }, + "optimism": { + "id": 10, + "urls": [ + "https://mainnet.optimism.io", + "https://optimism-rpc.publicnode.com", + "https://optimism.gateway.tenderly.co", + "https://optimism.drpc.org" + ] + }, + "thundercore-testnet": { + "id": 18, + "urls": [ + "https://testnet-rpc.thundercore.com", + "https://thundercore-testnet.drpc.org" + ] + }, + "cronos": { + "id": 25, + "urls": [ + "https://evm.cronos.org", + "https://cronos-evm-rpc.publicnode.com", + "https://cronos.drpc.org" + ] + }, + "rootstock": { + "id": 30, + "urls": [ + "https://public-node.rsk.co", + "https://mycrypto.rsk.co" + ] + }, + "rootstock-testnet": { + "id": 31, + "urls": [ + "https://public-node.testnet.rsk.co", + "https://mycrypto.testnet.rsk.co" + ] + }, + "telos": { + "id": 40, + "urls": [ + "https://rpc.telos.net", + "https://telos.drpc.org" + ] + }, + "telos-testnet": { + "id": 41, + "urls": [ + "https://rpc.testnet.telos.net", + "https://telos-testnet.drpc.org" + ] + }, + "bsc": { + "id": 56, + "urls": [ + "https://bsc-dataseed1.bnbchain.org", + "https://bsc-dataseed2.bnbchain.org", + "https://bsc-dataseed3.bnbchain.org", + "https://bsc-dataseed4.bnbchain.org", + "https://bsc-dataseed1.defibit.io", + "https://bsc-dataseed2.defibit.io", + "https://bsc-dataseed3.defibit.io", + "https://bsc-dataseed4.defibit.io", + "https://bsc-dataseed1.ninicoin.io", + "https://bsc-dataseed2.ninicoin.io", + "https://bsc-dataseed3.ninicoin.io", + "https://bsc-dataseed4.ninicoin.io", + "https://bsc-rpc.publicnode.com" + ] + }, + "ethereum-classic": { + "id": 61, + "urls": [ + "https://etc.rivet.link", + "https://besu-at.etc-network.info", + "https://geth-at.etc-network.info", + "https://etc.etcdesktop.com", + "https://etc.mytokenpocket.vip" + ] + }, + "oktc-testnet": { + "id": 65, + "urls": [ + "https://exchaintestrpc.okex.org" + ] + }, + "oktc": { + "id": 66, + "urls": [ + "https://exchainrpc.okex.org", + "https://okc-mainnet.gateway.pokt.network/v1/lb/6275309bea1b320039c893ff" + ] + }, + "viction": { + "id": 88, + "urls": [ + "https://rpc.viction.xyz" + ] + }, + "viction-testnet": { + "id": 89, + "urls": [ + "https://rpc-testnet.viction.xyz" + ] + }, + "bsc-testnet": { + "id": 97, + "urls": [ + "https://data-seed-prebsc-1-s1.bnbchain.org:8545", + "https://data-seed-prebsc-2-s1.bnbchain.org:8545", + "https://data-seed-prebsc-1-s2.bnbchain.org:8545", + "https://data-seed-prebsc-2-s2.bnbchain.org:8545", + "https://data-seed-prebsc-1-s3.bnbchain.org:8545", + "https://data-seed-prebsc-2-s3.bnbchain.org:8545", + "https://bsc-testnet-rpc.publicnode.com" + ] + }, + "gnosis": { + "id": 100, + "urls": [ + "https://rpc.gnosischain.com", + "https://rpc.gnosis.gateway.fm", + "https://rpc.ankr.com/gnosis", + "https://gnosischain-rpc.gateway.pokt.network", + "https://gnosis-mainnet.public.blastapi.io", + "https://gnosis.api.onfinality.io/public", + "https://gnosis.blockpi.network/v1/rpc/public", + "https://web3endpoints.com/gnosischain-mainnet", + "https://gnosis.oat.farm", + "https://gnosis-rpc.publicnode.com" + ] + }, + "thundercore": { + "id": 108, + "urls": [ + "https://mainnet-rpc.thundercore.com", + "https://mainnet-rpc.thundertoken.net", + "https://mainnet-rpc.thundercore.io" + ] + }, + "fuse": { + "id": 122, + "urls": [ + "https://rpc.fuse.io", + "https://fuse.drpc.org" + ] + }, + "heco": { + "id": 128, + "urls": [ + "https://http-mainnet.hecochain.com" + ] + }, + "unichain": { + "id": 130, + "urls": [ + "https://mainnet.unichain.org", + "https://unichain-rpc.publicnode.com" + ] + }, + "hashkey-testnet": { + "id": 133, + "urls": [ + "https://hashkeychain-testnet.alt.technology" + ] + }, + "polygon": { + "id": 137, + "urls": [ + "https://polygon-rpc.com/", + "https://rpc-mainnet.matic.network", + "https://matic-mainnet.chainstacklabs.com", + "https://rpc-mainnet.maticvigil.com", + "https://rpc-mainnet.matic.quiknode.pro", + "https://matic-mainnet-full-rpc.bwarelabs.com", + "https://polygon-bor-rpc.publicnode.com", + "https://polygon.gateway.tenderly.co", + "https://polygon.drpc.org" + ] + }, + "sonic": { + "id": 146, + "urls": [ + "https://rpc.soniclabs.com", + "https://sonic-rpc.publicnode.com" + ] + }, + "manta-pacific": { + "id": 169, + "urls": [ + "https://pacific-rpc.manta.network/http", + "https://manta-pacific.drpc.org" + ] + }, + "hashkey": { + "id": 177, + "urls": [ + "https://mainnet.hsk.xyz" + ] + }, + "xlayer-testnet": { + "id": 195, + "urls": [ + "https://testrpc.xlayer.tech", + "https://xlayertestrpc.okx.com" + ] + }, + "xlayer": { + "id": 196, + "urls": [ + "https://rpc.xlayer.tech", + "https://xlayerrpc.okx.com" + ] + }, + "bittorrent": { + "id": 199, + "urls": [ + "https://rpc.bt.io", + "https://bittorrent.drpc.org" + ] + }, + "opbnb": { + "id": 204, + "urls": [ + "https://opbnb-mainnet-rpc.bnbchain.org", + "https://opbnb-mainnet.nodereal.io/v1/64a9df0874fb4a93b9d0a3849de012d3", + "https://opbnb-mainnet.nodereal.io/v1/e9a36765eb8a40b9bd12e680a1fd2bc5", + "https://opbnb-rpc.publicnode.com", + "https://opbnb.drpc.org" + ] + }, + "lens": { + "id": 232, + "urls": [] + }, + "cronos-zkevm-testnet": { + "id": 240, + "urls": [ + "https://testnet.zkevm.cronos.org" + ] + }, + "fantom": { + "id": 250, + "urls": [ + "https://rpc.ftm.tools", + "https://fantom-rpc.publicnode.com", + "https://fantom.drpc.org" + ] + }, + "fraxtal": { + "id": 252, + "urls": [ + "https://rpc.frax.com", + "https://fraxtal-rpc.publicnode.com" + ] + }, + "kroma": { + "id": 255, + "urls": [ + "https://api.kroma.network", + "https://rpc-kroma.rockx.com" + ] + }, + "heco-testnet": { + "id": 256, + "urls": [ + "https://http-testnet.hecochain.com" + ] + }, + "boba-eth": { + "id": 288, + "urls": [ + "https://mainnet.boba.network", + "https://replica.boba.network", + "https://boba-ethereum.gateway.tenderly.co", + "https://gateway.tenderly.co/public/boba-ethereum", + "https://boba-eth.drpc.org" + ] + }, + "zksync-sepolia": { + "id": 300, + "urls": [ + "https://sepolia.era.zksync.dev", + "https://zksync-sepolia.drpc.org" + ] + }, + "filecoin": { + "id": 314, + "urls": [ + "https://api.node.glif.io/", + "https://rpc.ankr.com/filecoin", + "https://filecoin-mainnet.chainstacklabs.com/rpc/v1", + "https://filfox.info/rpc/v1", + "https://filecoin.drpc.org" + ] + }, + "zksync": { + "id": 324, + "urls": [ + "https://mainnet.era.zksync.io", + "https://zksync.drpc.org" + ] + }, + "cronos-testnet": { + "id": 338, + "urls": [ + "https://evm-t3.cronos.org", + "https://cronos-testnet.drpc.org" + ] + }, + "cronos-zkevm": { + "id": 388, + "urls": [ + "https://mainnet.zkevm.cronos.org" + ] + }, + "worldchain": { + "id": 480, + "urls": [ + "https://worldchain-mainnet.g.alchemy.com/public", + "https://480.rpc.thirdweb.com", + "https://worldchain-mainnet.gateway.tenderly.co" + ] + }, + "mode-testnet": { + "id": 919, + "urls": [ + "https://sepolia.mode.network" + ] + }, + "hyperliquid-testnet": { + "id": 998, + "urls": [ + "https://api.hyperliquid-testnet.xyz/evm" + ] + }, + "hyperliquid": { + "id": 999, + "urls": [ + "https://gwan-ssl.wandevs.org:46891/" + ] + }, + "klaytn-baobab": { + "id": 1001, + "urls": [ + "https://public-en-kairos.node.kaia.io" + ] + }, + "bittorrent-testnet": { + "id": 1028, + "urls": [ + "https://testrpc.bittorrentchain.io/" + ] + }, + "metis": { + "id": 1088, + "urls": [ + "https://andromeda.metis.io/?owner=1088", + "https://metis.drpc.org", + "https://metis-rpc.publicnode.com" + ] + }, + "dymension": { + "id": 1100, + "urls": [ + "https://dymension-evm.blockpi.network/v1/rpc/public", + "https://dymension-evm-rpc.publicnode.com" + ] + }, + "polygon-zkevm": { + "id": 1101, + "urls": [ + "https://zkevm-rpc.com", + "https://polygon-zkevm.drpc.org" + ] + }, + "wemix": { + "id": 1111, + "urls": [ + "https://api.wemix.com" + ] + }, + "wemix-testnet": { + "id": 1112, + "urls": [ + "https://api.test.wemix.com" + ] + }, + "core-testnet": { + "id": 1115, + "urls": [ + "https://rpc.test.btcs.network/" + ] + }, + "core": { + "id": 1116, + "urls": [ + "https://rpc.coredao.org/", + "https://rpc-core.icecreamswap.com", + "https://core.drpc.org" + ] + }, + "lisk": { + "id": 1135, + "urls": [ + "https://rpc.api.lisk.com" + ] + }, + "moonbeam": { + "id": 1284, + "urls": [ + "https://rpc.api.moonbeam.network", + "https://moonbeam.public.blastapi.io", + "https://moonbeam-rpc.dwellir.com", + "https://moonbeam.api.onfinality.io/public", + "https://moonbeam.unitedbloc.com", + "https://moonbeam-rpc.publicnode.com", + "https://moonbeam.drpc.org" + ] + }, + "moonriver": { + "id": 1285, + "urls": [ + "https://rpc.api.moonriver.moonbeam.network", + "https://moonriver.public.blastapi.io", + "https://moonriver-rpc.dwellir.com", + "https://moonriver.api.onfinality.io/public", + "https://moonriver.unitedbloc.com", + "https://moonriver-rpc.publicnode.com", + "https://moonriver.drpc.org" + ] + }, + "moonbase-alpha": { + "id": 1287, + "urls": [ + "https://rpc.api.moonbase.moonbeam.network", + "https://moonbase-alpha.public.blastapi.io", + "https://moonbase-rpc.dwellir.com", + "https://moonbeam-alpha.api.onfinality.io/public", + "https://moonbase.unitedbloc.com", + "https://moonbase-alpha.drpc.org" + ] + }, + "unichain-sepolia": { + "id": 1301, + "urls": [ + "https://sepolia.unichain.org", + "https://unichain-sepolia-rpc.publicnode.com" + ] + }, + "sei-testnet": { + "id": 1328, + "urls": [ + "https://evm-rpc-testnet.sei-apis.com" + ] + }, + "sei": { + "id": 1329, + "urls": [ + "https://evm-rpc.sei-apis.com" + ] + }, + "gravity-alpha": { + "id": 1625, + "urls": [ + "https://rpc.gravity.xyz", + "https://rpc.ankr.com/gravity" + ] + }, + "metall2-testnet": { + "id": 1740, + "urls": [ + "https://testnet.rpc.metall2.com" + ] + }, + "metall2": { + "id": 1750, + "urls": [ + "https://rpc.metall2.com" ] }, "playnance": { "id": 1829, "urls": [ "https://rpc.playblock.io" - ], - "default": ["arb-playblock-pbss"], - "archive": [ - "arb-playblock" ] }, - "open-campus-codex-sepolia": { - "id": 656476, - "urls": [ - "https://open-campus-codex-sepolia.drpc.org" - ], - "default": ["arb-opencampuscodex"] - }, + "soneium": { + "id": 1868, + "urls": [ + "https://rpc.soneium.org" + ] + }, + "swell": { + "id": 1923, + "urls": [ + "https://swell-mainnet.alt.technology", + "https://rpc.ankr.com/swell" + ] + }, + "swell-testnet": { + "id": 1924, + "urls": [ + "https://swell-testnet.alt.technology", + "https://rpc.ankr.com/swell-testnet" + ] + }, + "soneium-minato": { + "id": 1946, + "urls": [ + "https://rpc.minato.soneium.org" + ] + }, + "ronin": { + "id": 2020, + "urls": [ + "https://api.roninchain.com/rpc" + ] + }, + "ronin-saigon": { + "id": 2021, + "urls": [ + "https://ronin-testnet.gateway.tenderly.co" + ] + }, "alephzero-sepolia": { "id": 2039, "urls": [ "https://rpc.alephzero-testnet.gelato.digital" - ], - "default": [ - "arb-alephzero-sepolia-pbss" - ], - "archive": [ - "arb-alephzero-sepolia" ] - }, - "alephzero": { - "id": 41455, + "snaxchain": { + "id": 2192, "urls": [ - "https://rpc.alephzero.raas.gelato.cloud" - ], - "default": [ - "arb-alephzero-mainnet-pbss" - ], - "archive": [ - "arb-alephzero-mainnet" + "https://mainnet.snaxchain.io" + ] + }, + "kava-testnet": { + "id": 2221, + "urls": [ + "https://evm.testnet.kava.io", + "https://kava-evm-testnet.rpc.thirdweb.com", + "https://kava-testnet.drpc.org" + ] + }, + "kava": { + "id": 2222, + "urls": [ + "https://evm.kava.io", + "https://kava-rpc.gateway.pokt.network", + "https://kava-evm.rpc.thirdweb.com", + "https://kava-evm-rpc.publicnode.com", + "https://evm.kava-rpc.com", + "https://rpc.ankr.com/kava_evm", + "https://kava.drpc.org" + ] + }, + "goat-mainnet-alpha": { + "id": 2345, + "urls": [ + "https://rpc.goat.network" + ] + }, + "kroma-sepolia": { + "id": 2358, + "urls": [ + "https://api.sepolia.kroma.network" + ] + }, + "polygon-zkevm-cardona": { + "id": 2442, + "urls": [ + "https://rpc.cardona.zkevm-rpc.com" + ] + }, + "fraxtal-testnet": { + "id": 2522, + "urls": [ + "https://rpc.testnet.frax.com", + "https://fraxtal-holesky-rpc.publicnode.com" + ] + }, + "abstract": { + "id": 2741, + "urls": [ + "https://api.mainnet.abs.xyz" + ] + }, + "fantom-testnet": { + "id": 4002, + "urls": [ + "https://rpc.testnet.fantom.network", + "https://fantom-testnet-rpc.publicnode.com", + "https://fantom-testnet.drpc.org" + ] + }, + "merlin": { + "id": 4200, + "urls": [ + "https://rpc.merlinchain.io", + "https://merlin-mainnet-enterprise.unifra.io", + "https://rpc-merlin.rockx.com" + ] + }, + "lisk-sepolia": { + "id": 4202, + "urls": [ + "https://rpc.sepolia-api.lisk.com" + ] + }, + "worldchain-sepolia": { + "id": 4801, + "urls": [ + "https://worldchain-sepolia.g.alchemy.com/public", + "https://4801.rpc.thirdweb.com", + "https://worldchain-sepolia.gateway.tenderly.co" + ] + }, + "mantle": { + "id": 5000, + "urls": [ + "https://rpc.mantle.xyz", + "https://mantle-rpc.publicnode.com" + ] + }, + "mantle-sepolia": { + "id": 5003, + "urls": [ + "https://rpc.sepolia.mantle.xyz" + ] + }, + "superseed": { + "id": 5330, + "urls": [ + "https://mainnet.superseed.xyz" + ] + }, + "opbnb-testnet": { + "id": 5611, + "urls": [ + "https://opbnb-testnet-rpc.bnbchain.org", + "https://opbnb-testnet.nodereal.io/v1/64a9df0874fb4a93b9d0a3849de012d3", + "https://opbnb-testnet.nodereal.io/v1/e9a36765eb8a40b9bd12e680a1fd2bc5", + "https://opbnb-testnet-rpc.publicnode.com" ] }, - "manta-pacific": { - "id": 169, - "urls": ["https://manta-pacific-gascap.calderachain.xyz/http"], - "default": ["op-manta-pacific"] - }, - "manta-pacific-sepolia": { - "id": 3441005 , - "urls": ["https://manta-testnet.calderachain.xyz/http"], - "default": ["op-manta-pacific-sepolia"] - }, - "everclear-sepolia": { "id": 6398, "urls": [ - "https://rpc.connext-sepolia.gelato.digital" - ], - "default": [ - "arb-connext-sepolia" + "https://rpc.connext-sepolia.gelato.digital/" + ] + }, + "zeta-chain": { + "id": 7000, + "urls": [ + "https://zetachain-evm.blockpi.network/v1/rpc/public", + "https://zetachain-mainnet.g.allthatnode.com/archive/evm", + "https://zeta-chain.drpc.org", + "https://zetachain-mainnet.public.blastapi.io", + "https://7000.rpc.thirdweb.com" + ] + }, + "zeta-chain-testnet": { + "id": 7001, + "urls": [ + "https://zetachain-athens-evm.blockpi.network/v1/rpc/public", + "https://zetachain-testnet.public.blastapi.io", + "https://zetachain-athens.g.allthatnode.com/archive/evm", + "https://7001.rpc.thirdweb.com", + "https://zeta-chain-testnet.drpc.org" + ] + }, + "klaytn": { + "id": 8217, + "urls": [ + "https://public-en.node.kaia.io" + ] + }, + "base": { + "id": 8453, + "urls": [ + "https://mainnet.base.org/", + "https://developer-access-mainnet.base.org/", + "https://base.gateway.tenderly.co", + "https://base-rpc.publicnode.com" + ] + }, + "evmos-testnet": { + "id": 9000, + "urls": [ + "https://evmos-testnet.lava.build", + "https://eth.bd.evmos.dev:8545", + "https://evmos-testnet-evm-rpc.publicnode.com" + ] + }, + "evmos": { + "id": 9001, + "urls": [ + "https://evmos.lava.build", + "https://evmos-evm-rpc.publicnode.com" + ] + }, + "monad-testnet": { + "id": 10143, + "urls": [ + "https://testnet-rpc.monad.xyz" + ] + }, + "gnosis-chiado": { + "id": 10200, + "urls": [ + "https://rpc.chiadochain.net", + "https://rpc.chiado.gnosis.gateway.fm", + "https://gnosis-chiado-rpc.publicnode.com", + "https://gnosis-chiado.drpc.org" + ] + }, + "gameswift-testnet": { + "id": 10888, + "urls": [ + "https://rpc-testnet.gameswift.io" + ] + }, + "abstract-sepolia": { + "id": 11124, + "urls": [ + "https://api.testnet.abs.xyz" + ] + }, + "haqq": { + "id": 11235, + "urls": [ + "https://rpc.eth.haqq.network", + "https://haqq-evm-rpc.publicnode.com", + "https://haqq.drpc.org" + ] + }, + "immutable-zkevm": { + "id": 13371, + "urls": [ + "https://rpc.immutable.com", + "https://immutable-zkevm.drpc.org" + ] + }, + "immutable-zkevm-testnet": { + "id": 13473, + "urls": [ + "https://rpc.testnet.immutable.com", + "https://immutable-zkevm-testnet.drpc.org" + ] + }, + "gravity-alpha-sepolia": { + "id": 13505, + "urls": [ + "https://rpc-sepolia.gravity.xyz" + ] + }, + "0g-newton-testnet": { + "id": 16600, + "urls": [ + "https://evmrpc-testnet.0g.ai" + ] + }, + "holesky": { + "id": 17000, + "urls": [ + "https://rpc.holesky.ethpandaops.io", + "https://ethereum-holesky-rpc.publicnode.com", + "https://holesky.drpc.org", + "https://rpc-holesky.rockx.com" ] }, "everclear": { "id": 25327, "urls": [ "https://rpc.everclear.raas.gelato.cloud" - ], - "default": [ - "arb-everclear-mainnet" ] - }, - "real": { - "id": 111188, + }, + "mezo-testnet": { + "id": 31611, "urls": [ - "https://rpc.realforreal.gelato.digital" - ], - "default": [ - "arb-real" + "https://rpc.test.mezo.org" + ] + }, + "apechain-curtis": { + "id": 33111, + "urls": [ + "https://rpc.curtis.apechain.com" + ] + }, + "apechain": { + "id": 33139, + "urls": [ + "https://rpc.apechain.com" + ] + }, + "mode": { + "id": 34443, + "urls": [ + "https://mainnet.mode.network", + "https://mode.drpc.org" + ] + }, + "lens-testnet": { + "id": 37111, + "urls": [ + "https://rpc.testnet.lens.dev" + ] + }, + "alephzero": { + "id": 41455, + "urls": [ + "https://rpc.alephzero.raas.gelato.cloud" ] }, "arbitrum": { "id": 42161, - "urls": [ - "https://arbitrum.drpc.org" - ], - "default": [ - "arbitrum-fullnode", - "arbitrum-fullnode-pebble" - ], - "archive": ["arbitrum-one-nitro-archive"] + "urls": [ + "https://arb-mainnet.g.alchemy.com/v2/${ALCHEMY_API_KEY}", + "https://arb1.arbitrum.io/rpc", + "https://arbitrum-one-rpc.publicnode.com" + ] }, "arbitrum-nova": { "id": 42170, "urls": [ - "https://arbitrum-nova.public.blastapi.io" - ], - "default": [ - "arbitrum-nova-fullnode", - "arbitrum-nova-fullnode-pebble" + "https://nova.arbitrum.io/rpc", + "https://arbitrum-nova-rpc.publicnode.com" ] }, - "arbitrum-sepolia": { - "id": 421614, - "urls": [ - "https://arbitrum-sepolia.drpc.org" - ], - "default": [ - "arbitrum-sepolia-fullnode", - "arbitrum-sepolia-fullnode-pebble" - ], - "archive": ["arbitrum-sepolia-archive"] - }, - "blast": { - "id": 81457, - "urls": [ - "https://rpc.blast.io" - ], - "default": ["op-blast-mainnet-fullnode", "op-blast-mainnet-pbss"], - "archive": [ - "op-blast-mainnet", - "blast-mainnet-geth-archive" - ] - }, - "blast-sepolia": { - "id": 168587773, - "urls": [ - "https://sepolia.blast.io" - ], - "default": [ - "op-blast-sepolia" - ] - }, - "fuse": { - "id": 122, - "urls": [ - "https://fuse-pokt.nodies.app" - ], - "default": [ - "fuse" - ] - }, - "tron": { - "id": 728126428, - "urls": ["https://api.trongrid.io/jsonrpc"], - "default": ["tron"] - }, - "viction": { - "id": 88, - "urls": ["https://rpc.viction.xyz"], - "default": ["viction"] - }, - "thundercore": { - "id": 108, - "urls": ["https://mainnet-rpc.thundercore.com"], - "default": ["thundercore"] - }, - "avalanche": { - "id": 43114, - "urls": [ - "https://avax-pokt.nodies.app/ext/bc/C/rpc" - ], - "default": [ - "avalanche-fullnode" - ], - "archive": ["avalanche-mainnet-go-archive"] - }, - "avalanche-fuji": { - "id": 43113, - "urls": [ - "https://api.zan.top/node/v1/avax/fuji/public/ext/bc/C/rpc" - ], - "default": [ - "avalanche-fuji-fullnode" - ], - "archive": ["avalanche-fuji-archive"] - }, "celo": { "id": 42220, "urls": [ - "https://rpc.ankr.com/celo" - ], - "default": [ - "celo-fullnode" - ], - "archive": ["celo-mainnet-geth-archive"] - }, - "celo-alfajores": { - "id": 44787, - "urls": ["https://alfajores-forno.celo-testnet.org"], - "default": ["op-celo-alfajores-fullnode","celo-alfajores-fullnode"] - }, - "boba-eth": { - "id": 288, - "urls": ["https://mainnet.boba.network"], - "default": ["op-boba","boba-eth-mainnet-erigon-archive-trace"] - }, - "boba-bnb": { - "id": 56288, - "urls": ["https://replica.bnb.boba.network"], - "default": ["op-bobabnb","boba-bnb-mainnet-l2geth-archive"] - }, - "fantom": { - "id": 250, - "urls": [ - "https://fantom-rpc.publicnode.com" - ], - "default": [ - "fantom" - ], - "archive": ["fantom-mainnet-opera-archive-trace"] - }, - "fantom-testnet": { - "id": 4002, - "urls": [ - "https://rpc.testnet.fantom.network" - ], - "default": [ - "fantom-testnet" + "https://forno.celo.org" ] }, - "sonic": { - "id": 146, + "avalanche-fuji": { + "id": 43113, "urls": [ - "https://rpc.soniclabs.com" - ], - "archive": [ - "sonic" + "https://api.avax-test.network/ext/bc/C/rpc", + "https://avalanche-fuji-c-chain-rpc.publicnode.com" ] }, - "optimism": { - "id": 10, - "urls": [ - "https://mainnet.optimism.io" - ], - "default": [ - "optimism-fullnode", "optimism-reth-fullnode" - ], - "archive": ["optimism-reth"] - }, - "sepolia": { - "id": 11155111, + "avalanche": { + "id": 43114, "urls": [ - "https://sepolia.drpc.org" - ], - "default": [ - "geth-sepolia", - "erigon-sepolia-minimal" - ], - "erchive": [ - "reth-sepolia", - "erigon-sepolia", - "ethereum-sepolia-erigon3-archive-trace" + "https://api.avax.network/ext/bc/C/rpc", + "https://avalanche-c-chain-rpc.publicnode.com" ] }, - "holesky": { - "id": 17000, + "celo-alfajores": { + "id": 44787, "urls": [ - "https://holesky.drpc.org" - ], - "default": [ - "geth-holesky" - ], - "archive": ["ethereum-holesky-erigon3-archive-trace"] - }, - "gnosis": { - "id": 100, - "urls": [ - "https://gnosis-mainnet.public.blastapi.io" - ], - "default": [ - "erigon-gnosis-fullnode", - "nethermind-gnosis" - ], - "archive": ["erigon-gnosis", "reth-gnosis", "gnosis-mainnet-erigon3-archive-trace"] - }, - "gnosis-chiado": { - "id": 10200, - "urls": ["https://rpc.chiadochain.net"], - "default": ["nethermind-gnosis-chiado"], - "archive": ["erigon-gnosis-chiado"] - }, - "zircuit-mainnet": { - "id": 48900, - "default": ["op-zircuit-mainnet"], - "urls": ["https://zircuit1-mainnet.p2pify.com"] - }, - "zircuit-testnet": { - "id": 48899, - "default": ["op-zircuit-testnet"], - "urls": ["https://zircuit1-testnet.p2pify.com"] - }, - "ronin": { - "id": 2020, - "urls": ["https://api.roninchain.com/rpc"], - "default": ["ronin"] - }, - "mantle": { - "id": 5000, - "urls": [ - "https://rpc.mantle.xyz" - ], - "default": [ - "op-mantle-fullnode" - ], - "archive": [ - "op-mantle" + "https://alfajores-forno.celo-testnet.org" ] }, - "polygon": { - "id": 137, + "zircuit-garfield-testnet": { + "id": 48898, "urls": [ - "https://polygon-rpc.com" - ], - "default": [ - "polygon-erigon-fullnode" - ], - "archive": ["polygon-erigon", "polygon-mainnet-erigon3-archive-trace"] + "https://garfield-testnet.zircuit.com/" + ] }, - "linea": { - "id": 59144, + "zircuit-testnet": { + "id": 48899, "urls": [ - "https://rpc.linea.build" - ], - "default": [ - "linea-besu" - ], - "archive": [ - "geth-linea", - "erigon-linea", - "reth-linea", - "linea-mainnet-erigon-archive-trace" + "https://testnet.zircuit.com" + ] + }, + "zircuit-mainnet": { + "id": 48900, + "urls": [ + "https://mainnet.zircuit.com" + ] + }, + "superseed-sepolia": { + "id": 53302, + "urls": [ + "https://sepolia.superseed.xyz" + ] + }, + "haqq-testnet": { + "id": 54211, + "urls": [ + "https://rpc.eth.testedge2.haqq.network" + ] + }, + "boba-bnb": { + "id": 56288, + "urls": [ + "https://bnb.boba.network", + "https://boba-bnb.gateway.tenderly.co/", + "https://gateway.tenderly.co/public/boba-bnb", + "https://replica.bnb.boba.network" + ] + }, + "sonic-testnet": { + "id": 57054, + "urls": [ + "https://rpc.blaze.soniclabs.com", + "https://sonic-blaze-rpc.publicnode.com" + ] + }, + "ink": { + "id": 57073, + "urls": [ + "https://rpc-gel.inkonchain.com", + "https://rpc-qnd.inkonchain.com" ] }, "linea-sepolia": { "id": 59141, "urls": [ - "https://rpc.sepoia.linea.build" - ], - "archive": [ - "erigon-linea-sepolia" - ] - }, - "lisk-sepolia": { - "id": 4202, - "urls": [ - "https://rpc.sepolia-api.lisk.com" - ], - "default": [ - "op-lisk-sepolia" + "https://rpc.sepolia.linea.build", + "https://linea-sepolia-rpc.publicnode.com" ] }, - "lisk-mainnet": { - "id": 1135, + "linea": { + "id": 59144, "urls": [ - "https://rpc.api.lisk.com" - ], - "default": [ - "op-lisk-mainnet", - "op-lisk-mnainnet-pebble" + "https://rpc.linea.build", + "https://linea-rpc.publicnode.com" ] - }, - "bsc": { - "id": 56, - "urls": [ - "https://binance.nodereal.io", - "https://bsc.drpc.org" - ], - "default": [ - "bsc", - "bsc-erigon-fullnode", - "reth-bsc-fullnode" - ], - "archive": ["bsc-mainnet-erigon3-archive-trace"] }, - "bsc-testnet": { - "id": 97, - "urls": ["https://data-seed-prebsc-1-s3.bnbchain.org:8545"], - "default": ["bsc-testnet"] - }, - "bartio": { - "id": 80084, + "bob": { + "id": 60808, "urls": [ - "https://bartio.rpc.berachain.com" - ], - "default": [ - "berachain-artio" + "https://rpc.gobob.xyz", + "https://bob-mainnet.public.blastapi.io" + ] + }, + "polygon-amoy": { + "id": 80002, + "urls": [ + "https://rpc-amoy.polygon.technology", + "https://polygon-amoy-bor-rpc.publicnode.com" ] }, "berachain-bepolia": { "id": 80069, "urls": [ "https://bepolia.rpc.berachain.com" - ], - "default": [ - "berachain-bepolia" ] - }, - "opbnb": { - "id": 204, - "urls": [ - "https://opbnb-mainnet-rpc.bnbchain.org" - ], - "default": [ - "op-bnb", - "op-bnb-reth-fullnode" - ], - "archive": ["op-bnb-reth"] - }, - "opbnb-testnet": { - "id": 5611, - "urls": ["https://opbnb-testnet-rpc.bnbchain.org"], - "default": ["op-bnb-testnet"] - }, - "goat-testnet3": { - "id": 48816, - "urls": ["https://rpc.testnet3.goat.network"], - "default": ["goat-testnet"] - }, - "goat-mainnet-alpha": { - "id": 2345, - "urls": ["https://rpc.goat.network"], - "default": ["goat-mainnet"] - }, - "zksync": { - "id": 324, - "urls": ["https://1rpc.io/zksync2-era"], - "default": ["zksync-mainnet-fullnode"], - "archive": ["zksync-era-mainnet-external-node-archive"] - }, - "rootstock": { - "id": 30, - "urls": ["https://public-node.rsk.co"], - "default": ["rsk"] - }, - "rootstock-testnet": { - "id": 31, - "urls": ["https://public-node.testnet.rsk.co"], - "default": ["rsk-testnet"] - }, - "moonbeam": { - "id": 1284, - "urls": ["https://rpc.api.moonbeam.network"], - "archive": ["moonbeam-archive-trace"] - }, - "polygon-amoy": { - "id": 80002, - "urls": [ - "https://rpc-amoy.polygon.technology/" - ], - "default": [ - "polygon-amoy-erigon-fullnode" - ], "archive": ["polygon-amoy-erigon-archive"] - }, - "scroll": { - "id": 534352, - "urls": ["https://rpc.scroll.io"], - "default": ["scroll-mainnet"], - "archive": ["scroll-mainnet", "scroll-mainnet-l2geth-archive"] - }, - "scroll-sepolia": { - "id": 534351, - "urls": ["https://sepolia-rpc.scroll.io"], - "default": ["scroll-sepolia"], - "archive": ["scroll-sepolia"] - }, - "zora": { - "id": 7777777, - "urls": [ - "https://rpc.zora.energy" - ], - "default": [ - "op-zora-mainnet" - ], - "archive": [ - "op-zora-archive" - ] - }, - "zora-sepolia": { - "id": 999999999, - "urls": [ - "https://sepolia.rpc.zora.energy" - ], - "default": [ - "op-zora-sepolia" - ] - }, - "bob": { - "id": 60808, - "urls": ["https://rpc-bob-mainnet-0.t.conduit.xyz"], - "default": ["op-bob-mainnet"], - "archive": ["op-bob-mainnet-archive"] - }, - "mode": { - "id": 34443, - "urls": [ - "https://mainnet.mode.network" - ], - "default": [ - "op-mode-mainnet", - "op-mode-mainnet-pbss" - ] - }, - "core": { - "id": 1116, - "urls": [ - "https://rpc.coredao.org" - ], - "default": [ - "core-mainnet" - ] - } + }, + "bartio": { + "id": 80084, + "urls": [] + }, + "berachain": { + "id": 80094, + "urls": [ + "https://rpc.berachain.com", + "https://berachain-rpc.publicnode.com", + "https://rpc.berachain-apis.com" + ] + }, + "blast": { + "id": 81457, + "urls": [ + "https://rpc.blast.io", + "https://rpc.ankr.com/blast", + "https://blast.din.dev/rpc", + "https://blastl2-mainnet.public.blastapi.io", + "https://blast.blockpi.network/v1/rpc/public", + "https://blast-rpc.publicnode.com" + ] + }, + "base-sepolia": { + "id": 84532, + "urls": [ + "https://sepolia.base.org", + "https://base-sepolia-rpc.publicnode.com" + ] + }, + "plume": { + "id": 98865, + "urls": [ + "https://rpc.plumenetwork.xyz" + ] + }, + "real": { + "id": 111188, + "urls": [ + "https://rpc.realforreal.gelato.digital", + "https://tangible-real.gateway.tenderly.co", + "https://real.drpc.org" + ] + }, + "taiko": { + "id": 167000, + "urls": [ + "https://rpc.mainnet.taiko.xyz", + "https://taiko-rpc.publicnode.com" + ] + }, + "taiko-hekla": { + "id": 167009, + "urls": [ + "https://rpc.hekla.taiko.xyz", + "https://taiko-hekla-rpc.publicnode.com" + ] + }, + "filecoin-calibration": { + "id": 314159, + "urls": [ + "https://api.calibration.node.glif.io/rpc/v1", + "https://rpc.ankr.com/filecoin_testnet", + "https://filecoin-calibration.chainstacklabs.com/rpc/v1", + "https://filecoin-calibration.chainup.net/rpc/v1", + "https://calibration.filfox.info/rpc/v1", + "https://filecoin-calibration.drpc.org" + ] + }, + "arbitrum-sepolia": { + "id": 421614, + "urls": [ + "https://sepolia-rollup.arbitrum.io/rpc", + "https://arbitrum-sepolia-rpc.publicnode.com" + ] + }, + "scroll-sepolia": { + "id": 534351, + "urls": [ + "https://sepolia-rpc.scroll.io", + "https://rpc.ankr.com/scroll_sepolia_testnet", + "https://scroll-sepolia.chainstacklabs.com", + "https://scroll-testnet-public.unifra.io", + "https://scroll-sepolia-rpc.publicnode.com" + ] + }, + "scroll": { + "id": 534352, + "urls": [ + "https://rpc.scroll.io", + "https://rpc.ankr.com/scroll", + "https://scroll-mainnet.chainstacklabs.com", + "https://scroll-rpc.publicnode.com" + ] + }, + "zero": { + "id": 543210, + "urls": [ + "https://rpc.zerion.io/v1/zero" + ] + }, + "hoodi": { + "id": 560048, + "urls": [ + "https://rpc.hoodi.ethpandaops.io" + ] + }, + "open-campus-codex-sepolia": { + "id": 656476, + "urls": [ + "https://rpc.open-campus-codex.gelato.digital" + ] + }, + "merlin-testnet": { + "id": 686868, + "urls": [ + "https://rpc.wonnetwork.org" + ] + }, + "sei-devnet": { + "id": 713715, + "urls": [ + "https://evm-rpc-arctic-1.sei-apis.com", + "https://evm-rpc.arctic-1.seinetwork.io" + ] + }, + "ink-sepolia": { + "id": 763373, + "urls": [ + "https://rpc-gel-sepolia.inkonchain.com" + ] + }, + "bob-testnet": { + "id": 808813, + "urls": [ + "https://bob-sepolia.rpc.gobob.xyz" + ] + }, + "manta-pacific-sepolia": { + "id": 3441006, + "urls": [ + "https://pacific-rpc.sepolia-testnet.manta.network/http" + ] + }, + "zora": { + "id": 7777777, + "urls": [ + "https://rpc.zora.energy/" + ] + }, + "sepolia": { + "id": 11155111, + "urls": [ + "https://rpc.sepolia.org", + "https://rpc2.sepolia.org", + "https://rpc-sepolia.rockx.com", + "https://rpc.sepolia.ethpandaops.io", + "https://sepolia.gateway.tenderly.co", + "https://ethereum-sepolia-rpc.publicnode.com", + "https://sepolia.drpc.org", + "https://rpc-sepolia.rockx.com", + "https://eth-sepolia.g.alchemy.com/v2/WddzdzI2o9S3COdT73d5w6AIogbKq4X-" + ] + }, + "optimism-sepolia": { + "id": 11155420, + "urls": [ + "https://sepolia.optimism.io", + "https://optimism-sepolia.drpc.org" + ] + }, + "polygon-blackberry-testnet": { + "id": 94204209, + "urls": [ + "https://rpc.polygon-blackberry.gelato.digital" + ] + }, + "opcelestia-raspberry-testnet": { + "id": 123420111, + "urls": [ + "https://rpc.opcelestia-raspberry.gelato.digital" + ] + }, + "plume-testnet": { + "id": 161221135, + "urls": [] + }, + "blast-sepolia": { + "id": 168587773, + "urls": [ + "https://sepolia.blast.io", + "https://blast-sepolia.drpc.org" + ] + }, + "neon-evm-devnet": { + "id": 245022926, + "urls": [ + "https://devnet.neonevm.org", + "https://neon-evm-devnet.drpc.org" + ] + }, + "neon-evm": { + "id": 245022934, + "urls": [ + "https://neon-proxy-mainnet.solana.p2p.org", + "https://neon-evm.drpc.org" + ] + }, + "tron": { + "id": 728126428, + "urls": [ + "https://rpc.ankr.com/tron_jsonrpc", + "https://api.trongrid.io/jsonrpc" + ] + }, + "zora-sepolia": { + "id": 999999999, + "urls": [ + "https://sepolia.rpc.zora.energy" + ] + }, + "aurora": { + "id": 1313161554, + "urls": [ + "https://mainnet.aurora.dev", + "https://aurora.drpc.org" + ] + }, + "aurora-testnet": { + "id": 1313161555, + "urls": [ + "https://testnet.aurora.dev/", + "https://aurora-testnet.drpc.org" + ] + }, + "harmony-0": { + "id": 1666600000, + "urls": [ + "https://api.harmony.one", + "https://a.api.s0.t.hmny.io", + "https://api.s0.t.hmny.io", + "https://rpc.ankr.com/harmony", + "https://1rpc.io/one", + "https://harmony-0.drpc.org" + ] + }, + "harmony-1": { + "id": 1666600001, + "urls": [ + "https://api.s1.t.hmny.io", + "https://harmony-1.drpc.org" + ] + }, + "arb-blueberry-testnet": { + "id": 88153591557, + "urls": [ + "https://rpc.arb-blueberry.gelato.digital" + ] + } } diff --git a/reference-rpc-endpoint.sh b/reference-rpc-endpoint.sh index 68113e3d..34add709 100755 --- a/reference-rpc-endpoint.sh +++ b/reference-rpc-endpoint.sh @@ -1,35 +1,61 @@ #!/bin/bash +# Check if more than two arguments are provided if [ $# -gt 2 ]; then + echo "Usage: $0 []" exit 1 fi id="$1" +index="${2:-all}" -if [[ $id == 0x* ]]; then +# Convert hex id to decimal if necessary +if [[ "$id" == "0x"* ]]; then id=$(printf "%d" "$id") fi -index="${2:-0}" - json_file="/root/rpc/reference-rpc-endpoint.json" + +# Check if JSON file exists if [ ! -f "$json_file" ]; then + echo "JSON file not found: $json_file" exit 1 fi +# Find the object with matching id object=$(jq --arg id "$id" '.[] | select(.id == ($id | tonumber))' "$json_file") +# If object not found, exit if [ -z "$object" ]; then + echo "Chain ID not found: $id" exit 1 fi +# Extract URLs from the object urls=$(echo "$object" | jq -r '.urls') -num_urls=$(echo "$urls" | jq -r 'length') -if [ "$index" -ge "$num_urls" ]; then +# If index is set to 'all', return all URLs separated by whitespace +if [ "$index" = "all" ]; then + echo "$urls" | jq -r '.[]' | tr '\n' ' ' + exit +fi + +# Otherwise, treat index as numeric +# Validate that index is a number +if ! [[ "$index" =~ ^[0-9]+$ ]]; then + echo "Invalid index: $index" exit 1 fi -url=$(echo "$urls" | jq -r ".[$index]") +# Get the number of URLs +num_urls=$(echo "$urls" | jq -r 'length') +# Check if index is within bounds +if [ "$index" -ge "$num_urls" ]; then + echo "Index out of bounds: $index (max $(($num_urls - 1)))" + exit 1 +fi + +# Get and print the URL at the specified index +url=$(echo "$urls" | jq -r ".[$index]") echo "$url" diff --git a/ronin-mainnet-ronin-pruned-pebble-hash.yml b/ronin-mainnet-ronin-pruned-pebble-hash.yml new file mode 100644 index 00000000..0fb2c344 --- /dev/null +++ b/ronin-mainnet-ronin-pruned-pebble-hash.yml @@ -0,0 +1,37 @@ +services: + + ronin-mainnet: + image: ghcr.io/ronin-chain/ronin:v1.0.2-eaef5a2 + stop_grace_period: 5m + stop_signal: SIGINT + ports: + - 38198:38198 + - 38198:38198/udp + networks: + - chains + volumes: + - ronin-mainnet-ronin-pruned-pebbledb-hash:/ronin + environment: + - SYNC_MODE=full + - PASSWORD=stupidpassword + - NETWORK_ID=2020 + - NETWORK_PORT=38198 + - WS_PORT=8545 + - DB_ENGINE=pebble + - STATE_SCHEME=hash + - RONIN_PARAMS=--port=38198 --http.api admin,eth,net,web3,consortium,txpool,debug --txpool.pricelimit 20000000000 --txpool.nolocals --discovery.dns enrtree://AIGOFYDZH6BGVVALVJLRPHSOYJ434MPFVVQFXJDXHW5ZYORPTGKUI@nodes.roninchain.com --nat=extip:${IP} + - VERBOSITY=3 + - MINE=false + - GASPRICE=20000000000 + - ETHSTATS_ENDPOINT=${DOMAIN}:WSyDMrhRBe111@ronin-stats-ws.roninchain.com:443 + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.ronin-mainnet-ronin-stripprefix.stripprefix.prefixes=/ronin-mainnet" + - "traefik.http.services.ronin-mainnet-ronin.loadbalancer.server.port=8545" + - "traefik.http.routers.ronin-mainnet-ronin.entrypoints=websecure" + - "traefik.http.routers.ronin-mainnet-ronin.tls.certresolver=myresolver" + - "traefik.http.routers.ronin-mainnet-ronin.rule=Host(`$DOMAIN`) && PathPrefix(`/ronin-mainnet`)" + - "traefik.http.routers.ronin-mainnet-ronin.middlewares=ronin-mainnet-ronin-stripprefix, ipwhitelist" + +volumes: + ronin-mainnet-ronin-pruned-pebbledb-hash: diff --git a/ronin-mainnet.yml b/ronin-mainnet.yml new file mode 120000 index 00000000..e638e944 --- /dev/null +++ b/ronin-mainnet.yml @@ -0,0 +1 @@ +ronin-mainnet-ronin-pruned-pebble-hash.yml \ No newline at end of file diff --git a/ronin-saigon-ronin-pruned-pebble-hash.yml b/ronin-saigon-ronin-pruned-pebble-hash.yml new file mode 100644 index 00000000..8ef302a9 --- /dev/null +++ b/ronin-saigon-ronin-pruned-pebble-hash.yml @@ -0,0 +1,37 @@ +services: + + ronin-saigon: + image: ghcr.io/ronin-chain/ronin:v1.0.2-eaef5a2 + stop_grace_period: 5m + stop_signal: SIGINT + ports: + - 16086:16086 + - 16086:16086/udp + networks: + - chains + volumes: + - ronin-saigon-ronin-pruned-pebble-hash:/ronin + environment: + - SYNC_MODE=full + - PASSWORD=stupidpassword + - NETWORK_ID=2021 + - NETWORK_PORT=16086 + - DB_ENGINE=pebble + - STATE_SCHEME=hash + - WS_PORT=8545 + - RONIN_PARAMS=--port=16086 --http.api admin,eth,net,web3,consortium,txpool,debug --txpool.pricelimit 20000000000 --txpool.nolocals --discovery.dns enrtree://AIGOFYDZH6BGVVALVJLRPHSOYJ434MPFVVQFXJDXHW5ZYORPTGKUI@nodes.roninchain.com --nat=extip:${IP} + - VERBOSITY=3 + - MINE=false + - GASPRICE=20000000000 + - ETHSTATS_ENDPOINT=${DOMAIN}:WSyDMrhRBe111@ronin-stats-ws.roninchain.com:443 + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.ronin-saigon-ronin-stripprefix.stripprefix.prefixes=/ronin-saigon" + - "traefik.http.services.ronin-saigon-ronin.loadbalancer.server.port=8545" + - "traefik.http.routers.ronin-saigon-ronin.entrypoints=websecure" + - "traefik.http.routers.ronin-saigon-ronin.tls.certresolver=myresolver" + - "traefik.http.routers.ronin-saigon-ronin.rule=Host(`$DOMAIN`) && PathPrefix(`/ronin-saigon`)" + - "traefik.http.routers.ronin-saigon-ronin.middlewares=ronin-saigon-ronin-stripprefix, ipwhitelist" + +volumes: + ronin-saigon-ronin-pruned-pebble-hash: diff --git a/ronin-saigon-ronin-pruned-pebble-path.yml b/ronin-saigon-ronin-pruned-pebble-path.yml new file mode 100644 index 00000000..da867b77 --- /dev/null +++ b/ronin-saigon-ronin-pruned-pebble-path.yml @@ -0,0 +1,38 @@ +services: + + ronin-saigon: + image: ghcr.io/ronin-chain/ronin:v1.0.2-eaef5a2 + stop_grace_period: 5m + stop_signal: SIGINT + ports: + - 16086:16086 + - 16086:16086/udp + networks: + - chains + volumes: + - ronin-saigon-ronin-pruned-pebble-path:/ronin + environment: + - SYNC_MODE=full + - PASSWORD=stupidpassword + - NETWORK_ID=2021 + - NETWORK_PORT=16086 + - DB_ENGINE=pebble + - STATE_SCHEME=path + - WS_PORT=8545 + - RONIN_PARAMS=--port=16086 --http.api admin,eth,net,web3,consortium,txpool,debug --txpool.pricelimit 20000000000 --txpool.nolocals --discovery.dns enrtree://AJCNIAXQIPO55NW3QE2NUBBDMPYZDOQUCAEUS65NHQFMUUFES5KOW@saigon.nodes.roninchain.com --nat=extip:${IP} + - VERBOSITY=3 + - MINE=false + - GASPRICE=20000000000 + - DEPLOYMENT=test + - ETHSTATS_ENDPOINT=${DOMAIN}:WSyDMrhRBe111@ronin-stats-ws.roninchain.com:443 + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.ronin-saigon-ronin-stripprefix.stripprefix.prefixes=/ronin-saigon" + - "traefik.http.services.ronin-saigon-ronin.loadbalancer.server.port=8545" + - "traefik.http.routers.ronin-saigon-ronin.entrypoints=websecure" + - "traefik.http.routers.ronin-saigon-ronin.tls.certresolver=myresolver" + - "traefik.http.routers.ronin-saigon-ronin.rule=Host(`$DOMAIN`) && PathPrefix(`/ronin-saigon`)" + - "traefik.http.routers.ronin-saigon-ronin.middlewares=ronin-saigon-ronin-stripprefix, ipwhitelist" + +volumes: + ronin-saigon-ronin-pruned-pebble-path: diff --git a/ronin-saigon.yml b/ronin-saigon.yml new file mode 120000 index 00000000..b6fbaf91 --- /dev/null +++ b/ronin-saigon.yml @@ -0,0 +1 @@ +ronin-saigon-ronin-pruned-pebble-path.yml \ No newline at end of file diff --git a/ronin.yml b/ronin.yml deleted file mode 100644 index 9823ddff..00000000 --- a/ronin.yml +++ /dev/null @@ -1,35 +0,0 @@ -services: - - ronin: - image: ghcr.io/axieinfinity/ronin:v2.8.3-d27eb42 - stop_grace_period: 5m - stop_signal: SIGINT - ports: - - 38198:38198 - - 38198:38198/udp - networks: - - chains - volumes: - - ronin:/ronin - environment: - - SYNC_MODE=full - - PASSWORD=stupidpassword - - NETWORK_ID=2020 - - NETWORK_PORT=38198 - - WS_PORT=8545 - - RONIN_PARAMS=--port=38198 --http.api admin,eth,net,web3,consortium,txpool,debug --txpool.pricelimit 20000000000 --txpool.nolocals --discovery.dns enrtree://AIGOFYDZH6BGVVALVJLRPHSOYJ434MPFVVQFXJDXHW5ZYORPTGKUI@nodes.roninchain.com - - VERBOSITY=3 - - MINE=false - - GASPRICE=20000000000 - - ETHSTATS_ENDPOINT=${DOMAIN}:WSyDMrhRBe111@$ronin-stats-ws.roninchain.com:443 - labels: - - "traefik.enable=true" - - "traefik.http.middlewares.ronin-mainnet-stripprefix.stripprefix.prefixes=/ronin-mainnet" - - "traefik.http.services.ronin-mainnet.loadbalancer.server.port=8545" - - "traefik.http.routers.ronin-mainnet.entrypoints=websecure" - - "traefik.http.routers.ronin-mainnet.tls.certresolver=myresolver" - - "traefik.http.routers.ronin-mainnet.rule=Host(`$DOMAIN`) && PathPrefix(`/ronin-mainnet`)" - - "traefik.http.routers.ronin-mainnet.middlewares=ronin-mainnet-stripprefix, ipwhitelist" - -volumes: - ronin: diff --git a/scroll-mainnet.yml b/scroll-mainnet.yml index ba59dbe2..44cf18cf 100644 --- a/scroll-mainnet.yml +++ b/scroll-mainnet.yml @@ -2,7 +2,7 @@ version: '3.1' services: scroll-mainnet: - image: scrolltech/l2geth:${SCROLL_GETH_VERSION:-scroll-v5.8.15} + image: scrolltech/l2geth:${SCROLL_GETH_VERSION:-scroll-v5.7.25} expose: # HTTP server / GraphQL API - 8545 diff --git a/scroll-sepolia.yml b/scroll-sepolia.yml index 8379fb4b..4fd17a3e 100644 --- a/scroll-sepolia.yml +++ b/scroll-sepolia.yml @@ -2,7 +2,7 @@ version: '3.1' services: scroll-sepolia: - image: scrolltech/l2geth:${SCROLL_GETH_VERSION:-scroll-v5.8.23} + image: scrolltech/l2geth:${SCROLL_SEPOLIA_GETH_VERSION:-scroll-v5.8.29} expose: # HTTP server / GraphQL API - 8545 @@ -29,9 +29,9 @@ services: "--http.addr=0.0.0.0", "--http.vhosts=*", "--l1.endpoint=${SCROLL_SEPOLIA_L1_ENDPOINT}", - #"--da.blob.beaconnode=${SCROLL_SEPOLIA_L1_BEACON}", + "--da.blob.beaconnode=${SCROLL_SEPOLIA_L1_BEACON}", #"--da.blob.blobscan https://api.sepolia.blobscan.com/blobs/", - #"--rollup.verify", + "--rollup.verify", # Enable GraphQL on the HTTP-RPC server. Note that GraphQL can only be started if an HTTP server is started as well. "--graphql", "--graphql.vhosts=*", diff --git a/show-status.sh b/show-status.sh index 8dc5dafb..b2e8d10b 100755 --- a/show-status.sh +++ b/show-status.sh @@ -34,6 +34,9 @@ check_sync_status() { any_failure=true code=1 fi + else + code=1 + any_failure=true fi echo "${part%.yml}: $result" diff --git a/snax-mainnet.yml b/snax-mainnet.yml new file mode 120000 index 00000000..ab21d141 --- /dev/null +++ b/snax-mainnet.yml @@ -0,0 +1 @@ +op/geth/snax-mainnet-op-geth-pruned-pebble-path.yml \ No newline at end of file diff --git a/sonic/Dockerfile b/sonic/Dockerfile index 197d31d4..a79a46c2 100644 --- a/sonic/Dockerfile +++ b/sonic/Dockerfile @@ -1,10 +1,3 @@ -# Running Sonic in Docker is Experimental - not recommended for production use! - -# Example of usage: -# docker build -t sonic . -# docker run --name sonic1 --entrypoint sonictool sonic --datadir=/var/sonic genesis fake 1 -# docker run --volumes-from sonic1 -p 5050:5050 -p 5050:5050/udp -p 18545:18545 sonic --fakenet 1/1 --http --http.addr=0.0.0.0 - FROM golang:1.22 as builder ARG VERSION @@ -24,10 +17,11 @@ FROM golang:1.22 COPY --from=builder /go/sonic/build/sonicd /usr/local/bin/ COPY --from=builder /go/sonic/build/sonictool /usr/local/bin/ -COPY ./entrypoint.sh /entrypoint.sh +COPY ./entrypoint.sh /usr/local/bin/entrypoint.sh +RUM chmod +x /usr/local/bin/entrypoint.sh EXPOSE 18545 18546 5050 5050/udp VOLUME /var/sonic -ENTRYPOINT ["bash", "/entrypoint.sh"] \ No newline at end of file +ENTRYPOINT ["/usr/local/bin/entrypoint.sh"] \ No newline at end of file diff --git a/sonic/Dockerfile.sonic b/sonic/Dockerfile.sonic new file mode 100644 index 00000000..45e50614 --- /dev/null +++ b/sonic/Dockerfile.sonic @@ -0,0 +1,27 @@ +FROM golang:1.22 as builder + +ARG VERSION +ARG REPO + +RUN apt-get update && apt-get install -y git musl-dev make + +RUN cd /go && git clone ${REPO:-https://github.com/0xsoniclabs/sonic.git} sonic && cd sonic && git fetch --tags && git checkout -b ${VERSION} tags/${VERSION} + +WORKDIR /go/sonic + +ARG GOPROXY +RUN go mod download +RUN make all + +FROM golang:1.22 + +COPY --from=builder /go/sonic/build/sonicd /usr/local/bin/ +COPY --from=builder /go/sonic/build/sonictool /usr/local/bin/ + +COPY ./entrypoint.sh entrypoint.sh + +EXPOSE 18545 18546 5050 5050/udp + +VOLUME /var/sonic + +ENTRYPOINT ["/go/sonic/entrypoint.sh"] \ No newline at end of file diff --git a/sonic/entrypoint.sh b/sonic/entrypoint.sh index 3c3625a3..49c92142 100644 --- a/sonic/entrypoint.sh +++ b/sonic/entrypoint.sh @@ -1,25 +1,26 @@ #!/bin/bash -if [ ! -f /var/sonic/initialized ]; then +datadir=/var/sonic + +if [ ! -f "$datadir/initialized" ]; then echo "Initializing Sonic..." - # Add your initialization commands here - # Example: - # mkdir -p /var/sonic/data - # touch /var/sonic/config.json - - wget https://genesis.soniclabs.com/sonic-mainnet/genesis/sonic.g - GOMEMLIMIT=50GiB sonictool --datadir /var/sonic --cache 12000 genesis sonic.g - rm sonic.g + url="${GENESIS:-https://genesis.soniclabs.com/sonic-mainnet/genesis/sonic.g}" + filename=$(basename "$url") - # Create the file to mark initialization - touch /var/sonic/initialized + wget -P "$datadir" "$url" + + GOMEMLIMIT="${CACHE_GB}GiB" sonictool --datadir "$datadir" --cache "${CACHE_GB}000" genesis "$datadir/$filename" + rm "$datadir/$filename" + + touch "$datadir/initialized" echo "Initialization complete." else echo "Sonic is already initialized." fi -touch /var/sonic/initialized +echo "Generating new Geth node key..." +openssl rand 32 | xxd -p -c 32 | tr -d '\n' > "$datadir/nodekey" -exec sonicd --datadir /var/sonic "$@" +exec sonicd --nodekey "$datadir/nodekey" --cache "${CACHE_GB}000" --datadir "$datadir" "$@" diff --git a/sonic/sonic/sonic-mainnet-sonic-archive.yml b/sonic/sonic/sonic-mainnet-sonic-archive.yml new file mode 100644 index 00000000..3b629bfc --- /dev/null +++ b/sonic/sonic/sonic-mainnet-sonic-archive.yml @@ -0,0 +1,51 @@ +services: + sonic-mainnet-archive: + build: + context: ./sonic + dockerfile: Dockerfile.sonic + args: + VERSION: "${SONIC_SONIC_VERSION:-v2.0.3}" + REPO: "https://github.com/0xsoniclabs/sonic.git" + stop_grace_period: 3m + volumes: + - "sonic-mainnet-sonic-archive:/var/sonic" + expose: + - "8545" + ports: + - "10658:10658" + - "10658:10658/udp" + networks: + - chains + environment: + - "IP=${IP}" + - "GENESIS=https://genesis.soniclabs.com/sonic-mainnet/genesis/sonic-16500-full.g" + - "CACHE_GB=${SONIC_MAINNET_SONIC_CACHE_GB:-28}" + restart: unless-stopped + command: > + --port=10658 + --nat=extip:${IP} + --maxpeers=200 + --http + --http.addr=0.0.0.0 + --http.port=8545 + --http.api=admin,debug,web3,eth,dag,txpool,personal,abft,net,trace,ftm + --http.corsdomain="*" + --http.vhosts="*" + --ws + --ws.addr=0.0.0.0 + --ws.port=8545 + --ws.api=admin,debug,web3,eth,dag,txpool,personal,abft,net,trace,ftm + --ws.origins="*" + --rpc.gascap=600000000 + + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.sonic-mainnet-sonic-archive-stripprefix.stripprefix.prefixes=/sonic-mainnet-archive" + - "traefik.http.services.sonic-mainnet-sonic-archive.loadbalancer.server.port=18544" + - "traefik.http.routers.sonic-mainnet-sonic-archive.entrypoints=websecure" + - "traefik.http.routers.sonic-mainnet-sonic-archive.tls.certresolver=myresolver" + - "traefik.http.routers.sonic-mainnet-sonic-archive.rule=Host(`$DOMAIN`) && PathPrefix(`/sonic-mainnet-archive`)" + - "traefik.http.routers.sonic-mainnet-sonic-archive.middlewares=sonic-mainnet-sonic-archive-stripprefix, ipwhitelist" + +volumes: + sonic-mainnet-sonic-archive: \ No newline at end of file diff --git a/swell-mainnet.yml b/swell-mainnet.yml new file mode 120000 index 00000000..e55443a3 --- /dev/null +++ b/swell-mainnet.yml @@ -0,0 +1 @@ +op/geth/swell-mainnet-op-geth-pruned-pebble-path.yml \ No newline at end of file diff --git a/sync-status.sh b/sync-status.sh index c1b17179..5b5433a7 100755 --- a/sync-status.sh +++ b/sync-status.sh @@ -54,7 +54,7 @@ for path in $pathlist; do fi # Call the health check script with RPC_URL and ref - $BASEPATH/check-health.sh "$RPC_URL" "$ref" + $BASEPATH/check-health.sh "$RPC_URL" $ref exit $? fi done diff --git a/taiko-hekla.yml b/taiko-hekla.yml index 99af53b6..4324faea 100644 --- a/taiko-hekla.yml +++ b/taiko-hekla.yml @@ -20,7 +20,7 @@ services: --datadir /data/taiko-geth --metrics --metrics.addr "0.0.0.0" - --bootnodes "enode://2f7ee605f84362671e7d7c6d47b69a3358b0d87e9ba4648befcae8b19453275ed19059db347c459384c1a3e5486419233c06bf6c4c6f489d81ace6f301a2a446@43.153.55.134:30303,enode://c067356146268d2855ad356c1ce36ba9f78c1633a72f9b7f686679c2ffe04bab6d24e48ef6eefb0e01aa00dff5024f7f94bc583da90b6027f40be4129bbbc5fd@43.153.90.191:30303,enode://acc2bdb6416feddff9734bee1e6de91e684e9df5aeb1d36698cc78b920600aed36a2871e4ad0cf4521afcdc2cde8e2cd410a57038767c356d4ce6c69b9107a5a@170.106.109.12:30303,enode://eb5079aae185d5d8afa01bfd2d349da5b476609aced2b57c90142556cf0ee4a152bcdd724627a7de97adfc2a68af5742a8f58781366e6a857d4bde98de6fe986@34.66.210.65:30303,enode://2294f526cbb7faa778192289c252307420532191438ce821d3c50232e019a797bda8c8f8541de0847e953bb03096123856935e32294de9814d15d120131499ba@34.72.186.213:30303,enode://0b310c7dcfcf45ef32dde60fec274af88d52c7f0fb6a7e038b14f5f7bb7d72f3ab96a59328270532a871db988a0bcf57aa9258fa8a80e8e553a7bb5abd77c40d@167.235.249.45:30303,enode://1a6835e3e766b1a7d8fe2cd23e5716c61e37ba7b3b5d0863317736252d3f94b1608e4b317441e124d36251bed1942d77447bd3f74f87a9578991de33e18ad534@162.55.66.113:30306,enode://4964fa273909ebcd21f6d0de4d49a5af8ee8c7309bdf7c6e11c1ba7ad434624bcad986bff17bbbb69fa61555902232acaa78f988b15f0498bb1bc5db6c217f3b@65.108.233.73:30306,enode://d8ecf4ea776f05d6cce6b8b53ef966d3d3bed05691dfd457bb6045a7ed6d340fa0bb39b228197dcd2f8657745a72dbe6eed01d81e8616aa32cc0946e5fadae51@5.42.102.190:30306,enode://ecdeef30a293a70605d33f592d624e80168215ebbd624d00f7722efbcfa76d2a2fbb403be153ebb3a21fdae77c53a088a1c9f0a9803bd5e6f35de0af462e5494@156.67.31.58:30303,enode://1d3cbb450d07d0657c0636528a25b26232d1c9cf5b7fc2eec22a29b5bde58b9227cb88bca388d822f26662705221e77c07153bc3fc4cb06472d0e09e9208b9bc@77.237.244.179:30306" + --bootnodes "enode://1733a899719c64edc8ad6818598b6b9aa41889297a7ee7b9cbf3e610d4df2e207b0e04fd40060a36f020116ab5ad451201e448fc224cd38b0a0d5fcbb1d2c812@34.126.109.163:30303,enode://3c7e00eff6a98f5d49084db988b9bee9cab3338ee809d88e41318dc7ea7fb67ab8e8a923e4a9f193fecd7698ef92c0977e07ac850e10777bdd11cc25045d63bf@35.198.236.33:30303,enode://eb5079aae185d5d8afa01bfd2d349da5b476609aced2b57c90142556cf0ee4a152bcdd724627a7de97adfc2a68af5742a8f58781366e6a857d4bde98de6fe986@34.66.210.65:30303,enode://2294f526cbb7faa778192289c252307420532191438ce821d3c50232e019a797bda8c8f8541de0847e953bb03096123856935e32294de9814d15d120131499ba@34.72.186.213:30303" --authrpc.addr "0.0.0.0" --authrpc.vhosts "*" --http diff --git a/unichain-mainnet.yml b/unichain-mainnet.yml new file mode 120000 index 00000000..8f6913a0 --- /dev/null +++ b/unichain-mainnet.yml @@ -0,0 +1 @@ +op/geth/unichain-mainnet-op-geth-pruned-pebble-path.yml \ No newline at end of file diff --git a/unichain-sepolia.yml b/unichain-sepolia.yml new file mode 120000 index 00000000..38d9972e --- /dev/null +++ b/unichain-sepolia.yml @@ -0,0 +1 @@ +op/geth/unichain-sepolia-op-geth-pruned-pebble-path.yml \ No newline at end of file diff --git a/worldchain-mainnet.yml b/worldchain-mainnet.yml new file mode 120000 index 00000000..32914e2c --- /dev/null +++ b/worldchain-mainnet.yml @@ -0,0 +1 @@ +op/geth/worldchain-mainnet-op-geth-pruned-pebble-path.yml \ No newline at end of file diff --git a/worldchain-sepolia.yml b/worldchain-sepolia.yml new file mode 120000 index 00000000..15c48088 --- /dev/null +++ b/worldchain-sepolia.yml @@ -0,0 +1 @@ +op/geth/worldchain-sepolia-op-geth-pruned-pebble-path.yml \ No newline at end of file diff --git a/zora-mainnet-archive.yml b/zora-mainnet-archive.yml new file mode 120000 index 00000000..5f3b30cb --- /dev/null +++ b/zora-mainnet-archive.yml @@ -0,0 +1 @@ +op/geth/zora-mainnet-op-geth-archive-leveldb-hash.yml \ No newline at end of file diff --git a/zora-mainnet.yml b/zora-mainnet.yml new file mode 120000 index 00000000..f612391d --- /dev/null +++ b/zora-mainnet.yml @@ -0,0 +1 @@ +op/geth/zora-mainnet-op-geth-pruned-pebble-path.yml \ No newline at end of file diff --git a/zora-sepolia.yml b/zora-sepolia.yml new file mode 120000 index 00000000..ebbf2aa3 --- /dev/null +++ b/zora-sepolia.yml @@ -0,0 +1 @@ +op/geth/zora-sepolia-op-geth-pruned-pebble-path.yml \ No newline at end of file