diff --git a/ethereum-firehose/Dockerfile b/ethereum-firehose/Dockerfile deleted file mode 100644 index 20fe1452..00000000 --- a/ethereum-firehose/Dockerfile +++ /dev/null @@ -1,18 +0,0 @@ -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 deleted file mode 100644 index 39d42dbe..00000000 --- a/ethereum-firehose/config.yml +++ /dev/null @@ -1,38 +0,0 @@ -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=8454 - --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-mainnet-erigon-archive-trace.yml b/ethereum-mainnet-erigon-archive-trace.yml deleted file mode 100644 index 46b380da..00000000 --- a/ethereum-mainnet-erigon-archive-trace.yml +++ /dev/null @@ -1,61 +0,0 @@ -services: - ethereum-erigon: - image: erigontech/erigon:${ERIGON_VERSION:-v2.61.3} - user: root - expose: - - "16630" - - "9090" - - "8545" - - "8551" - ports: - - "18518:18518" - - "18518:18518/udp" - - "20202:20202" - - "20202:20202/udp" - - "52290:52290" - - "52290:52290/udp" - environment: - - "IP=${IP}" - volumes: - - ${ETHEREUM_MAINNET_ERIGON_ARCHIVE_TRACE_DATA:-ethereum-mainnet-erigon-archive-trace}:/root/.local/share/erigon - - /slowdisk:/slowdisk - - .jwtsecret:/jwtsecret - networks: - - chains - command: > - --rpc.evmtimeout=30m0s - --rpc.overlay.getlogstimeout=30m0s - --rpc.overlay.replayblocktimeout=30m0s - --chain mainnet - --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=20202 - --nat=extip:${IP} - --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=1100000 - --rpc.gascap=5000000000 - --ws.port=8545 - --ws - restart: unless-stopped - stop_grace_period: 1m - 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}" - - "${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" - -volumes: - ethereum-mainnet-erigon-archive-trace: - diff --git a/ethereum-mainnet-firehose.yml b/ethereum-mainnet-firehose.yml deleted file mode 100644 index 8c1e8a8a..00000000 --- a/ethereum-mainnet-firehose.yml +++ /dev/null @@ -1,102 +0,0 @@ -services: - ethereum-firehose: - build: - context: ./ethereum-firehose/ - args: - FIREHOSE_ETHEREUM: v2.11.2 - FIREHOSE_GETH_VERSION: v1.15.5-fh3.0 - command: -c /etc/firehose/config.yml start -# environment: -# - DOMAIN=${DOMAIN:-yourdomain.com} -# - ETHEREUM_ARCHIVE_RPC=${ETHEREUM_FIREHOSE_ETHEREUM_MAINNET_ARCHIVE_EXECUTION_RPC:-http://eth.drpc.org} -# - S3_BLOCKS_STORE_URL=${ETHEREUM_FIREHOSE_ETHEREUM_MAINNET_S3_BLOCKS_STORE:-/var/lib/eth-blocks} - expose: - - 8545 # firegeth - - 8551 - - 9663 - - 10015 # fireeth - - 10016 # substreams - ports: - - "10015:10015" - - "10016:10016" - - "24465:24465/tcp" - - "24465:24465/udp" - labels: - - "traefik.enable=true" - - - "traefik.http.services.ethereum-mainnet-firehose-fireeth.loadbalancer.server.scheme=h2c" - - "traefik.http.routers.ethereum-mainnet-firehose-fireeth.service=ethereum-mainnet-firehose-fireeth" - - "traefik.http.services.ethereum-mainnet-firehose-fireeth.loadbalancer.server.port=10015" - - "traefik.http.routers.ethereum-mainnet-firehose-fireeth.entrypoints=grpc" - - "${NO_SSL:-traefik.http.routers.ethereum-mainnet-firehose-fireeth.tls.certresolver=myresolver}" - - "traefik.http.routers.ethereum-mainnet-firehose-fireeth.rule=Host(`ethereum-mainnet-firehose-fireeth.${DOMAIN}`)" - - "traefik.http.routers.ethereum-mainnet-firehose-fireeth.middlewares=ipwhitelist" - - - "traefik.http.services.ethereum-mainnet-firehose-substreams.loadbalancer.server.scheme=h2c" - - "traefik.http.routers.ethereum-mainnet-firehose-substreams.service=ethereum-mainnet-firehose-substreams" - - "traefik.http.services.ethereum-mainnet-firehose-substreams.loadbalancer.server.port=10016" - - "traefik.http.routers.ethereum-mainnet-firehose-substreams.entrypoints=grpc" - - "${NO_SSL:-traefik.http.routers.ethereum-mainnet-firehose-substreams.tls.certresolver=myresolver}" - - "traefik.http.routers.ethereum-mainnet-firehose-substreams.rule=Host(`ethereum-mainnet-firehose-substreams.${DOMAIN}`)" - - "traefik.http.routers.ethereum-mainnet-firehose-substreams.middlewares=ipwhitelist" - - - "traefik.http.middlewares.ethereum-mainnet-firehose-firegeth-stripprefix.stripprefix.prefixes=/ethereum-firehose-firegeth" - - "traefik.http.routers.ethereum-mainnet-firehose-firegeth.service=ethereum-mainnet-firehose-firegeth" - - "traefik.http.services.ethereum-mainnet-firehose-firegeth.loadbalancer.server.port=8545" - - "${NO_SSL:-traefik.http.routers.ethereum-mainnet-firehose-firegeth.entrypoints=websecure}" - - "${NO_SSL:-traefik.http.routers.ethereum-mainnet-firehose-firegeth.tls.certresolver=myresolver}" - - "${NO_SSL:-traefik.http.routers.ethereum-mainnet-firehose-firegeth.rule=Host(`$DOMAIN`) && PathPrefix(`/ethereum-firehose-firegeth`)}" - - "${NO_SSL:+traefik.http.routers.ethereum-mainnet-firehose-firegeth.rule=PathPrefix(`/ethereum-firehose-firegeth`)}" - - "traefik.http.routers.ethereum-mainnet-firehose-firegeth.middlewares=ethereum-mainnet-firehose-firegeth-stripprefix, ipwhitelist" - - networks: - - chains - volumes: - - ./ethereum-firehose/config.yml:/etc/firehose/config.yml:ro - - ${ETHEREUM_MAINNET_FIREHOSE__FIREGETH_DATA:-ethereum-mainnet-firehose-firegeth}:/var/lib/firehose # Firehose data-dir - - ${ETHEREUM_MAINNET_FIREHOSE__BLOCKS_DATA:-ethereum-mainnet-firehose-blocks}:/var/lib/eth-blocks # Merged blocks store - - .jwtsecret:/jwtsecret:ro # JWT for authrpc - restart: unless-stopped - stop_grace_period: 5m - - ethereum-firehose-beacon: - image: statusim/nimbus-eth2:multiarch-v25.3.0 - restart: unless-stopped - user: root - command: - - --network=mainnet - - --data-dir=/data - - --tcp-port=6608 - - --udp-port=6608 - - --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: - - "6608:6608/tcp" - - "6608:6608/udp" - networks: - - chains - volumes: - - ${ETHEREUM_MAINNET_FIREHOSE__NIMBUS_DATA:-ethereum-mainnet-firehose-nimbus}:/data # Beacon node data-dir - - .jwtsecret:/data/jwt.hex:ro # JWT (same as firehose) - labels: - - "traefik.http.middlewares.ethereum-mainnet-firehose-beacon-stripprefix.stripprefix.prefixes=/ethereum-firehose-beacon" - - "traefik.http.services.ethereum-mainnet-firehose-beacon.loadbalancer.server.port=5052" - - "${NO_SSL:-traefik.http.routers.ethereum-mainnet-firehose-beacon.entrypoints=websecure}" - - "${NO_SSL:-traefik.http.routers.ethereum-mainnet-firehose-beacon.tls.certresolver=myresolver}" - - "${NO_SSL:-traefik.http.routers.ethereum-mainnet-firehose-beacon.rule=Host(`$DOMAIN`) && PathPrefix(`/ethereum-firehose-beacon`)}" - - "${NO_SSL:+traefik.http.routers.ethereum-mainnet-firehose-beacon.rule=PathPrefix(`/ethereum-firehose-beacon`)}" - - "traefik.http.routers.ethereum-mainnet-firehose-beacon.middlewares=ethereum-mainnet-firehose-beacon-stripprefix, ipwhitelist" - -volumes: - ethereum-mainnet-firehose-firegeth: - ethereum-mainnet-firehose-blocks: - ethereum-mainnet-firehose-nimbus: diff --git a/ethereum/fireeth/ethereum-mainnet-fireeth-pruned-leveldb-hash--nimbus.yml b/ethereum/fireeth/ethereum-mainnet-fireeth-pruned-leveldb-hash--nimbus.yml deleted file mode 100644 index 5f25c2b1..00000000 --- a/ethereum/fireeth/ethereum-mainnet-fireeth-pruned-leveldb-hash--nimbus.yml +++ /dev/null @@ -1,202 +0,0 @@ ---- - -# Usage: -# -# mkdir rpc && cd rpc -# -# git init -# git remote add origin https://github.com/StakeSquid/ethereum-rpc-docker.git -# git fetch origin vibe -# git checkout origin/vibe -# -# docker run --rm alpine sh -c "printf '0x'; head -c32 /dev/urandom | xxd -p -c 64" > .jwtsecret -# -# env -# ... -# IP=$(curl ipinfo.io/ip) -# DOMAIN=${IP}.traefik.me -# COMPOSE_FILE=base.yml:rpc.yml:ethereum/fireeth/ethereum-mainnet-fireeth-pruned-leveldb-hash--nimbus.yml -# -# docker compose up -d -# -# curl -X POST https://${IP}.traefik.me/ethereum-mainnet \ -# -H "Content-Type: application/json" \ -# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' -x-logging-defaults: &logging-defaults - driver: json-file - options: - max-size: 10m - max-file: '3' - -services: - ethereum-mainnet: - image: ${ETHEREUM_FIREETH_IMAGE:-ghcr.io/streamingfast/firehose-ethereum}:${ETHEREUM_MAINNET_FIREETH_VERSION:-v2.11.9-geth-v1.15.10-fh3.0-2} - sysctls: - # TCP Performance - net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle - net.ipv4.tcp_no_metrics_save: 1 # Disable metrics cache - net.ipv4.tcp_rmem: 4096 87380 16777216 # Increase TCP read buffers - net.ipv4.tcp_wmem: 4096 87380 16777216 # Increase TCP write buffers - net.core.somaxconn: 32768 # Higher connection queue - # Memory/Connection Management - # net.core.netdev_max_backlog: 50000 # Increase network buffer - net.ipv4.tcp_max_syn_backlog: 30000 # More SYN requests - net.ipv4.tcp_max_tw_buckets: 2000000 # Allow more TIME_WAIT sockets - ulimits: - nofile: 1048576 # Max open files (for RPC/WS connections) - user: root - ports: - - 13790:13790 - - 13790:13790/udp - expose: - - 8545 - - 8551 - environment: - - ${ETHEREUM_MAINNET_FIREETH_PRUNED_LEVELDB_HASH_S3_BLOCKS_STORE:-/firehose-data/storage/merged-blocks} - entrypoint: [sh, -c, 'exec fireeth -c /config/firehose.yml start --substreams-rpc-endpoints "${ ETHEREUM_MAINNET_EXECUTION_RPC}" --reader-node-arguments "$*"', _] - command: - - --datadir=/firehose-data/reader/data - - --db.engine=leveldb - - --firehose-enabled - - --gcmode=full - - --maxpeers=50 - - --nat=extip:${IP} - - --port=13790 - - --rpc.gascap=600000000 - - --rpc.txfeecap=0 - - --state.scheme=hash - - --syncmode=snap - - --http - - --http.addr=0.0.0.0 - - --http.api=eth,net,web3,debug,admin,txpool,engine - - --http.port=8545 - - --http.vhosts=* - - --ws - - --ws.addr=0.0.0.0 - - --ws.api=eth,net,web3,debug,admin,txpool,engine - - --ws.origins=* - - --ws.port=8545 - - --authrpc.addr=0.0.0.0 - - --authrpc.jwtsecret=/jwtsecret - - --authrpc.vhosts=* - restart: unless-stopped - stop_grace_period: 5m - networks: - - chains - volumes: - - ${ETHEREUM_MAINNET_FIREETH_PRUNED_LEVELDB_HASH_DATA:-ethereum-mainnet-fireeth-pruned-leveldb-hash}:/firehose-data - - ${ETHEREUM_MAINNET_FIREETH_PRUNED_LEVELDB_HASH_MERGED_BLOCKS_DATA:-ethereum-mainnet-fireeth-pruned-leveldb-hash-blocks}:/firehose-data/storage/merged-blocks - - .jwtsecret:/jwtsecret:ro - - /slowdisk:/slowdisk - logging: *logging-defaults - labels: - - traefik.enable=true - - traefik.http.middlewares.ethereum-mainnet-fireeth-pruned-leveldb-hash-stripprefix.stripprefix.prefixes=/ethereum-mainnet - - traefik.http.services.ethereum-mainnet-fireeth-pruned-leveldb-hash.loadbalancer.server.port=8545 - - ${NO_SSL:-traefik.http.routers.ethereum-mainnet-fireeth-pruned-leveldb-hash.entrypoints=websecure} - - ${NO_SSL:-traefik.http.routers.ethereum-mainnet-fireeth-pruned-leveldb-hash.tls.certresolver=myresolver} - - ${NO_SSL:-traefik.http.routers.ethereum-mainnet-fireeth-pruned-leveldb-hash.rule=Host(`$DOMAIN`) && (Path(`/ethereum-mainnet`) || Path(`/ethereum-mainnet/`))} - - ${NO_SSL:+traefik.http.routers.ethereum-mainnet-fireeth-pruned-leveldb-hash.rule=Path(`/ethereum-mainnet`) || Path(`/ethereum-mainnet/`)} - - traefik.http.routers.ethereum-mainnet-fireeth-pruned-leveldb-hash.middlewares=ethereum-mainnet-fireeth-pruned-leveldb-hash-stripprefix, ipallowlist - - traefik.http.services.ethereum-mainnet-fireeth-pruned-leveldb-hash-firehose.loadbalancer.server.scheme=h2c - - traefik.http.routers.ethereum-mainnet-fireeth-pruned-leveldb-hash-firehose.service=ethereum-mainnet-fireeth-pruned-leveldb-hash-firehose - - traefik.http.services.ethereum-mainnet-fireeth-pruned-leveldb-hash-firehose.loadbalancer.server.port=10015 - - traefik.http.routers.ethereum-mainnet-fireeth-pruned-leveldb-hash-firehose.entrypoints=grpc - - ${NO_SSL:-traefik.http.routers.ethereum-mainnet-fireeth-pruned-leveldb-hash-firehose.tls.certresolver=myresolver} - - traefik.http.routers.ethereum-mainnet-fireeth-pruned-leveldb-hash-firehose.rule=Host(`ethereum-mainnet.${DOMAIN}`) - - traefik.http.routers.ethereum-mainnet-fireeth-pruned-leveldb-hash-firehose.middlewares=ipallowlist - - traefik.http.services.ethereum-mainnet-fireeth-pruned-leveldb-hash-substreams.loadbalancer.server.scheme=h2c - - traefik.http.routers.ethereum-mainnet-fireeth-pruned-leveldb-hash-substreams.service=ethereum-mainnet-fireeth-pruned-leveldb-hash-substreams - - traefik.http.services.ethereum-mainnet-fireeth-pruned-leveldb-hash-substreams.loadbalancer.server.port=10016 - - traefik.http.routers.ethereum-mainnet-fireeth-pruned-leveldb-hash-substreams.entrypoints=grpc - - ${NO_SSL:-traefik.http.routers.ethereum-mainnet-fireeth-pruned-leveldb-hash-substreams.tls.certresolver=myresolver} - - traefik.http.routers.ethereum-mainnet-fireeth-pruned-leveldb-hash-substreams.rule=Host(`ethereum-mainnet-substreams.${DOMAIN}`) - - traefik.http.routers.ethereum-mainnet-fireeth-pruned-leveldb-hash-substreams.middlewares=ipallowlist - - ethereum-mainnet-node: - image: ${ETHEREUM_NIMBUS_IMAGE:-statusim/nimbus-eth2}:${ETHEREUM_MAINNET_NIMBUS_VERSION:-amd64-v25.4.1} - user: root - ports: - - 18790:18790 - - 18790:18790/udp - entrypoint: /bin/sh -c '/home/user/nimbus-eth2/build/nimbus_beacon_node trustedNodeSync --network=mainnet --trusted-node-url=https://mainnet.beaconstate.info --backfill=false; exec /home/user/nimbus-eth2/build/nimbus_beacon_node "$@"' -- - command: - - --history=prune - - --jwt-secret=/jwtsecret - - --nat=extip:${IP} - - --network=mainnet - - --rest - - --rest-address=0.0.0.0 - - --rest-port=3500 - - --tcp-port=18790 - - --udp-port=18790 - - --web3-url=http://ethereum-mainnet:8551 - restart: unless-stopped - depends_on: - - ethereum-mainnet - networks: - - chains - volumes: - - ${ETHEREUM_MAINNET_FIREETH_PRUNED_LEVELDB_HASH__NIMBUS_DATA:-ethereum-mainnet-fireeth-pruned-leveldb-hash_nimbus}:/root/.cache/nimbus/BeaconNode - - .jwtsecret:/jwtsecret:ro - logging: *logging-defaults - labels: - - traefik.enable=true - - traefik.http.middlewares.ethereum-mainnet-fireeth-pruned-leveldb-hash-node-stripprefix.stripprefix.prefixes=/ethereum-mainnet - - traefik.http.services.ethereum-mainnet-fireeth-pruned-leveldb-hash-node.loadbalancer.server.port=3500 - - ${NO_SSL:-traefik.http.routers.ethereum-mainnet-fireeth-pruned-leveldb-hash-node.entrypoints=websecure} - - ${NO_SSL:-traefik.http.routers.ethereum-mainnet-fireeth-pruned-leveldb-hash-node.tls.certresolver=myresolver} - - ${NO_SSL:-traefik.http.routers.ethereum-mainnet-fireeth-pruned-leveldb-hash-node.rule=Host(`$DOMAIN`) && PathPrefix(`/ethereum-mainnet/eth`)} - - ${NO_SSL:+traefik.http.routers.ethereum-mainnet-fireeth-pruned-leveldb-hash-node.rule=PathPrefix(`/ethereum-mainnet/eth`)} - - traefik.http.routers.ethereum-mainnet-fireeth-pruned-leveldb-hash-node.middlewares=ethereum-mainnet-fireeth-pruned-leveldb-hash-node-stripprefix, ipallowlist - -volumes: - ethereum-mainnet-fireeth-pruned-leveldb-hash: - ethereum-mainnet-fireeth-pruned-leveldb-hash_nimbus: - -x-upstreams: - - id: $${ID} - labels: - provider: $${PROVIDER} - connection: - generic: - rpc: - url: $${RPC_URL} - ws: - frameSize: 20Mb - msgSize: 50Mb - url: $${WS_URL} - chain: ethereum - method-groups: - enabled: - - debug - - filter - methods: - disabled: - enabled: - - name: txpool_content # TODO: should be disabled for rollup nodes - # standard geth only - - name: debug_getRawBlock - - name: debug_getRawTransaction - - name: debug_getRawReceipts - - name: debug_getRawHeader - - name: debug_getBadBlocks - # non standard geth only slightly dangerous - - name: debug_intermediateRoots - - name: debug_dumpBlock - # standard geth and erigon - - name: debug_accountRange - - name: debug_getModifiedAccountsByNumber - - name: debug_getModifiedAccountsByHash - # non standard geth and erigon - - name: eth_getRawTransactionByHash - - name: eth_getRawTransactionByBlockHashAndIndex - - id: $${ID}-beacon-chain - chain: eth-beacon-chain - labels: - provider: $${PROVIDER}-beacon-chain - connection: - generic: - rpc: - url: $${RPC_URL} -... \ No newline at end of file