diff --git a/arbitrum-classic-geth-archive-trace.yml b/arbitrum-classic-geth-archive-trace.yml deleted file mode 100644 index eceea7ad..00000000 --- a/arbitrum-classic-geth-archive-trace.yml +++ /dev/null @@ -1,45 +0,0 @@ -version: '3.1' - -services: - arbitrum-classic: - image: 'offchainlabs/arb-node:v1.4.5-e97c1a4' - restart: always - stop_grace_period: 30s - user: root - volumes: - - ${ARBITRUM_CLASSIC_GETH_ARCHIVE_TRACE_DATA:-arbitrum-classic-geth-archive-trace}:/root/.arbitrum/mainnet - - ./arbitrum/classic-entrypoint.sh:/entrypoint.sh - expose: - - 8547 - - 8548 - entrypoint: ["/bin/bash", "/entrypoint.sh"] - command: > - --l1.url=http://eth.drpc.org - --core.checkpoint-gas-frequency=156250000 - --node.rpc.enable-l1-calls - --node.cache.allow-slow-lookup - --node.rpc.tracing.enable - --node.rpc.addr=0.0.0.0 - --node.rpc.tracing.namespace=trace - --node.chain-id=42161 - --metrics - --metrics-server.addr=0.0.0.0 - --metrics-server.port=7070 - --l2.disable-upstream - --persistent.chain=/mnt/data/classic/datadir/ - --persistent.global-config=/mnt/data/classic/ - restart: unless-stopped - labels: - - "traefik.enable=true" - - "traefik.http.middlewares.arbitrum-classic-geth-archive-trace-stripprefix.stripprefix.prefixes=/arbitrum-classic" - - "traefik.http.services.arbitrum-classic-geth-archive-trace.loadbalancer.server.port=8547" - - "${NO_SSL:-traefik.http.routers.arbitrum-classic-geth-archive-trace.entrypoints=websecure}" - - "${NO_SSL:-traefik.http.routers.arbitrum-classic-geth-archive-trace.tls.certresolver=myresolver}" - - "${NO_SSL:-traefik.http.routers.arbitrum-classic-geth-archive-trace.rule=Host(`$DOMAIN`) && PathPrefix(`/arbitrum-classic`)}" - - "${NO_SSL:+traefik.http.routers.arbitrum-classic-geth-archive-trace.rule=PathPrefix(`/arbitrum-classic`)}" - - "traefik.http.routers.arbitrum-classic-geth-archive-trace.middlewares=arbitrum-classic-geth-archive-trace-stripprefix, ipwhitelist" - networks: - - chains - -volumes: - arbitrum-classic-geth-archive-trace: diff --git a/arbitrum-one-mainnet-arbnode-archive-trace.yml b/arbitrum-one-mainnet-arbnode-archive-trace.yml new file mode 100644 index 00000000..4ee6b90c --- /dev/null +++ b/arbitrum-one-mainnet-arbnode-archive-trace.yml @@ -0,0 +1,45 @@ +services: + arbitrum-classic: + image: 'offchainlabs/arb-node:v1.4.5-e97c1a4' + stop_grace_period: 30s + user: root + volumes: + - ${ARBITRUM_ONE_MAINNET_ARBNODE_ARCHIVE_TRACE_DATA:-arbitrum-one-mainnet-arbnode-archive-trace}:/data + - ./arbitrum/classic-entrypoint.sh:/entrypoint.sh + expose: + - 8547 + - 8548 + entrypoint: ["/bin/bash", "/entrypoint.sh"] + command: > + --l1.url=http://eth.drpc.org + --core.checkpoint-gas-frequency=156250000 + --node.rpc.enable-l1-calls + --node.cache.allow-slow-lookup + --node.rpc.tracing.enable + --node.rpc.addr=0.0.0.0 + --node.rpc.port=8547 + --node.rpc.tracing.namespace=trace + --node.chain-id=42161 + --node.ws.addr=0.0.0.0 + --node.ws.port=8548 + --metrics + --metrics-server.addr=0.0.0.0 + --metrics-server.port=7070 + --l2.disable-upstream + --persistent.chain=/data/datadir/ + --persistent.global-config=/data/ + restart: unless-stopped + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.arbitrum-one-mainnet-arbnode-archive-trace-stripprefix.stripprefix.prefixes=/arbitrum-classic" + - "traefik.http.services.arbitrum-one-mainnet-arbnode-archive-trace.loadbalancer.server.port=8547" + - "${NO_SSL:-traefik.http.routers.arbitrum-one-mainnet-arbnode-archive-trace.entrypoints=websecure}" + - "${NO_SSL:-traefik.http.routers.arbitrum-one-mainnet-arbnode-archive-trace.tls.certresolver=myresolver}" + - "${NO_SSL:-traefik.http.routers.arbitrum-one-mainnet-arbnode-archive-trace.rule=Host(`$DOMAIN`) && PathPrefix(`/arbitrum-classic`)}" + - "${NO_SSL:+traefik.http.routers.arbitrum-one-mainnet-arbnode-archive-trace.rule=PathPrefix(`/arbitrum-classic`)}" + - "traefik.http.routers.arbitrum-one-mainnet-arbnode-archive-trace.middlewares=arbitrum-one-mainnet-arbnode-archive-trace-stripprefix, ipwhitelist" + networks: + - chains + +volumes: + arbitrum-one-mainnet-arbnode-archive-trace: diff --git a/arbitrum-one-nitro-archive.yml b/arbitrum-one-nitro-archive.yml index e0965458..1430e1f7 100644 --- a/arbitrum-one-nitro-archive.yml +++ b/arbitrum-one-nitro-archive.yml @@ -4,19 +4,18 @@ services: stop_grace_period: 3m user: root volumes: - - '${ARBITRUM_ONE_NITRO_ARCHIVE_DATA:-arbitrum-one-nitro-archive:/arbitrum-node' + - '${ARBITRUM_ONE_NITRO_ARCHIVE_DATA:-arbitrum-one-nitro-archive}:/arbitrum-node' - './tmp/arbitrum-archive:/tmp' # only used to initialize from scratch and the download is HUGE expose: - 8547 command: > --init.latest=archive + --execution.caching.archive --chain.name=arb1 - #--execution.caching.state-scheme=hash - #--persistent.db-engine=pebble - --persistent.chain=/arbitrum-node/datadir/ + --persistent.chain=/arbitrum-node/datadir --persistent.global-config=/arbitrum-node/ - --parent-chain.connection.url=${ARBITRUM_L1_ETHEREUM_ONE_EXECUTION_RPC} - --parent-chain.blob-client.beacon-url=${ARBITRUM_L1_ETHEREUM_ONE_BEACON_REST} + --parent-chain.connection.url=${ARBITRUM_L1_ETHEREUM_MAINNET_EXECUTION_RPC} + --parent-chain.blob-client.beacon-url=${ARBITRUM_L1_ETHEREUM_MAINNET_BEACON_REST} --chain.id=42161 --http.api=net,web3,eth,debug,arb --http.corsdomain=* @@ -32,8 +31,7 @@ services: --http.server-timeouts.write-timeout=60s --rpc.batch-request-limit=0 --rpc.max-batch-response-size=0 - --execution.rpc.classic-redirect=${ARBITRUM_CLASSIC_RPC_URL} - #--validation.wasm.allowed-wasm-module-roots=0x260f5fa5c3176a856893642e149cf128b5a8de9f828afec8d11184415dd8dc69 + --execution.rpc.classic-redirect=${ARBITRUM_ONE_CLASSIC_RPC} restart: unless-stopped labels: - "traefik.enable=true" diff --git a/arbitrum/classic-entrypoint.sh b/arbitrum/classic-entrypoint.sh index fd2d27bf..06039d41 100755 --- a/arbitrum/classic-entrypoint.sh +++ b/arbitrum/classic-entrypoint.sh @@ -1,13 +1,13 @@ #!/bin/bash -if [ -f /root/.arbitrum/mainnet/INITIALIZED ]; then - echo "datadir is already initialized" -else - echo "lemme download the database quickly" - rm -rf /root/.arbitrum/mainnet/db - curl https://snapshot.arbitrum.io/mainnet/db.tar | tar -xv -C /root/.arbitrum/mainnet/ && touch /root/.arbitrum/mainnet/INITIALIZED -fi +#if [ -f /root/.arbitrum/mainnet/INITIALIZED ]; then +# echo "datadir is already initialized" +#else +# echo "lemme download the database quickly" +# rm -rf /root/.arbitrum/mainnet/db +# curl https://snapshot.arbitrum.io/arb1/classic-archive.tar | tar -xv -C /root/.arbitrum/mainnet/ && touch /root/.arbitrum/mainnet/INITIALIZED +#fi -echo "LFG!!!" +#echo "LFG!!!" -/home/user/go/bin/arb-node $@ +exec /home/user/go/bin/arb-node $@ diff --git a/avalanche-mainnet-go-archive.yml b/avalanche-mainnet-go-archive.yml index 83b73ad5..dde4306e 100644 --- a/avalanche-mainnet-go-archive.yml +++ b/avalanche-mainnet-go-archive.yml @@ -24,7 +24,7 @@ services: restart: unless-stopped image: nginx depends_on: - - avalanche-fuji + - avalanche-archive-client expose: - 80 environment: diff --git a/base-mainnet-op-erigon-archive-trace.yml b/base-mainnet-op-erigon-archive-trace.yml index 14742a97..adf649ac 100644 --- a/base-mainnet-op-erigon-archive-trace.yml +++ b/base-mainnet-op-erigon-archive-trace.yml @@ -4,6 +4,7 @@ services: image: testinprod/op-erigon:${OP_ERIGON_VERSION:-v2.61.1-0.8.3} restart: unless-stopped stop_grace_period: 5m + user: root expose: - "9090" - "8545" @@ -19,7 +20,7 @@ services: --authrpc.port=8551 --authrpc.vhosts="*" --authrpc.jwtsecret=/jwtsecret - --rollup.sequencerhttp=https://mainnet-sequencer.base.org" + --rollup.sequencerhttp="https://mainnet-sequencer.base.org" --chain=base-mainnet --ws --nodiscover @@ -29,7 +30,7 @@ services: networks: - chains labels: - - "traefik.enable=true" + - "traefik.enable=true" - "traefik.http.middlewares.base-mainnet-op-erigon-archive-trace-stripprefix.stripprefix.prefixes=/base-erigon" - "traefik.http.services.base-mainnet-op-erigon-archive-trace.loadbalancer.server.port=8545" - "${NO_SSL:-traefik.http.routers.base-mainnet-op-erigon-archive-trace.entrypoints=websecure}" @@ -64,7 +65,7 @@ services: - "OP_NODE_L1_ETH_RPC=${BASE_L1_ETHEREUM_MAINNET_EXECUTION_RPC}" - "OP_NODE_L2_ENGINE_AUTH_RAW=${JWTSECRET}" - "OP_NODE_L2_ENGINE_AUTH=/jwtsecret" - - "OP_NODE_L2_ENGINE_RPC=http://base-erigon:9551" + - "OP_NODE_L2_ENGINE_RPC=http://base-erigon:8551" - "OP_NODE_LOG_LEVEL=info" - "OP_NODE_METRICS_ADDR=0.0.0.0" - "OP_NODE_METRICS_ENABLED=true" diff --git a/base-mainnet-op-reth-archive-trace.yml b/base-mainnet-op-reth-archive-trace.yml new file mode 100644 index 00000000..b5ddc817 --- /dev/null +++ b/base-mainnet-op-reth-archive-trace.yml @@ -0,0 +1,103 @@ +services: + base-reth: + image: ghcr.io/paradigmxyz/op-reth:${OP_RETH_VERSION:-v1.3.1} + expose: + - 9551 + - 8545 # RPC / Websocket + - 50138 # P2P TCP (currently unused) + - 50138/udp # P2P UDP (currently unused) + - 6060 # metrics + ports: + - "50138:50138" + - "50138:50138/udp" + restart: unless-stopped + user: root + stop_grace_period: 3m + command: > + node + --chain base + --port 50138 + --discovery.port 50138 + --rollup.sequencer-http https://mainnet-sequencer.base.org + --http + --ws + --authrpc.addr 0.0.0.0 + --authrpc.port 9551 + --authrpc.jwtsecret /jwtsecret + --http.addr 0.0.0.0 + --http.port 8545 + --ws.addr 0.0.0.0 + --ws.port 8545 + --ws.origins '*' + --http.api "debug,eth,net,trace,txpool,web3,rpc,reth,admin" + --ws.api "debug,eth,net,trace,txpool,web3,rpc,reth,admin" + --http.corsdomain '*' + --rpc.max-logs-per-response 1100000 + --rpc.gascap 600000000 + --nat extip:$IP + volumes: + - ${BASE_MAINNET_OP_RETH_ARCHIVE_TRACE_DATA:-base-mainnet-op-reth-archive-trace}:/root/.local/share/reth/base + - /slowdisk:/slowdisk + - .jwtsecret:/jwtsecret + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.base-mainnet-op-reth-archive-trace-stripprefix.stripprefix.prefixes=/base-reth" + - "traefik.http.services.base-mainnet-op-reth-archive-trace.loadbalancer.server.port=8545" + - "${NO_SSL:-traefik.http.routers.base-mainnet-op-reth-archive-trace.entrypoints=websecure}" + - "${NO_SSL:-traefik.http.routers.base-mainnet-op-reth-archive-trace.tls.certresolver=myresolver}" + - "${NO_SSL:-traefik.http.routers.base-mainnet-op-reth-archive-trace.rule=Host(`$DOMAIN`) && PathPrefix(`/base-reth`)}" + - "${NO_SSL:+traefik.http.routers.base-mainnet-op-reth-archive-trace.rule=PathPrefix(`/base-reth`)}" + - "traefik.http.routers.base-mainnet-op-reth-archive-trace.middlewares=base-mainnet-op-reth-archive-trace-stripprefix, ipwhitelist" + networks: + - chains + + + base-reth-node: + build: + context: ./op + depends_on: + - base-reth + volumes: + - .jwtsecret:/jwtsecret + expose: + - 8545 # RPC + - 36755 # P2P TCP + - 36755/udp # P2P UDP + - 7300 # metrics + - 6060 # pprof + ports: + - "36755:36755" + - "36755:36755/udp" + entrypoint: ./op-node + restart: always + stop_grace_period: 30s + environment: + - "OP_NODE_NETWORK=base-mainnet" + - "OP_NODE_SYNCMODE=execution-layer" + - "OP_NODE_L1_ETH_RPC=${BASE_L1_ETHEREUM_MAINNET_EXECUTION_RPC}" + - "OP_NODE_L2_ENGINE_AUTH_RAW=${JWTSECRET}" + - "OP_NODE_L2_ENGINE_AUTH=/jwtsecret" + - "OP_NODE_L2_ENGINE_RPC=http://base-reth:9551" + - "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:-J24QNz9lbrKbN4iSmmjtnr7SjUMk4zB7f1krHZcTZx-JRKZd0kA2gjufUROD6T3sOWDVDnFJRvqBBo62zuF-hYCohOGAYiOoEyEgmlkgnY0gmlwhAPniryHb3BzdGFja4OFQgCJc2VjcDI1NmsxoQKNVFlCxh_B-716tTs-h1vMzZkSs1FTu_OYTNjgufplG4N0Y3CCJAaDdWRwgiQG,enr:-J24QH-f1wt99sfpHy4c0QJM-NfmsIfmlLAMMcgZCUEgKG_BBYFc6FwYgaMJMQN5dsRBJApIok0jFn-9CS842lGpLmqGAYiOoDRAgmlkgnY0gmlwhLhIgb2Hb3BzdGFja4OFQgCJc2VjcDI1NmsxoQJ9FTIv8B9myn1MWaC_2lJ-sMoeCDkusCsk4BYHjjCq04N0Y3CCJAaDdWRwgiQG,enr:-J24QDXyyxvQYsd0yfsN0cRr1lZ1N11zGTplMNlW4xNEc7LkPXh0NAJ9iSOVdRO95GPYAIc6xmyoCCG6_0JxdL3a0zaGAYiOoAjFgmlkgnY0gmlwhAPckbGHb3BzdGFja4OFQgCJc2VjcDI1NmsxoQJwoS7tzwxqXSyFL7g0JM-KWVbgvjfB8JA__T7yY_cYboN0Y3CCJAaDdWRwgiQG,enr:-J24QHmGyBwUZXIcsGYMaUqGGSl4CFdx9Tozu-vQCn5bHIQbR7On7dZbU61vYvfrJr30t0iahSqhc64J46MnUO2JvQaGAYiOoCKKgmlkgnY0gmlwhAPnCzSHb3BzdGFja4OFQgCJc2VjcDI1NmsxoQINc4fSijfbNIiGhcgvwjsjxVFJHUstK9L1T8OTKUjgloN0Y3CCJAaDdWRwgiQG,enr:-J24QG3ypT4xSu0gjb5PABCmVxZqBjVw9ca7pvsI8jl4KATYAnxBmfkaIuEqy9sKvDHKuNCsy57WwK9wTt2aQgcaDDyGAYiOoGAXgmlkgnY0gmlwhDbGmZaHb3BzdGFja4OFQgCJc2VjcDI1NmsxoQIeAK_--tcLEiu7HvoUlbV52MspE0uCocsx1f_rYvRenIN0Y3CCJAaDdWRwgiQG" + - "OP_NODE_P2P_LISTEN_IP=0.0.0.0" + - "OP_NODE_P2P_LISTEN_TCP_PORT=36755" + - "OP_NODE_P2P_LISTEN_UDP_PORT=36755" + - "OP_NODE_ROLLUP_CONFIG=mainnet/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_L1_ETHEREUM_MAINNET_EXECUTION_KIND:-basic}" + - "OP_NODE_L1_TRUST_RPC=${BASE_L1_ETHEREUM_MAINNET_EXECUTION_TRUST:-false}" + - "OP_NODE_L1_BEACON=${BASE_L1_ETHEREUM_MAINNET_BEACON_REST}" + - "OP_NODE_L2_SKIP_SYNC_START_CHECK=true" + networks: + - chains + +volumes: + base-mainnet-op-reth-archive-trace: diff --git a/base.yml b/base.yml index d706674a..a1ae596a 100644 --- a/base.yml +++ b/base.yml @@ -1,8 +1,6 @@ -version: '3.1' - networks: chains: driver: bridge ipam: config: - - subnet: 192.168.0.0/26 + - subnet: ${CHAINS_SUBNET:-192.168.0.0/26} diff --git a/blast-mainnet-geth-archive.yml b/blast-mainnet-geth-archive.yml index 6c847642..de810d36 100644 --- a/blast-mainnet-geth-archive.yml +++ b/blast-mainnet-geth-archive.yml @@ -1,7 +1,7 @@ services: blast-archive: - image: blastio/blast-geth:v1.1.0-mainnet + image: blastio/blast-geth:mainnet-v1.1.1 volumes: - ${BLAST_MAINNET_GETH_ARCHIVE_DATA:-blast-mainnet-geth-archive}:/data - ./blast-io:/config:rw @@ -32,6 +32,7 @@ services: - "GETH_OVERRIDE_ECOTONE=1716843599" expose: - 9545 + - 8551 restart: always stop_grace_period: 30s entrypoint: /bin/sh @@ -49,7 +50,7 @@ services: - "traefik.http.routers.blast-mainnet-geth-archive.middlewares=blast-mainnet-geth-archive-stripprefix, ipwhitelist" blast-archive-node: - image: blastio/blast-optimism:v1.1.0-mainnet + image: blastio/blast-optimism:mainnet-v1.1.1 volumes: - ./blast-io:/config - .jwtsecret:/jwtsecret @@ -60,13 +61,13 @@ services: - "OP_NODE_P2P_BOOTNODES=enr:-J64QGwHl9uYLfC_cnmxSA6wQH811nkOWJDWjzxqkEUlJoZHWvI66u-BXgVcPCeMUmg0dBpFQAPotFchG67FHJMZ9OSGAY3d6wevgmlkgnY0gmlwhANizeSHb3BzdGFja4Sx_AQAiXNlY3AyNTZrMaECg4pk0cskPAyJ7pOmo9E6RqGBwV-Lex4VS9a3MQvu7PWDdGNwgnZhg3VkcIJ2YQ,enr:-J64QDge2jYBQtcNEpRqmKfci5E5BHAhNBjgv4WSdwH1_wPqbueq2bDj38-TSW8asjy5lJj1Xftui6Or8lnaYFCqCI-GAY3d6wf3gmlkgnY0gmlwhCO2D9yHb3BzdGFja4Sx_AQAiXNlY3AyNTZrMaEDo4aCTq7pCEN8om9U5n_VyWdambGnQhwHNwKc8o-OicaDdGNwgnZhg3VkcIJ2YQ" - "OP_NODE_L1_RPC_RATE_LIMIT=0" - "OP_NODE_L1_RPC_MAX_BATCH_SIZE=20" - - "OP_NODE_L1_RPC_KIND=${BLAST_MAINNET_L1_ETHEREUM_MAINNET_EXECUTION_KIND:-basic}" - - "OP_NODE_L1_TRUST_RPC=${BLAST_MAINNET_L1_ETHEREUM_MAINNET_EXECUTION_TRUST:-false}" + - "OP_NODE_L1_RPC_KIND=${BLAST_L1_ETHEREUM_MAINNET_EXECUTION_KIND:-basic}" + - "OP_NODE_L1_TRUST_RPC=${BLAST_L1_ETHEREUM_MAINNET_EXECUTION_TRUST:-false}" - "OP_NODE_L1_ETH_RPC=${BLAST_L1_ETHEREUM_MAINNET_EXECUTION_RPC}" - "OP_NODE_L1_BEACON=${BLAST_L1_ETHEREUM_MAINNET_BEACON_REST}" - "OP_NODE_L1_BEACON_ARCHIVER=${BLAST_MAINNET_L1_ETHEREUM_MAINNET_BEACON_ARCHIVER}" - "OP_NODE_L1_TRUST_RPC=true" - - "OP_NODE_L2_ENGINE_RPC=http://op-blast-mainnet-archive:8551" + - "OP_NODE_L2_ENGINE_RPC=http://blast-archive:8551" - "OP_NODE_L2_ENGINE_AUTH=/jwtsecret" - "OP_NODE_L2_SKIP_SYNC_START_CHECK=true" - "OP_NODE_P2P_LISTEN_TCP_PORT=25037" diff --git a/boba-bnb-mainnet-geth-archive.yml b/boba-bnb-mainnet-l2geth-archive.yml similarity index 68% rename from boba-bnb-mainnet-geth-archive.yml rename to boba-bnb-mainnet-l2geth-archive.yml index 739aa355..b84f91e1 100644 --- a/boba-bnb-mainnet-geth-archive.yml +++ b/boba-bnb-mainnet-l2geth-archive.yml @@ -1,9 +1,14 @@ services: + boba-bnb-archive-dtl: image: bobanetwork/data-transport-layer@sha256:33e7530795f387c660633fc855e5ea7e19de445a7985b1c8b142db26698839e6 + stop_grace_period: 5m environment: - DATA_TRANSPORT_LAYER__L1_RPC_ENDPOINT: 'https://bsc-dataseed.binance.org/' - DATA_TRANSPORT_LAYER__L2_RPC_ENDPOINT: 'https://replica.bnb.boba.network' + DATA_TRANSPORT_LAYER__L1_RPC_ENDPOINT: 'https://bsc-dataseed.binance.org' +# DATA_TRANSPORT_LAYER__L1_RPC_ENDPOINT: 'https://bsc-erigon3:8545' +# DATA_TRANSPORT_LAYER__L2_RPC_ENDPOINT: 'https://replica.bnb.boba.network' +# DATA_TRANSPORT_LAYER__L2_RPC_ENDPOINT: 'https://rpc-de-23.stakesquid.eu/bobabnb' + DATA_TRANSPORT_LAYER__L2_RPC_ENDPOINT: 'http://142.132.249.52:8547' DATA_TRANSPORT_LAYER__SYNC_FROM_L1: 'false' DATA_TRANSPORT_LAYER__SYNC_FROM_L2: 'true' DATA_TRANSPORT_LAYER__L2_CHAIN_ID: 56288 @@ -21,7 +26,7 @@ services: DATA_TRANSPORT_LAYER__SERVER_HOSTNAME: '0.0.0.0' volumes: - ./boba/bnb:/opt/optimism/packages/data-transport-layer/state-dumps/ - - ${BOBA_BNB_MAINNET_GETH_ARCHIVE__DTL_DATA:-boba-bnb-geth-archive_dtl}:/db + - ${BOBA_BNB_MAINNET_L2GETH_ARCHIVE__DTL_DATA:-boba-bnb-l2geth-archive_dtl}:/db networks: - chains @@ -30,16 +35,19 @@ services: - boba-bnb-archive-dtl image: bobanetwork/l2geth@sha256:0c5c25d1db8244f819d84517aaafafbf0e73cf3dacc98051c80310d9d01a12fd entrypoint: sh ./geth.sh + stop_grace_period: 5m volumes: - - ${BOBA_BNB_MAINNET_GETH_ARCHIVE__CLIENT_DATA:-boba-bnb-mainnet-geth-archive_client}:/root/.ethereum/ + - ${BOBA_BNB_MAINNET_L2GETH_ARCHIVE__CLIENT_DATA:-boba-bnb-mainnet-l2geth-archive_client}:/root/.ethereum/ environment: - ETH1_HTTP: 'https://bsc-dataseed.binance.org/' + GETH_ALLOW_INSECURE_UNLOCK: 'true' +# ETH1_HTTP: 'https://bsc-dataseed.binance.org' + ETH1_HTTP: 'https://bsc-erigon3:8545' ETH1_CTC_DEPLOYMENT_HEIGHT: 1305672 ROLLUP_TIMESTAMP_REFRESH: 5s ROLLUP_STATE_DUMP_PATH: http://boba-bnb-archive-dtl:8081/state-dump.latest.json ROLLUP_CLIENT_HTTP: http://boba-bnb-archive-dtl:7878 ROLLUP_BACKEND: 'l2' - ROLLUP_VERIFIER_ENABLE: 'true' + ROLLUP_VERIFIER_ENABLE: 'false' RETRIES: 60 # no need to keep this secret, only used internally to sign blocks BLOCK_SIGNER_KEY: "6587ae678cf4fc9a33000cdbf9f35226b71dcc6a4684a31203241f9bcfd55d27" @@ -53,6 +61,7 @@ services: BOBA_GAS_PRICE_ORACLE_ADDRESS: "0x4200000000000000000000000000000000000024" # sequencer http endpoint SEQUENCER_CLIENT_HTTP: https://bnb.boba.network/ +# SEQUENCER_CIENT_HTTP: http://142.132.249.52:8547 ETH1_SYNC_SERVICE_ENABLE: true ETH1_CONFIRMATION_DEPTH: 0 @@ -90,7 +99,7 @@ services: restart: unless-stopped image: nginx depends_on: - - op-bobabnb-archive + - boba-bnb-archive-client expose: - 80 environment: @@ -105,15 +114,15 @@ services: - ./nginx-proxy:/etc/nginx/templates labels: - "traefik.enable=true" - - "traefik.http.middlewares.boba-bnb-mainnet-geth-archive-stripprefix.stripprefix.prefixes=/boba-bnb-archive" - - "traefik.http.services.boba-bnb-mainnet-geth-archive.loadbalancer.server.port=80" - - "${NO_SSL:-traefik.http.routers.boba-bnb-mainnet-geth-archive.entrypoints=websecure}" - - "${NO_SSL:-traefik.http.routers.boba-bnb-mainnet-geth-archive.tls.certresolver=myresolver}" - - "${NO_SSL:-traefik.http.routers.boba-bnb-mainnet-geth-archive.rule=Host(`$DOMAIN`) && PathPrefix(`/boba-bnb-archive`)}" - - "${NO_SSL:+traefik.http.routers.boba-bnb-mainnet-geth-archive.rule=PathPrefix(`/boba-bnb-archive`)}" - - "traefik.http.routers.boba-bnb-mainnet-geth-archive.middlewares=boba-bnb-mainnet-geth-archive-stripprefix, ipwhitelist" + - "traefik.http.middlewares.boba-bnb-mainnet-l2geth-archive-stripprefix.stripprefix.prefixes=/boba-bnb-archive" + - "traefik.http.services.boba-bnb-mainnet-l2geth-archive.loadbalancer.server.port=80" + - "${NO_SSL:-traefik.http.routers.boba-bnb-mainnet-l2geth-archive.entrypoints=websecure}" + - "${NO_SSL:-traefik.http.routers.boba-bnb-mainnet-l2geth-archive.tls.certresolver=myresolver}" + - "${NO_SSL:-traefik.http.routers.boba-bnb-mainnet-l2geth-archive.rule=Host(`$DOMAIN`) && PathPrefix(`/boba-bnb-archive`)}" + - "${NO_SSL:+traefik.http.routers.boba-bnb-mainnet-l2geth-archive.rule=PathPrefix(`/boba-bnb-archive`)}" + - "traefik.http.routers.boba-bnb-mainnet-l2geth-archive.middlewares=boba-bnb-mainnet-l2geth-archive-stripprefix, ipwhitelist" volumes: - boba-bnb-mainnet-geth-archive_client: - boba-bnb-mainnet-geth-archive_dtl: + boba-bnb-mainnet-l2geth-archive_client: + boba-bnb-mainnet-l2geth-archive_dtl: diff --git a/boba-eth-mainnet-erigon-archive-trace.yml b/boba-eth-mainnet-erigon-archive-trace.yml index bdafa8fc..6dafcb75 100644 --- a/boba-eth-mainnet-erigon-archive-trace.yml +++ b/boba-eth-mainnet-erigon-archive-trace.yml @@ -1,5 +1,3 @@ -version: '3.4' - # The erigon db can be downloaded from # https://boba-db.s3.us-east-2.amazonaws.com/mainnet/boba-mainnet-erigon-db-1149019.tgz # and extracted to the DATA_DIR @@ -45,7 +43,7 @@ services: - 8551 volumes: - .jwtsecret:/jwtsecret - - ${BOBA_ETH_MAINNET_ERIGON_ARCHIVE_TRACE:-boba-eth-mainnet-erigon-archive-trace}:/db + - ${BOBA_ETH_MAINNET_ERIGON_ARCHIVE_TRACE_DATA:-boba-eth-mainnet-erigon-archive-trace}:/db networks: - chains labels: @@ -60,8 +58,8 @@ services: boba-eth-erigon-node: depends_on: - - op-boba - image: us-docker.pkg.dev/boba-392114/bobanetwork-tools-artifacts/images/op-node:${BOBAETH_NODE_VERSION:-v1.6.15} + - boba-eth-erigon + image: us-docker.pkg.dev/boba-392114/bobanetwork-tools-artifacts/images/op-node:${BOBAETH_NODE_VERSION:-v1.6.16-rc.1} command: > op-node --l2=http://boba-eth-erigon:8551 @@ -75,7 +73,7 @@ services: - "OP_NODE_L1_TRUST_RPC=${BOBA_ETH_L1_ETHEREUM_MAINNET_EXECUTION_TRUST:-false}" - "OP_NODE_L1_BEACON=${BOBA_ETH_L1_ETHEREUM_MAINNET_BEACON_REST}" - "OP_NODE_L1_BEACON_ARCHIVER=${BOBA_ETH_L1_ETHEREUM_MAINNET_BEACON_ARCHIVER}" - - "OP_NODE_L1_ETH_RPC=${BOBA_ETH_L1_ETHEREUM_MAINNET_EXECUTION}" + - "OP_NODE_L1_ETH_RPC=${BOBA_ETH_L1_ETHEREUM_MAINNET_EXECUTION_RPC}" ports: - "45202:45202" - "45202:45202/udp" diff --git a/bsc-mainnet-erigon3-archive-trace.yml b/bsc-mainnet-erigon3-archive-trace.yml new file mode 100644 index 00000000..bc3c4da9 --- /dev/null +++ b/bsc-mainnet-erigon3-archive-trace.yml @@ -0,0 +1,55 @@ +services: + bsc-erigon3: + image: icculp/bsc-erigon:v1.3.2-beta2 + user: root + volumes: + - "${BSC_MAINNET_ERIGON3_ARCHIVE_TRACE_DATA:-bsc-mainnet-erigon3-archive-trace}:/datadir" + - "/slowdisk:/slowdisk" + ports: + - "28056:28056" + - "28056:28056/udp" + - "62912:62912" + - "62912:62912/udp" + restart: unless-stopped + command: > + --prune.mode=archive + --db.pagesize=16k + --chain=bsc + --http + --http.addr=0.0.0.0 + --http.port=8545 + --http.compression + --http.vhosts='*' + --http.corsdomain='*' + --http.api=eth,debug,net,web3,erigon,admin + --ws + --ws.compression + --rpc.gascap=300000000 + --metrics + --metrics.addr=0.0.0.0 + --metrics.port=6060 + --bodies.cache=5G + --rpc.batch.limit=200000 + --batchSize=2048MB + --port=28056 + --datadir=/datadir + --ethash.dagdir=/datadir/ethash + --rpc.returndata.limit=1100000 + --torrent.port=62912 + --torrent.download.rate=80mb + --nat=extip:${IP} + stop_grace_period: 1m + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.bsc-mainnet-erigon3-archive-trace-stripprefix.stripprefix.prefixes=/bsc-erigon3" + - "traefik.http.services.bsc-mainnet-erigon3-archive-trace.loadbalancer.server.port=8545" + - "${NO_SSL:-traefik.http.routers.bsc-mainnet-erigon3-archive-trace.entrypoints=websecure}" + - "${NO_SSL:-traefik.http.routers.bsc-mainnet-erigon3-archive-trace.tls.certresolver=myresolver}" + - "${NO_SSL:-traefik.http.routers.bsc-mainnet-erigon3-archive-trace.rule=Host(`$DOMAIN`) && PathPrefix(`/bsc-erigon3`)}" + - "${NO_SSL:+traefik.http.routers.bsc-mainnet-erigon3-archive-trace.rule=PathPrefix(`/bsc-erigon3`)}" + - "traefik.http.routers.bsc-mainnet-erigon3-archive-trace.middlewares=bsc-mainnet-erigon3-archive-trace-stripprefix, ipwhitelist" + networks: + - chains + +volumes: + bsc-mainnet-erigon3-archive-trace: diff --git a/celo-mainnet-geth-archive.yml b/celo-mainnet-geth-archive.yml index e648d824..02950e4a 100644 --- a/celo-mainnet-geth-archive.yml +++ b/celo-mainnet-geth-archive.yml @@ -3,7 +3,7 @@ services: image: us.gcr.io/celo-org/geth:1.8 restart: unless-stopped stop_grace_period: 1m - command: | + command: > --verbosity 3 --syncmode full --gcmode archive @@ -20,7 +20,6 @@ services: --datadir /root/.celo expose: - 8545 - - 8546 ports: - '58395:58395/tcp' # p2p - '58395:58395/udp' # p2p diff --git a/erigon-gnosis.yml b/erigon-gnosis.yml index fc1daadf..b6d63a8a 100644 --- a/erigon-gnosis.yml +++ b/erigon-gnosis.yml @@ -8,7 +8,7 @@ services: init: true erigon-gnosis: - image: erigontech/erigon:${ERIGON3_VERSION:-v3.0.0-beta1} + image: erigontech/erigon:${ERIGON3_VERSION:-v3.0.0-rc2} depends_on: - erigon-gnosis-init user: root diff --git a/ethereum-beacon-mainnet-lighthouse-pruned-blobs.yml b/ethereum-beacon-mainnet-lighthouse-pruned-blobs.yml new file mode 100644 index 00000000..0d183121 --- /dev/null +++ b/ethereum-beacon-mainnet-lighthouse-pruned-blobs.yml @@ -0,0 +1,54 @@ +services: + + ethereum-beacon-blobs: + image: sigp/lighthouse:${LIGHTHOUSE_VERSION:-v6.0.1} + restart: unless-stopped + networks: + - chains + ports: + - 20506:20506/tcp # p2p + - 20506:20506/udp # p2p + expose: + - 5054 # metrics + - 4000 # http + - 20506 # p2p + volumes: + - ${ETHEREUM_BEACON_MAINNET_LIGHTHOUSE_PRUNED_BLOBS_DATA:-ethereum-beacon-mainnet-lighthouse-pruned-blobs}:/data + - .jwtsecret:/jwt.hex + - /etc/timezone:/etc/timezone:ro + - /etc/localtime:/etc/localtime:ro + command: | + lighthouse + beacon_node + --network=mainnet + --disable-upnp + --datadir=/data + --port=20506 + --http + --http-address=0.0.0.0 + --http-port=4000 + --target-peers=50 + --execution-endpoint=${ETHEREUM_BEACON_EXECUTION_CLIENT_MAINNET_AUTH} + --execution-jwt=/jwt.hex + --debug-level=info + --validator-monitor-auto + --metrics + --metrics-port=5054 + --metrics-address=0.0.0.0 + --disable-log-timestamp + --allow-insecure-genesis-sync + --prune-blobs=false + --genesis-backfill + --disable-backfill-rate-limiting + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.ethereum-beacon-mainnet-lighthouse-pruned-blobs-stripprefix.stripprefix.prefixes=/ethereum-beacon-blobs" + - "traefik.http.services.ethereum-beacon-mainnet-lighthouse-pruned-blobs.loadbalancer.server.port=4000" + - "${NO_SSL:-traefik.http.routers.ethereum-beacon-mainnet-lighthouse-pruned-blobs.entrypoints=websecure}" + - "${NO_SSL:-traefik.http.routers.ethereum-beacon-mainnet-lighthouse-pruned-blobs.tls.certresolver=myresolver}" + - "${NO_SSL:-traefik.http.routers.ethereum-beacon-mainnet-lighthouse-pruned-blobs.rule=Host(`$DOMAIN`) && PathPrefix(`/ethereum-beacon-blobs`)}" + - "${NO_SSL:+traefik.http.routers.ethereum-beacon-mainnet-lighthouse-pruned-blobs.rule=PathPrefix(`/ethereum-beacon-blobs`)}" + - "traefik.http.routers.ethereum-beacon-mainnet-lighthouse-pruned-blobs.middlewares=ethereum-beacon-mainnet-lighthouse-pruned-blobs-stripprefix, ipwhitelist" + +volumes: + ethereum-beacon-mainnet-lighthouse-pruned-blobs: diff --git a/ethereum-firehose.yml b/ethereum-firehose.yml new file mode 100644 index 00000000..b4cf31b2 --- /dev/null +++ b/ethereum-firehose.yml @@ -0,0 +1,71 @@ +services: + ethereum-firehose: + build: + context: ./ethereum-firehose/ + args: + FIREHOSE_ETHEREUM: v2.11.1 + FIREHOSE_GETH_VERSION: v1.15.4-fh3.0 + command: -c /etc/firehose/config.yml start + environment: + - DOMAIN=${DOMAIN:-yourdomain.com} + - ETHEREUM_ARCHIVE_RPC=${ETHEREUM_ARCHIVE_RPC:-http://ethereum-erigon3:8545} + - S3_BLOCKS_STORE_URL=${S3_BLOCKS_STORE_URL:-/var/lib/eth-blocks} + expose: + - 8545 + - 8551 + - 13042 + ports: + - "24465:24465/tcp" + - "24465:24465/udp" + - "13042:13042" + labels: + - "traefik.enable=true" + - "traefik.http.services.ethereum-firehose.loadbalancer.server.scheme=h2c" + - "traefik.http.services.ethereum-firehose.loadbalancer.server.port=13042" + - "traefik.http.routers.ethereum-firehose.entrypoints=grpc" + - "traefik.http.routers.ethereum-firehose.rule=Host(`ethereum-firehose.${DOMAIN}`)" + - "traefik.http.routers.ethereum-firehose.middlewares=ipwhitelist" + networks: + - chains + volumes: + - ./ethereum-firehose/config.yml:/etc/firehose/config.yml:ro + - ${FIREHOSE_DATA_DIR:-ethereum-firehose_data}:/var/lib/firehose # Firehose data-dir + - ${FIREHOSE_BLOCKS_DIR:-eth-blocks_data}:/var/lib/eth-blocks # Merged blocks store + - ${FIREHOSE_JWT_FILE:-jwtsecret_data}:/jwtsecret:ro # JWT for authrpc + restart: unless-stopped + stop_grace_period: 1m + + ethereum-beacon-nimbus: + image: statusim/nimbus-eth2:multiarch-v25.3.0 + restart: unless-stopped + user: root + command: + - --network=mainnet + - --data-dir=/data + - --tcp-port=9000 + - --udp-port=9000 + - --rest=yes + - --rest-port=5052 + - --rest-address=0.0.0.0 + - --metrics=yes + - --metrics-port=7071 + - --web3-url=http://ethereum-firehose:9663 + - --jwt-secret=/data/jwt.hex + - --external-beacon-api-url=https://beaconstate-mainnet.chainsafe.io + expose: + - "5052" + - "7071" + ports: + - "9000:9000/tcp" + - "9000:9000/udp" + networks: + - chains + volumes: + - ${NIMBUS_DATA_DIR:-nimbus-data}:/data # Beacon node data-dir + - ${FIREHOSE_JWT_FILE:-jwtsecret_data}:/data/jwt.hex:ro # JWT (same as firehose) + +volumes: + ethereum-firehose_data: + eth-blocks_data: + jwtsecret_data: + nimbus-data: diff --git a/ethereum-firehose/Dockerfile b/ethereum-firehose/Dockerfile new file mode 100644 index 00000000..20fe1452 --- /dev/null +++ b/ethereum-firehose/Dockerfile @@ -0,0 +1,18 @@ +FROM ubuntu:24.04 + +# Install required tools +RUN apt-get update && apt-get install -y wget curl jq tar + +# Set environment variables for URLs +ARG FIREHOSE_ETHEREUM +ARG FIREHOSE_GETH_VERSION + +# Download and extract the latest firehose-ethereum +RUN wget -O- https://github.com/streamingfast/firehose-ethereum/releases/download/${FIREHOSE_ETHEREUM}/firehose-ethereum_linux_x86_64.tar.gz | tar xvz -C /usr/bin + +# Download the latest go-ethereum (geth) +RUN wget https://github.com/streamingfast/go-ethereum/releases/download/geth-${FIREHOSE_GETH_VERSION}/geth_linux -O /usr/bin/geth && chmod +x /usr/bin/geth + +ENTRYPOINT ["fireeth"] + + diff --git a/ethereum-firehose/config.yml b/ethereum-firehose/config.yml new file mode 100644 index 00000000..52807545 --- /dev/null +++ b/ethereum-firehose/config.yml @@ -0,0 +1,38 @@ +start: + args: + - firehose + - reader-node + - merger + - relayer + - index-builder + - substreams-tier1 + - substreams-tier2 + flags: + data-dir: /var/lib/firehose + log-to-file: false + firehose-rate-limit-bucket-size: 200 + firehose-rate-limit-bucket-fill-rate: 1s + substreams-rpc-endpoints: "http://ethereum-erigon3:8545" + substreams-tier1-max-subrequests: 20 + substreams-block-execution-timeout: 30m0s + reader-node-path: /usr/bin/geth + common-merged-blocks-store-url: /var/lib/eth-blocks + reader-node-arguments: | + --datadir=/var/lib/firehose/eth-firehose + --networkid=1 + --http + --http.api=eth,net,web3 + --http.port=8545 + --http.addr=0.0.0.0 + --http.vhosts=* + --ws + --ws.addr=0.0.0.0 + --ws.port=9756 + --metrics + --metrics.addr=0.0.0.0 + --metrics.port=7070 + --cache=8192 + --authrpc.jwtsecret=/jwtsecret + --authrpc.addr=0.0.0.0 + --authrpc.vhosts=* + --authrpc.port=9663 diff --git a/ethereum-holesky-erigon3-archive-trace.yml b/ethereum-holesky-erigon3-archive-trace.yml new file mode 100644 index 00000000..89660a28 --- /dev/null +++ b/ethereum-holesky-erigon3-archive-trace.yml @@ -0,0 +1,84 @@ +services: + ethereum-holesky-erigon3: + image: erigontech/erigon:${ERIGON3_VERSION:-v3.0.0-rc2} + user: root + expose: + - "16630" + - "9090" + - "8545" + - "8551" + ports: + - "9725:9725" + - "9725:9725/udp" + - "19525:19525/udp" + - "61832:61832" + - "17037:17037" + - "17037:17037/udp" + - "13153:13153" + - "13153:13153/udp" + environment: + - "IP=${IP}" + volumes: + - ${ETHEREUM_HOLESKY_ERIGON3_ARCHIVE_TRACE_DATA:-ethereum-holesky-erigon3-archive-trace}:/root/.local/share/erigon + - /slowdisk:/slowdisk + - .jwtsecret:/jwtsecret + networks: + - chains + command: > + --prune.mode=archive + --rpc.evmtimeout=30m0s + --rpc.overlay.getlogstimeout=30m0s + --rpc.overlay.replayblocktimeout=30m0s + --chain holesky + --beacon.api.port=5555 + --beacon.api.addr=0.0.0.0 + --beacon.api.cors.allow-origins=* + --port=9725 + --p2p.allowed-ports=13153 + --caplin.discovery.addr=0.0.0.0 + --caplin.discovery.port=19525 + --caplin.discovery.tcpport=61832 + --metrics --metrics.addr=0.0.0.0 --metrics.port=6060 + --private.api.addr=0.0.0.0:9090 + --torrent.port=17037 + --nat=extip:${IP} + --pprof + --pprof.addr=0.0.0.0 + --pprof.port=6061 + --authrpc.addr=0.0.0.0 + --authrpc.vhosts=* + --authrpc.jwtsecret=/jwtsecret + --http.addr=0.0.0.0 + --http.vhosts=* + --http.corsdomain=* + --http.api=eth,erigon,web3,net,debug,trace,txpool + --beacon.api=beacon,builder,debug,lighthouse,node,validator,config + --rpc.returndata.limit=1100000 + --rpc.gascap=5000000000 + --ws.port=8545 + --ws + restart: unless-stopped + stop_grace_period: 1m + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.ethereum-holesky-erigon3-archive-trace-stripprefix.stripprefix.prefixes=/ethereum-holesky-erigon" + + - "traefik.http.services.ethereum-holesky-erigon3-archive-trace.loadbalancer.server.port=8545" + - "${NO_SSL:-traefik.http.routers.ethereum-holesky-erigon3-archive-trace.entrypoints=websecure}" + - "traefik.http.routers.ethereum-holesky-erigon3-archive-trace.service=ethereum-holesky-erigon3-archive-trace" + - "${NO_SSL:-traefik.http.routers.ethereum-holesky-erigon3-archive-trace.tls.certresolver=myresolver}" + - "${NO_SSL:-traefik.http.routers.ethereum-holesky-erigon3-archive-trace.rule=Host(`$DOMAIN`) && PathPrefix(`/ethereum-holesky-erigon`)}" + - "${NO_SSL:+traefik.http.routers.ethereum-holesky-erigon3-archive-trace.rule=PathPrefix(`/ethereum-holesky-erigon`)}" + - "traefik.http.routers.ethereum-holesky-erigon3-archive-trace.middlewares=ethereum-holesky-erigon3-archive-trace-stripprefix, ipwhitelist" + + - "traefik.http.services.ethereum-holesky-erigon3-archive-trace-beacon.loadbalancer.server.port=5555" + - "${NO_SSL:-traefik.http.routers.ethereum-holesky-erigon3-archive-trace-beacon.entrypoints=websecure}" + - "traefik.http.routers.ethereum-holesky-erigon3-archive-trace-beacon.service=ethereum-holesky-erigon3-archive-trace-beacon" + - "${NO_SSL:-traefik.http.routers.ethereum-holesky-erigon3-archive-trace-beacon.tls.certresolver=myresolver}" + - "${NO_SSL:-traefik.http.routers.ethereum-holesky-erigon3-archive-trace-beacon.rule=Host(`$DOMAIN`) && PathPrefix(`/ethereum-holesky-erigon/eth`)}" + - "${NO_SSL:+traefik.http.routers.ethereum-holesky-erigon3-archive-trace-beacon.rule=PathPrefix(`/ethereum-holesky-erigon/eth`)}" + - "traefik.http.routers.ethereum-holesky-erigon3-archive-trace-beacon.middlewares=ethereum-holesky-erigon3-archive-trace-stripprefix, ipwhitelist" + +volumes: + ethereum-holesky-erigon3-archive-trace: + diff --git a/ethereum-mainnet-erigon-archive-trace.yml b/ethereum-mainnet-erigon-archive-trace.yml index fa0cac8e..46b380da 100644 --- a/ethereum-mainnet-erigon-archive-trace.yml +++ b/ethereum-mainnet-erigon-archive-trace.yml @@ -1,6 +1,6 @@ services: ethereum-erigon: - image: erigontech/erigon:${ERIGON_VERSION:-v2.6.1} + image: erigontech/erigon:${ERIGON_VERSION:-v2.61.3} user: root expose: - "16630" @@ -8,14 +8,12 @@ services: - "8545" - "8551" ports: - - "42087:42087" - - "42087:42087/udp" - - "29553:29553/udp" - - "45209:45209" - - "42137:42137" - - "42137:42137/udp" - - "52538:52538" - - "52538:52538/udp" + - "18518:18518" + - "18518:18518/udp" + - "20202:20202" + - "20202:20202/udp" + - "52290:52290" + - "52290:52290/udp" environment: - "IP=${IP}" volumes: @@ -25,27 +23,16 @@ services: networks: - chains command: > - --prune.mode=archive --rpc.evmtimeout=30m0s --rpc.overlay.getlogstimeout=30m0s --rpc.overlay.replayblocktimeout=30m0s --chain mainnet - --internalcl - --beacon.api.port=5555 - --beacon.api.addr=0.0.0.0 - --beacon.api.cors.allow-origins=* - --port=42087 - --p2p.allowed-ports=52538 - --caplin.discovery.addr=0.0.0.0 - --caplin.discovery.port=29553 - --caplin.discovery.tcpport=45209 + --port=18518 + --p2p.allowed-ports=52290 --metrics --metrics.addr=0.0.0.0 --metrics.port=6060 --private.api.addr=0.0.0.0:9090 - --torrent.port=42137 + --torrent.port=20202 --nat=extip:${IP} - --pprof - --pprof.addr=0.0.0.0 - --pprof.port=6061 --authrpc.addr=0.0.0.0 --authrpc.vhosts=* --authrpc.jwtsecret=/jwtsecret @@ -53,7 +40,6 @@ services: --http.vhosts=* --http.corsdomain=* --http.api=eth,erigon,web3,net,debug,trace,txpool - --beacon.api=beacon,builder,debug,lighthouse,node,validator,config --rpc.returndata.limit=1100000 --rpc.gascap=5000000000 --ws.port=8545 @@ -63,22 +49,12 @@ services: labels: - "traefik.enable=true" - "traefik.http.middlewares.ethereum-mainnet-erigon-archive-trace-stripprefix.stripprefix.prefixes=/ethereum-erigon" - - "traefik.http.services.ethereum-mainnet-erigon-archive-trace.loadbalancer.server.port=8545" - "${NO_SSL:-traefik.http.routers.ethereum-mainnet-erigon-archive-trace.entrypoints=websecure}" - - "traefik.http.routers.ethereum-mainnet-erigon-archive-trace.service=ethereum-mainnet-erigon-archive-trace" - "${NO_SSL:-traefik.http.routers.ethereum-mainnet-erigon-archive-trace.tls.certresolver=myresolver}" - "${NO_SSL:-traefik.http.routers.ethereum-mainnet-erigon-archive-trace.rule=Host(`$DOMAIN`) && PathPrefix(`/ethereum-erigon`)}" - "${NO_SSL:+traefik.http.routers.ethereum-mainnet-erigon-archive-trace.rule=PathPrefix(`/ethereum-erigon`)}" - "traefik.http.routers.ethereum-mainnet-erigon-archive-trace.middlewares=ethereum-mainnet-erigon-archive-trace-stripprefix, ipwhitelist" - - - "traefik.http.services.ethereum-mainnet-erigon-archive-trace-beacon.loadbalancer.server.port=5555" - - "${NO_SSL:-traefik.http.routers.ethereum-mainnet-erigon-archive-trace-beacon.entrypoints=websecure}" - - "traefik.http.routers.ethereum-mainnet-erigon-archive-trace-beacon.service=ethereum-mainnet-erigon-archive-trace-beacon" - - "${NO_SSL:-traefik.http.routers.ethereum-mainnet-erigon-archive-trace-beacon.tls.certresolver=myresolver}" - - "${NO_SSL:-traefik.http.routers.ethereum-mainnet-erigon-archive-trace-beacon.rule=Host(`$DOMAIN`) && PathPrefix(`/ethereum-erigon/eth`)}" - - "${NO_SSL:+traefik.http.routers.ethereum-mainnet-erigon-archive-trace-beacon.rule=PathPrefix(`/ethereum-erigon/eth`)}" - - "traefik.http.routers.ethereum-mainnet-erigon-archive-trace-beacon.middlewares=ethereum-mainnet-erigon-archive-trace-stripprefix, ipwhitelist" volumes: ethereum-mainnet-erigon-archive-trace: diff --git a/ethereum-mainnet-erigon3-archive-trace.yml b/ethereum-mainnet-erigon3-archive-trace.yml index 8d843f84..fde89ed8 100644 --- a/ethereum-mainnet-erigon3-archive-trace.yml +++ b/ethereum-mainnet-erigon3-archive-trace.yml @@ -1,6 +1,6 @@ services: ethereum-erigon3: - image: erigontech/erigon:${ERIGON3_VERSION:-v3.0.0-alpha7} + image: erigontech/erigon:${ERIGON3_VERSION:-v3.0.0-rc2} user: root expose: - "16630" diff --git a/ethereum-sepolia-erigon3-archive-trace.yml b/ethereum-sepolia-erigon3-archive-trace.yml new file mode 100644 index 00000000..c66e70b1 --- /dev/null +++ b/ethereum-sepolia-erigon3-archive-trace.yml @@ -0,0 +1,84 @@ +services: + ethereum-sepolia-erigon3: + image: erigontech/erigon:${ERIGON3_VERSION:-v3.0.0-rc2} + user: root + expose: + - "16630" + - "9090" + - "8545" + - "8551" + ports: + - "5013:5013" + - "5013:5013/udp" + - "28058:28058/udp" + - "29556:29556" + - "10257:10257" + - "10257:10257/udp" + - "13083:13083" + - "13083:13083/udp" + environment: + - "IP=${IP}" + volumes: + - ${ETHEREUM_SEPOLIA_ERIGON3_ARCHIVE_TRACE_DATA:-ethereum-sepolia-erigon3-archive-trace}:/root/.local/share/erigon + - /slowdisk:/slowdisk + - .jwtsecret:/jwtsecret + networks: + - chains + command: > + --prune.mode=archive + --rpc.evmtimeout=30m0s + --rpc.overlay.getlogstimeout=30m0s + --rpc.overlay.replayblocktimeout=30m0s + --chain sepolia + --beacon.api.port=5555 + --beacon.api.addr=0.0.0.0 + --beacon.api.cors.allow-origins=* + --port=5013 + --p2p.allowed-ports=13083 + --caplin.discovery.addr=0.0.0.0 + --caplin.discovery.port=28058 + --caplin.discovery.tcpport=29556 + --metrics --metrics.addr=0.0.0.0 --metrics.port=6060 + --private.api.addr=0.0.0.0:9090 + --torrent.port=10257 + --nat=extip:${IP} + --pprof + --pprof.addr=0.0.0.0 + --pprof.port=6061 + --authrpc.addr=0.0.0.0 + --authrpc.vhosts=* + --authrpc.jwtsecret=/jwtsecret + --http.addr=0.0.0.0 + --http.vhosts=* + --http.corsdomain=* + --http.api=eth,erigon,web3,net,debug,trace,txpool + --beacon.api=beacon,builder,debug,lighthouse,node,validator,config + --rpc.returndata.limit=1100000 + --rpc.gascap=5000000000 + --ws.port=8545 + --ws + restart: unless-stopped + stop_grace_period: 1m + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.ethereum-sepolia-erigon3-archive-trace-stripprefix.stripprefix.prefixes=/ethereum-sepolia-erigon" + + - "traefik.http.services.ethereum-sepolia-erigon3-archive-trace.loadbalancer.server.port=8545" + - "${NO_SSL:-traefik.http.routers.ethereum-sepolia-erigon3-archive-trace.entrypoints=websecure}" + - "traefik.http.routers.ethereum-sepolia-erigon3-archive-trace.service=ethereum-sepolia-erigon3-archive-trace" + - "${NO_SSL:-traefik.http.routers.ethereum-sepolia-erigon3-archive-trace.tls.certresolver=myresolver}" + - "${NO_SSL:-traefik.http.routers.ethereum-sepolia-erigon3-archive-trace.rule=Host(`$DOMAIN`) && PathPrefix(`/ethereum-sepolia-erigon`)}" + - "${NO_SSL:+traefik.http.routers.ethereum-sepolia-erigon3-archive-trace.rule=PathPrefix(`/ethereum-sepolia-erigon`)}" + - "traefik.http.routers.ethereum-sepolia-erigon3-archive-trace.middlewares=ethereum-sepolia-erigon3-archive-trace-stripprefix, ipwhitelist" + + - "traefik.http.services.ethereum-sepolia-erigon3-archive-trace-beacon.loadbalancer.server.port=5555" + - "${NO_SSL:-traefik.http.routers.ethereum-sepolia-erigon3-archive-trace-beacon.entrypoints=websecure}" + - "traefik.http.routers.ethereum-sepolia-erigon3-archive-trace-beacon.service=ethereum-sepolia-erigon3-archive-trace-beacon" + - "${NO_SSL:-traefik.http.routers.ethereum-sepolia-erigon3-archive-trace-beacon.tls.certresolver=myresolver}" + - "${NO_SSL:-traefik.http.routers.ethereum-sepolia-erigon3-archive-trace-beacon.rule=Host(`$DOMAIN`) && PathPrefix(`/ethereum-sepolia-erigon/eth`)}" + - "${NO_SSL:+traefik.http.routers.ethereum-sepolia-erigon3-archive-trace-beacon.rule=PathPrefix(`/ethereum-sepolia-erigon/eth`)}" + - "traefik.http.routers.ethereum-sepolia-erigon3-archive-trace-beacon.middlewares=ethereum-sepolia-erigon3-archive-trace-stripprefix, ipwhitelist" + +volumes: + ethereum-sepolia-erigon3-archive-trace: + diff --git a/fantom/scripts/entrypoint.sh b/fantom/scripts/entrypoint.sh index 47a90c18..6c098767 100644 --- a/fantom/scripts/entrypoint.sh +++ b/fantom/scripts/entrypoint.sh @@ -16,7 +16,7 @@ if [ ! -f "$FANTOM_HOME/mainnet-5577-full-mpt.g" ]; then cd $FANTOM_HOME echo "downloading launch genesis file" - wget --quiet https://download.fantom.network/mainnet-5577-full-mpt.g + wget --quiet https://download.fantom.network/opera/mainnet/mainnet-5577-full-mpt.g fi # uncomment the next line and do docker-compose build in case you have to try to fix the db after unclean shutdown etc. @@ -28,6 +28,7 @@ exec opera \ --maxpeers=200 \ --datadir=$FANTOM_HOME \ --http \ + --bootnodes=${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} \ --http.addr=0.0.0.0 \ --http.port=18544 \ --http.api=ftm,eth,debug,admin,web3,personal,net,txpool,sfc,trace \ diff --git a/firehose-mainnet/Dockerfile b/firehose-mainnet/Dockerfile deleted file mode 100644 index 64b45a63..00000000 --- a/firehose-mainnet/Dockerfile +++ /dev/null @@ -1,7 +0,0 @@ -FROM debian -RUN apt-get update && apt-get install -y wget -RUN wget -O- https://github.com/streamingfast/firehose-ethereum/releases/download/v1.4.13/firehose-ethereum_linux_x86_64.tar.gz | tar xvz -C /usr/bin -RUN wget https://github.com/streamingfast/go-ethereum/releases/download/geth-v1.12.1-fh2.3/geth_linux -O /usr/bin/geth -RUN chmod +x /usr/bin/geth - -ENTRYPOINT ["fireeth"] \ No newline at end of file diff --git a/firehose-mainnet/config.yml b/firehose-mainnet/config.yml deleted file mode 100644 index aa67d54c..00000000 --- a/firehose-mainnet/config.yml +++ /dev/null @@ -1,26 +0,0 @@ -start: - args: - - merger - - firehose - - reader-node - - relayer - - combined-index-builder - flags: - data-dir: /var/lib/firehose - log-to-file: false - reader-node-log-to-zap: false - common-chain-id: "1" - common-network-id: "1" - reader-node-path: /usr/bin/geth - substreams-rpc-endpoints: $ETHEREUM_ARCHIVE_RPC - substreams-enabled: true - common-merged-blocks-store-url: $S3_BLOCKS_STORE_URL - substreams-request-stats-enabled: true - reader-node-arguments: "--mainnet --datadir=/var/lib/geth - --ipcpath=/var/lib/firehose/reader/ipc - --http --http.api=eth,net,web3 - --authrpc.jwtsecret=/jwtsecret - --authrpc.addr=0.0.0.0 - --authrpc.vhosts=* - --http.port=8545 --http.addr=0.0.0.0 --http.vhosts=* - --firehose-enabled --port=24465 --cache=2048" diff --git a/firehose.yml b/firehose.yml deleted file mode 100644 index de077e03..00000000 --- a/firehose.yml +++ /dev/null @@ -1,156 +0,0 @@ -version: '3.1' - -services: - erigon-mainnet: - image: thorax/erigon:v2.48.1 - expose: - - "16630" - - "9090" - - "8545" - - "8551" - ports: - - "16630:16630" - - "16630:16630/udp" - volumes: - - erigon-mainnet:/home/erigon/.local/share/erigon - - .jwtsecret:/jwtsecret - networks: - - chains - command: > - --chain mainnet - --port=16630 - --metrics --metrics.addr=0.0.0.0 --metrics.port=6060 - --private.api.addr=0.0.0.0:9090 - --torrent.upload.rate="1250mb" - --torrent.download.rate="1250mb" - --pprof - --pprof.addr=0.0.0.0 - --pprof.port=6061 - --authrpc.addr=0.0.0.0 - --authrpc.vhosts=* - --authrpc.jwtsecret=/jwtsecret - --http.addr=0.0.0.0 - --http.vhosts=* - --http.corsdomain=* - --http.api=eth,erigon,web3,net,debug,trace,txpool - --rpc.returndata.limit=1000000 - --rpc.gascap=5000000000 - --ws - restart: unless-stopped - stop_grace_period: 1m - labels: - - "prometheus-scrape.enabled=true" - - "prometheus-scrape.port=6060" - - "prometheus-scrape.job_name=erigon" - - "prometheus-scrape.metrics_path=/debug/metrics/prometheus" - - "traefik.enable=true" - - "traefik.http.middlewares.erigon-mainnet-stripprefix.stripprefix.prefixes=/erigon" - - "traefik.http.services.erigon-mainnet.loadbalancer.server.port=8545" - - "traefik.http.routers.erigon-mainnet.entrypoints=websecure" - - "traefik.http.routers.erigon-mainnet.tls.certresolver=myresolver" - - "traefik.http.routers.erigon-mainnet.rule=Host(`$DOMAIN`) && PathPrefix(`/erigon`)" - - "traefik.http.routers.erigon-mainnet.middlewares=erigon-mainnet-stripprefix, ipwhitelist" - - - fireeth-mainnet: - build: - context: ./firehose-mainnet/ - command: -c /etc/firehose/config.yml start - environment: - - "ETHEREUM_ARCHIVE_RPC=${FIREHOSE_ETHEREUM_ARCHIVE_RPC:-https://rpc-fi-1.stakesquid.eu/erigon}" - - "S3_BLOCKS_STORE_URL=${FIREHOSE_S3_BLOCKS_STORE_URL:-s3://162.55.135.148:8333/eth-blocks?insecure=true}" - expose: - - 8545 # geth rpc - - 8551 # consensus client - - 13042 # firehose grpc - ports: - - "24465:24465" - - "24465:24465/udp" - - "13042:13042" - labels: - - "traefik.enable=true" - - "traefik.http.services.firehose-mainnet.loadbalancer.server.scheme=h2c" - - "traefik.http.services.firehose-mainnet.loadbalancer.server.port=13042" - - "traefik.http.routers.firehose-mainnet.entrypoints=grpc" - #- "traefik.http.routers.firehose-mainnet.tls.certresolver=myresolver" - - "traefik.http.routers.firehose-mainnet.rule=Host(`firehose-mainnet.$DOMAIN`)" - - "traefik.http.routers.firehose-mainnet.middlewares=ipwhitelist" - networks: - - chains - volumes: - - "./firehose-mainnet/config.yml:/etc/firehose/config.yml" - - "geth-mainnet_data:/var/lib/geth" - - "firehose-mainnet_data:/var/lib/firehose" - - ".jwtsecret:/jwtsecret" - restart: unless-stopped - stop_grace_period: 1m - - - lighthouse-erigon-mainnet: - image: sigp/lighthouse:latest-modern - ports: - - "18719:18719" - - "18719:18719/udp" - volumes: - - .jwtsecret:/jwtsecret - - lighthouse-erigon-mainnet_data:/root/.lighthouse - command: > - lighthouse beacon_node - --eth1-endpoints http://erigon-mainnet:8545 - --execution-endpoint http://erigon-mainnet:8551 - --execution-jwt /jwtsecret - --checkpoint-sync-url https://sync-mainnet.beaconcha.in - --http - --http-address 0.0.0.0 - --port 18719 - restart: unless-stopped - stop_grace_period: 1m - networks: - - chains - labels: - - "traefik.enable=true" - - "traefik.http.middlewares.lighthouse-erigon-mainnet-stripprefix.stripprefix.prefixes=/lighthouse-erigon-mainnet" - - "traefik.http.services.lighthouse-erigon-mainnet.loadbalancer.server.port=5052" - - "traefik.http.routers.lighthouse-erigon-mainnet.entrypoints=websecure" - - "traefik.http.routers.lighthouse-erigon-mainnet.tls.certresolver=myresolver" - - "traefik.http.routers.lighthouse-erigon-mainnet.rule=Host(`$DOMAIN`) && PathPrefix(`/lighthouse-erigon-mainnet`)" - - "traefik.http.routers.lighthouse-erigon-mainnet.middlewares=lighthouse-erigon-mainnet-stripprefix, ipwhitelist" - - - lighthouse-fireeth-mainnet: - image: sigp/lighthouse:latest-modern - ports: - - "55031:55031" - - "55031:55031/udp" - volumes: - - .jwtsecret:/jwtsecret - - lighthouse-fireeth-mainnet_data:/root/.lighthouse - command: > - lighthouse beacon_node - --eth1-endpoints http://fireeth-mainnet:8545 - --execution-endpoint http://fireeth-mainnet:8551 - --execution-jwt /jwtsecret - --checkpoint-sync-url https://mainnet-checkpoint-sync.attestant.io - --http - --http-address 0.0.0.0 - --port 55031 - restart: unless-stopped - stop_grace_period: 1m - networks: - - chains - labels: - - "traefik.enable=true" - - "traefik.http.middlewares.lighthouse-fireeth-mainnet-stripprefix.stripprefix.prefixes=/lighthouse-fireeth-mainnet" - - "traefik.http.services.lighthouse-fireeth-mainnet.loadbalancer.server.port=5052" - - "traefik.http.routers.lighthouse-fireeth-mainnet.entrypoints=websecure" - - "traefik.http.routers.lighthouse-fireeth-mainnet.tls.certresolver=myresolver" - - "traefik.http.routers.lighthouse-fireeth-mainnet.rule=Host(`$DOMAIN`) && PathPrefix(`/lighthouse-fireeth-mainnet`)" - - "traefik.http.routers.lighthouse-fireeth-mainnet.middlewares=lighthouse-fireeth-mainnet-stripprefix, ipwhitelist" - - -volumes: - erigon-mainnet: - lighthouse-fireeth-mainnet_data: - lighthouse-erigon-mainnet_data: - geth-mainnet_data: - firehose-mainnet_data: diff --git a/fuse-mainnet-nethermind-archive.yml b/fuse-mainnet-nethermind-archive.yml index 896e6a9c..60496dd2 100644 --- a/fuse-mainnet-nethermind-archive.yml +++ b/fuse-mainnet-nethermind-archive.yml @@ -38,7 +38,7 @@ services: volumes: - fuse-mainnet-nethermind-archive-keystore:/nethermind/keystore - fuse-mainnet-nethermind-archive-logs:/nethermind/logs - - ${FUSE_MAINNET_NETHERMIND_ARCHIVE_DB_DATA:-fuse-mainnet-nethermind-archive-db}:/nethermind/nethermind_db + - ${FUSE_MAINNET_NETHERMIND_ARCHIVE__DB_DATA:-fuse-mainnet-nethermind-archive-db}:/nethermind/nethermind_db - fuse-mainnet-nethermind-archive-health:/health:ro - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro diff --git a/gnosis-mainnet-erigon3-archive-trace.yml b/gnosis-mainnet-erigon3-archive-trace.yml new file mode 100644 index 00000000..fa5a01b3 --- /dev/null +++ b/gnosis-mainnet-erigon3-archive-trace.yml @@ -0,0 +1,83 @@ +services: + gnosis-erigon3-init: + image: alpine:latest + entrypoint: ["/bin/sh", "-c"] + command: rm /datadir/nodekey + volumes: + - "${GNOSIS_MAINNET_ERIGON3_ARCHIVE_TRACE_DATA:-gnosis-mainnet-erigon3-archive-trace}:/datadir" + init: true + + gnosis-erigon3: + image: erigontech/erigon:${ERIGON3_VERSION:-v3.0.0-rc2} + depends_on: + - gnosis-erigon3-init + user: root + volumes: + - "${GNOSIS_MAINNET_ERIGON3_ARCHIVE_TRACE_DATA:-gnosis-mainnet-erigon3-archive-trace}:/datadir" + - .jwtsecret:/jwtsecret + expose: + - "20947" + - "9090" + - "8545" + - "8551" + ports: + - "20947:20947" + - "20947:20947/udp" + - "28806:28806" + - "28806:28806/udp" + - "16393:16393" + - "16393:16393/udp" + - "17938:17938" + - "17938:17938/udp" + restart: unless-stopped + command: > + --chain=gnosis + --prune.mode=archive + --authrpc.addr=0.0.0.0 + --authrpc.vhosts=* + --authrpc.jwtsecret=/jwtsecret + --http + --http.addr=0.0.0.0 + --http.port=8545 + --http.compression + --http.vhosts='*' + --http.corsdomain='*' + --http.api=eth,debug,net,trace,web3,erigon + --ws + --ws.compression + --rpc.gascap=300000000 + --metrics + --metrics.addr=0.0.0.0 + --metrics.port=6060 + --bodies.cache=5G + --rpc.batch.limit=200000 + --batchSize=2048MB + --port=20947 + --datadir=/datadir + --ethash.dagdir=/datadir/ethash + --rpc.returndata.limit=1000000 + --p2p.protocol=66 + --p2p.protocol 67 + --p2p.protocol 68 + --p2p.allowed-ports 28806 + --p2p.allowed-ports 16393 + --p2p.allowed-ports 17938 + --nat extip:${IP} + stop_grace_period: 1m + environment: + - "IP=${IP}" + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.gnosis-mainnet-erigon3-archive-trace-stripprefix.stripprefix.prefixes=/gnosis-erigon" + - "traefik.http.services.gnosis-mainnet-erigon3-archive-trace.loadbalancer.server.port=8545" + - "${NO_SSL:-traefik.http.routers.gnosis-mainnet-erigon3-archive-trace.entrypoints=websecure}" + - "${NO_SSL:-traefik.http.routers.gnosis-mainnet-erigon3-archive-trace.tls.certresolver=myresolver}" + - "${NO_SSL:-traefik.http.routers.gnosis-mainnet-erigon3-archive-trace.rule=Host(`$DOMAIN`) && PathPrefix(`/gnosis-erigon`)}" + - "${NO_SSL:+traefik.http.routers.gnosis-mainnet-erigon3-archive-trace.rule=PathPrefix(`/gnosis-erigon`)}" + - "traefik.http.routers.gnosis-mainnet-erigon3-archive-trace.middlewares=gnosis-mainnet-erigon3-archive-trace-stripprefix, ipwhitelist" + networks: + - chains + +volumes: + gnosis-mainnet-erigon3-archive-trace: + diff --git a/latest.sh b/latest.sh index d1b002c5..31c9cbb8 100755 --- a/latest.sh +++ b/latest.sh @@ -10,7 +10,12 @@ while IFS= read -r line; do # Add each line to the array blacklist+=("$line") done < "$BASEPATH/path-blacklist.txt" - + +if $NO_SSL; then + PROTO="http" + DOMAIN="0.0.0.0" +fi + pathlist=$(cat $BASEPATH/$1.yml | grep -oP "(?<=stripprefix\.prefixes).*\"" | cut -d'=' -f2- | sed 's/.$//') for path in $pathlist; do @@ -22,9 +27,9 @@ for path in $pathlist; do done if $include; then - RPC_URL="https://$DOMAIN$path" + RPC_URL="${PROTO:-https}://$DOMAIN$path" - if curl -s -X POST $RPC_URL -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_getBlockByNumber","params":["latest",false],"id":1}' | jq -r '.result.number, .result.hash' | awk '{if (NR==1) print "Block Number:", strtonum($0); else print "Block Hash:", $0}'; then + if curl -s -X POST $RPC_URL -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_getBlockByNumber","params":["latest",false],"id":1}' | jq -r '.result.number, .result.hash' | gawk '{if (NR==1) print "Block Number:", strtonum($0); else print "Block Hash:", $0}'; then exit 0 else if curl -s -X POST $RPC_URL -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_getBlockByNumber","params":["latest",false],"id":1}' | jq; then diff --git a/linea-mainnet-erigon-archive-trace.yml b/linea-mainnet-erigon-archive-trace.yml new file mode 100644 index 00000000..005b1e8a --- /dev/null +++ b/linea-mainnet-erigon-archive-trace.yml @@ -0,0 +1,91 @@ +services: + #linea-erigon-init: + # image: alpine:latest + # entrypoint: ["/bin/sh", "-c"] + # command: + # - | + # apk add --no-cache openssl xxd; + # mkdir -p /config; + # if [ ! -f /config/nodekey ]; then + # echo "Generating new Geth node key..."; + # openssl rand 32 | xxd -p -c 32 | tr -d '\n' > /configs/mainnet/shared/nodekey; + # echo "Node key generated: $(cat /config/nodekey)"; + # else + # echo "Node key already exists, skipping generation."; + # fi + # volumes: + # - ./linea/shared:/configs/mainnet/shared + # init: true + + linea-erigon: + image: erigontech/erigon:${ERIGON2_VERSION:-v2.61.3} + user: root + #depends_on: + # - linea-erigon-init + expose: + - "51262" + - "9090" + - "8545" + - "8551" + ports: + - "30319:30319" + - "30319:30319/udp" + - "48799:48799" + - "48799:48799/udp" + - "18025:18025" + - "18025:18025/udp" + volumes: + - ${LINEA_MAINNET_ERIGON_ARCHIVE_TRACE_DATA:-linea-mainnet-erigon-archive-trace}:/root/.local/share/erigon + - ./linea/shared:/configs/mainnet/shared + - ./linea/erigon/scripts/entrypoint.sh:/entrypoint.sh + networks: + - chains + entrypoint: /entrypoint.sh + environment: + - "IP=${IP}" + command: > + --chain=mainnet + --networkid=59144 + --miner.gaslimit=61000000 + --txpool.accountqueue 50000 + --txpool.globalqueue 50000 + --txpool.globalslots 50000 + --txpool.pricelimit 1000000000 + --txpool.nolocals + --nodekey /configs/mainnet/shared/nodekey + --nat=extip:${IP} + --snapshots=false + --port=30319 + --p2p.allowed-ports 18025 + --p2p.allowed-ports 48799 + --bootnodes=enode://069800db9e6e0ec9cadca670994ef1aea2cfd3d88133e63ecadbc1cdbd1a5847b09838ee08d8b5f02a9c32ee13abeb4d4104bb5514e5322c9d7ee19f41ff3e51@3.132.73.210:31002,enode://a8e03a71eab12ec4b47bb6e19169d8e4dc7a58373a2476969bbe463f2dded6003037fa4dd5f71e15027f7fc8d7340956fbbefed67ddd116ac19a7f74da034b61@3.132.73.210:31003,enode://97706526cf79df9d930003644f9156805f6c8bd964fc79e083444f7014ce10c9bdd2c5049e63b58040dca1d4c82ebef970822198cf0714de830cff4111534ff1@18.223.198.165:31004,enode://24e1c654a801975a96b7f54ebd7452ab15777fc635c1db25bdbd4425fdb04e7f4768e9e838a87ab724320a765e41631d5d37758c933ad0e8668693558125c8aa@18.223.198.165:31000,enode://27010891d960f73d272a553f72b6336c6698db3ade98d631f09c764e57674a797be5ebc6829ddbb65ab564f439ebc75215d20aa98b6f351d12ea623e7d139ac3@3.132.73.210:31001,enode://228e1b8a4931e46f383e30721dac21fb8fb4e5e1b32c870e13b25478c82db3dc1cd9e7ceb93d302a766466b55638cc9c5cbfc43aa48fa41ced19baf365951f76@3.1.142.64:31002,enode://c22eb0d40fc3ad5ea710aeddea906567778166bfe18c157955e8c39b23a46c45db18a0fa2ba07f2b64c81178a8c796aec2a29151533920ead06fcdfc6d8d03c6@47.128.192.57:31004,enode://8ce733abe39fd7ae0a278b9893f85c1193c611a3886168690dd843435460f22cc4d61f9e8d0ace7f5905836a665319a31cccdaacdada2acc69972c382ecce7db@3.1.142.64:31003,enode://b7c1b2bed65a855f7a2104aac9a14674dfdf018fdac763415b373b29ce18cdb81d36328ba4e5c9f12629f3a50c3e8f9ee048f22dbdbe93a82813da89c6b81334@51.20.235.126:31004,enode://95270e0550848a72fb141cf27f1c4ea10714edde365b411dc0fa06c81c0f282ce155eb9fa472b6b8bb9ee98395eeaf4c5a7b02a01fe58b37ea98ba152eda4c37@13.50.94.193:31000,enode://72013391755f24f08567b932feeeec4c893c06e0b1fb480890c83bf87fd277ad86a5ab9cb586db9ae9970371a2f8cb0c96f6c9f69045abca0fb801db7f047138@51.20.235.126:31001 + --metrics --metrics.addr=0.0.0.0 --metrics.port=6060 + --private.api.addr=0.0.0.0:9090 + --pprof + --pprof.addr=0.0.0.0 + --pprof.port=6061 + --authrpc.addr=0.0.0.0 + --authrpc.vhosts=* + --authrpc.jwtsecret=/jwtsecret + --http.addr=0.0.0.0 + --http.vhosts=* + --http.corsdomain=* + --http.api=eth,erigon,web3,net,debug,trace,txpool,admin + --rpc.returndata.limit=1000000 + --rpc.gascap=5000000000 + --ws + --ws.port=8545 + restart: unless-stopped + stop_grace_period: 1m + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.linea-mainnet-erigon-archive-trace-stripprefix.stripprefix.prefixes=/linea-erigon" + - "traefik.http.services.linea-mainnet-erigon-archive-trace.loadbalancer.server.port=8545" + - "${NO_SSL:-traefik.http.routers.linea-mainnet-erigon-archive-trace.entrypoints=websecure}" + - "${NO_SSL:-traefik.http.routers.linea-mainnet-erigon-archive-trace.tls.certresolver=myresolver}" + - "${NO_SSL:-traefik.http.routers.linea-mainnet-erigon-archive-trace.rule=Host(`$DOMAIN`) && PathPrefix(`/linea-erigon`)}" + - "${NO_SSL:+traefik.http.routers.linea-mainnet-erigon-archive-trace.rule=PathPrefix(`/linea-erigon`)}" + - "traefik.http.routers.linea-mainnet-erigon-archive-trace.middlewares=linea-mainnet-erigon-archive-trace-stripprefix, ipwhitelist" + +volumes: + linea-mainnet-erigon-archive-trace: diff --git a/linea-mainnet-erigon-v2-archive-trace.yml b/linea-mainnet-erigon-v2-archive-trace.yml deleted file mode 100644 index ba37c52a..00000000 --- a/linea-mainnet-erigon-v2-archive-trace.yml +++ /dev/null @@ -1,92 +0,0 @@ -version: '3.1' - -services: - linea-erigon-init: - image: alpine:latest - entrypoint: ["/bin/sh", "-c"] - command: - - | - apk add --no-cache openssl xxd; - mkdir -p /config; - if [ ! -f /config/nodekey ]; then - echo "Generating new Geth node key..."; - openssl rand 32 | xxd -p -c 32 | tr -d '\n' > /configs/mainnet/shared/nodekey; - echo "Node key generated: $(cat /config/nodekey)"; - else - echo "Node key already exists, skipping generation."; - fi - volumes: - - ./linea/shared:/configs/mainnet/shared - init: true - - linea-erigon: - image: erigontech/erigon:${ERIGON2_VERSION:-v2.61.0} - user: root - depends_on: - - linea-erigon-init - expose: - - "51262" - - "9090" - - "8545" - - "8551" - ports: - - "30319:30319" - - "30319:30319/udp" - - "48799:48799" - - "48799:48799/udp" - - "18025:18025" - - "18025:18025/udp" - volumes: - - ${LINEA-MAINNET-ERIGON-V2-ARCHIVE-TRACE:-linea-mainnet-erigon-v2-archive-trace}:/root/.local/share/erigon - - ./linea/shared:/configs/mainnet/shared - - ./linea/erigon/scripts/entrypoint.sh:/entrypoint.sh - networks: - - chains - entrypoint: /entrypoint.sh - environment: - - "IP=${IP}" - command: > - --chain=mainnet - --networkid=59144 - --miner.gaslimit=61000000 - --txpool.accountqueue 50000 - --txpool.globalqueue 50000 - --txpool.globalslots 50000 - --txpool.pricelimit 1000000000 - --txpool.nolocals - --nodekey /configs/mainnet/shared/nodekey - --nat=extip:${IP} - --snapshots=false - --port=30319 - --p2p.allowed-ports 18025 - --p2p.allowed-ports 48799 - --bootnodes=enode://ca2f06aa93728e2883ff02b0c2076329e475fe667a48035b4f77711ea41a73cf6cb2ff232804c49538ad77794185d83295b57ddd2be79eefc50a9dd5c48bbb2e@3.128.49.168:30303,enode://eef91d714494a1ceb6e06e5ce96fe5d7d25d3701b2d2e68c042b33d5fa0e4bf134116e06947b3f40b0f22db08f104504dd2e5c790d8bcbb6bfb1b7f4f85313ec@3.130.182.201:30303,enode://cfd472842582c422c7c98b0f2d04c6bf21d1afb2c767f72b032f7ea89c03a7abdaf4855b7cb2dc9ae7509836064ba8d817572cf7421ba106ac87857836fa1d1b@3.136.114.192:30303 - --metrics --metrics.addr=0.0.0.0 --metrics.port=6060 - --private.api.addr=0.0.0.0:9090 - --pprof - --pprof.addr=0.0.0.0 - --pprof.port=6061 - --authrpc.addr=0.0.0.0 - --authrpc.vhosts=* - --authrpc.jwtsecret=/jwtsecret - --http.addr=0.0.0.0 - --http.vhosts=* - --http.corsdomain=* - --http.api=eth,erigon,web3,net,debug,trace,txpool,admin - --rpc.returndata.limit=1000000 - --rpc.gascap=5000000000 - --ws - --ws.port=8545 - restart: unless-stopped - stop_grace_period: 1m - labels: - - "traefik.enable=true" - - "traefik.http.middlewares.linea-mainnet-erigon-v2-archive-trace-stripprefix.stripprefix.prefixes=/linea-erigon" - - "traefik.http.services.linea-mainnet-erigon-v2-archive-trace.loadbalancer.server.port=8545" - - "traefik.http.routers.linea-mainnet-erigon-v2-archive-trace.entrypoints=websecure" - - "traefik.http.routers.linea-mainnet-erigon-v2-archive-trace.tls.certresolver=myresolver" - - "traefik.http.routers.linea-mainnet-erigon-v2-archive-trace.rule=Host(`$DOMAIN`) && PathPrefix(`/linea-erigon`)" - - "traefik.http.routers.linea-mainnet-erigon-v2-archive-trace.middlewares=linea-mainnet-erigon-v2-archive-trace-stripprefix, ipwhitelist" - -volumes: - linea-mainnet-erigon-v2-archive-trace: diff --git a/moonbeam-archive-trace.yml b/moonbeam-archive-trace.yml index 8e8e3801..ce7d780a 100644 --- a/moonbeam-archive-trace.yml +++ b/moonbeam-archive-trace.yml @@ -15,7 +15,6 @@ services: restart: unless-stopped command: > --rpc-cors all - --unsafe-ws-external --unsafe-rpc-external --trie-cache-size 1073741824 --base-path=/data diff --git a/optimism-mainnet-op-erigon-archive-trace.yml b/optimism-mainnet-op-erigon-archive-trace.yml index 3a4bf23a..85e58654 100644 --- a/optimism-mainnet-op-erigon-archive-trace.yml +++ b/optimism-mainnet-op-erigon-archive-trace.yml @@ -3,6 +3,7 @@ services: optimism-erigon: image: testinprod/op-erigon:${OP_ERIGON_VERSION:-v2.61.1-0.8.3} restart: unless-stopped + user: root stop_grace_period: 5m expose: - "9090" @@ -24,13 +25,14 @@ services: --chain=optimism-mainnet --ws --nodiscover + --db.size.limit=8TB volumes: - ${OPTIMISM_MAINNET_OP_ERIGON_ARCHIVE_TRACE_DATA:-optimism-mainnet-op-erigon-archive-trace}:/root/.local/share/erigon - .jwtsecret:/jwtsecret networks: - chains labels: - - "traefik.enable=true" + - "traefik.enable=true" - "traefik.http.middlewares.optimism-mainnet-op-erigon-archive-trace-stripprefix.stripprefix.prefixes=/optimism-erigon" - "traefik.http.services.optimism-mainnet-op-erigon-archive-trace.loadbalancer.server.port=8545" - "${NO_SSL:-traefik.http.routers.optimism-mainnet-op-erigon-archive-trace.entrypoints=websecure}" @@ -65,7 +67,7 @@ services: - "OP_NODE_L1_ETH_RPC=${OPTIMISM_L1_ETHEREUM_MAINNET_EXECUTION_RPC}" - "OP_NODE_L2_ENGINE_AUTH_RAW=${JWTSECRET}" - "OP_NODE_L2_ENGINE_AUTH=/jwtsecret" - - "OP_NODE_L2_ENGINE_RPC=http://optimism-erigon:9551" + - "OP_NODE_L2_ENGINE_RPC=http://optimism-erigon:8551" - "OP_NODE_LOG_LEVEL=info" - "OP_NODE_METRICS_ADDR=0.0.0.0" - "OP_NODE_METRICS_ENABLED=true" diff --git a/optimism-mainnet-op-reth-archive-trace.yml b/optimism-mainnet-op-reth-archive-trace.yml new file mode 100644 index 00000000..01b5274b --- /dev/null +++ b/optimism-mainnet-op-reth-archive-trace.yml @@ -0,0 +1,102 @@ +services: + optimism-reth: + image: ghcr.io/paradigmxyz/op-reth:${OP_RETH_VERSION:-v1.3.1} + expose: + - 9551 + - 8545 # RPC / Websocket + - 9575 # P2P TCP (currently unused) + - 9575/udp # P2P UDP (currently unused) + - 6060 # metrics + ports: + - "9575:9575" + - "9575:9575/udp" + restart: unless-stopped + user: root + stop_grace_period: 3m + command: > + node + --chain optimism + --port 9575 + --discovery.port 9575 + --rollup.sequencer-http https://mainnet-sequencer.optimism.org + --http + --ws + --authrpc.addr 0.0.0.0 + --authrpc.port 9551 + --authrpc.jwtsecret /jwtsecret + --http.addr 0.0.0.0 + --http.port 8545 + --ws.addr 0.0.0.0 + --ws.port 8545 + --ws.origins '*' + --http.api "debug,eth,net,trace,txpool,web3,rpc,reth,admin" + --ws.api "debug,eth,net,trace,txpool,web3,rpc,reth,admin" + --http.corsdomain '*' + --rpc.max-logs-per-response 1100000 + --rpc.gascap 600000000 + --nat extip:$IP + volumes: + - ${OPTIMISM_MAINNET_OP_RETH_ARCHIVE_TRACE_DATA:-optimism-mainnet-op-reth-archive-trace}:/root/.local/share/reth/optimism + - /slowdisk:/slowdisk + - .jwtsecret:/jwtsecret + labels: + - "traefik.enable=true" + - "traefik.http.middlewares.optimism-mainnet-op-reth-archive-trace-stripprefix.stripprefix.prefixes=/optimism-reth" + - "traefik.http.services.optimism-mainnet-op-reth-archive-trace.loadbalancer.server.port=8545" + - "${NO_SSL:-traefik.http.routers.optimism-mainnet-op-reth-archive-trace.entrypoints=websecure}" + - "${NO_SSL:-traefik.http.routers.optimism-mainnet-op-reth-archive-trace.tls.certresolver=myresolver}" + - "${NO_SSL:-traefik.http.routers.optimism-mainnet-op-reth-archive-trace.rule=Host(`$DOMAIN`) && PathPrefix(`/optimism-reth`)}" + - "${NO_SSL:+traefik.http.routers.optimism-mainnet-op-reth-archive-trace.rule=PathPrefix(`/optimism-reth`)}" + - "traefik.http.routers.optimism-mainnet-op-reth-archive-trace.middlewares=optimism-mainnet-op-reth-archive-trace-stripprefix, ipwhitelist" + networks: + - chains + + + optimism-reth-node: + build: + context: ./op + depends_on: + - optimism-reth + volumes: + - .jwtsecret:/jwtsecret + expose: + - 8545 # RPC + - 26513 # P2P TCP + - 26513/udp # P2P UDP + - 7300 # metrics + - 6060 # pprof + ports: + - "26513:26513" + - "26513:26513/udp" + entrypoint: ./op-node + restart: always + stop_grace_period: 30s + environment: + - "OP_NODE_NETWORK=op-mainnet" + - "OP_NODE_SYNCMODE=execution-layer" + - "OP_NODE_L1_ETH_RPC=${OPTIMISM_L1_ETHEREUM_MAINNET_EXECUTION_RPC}" + - "OP_NODE_L2_ENGINE_AUTH_RAW=${JWTSECRET}" + - "OP_NODE_L2_ENGINE_AUTH=/jwtsecret" + - "OP_NODE_L2_ENGINE_RPC=http://optimism-reth:9551" + - "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=op" + - "OP_NODE_P2P_BOOTNODES=enr:-J24QNz9lbrKbN4iSmmjtnr7SjUMk4zB7f1krHZcTZx-JRKZd0kA2gjufUROD6T3sOWDVDnFJRvqBBo62zuF-hYCohOGAYiOoEyEgmlkgnY0gmlwhAPniryHb3BzdGFja4OFQgCJc2VjcDI1NmsxoQKNVFlCxh_B-716tTs-h1vMzZkSs1FTu_OYTNjgufplG4N0Y3CCJAaDdWRwgiQG,enr:-J24QH-f1wt99sfpHy4c0QJM-NfmsIfmlLAMMcgZCUEgKG_BBYFc6FwYgaMJMQN5dsRBJApIok0jFn-9CS842lGpLmqGAYiOoDRAgmlkgnY0gmlwhLhIgb2Hb3BzdGFja4OFQgCJc2VjcDI1NmsxoQJ9FTIv8B9myn1MWaC_2lJ-sMoeCDkusCsk4BYHjjCq04N0Y3CCJAaDdWRwgiQG,enr:-J24QDXyyxvQYsd0yfsN0cRr1lZ1N11zGTplMNlW4xNEc7LkPXh0NAJ9iSOVdRO95GPYAIc6xmyoCCG6_0JxdL3a0zaGAYiOoAjFgmlkgnY0gmlwhAPckbGHb3BzdGFja4OFQgCJc2VjcDI1NmsxoQJwoS7tzwxqXSyFL7g0JM-KWVbgvjfB8JA__T7yY_cYboN0Y3CCJAaDdWRwgiQG,enr:-J24QHmGyBwUZXIcsGYMaUqGGSl4CFdx9Tozu-vQCn5bHIQbR7On7dZbU61vYvfrJr30t0iahSqhc64J46MnUO2JvQaGAYiOoCKKgmlkgnY0gmlwhAPnCzSHb3BzdGFja4OFQgCJc2VjcDI1NmsxoQINc4fSijfbNIiGhcgvwjsjxVFJHUstK9L1T8OTKUjgloN0Y3CCJAaDdWRwgiQG,enr:-J24QG3ypT4xSu0gjb5PABCmVxZqBjVw9ca7pvsI8jl4KATYAnxBmfkaIuEqy9sKvDHKuNCsy57WwK9wTt2aQgcaDDyGAYiOoGAXgmlkgnY0gmlwhDbGmZaHb3BzdGFja4OFQgCJc2VjcDI1NmsxoQIeAK_--tcLEiu7HvoUlbV52MspE0uCocsx1f_rYvRenIN0Y3CCJAaDdWRwgiQG" + - "OP_NODE_P2P_LISTEN_IP=0.0.0.0" + - "OP_NODE_P2P_LISTEN_TCP_PORT=26513" + - "OP_NODE_P2P_LISTEN_UDP_PORT=26513" + - "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=${OPTIMISM_L1_ETHEREUM_MAINNET_EXECUTION_KIND:-basic}" + - "OP_NODE_L1_TRUST_RPC=${OPTIMISM_L1_ETHEREUM_MAINNET_EXECUTION_TRUST:-false}" + - "OP_NODE_L1_BEACON=${OPTIMISM_L1_ETHEREUM_MAINNET_BEACON_REST}" + - "OP_NODE_L2_SKIP_SYNC_START_CHECK=true" + networks: + - chains + +volumes: + optimism-mainnet-op-reth-archive-trace: diff --git a/polygon-mainnet-erigon3-archive-trace.yml b/polygon-mainnet-erigon3-archive-trace.yml index 685a79ef..f415817a 100644 --- a/polygon-mainnet-erigon3-archive-trace.yml +++ b/polygon-mainnet-erigon3-archive-trace.yml @@ -1,6 +1,6 @@ services: polygon-erigon3: - image: erigontech/erigon:${ERIGON3_VERSION:-v3.0.0-alpha7} + image: erigontech/erigon:${ERIGON3_VERSION:-v3.0.0-rc2} user: root expose: - "9090" diff --git a/reference-rpc-endpoint.json b/reference-rpc-endpoint.json index 4acf727e..26d5aaec 100644 --- a/reference-rpc-endpoint.json +++ b/reference-rpc-endpoint.json @@ -7,7 +7,7 @@ "default": [ "base-fullnode", "base-reth-fullnode" ], - "archive": ["base-reth"] + "archive": ["base-reth", "base-mainnet-op-erigon-archive-trace"] }, "snaxchain": { "id": 2192, @@ -67,7 +67,9 @@ ], "archive": [ "reth-mainnet", - "erigon-mainnet" + "erigon-mainnet", + "ethereum-mainnet-erigon3-archive-trace", + "ethereum-mainnet-erigon-archive-trace" ] }, "playnance": { @@ -158,7 +160,8 @@ "default": [ "arbitrum-fullnode", "arbitrum-fullnode-pebble" - ] + ], + "archive": ["arbitrum-one-nitro-archive"] }, "arbitrum-nova": { "id": 42170, @@ -188,7 +191,8 @@ ], "default": ["op-blast-mainnet-fullnode", "op-blast-mainnet-pbss"], "archive": [ - "op-blast-mainnet" + "op-blast-mainnet", + "blast-mainnet-geth-archive" ] }, "blast-sepolia": { @@ -231,7 +235,8 @@ ], "default": [ "avalanche-fullnode" - ] + ], + "archive": ["avalanche-mainnet-go-archive"] }, "avalanche-fuji": { "id": 43113, @@ -250,7 +255,8 @@ ], "default": [ "celo-fullnode" - ] + ], + "archive": ["celo-mainnet-geth-archive"] }, "celo-alfajores": { "id": 44787, @@ -260,12 +266,12 @@ "boba-eth": { "id": 288, "urls": ["https://mainnet.boba.network"], - "default": ["op-boba"] + "default": ["op-boba","boba-eth-mainnet-erigon-archive-trace"] }, "boba-bnb": { "id": 56288, "urls": ["https://replica.bnb.boba.network"], - "default": ["op-bobabnb"] + "default": ["op-bobabnb","boba-bnb-mainnet-l2geth-archive"] }, "fantom": { "id": 250, @@ -274,7 +280,8 @@ ], "default": [ "fantom" - ] + ], + "archive": ["fantom-mainnet-opera-archive-trace"] }, "fantom-testnet": { "id": 4002, @@ -297,7 +304,7 @@ "optimism": { "id": 10, "urls": [ - "https://1rpc.io/op" + "https://mainnet.optimism.io" ], "default": [ "optimism-fullnode", "optimism-reth-fullnode" @@ -307,7 +314,7 @@ "sepolia": { "id": 11155111, "urls": [ - "https://1rpc.io/sepolia" + "https://sepolia.drpc.org" ], "default": [ "geth-repolia", @@ -315,17 +322,19 @@ ], "erchive": [ "reth-sepolia", - "erigon-sepolia" + "erigon-sepolia", + "ethereum-sepolia-erigon3-archive-trace" ] }, "holesky": { "id": 17000, "urls": [ - "https://rpc.holesky.ethpandaops.io" + "https://holesky.drpc.org" ], "default": [ "geth-holesky" - ] + ], + "archive": ["ethereum-holesky-erigon3-archive-trace"] }, "gnosis": { "id": 100, @@ -336,7 +345,7 @@ "erigon-gnosis-fullnode", "nethermind-gnosis" ], - "archive": ["erigon-gnosis", "reth-gnosis"] + "archive": ["erigon-gnosis", "reth-gnosis", "gnosis-mainnet-erigon3-archive-trace"] }, "gnosis-chiado": { "id": 10200, @@ -379,7 +388,7 @@ "default": [ "polygon-erigon-fullnode" ], - "archive": ["polygon-erigon"] + "archive": ["polygon-erigon", "polygon-mainnet-erigon3-archive-trace"] }, "linea": { "id": 59144, @@ -392,7 +401,8 @@ "archive": [ "geth-linea", "erigon-linea", - "reth-linea" + "reth-linea", + "linea-mainnet-erigon-archive-trace" ] }, "linea-sepolia": { @@ -426,13 +436,14 @@ "bsc": { "id": 56, "urls": [ - "https://bscrpc.com" + "https://bsc.drpc.org" ], "default": [ "bsc", "bsc-erigon-fullnode", - "reth-bsc-fullnode" - ] + "reth-bsc-fullnode" + ], + "archive": ["bsc-mainnet-erigon3-archive-trace"] }, "bsc-testnet": { "id": 97, @@ -477,7 +488,8 @@ "zksync": { "id": 324, "urls": ["https://1rpc.io/zksync2-era"], - "default": ["zksync-mainnet-fullnode"] + "default": ["zksync-mainnet-fullnode"], + "archive": ["zksync-era-mainnet-external-node-archive"] }, "rootstock": { "id": 30, @@ -488,7 +500,12 @@ "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": [ @@ -502,7 +519,7 @@ "id": 534352, "urls": ["https://rpc.scroll.io"], "default": ["scroll-mainnet"], - "archive": ["scroll-mainnet"] + "archive": ["scroll-mainnet", "scroll-mainnet-l2geth-archive"] }, "scroll-sepolia": { "id": 534351, diff --git a/rpc.yml b/rpc.yml index 11c62acd..fc20a61d 100644 --- a/rpc.yml +++ b/rpc.yml @@ -1,5 +1,3 @@ -version: '3.1' - services: traefik: image: traefik:v2.11.0 @@ -15,14 +13,14 @@ services: - "--api=true" - "--api.insecure=true" - "--api.dashboard=true" - - "--log.level=DEBUG" + - "--log.level=info" - "--providers.docker=true" - "--providers.docker.exposedbydefault=false" - "--providers.file.filename=/dynamic_config.yml" - - "--entrypoints.web.address=:80" - "--entrypoints.websecure.address=:443" - "--entryPoints.metrics.address=:8082" - "--entryPoints.grpc.address=:3042" + - "--entrypoints.web.address=:80" - "--metrics.prometheus.entryPoint=metrics" - "${NO_SSL:---entrypoints.web.http.redirections.entryPoint.to=websecure}" - "${NO_SSL:---entrypoints.web.http.redirections.entryPoint.scheme=https}" diff --git a/scroll-mainnet-archive.yml b/scroll-mainnet-l2geth-archive.yml similarity index 52% rename from scroll-mainnet-archive.yml rename to scroll-mainnet-l2geth-archive.yml index ac5cfa4f..b87c015a 100644 --- a/scroll-mainnet-archive.yml +++ b/scroll-mainnet-l2geth-archive.yml @@ -1,8 +1,6 @@ -version: '3.1' - services: scroll: - image: scrolltech/l2geth:${SCROLL_GETH_VERSION:-scroll-v5.8.15} + image: scrolltech/l2geth:${SCROLL_GETH_VERSION:-scroll-v5.7.25} expose: - 8545 ports: @@ -23,7 +21,7 @@ services: --http.port=8545 --http.addr=0.0.0.0 --http.vhosts=* - --l1.endpoint=${SCROLL_L1_ETHEREUM_MAINNET_EXECUTION_RPC} + --l1.endpoint="${SCROLL_L1_ETHEREUM_MAINNET_EXECUTION_RPC}" --rollup.verify --graphql --graphql.vhosts=* @@ -31,24 +29,23 @@ services: --metrics.addr=0.0.0.0 --maxpeers=100 --gpo.ignoreprice=1 - #--cache.noprefetch - #--l1.confirmations finalized + --cache.noprefetch networks: - chains volumes: - - "${SCROLL_MAINNET_ARCHIVE_DATA:-scroll-mainnet-archive}:/root/.ethereum" + - "${SCROLL_MAINNET_L2GETH_ARCHIVE_DATA:-scroll-mainnet-l2geth-archive}:/root/.ethereum" - ".jwtsecret:/jwtsecret" restart: unless-stopped stop_grace_period: 5m labels: - "traefik.enable=true" - - "traefik.http.middlewares.scroll-mainnet-archive-stripprefix.stripprefix.prefixes=/scroll" - - "traefik.http.services.scroll-mainnet-archive.loadbalancer.server.port=8545" - - "${NO_SSL:-traefik.http.routers.scroll-mainnet-archive.entrypoints=websecure}" - - "${NO_SSL:-traefik.http.routers.scroll-mainnet-archive.tls.certresolver=myresolver}" - - "${NO_SSL:-traefik.http.routers.scroll-mainnet-archive.rule=Host(`$DOMAIN`) && PathPrefix(`/scroll`)}" - - "${NO_SSL:+traefik.http.routers.scroll-mainnet-archive.rule=PathPrefix(`/scroll`)}" - - "traefik.http.routers.scroll-mainnet-archive.middlewares=scroll-mainnet-archive-stripprefix, ipwhitelist" + - "traefik.http.middlewares.scroll-mainnet-l2geth-archive-stripprefix.stripprefix.prefixes=/scroll" + - "traefik.http.services.scroll-mainnet-l2geth-archive.loadbalancer.server.port=8545" + - "${NO_SSL:-traefik.http.routers.scroll-mainnet-l2geth-archive.entrypoints=websecure}" + - "${NO_SSL:-traefik.http.routers.scroll-mainnet-l2geth-archive.tls.certresolver=myresolver}" + - "${NO_SSL:-traefik.http.routers.scroll-mainnet-l2geth-archive.rule=Host(`$DOMAIN`) && PathPrefix(`/scroll`)}" + - "${NO_SSL:+traefik.http.routers.scroll-mainnet-l2geth-archive.rule=PathPrefix(`/scroll`)}" + - "traefik.http.routers.scroll-mainnet-l2geth-archive.middlewares=scroll-mainnet-l2geth-archive-stripprefix, ipwhitelist" volumes: - scroll-mainnet-archive: + scroll-mainnet-l2geth-archive: diff --git a/sync-status.sh b/sync-status.sh index 7d8e19f5..5c941966 100755 --- a/sync-status.sh +++ b/sync-status.sh @@ -9,6 +9,13 @@ while IFS= read -r line; do blacklist+=("$line") done < "$BASEPATH/path-blacklist.txt" +if $NO_SSL; then + PROTO="http" + DOMAIN="${DOMAIN:-0.0.0.0}" +else + PROTO="https" +fi + pathlist=$(cat $BASEPATH/$1.yml | grep -oP "(?<=PathPrefix).*\"" | cut -d'`' -f2-2) for path in $pathlist; do @@ -20,8 +27,8 @@ for path in $pathlist; do done if $include; then - RPC_URL="https://$DOMAIN$path" - + RPC_URL="$PROTO://$DOMAIN$path" + ref='' if [ -n "$2" ]; then ref="$2" diff --git a/timestamp.sh b/timestamp.sh index 6f3dd423..3ed8a699 100755 --- a/timestamp.sh +++ b/timestamp.sh @@ -9,6 +9,13 @@ while IFS= read -r line; do blacklist+=("$line") done < "$BASEPATH/path-blacklist.txt" +if $NO_SSL; then + PROTO="http" + DOMAIN="${DOMAIN:-0.0.0.0}" +else + PROTO="https" +fi + pathlist=$(cat $BASEPATH/$1.yml | grep -oP "(?<=stripprefix\.prefixes).*\"" | cut -d'=' -f2- | sed 's/.$//') for path in $pathlist; do @@ -20,7 +27,7 @@ for path in $pathlist; do done if $include; then - RPC_URL="https://$DOMAIN$path" + RPC_URL="$PROTO://$DOMAIN$path" response_file=$(mktemp) http_status_code=$(curl --ipv4 -m 1 -s -X POST -w "%{http_code}" -o "$response_file" -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_getBlockByNumber","params":["latest", false],"id":1}' $RPC_URL) diff --git a/zksync-era-mainnet-external-node-archive.yml b/zksync-era-mainnet-external-node-archive.yml index b04ed391..9377fe58 100644 --- a/zksync-era-mainnet-external-node-archive.yml +++ b/zksync-era-mainnet-external-node-archive.yml @@ -34,10 +34,9 @@ services: - chains zksync-era-external-node-archive-client: - image: "matterlabs/external-node:v24.23.0" + image: "matterlabs/external-node:v26.2.1" depends_on: - zksync-era-archive-db: - condition: service_healthy + - zksync-era-external-node-archive-db ports: - "127.0.0.1:3060:3060" - "127.0.0.1:3061:3061" @@ -47,7 +46,7 @@ services: expose: - 3322 environment: - DATABASE_URL: "postgres://postgres:notsecurepassword@zksync-archive-db:5430/zksync_local_ext_node" + DATABASE_URL: "postgres://postgres:notsecurepassword@zksync-era-external-node-archive-db:5430/zksync_local_ext_node" DATABASE_POOL_SIZE: 10 EN_HTTP_PORT: 3060 @@ -73,7 +72,7 @@ services: restart: unless-stopped image: nginx depends_on: - - zksync-eraexternal-node-archive-client + - zksync-era-external-node-archive-client expose: - 80 environment: