non-EVM chain labels via full registry import + reference endpoint ladder

- aztec-testnet, solana, ripple x-upstreams now carry their drpc slug as
  chain label (was empty -> dshackle ignored the upstreams)
- reference-rpc-endpoint.json: every chain now has a protocol field
  (eth/bitcoin/solana/ripple/aztec/...) for protocol-family dispatch in
  scripts, plus https://{slug}.drpc.org appended as LAST fallback url
  (independent endpoints stay preferred; overrides win entirely)
- registry grew 247 -> 333 entries (all drpc protocols imported, not just eth)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-06-12 06:12:24 +00:00
parent f5f475cdb1
commit 714e8ba07a
9 changed files with 2467 additions and 1467 deletions

View File

@@ -100,7 +100,7 @@ x-upstreams:
frameSize: 20Mb frameSize: 20Mb
msgSize: 50Mb msgSize: 50Mb
url: $${WS_URL} url: $${WS_URL}
chain: chain: aztec-testnet
method-groups: method-groups:
enabled: enabled:
- debug - debug

View File

@@ -1,9 +1,37 @@
--- ---
x-logging-defaults: &logging-defaults
driver: json-file
options:
max-size: "10m"
max-file: "3"
# Find archive snapshots on publicnode.com # Find archive snapshots on publicnode.com
# 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:metis-andromeda/l2geth/metis-andromeda-sepolia-l2geth-archive-leveldb-hash.yml
#
# docker compose up -d
#
# curl -X POST https://${IP}.traefik.me/metis-andromeda-sepolia-archive \
# -H "Content-Type: application/json" \
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
services: services:
metis-andromeda-sepolia-archive-client: metis-andromeda-sepolia-archive:
image: ${METIS_ANDROMEDA_L2GETH_IMAGE:-metisdao/l2geth}:${METIS_ANDROMEDA_SEPOLIA_L2GETH_VERSION:-v0.3.5} image: ${METIS_ANDROMEDA_L2GETH_IMAGE:-metisdao/l2geth}:${METIS_ANDROMEDA_SEPOLIA_L2GETH_VERSION:-v0.3.9}
sysctls: sysctls:
# TCP Performance # TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -75,37 +103,35 @@ services:
volumes: volumes:
- ${METIS_ANDROMEDA_SEPOLIA_L2GETH_ARCHIVE_LEVELDB_HASH_DATA:-metis-andromeda-sepolia-l2geth-archive-leveldb-hash}:/root/.ethereum - ${METIS_ANDROMEDA_SEPOLIA_L2GETH_ARCHIVE_LEVELDB_HASH_DATA:-metis-andromeda-sepolia-l2geth-archive-leveldb-hash}:/root/.ethereum
- /slowdisk:/slowdisk - /slowdisk:/slowdisk
logging: *logging-defaults
metis-andromeda-sepolia-archive:
image: nginx
environment:
PROXY_HOST: metis-andromeda-sepolia-archive-client
RPC_PATH: ''
RPC_PORT: 8545
WS_PATH: ''
WS_PORT: 8546
restart: unless-stopped
depends_on:
- metis-andromeda-sepolia-archive-client
networks:
- chains
volumes:
- ./nginx-proxy:/etc/nginx/templates
labels: labels:
- prometheus-scrape.enabled=false
- traefik.enable=true - traefik.enable=true
- traefik.http.middlewares.metis-andromeda-sepolia-l2geth-archive-leveldb-hash-stripprefix.stripprefix.prefixes=/metis-andromeda-sepolia-archive - traefik.http.middlewares.metis-andromeda-sepolia-l2geth-archive-leveldb-hash-stripprefix.stripprefix.prefixes=/metis-andromeda-sepolia-archive
- traefik.http.services.metis-andromeda-sepolia-l2geth-archive-leveldb-hash.loadbalancer.server.port=80 - traefik.http.services.metis-andromeda-sepolia-l2geth-archive-leveldb-hash.loadbalancer.server.port=8545
- ${NO_SSL:-traefik.http.routers.metis-andromeda-sepolia-l2geth-archive-leveldb-hash.entrypoints=websecure} - ${NO_SSL:-traefik.http.routers.metis-andromeda-sepolia-l2geth-archive-leveldb-hash.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.metis-andromeda-sepolia-l2geth-archive-leveldb-hash.tls.certresolver=myresolver} - ${NO_SSL:-traefik.http.routers.metis-andromeda-sepolia-l2geth-archive-leveldb-hash.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.metis-andromeda-sepolia-l2geth-archive-leveldb-hash.rule=Host(`$DOMAIN`) && (Path(`/metis-andromeda-sepolia-archive`) || Path(`/metis-andromeda-sepolia-archive/`))} - ${NO_SSL:-traefik.http.routers.metis-andromeda-sepolia-l2geth-archive-leveldb-hash.rule=Host(`$DOMAIN`) && (Path(`/metis-andromeda-sepolia-archive`) || Path(`/metis-andromeda-sepolia-archive/`))}
- ${NO_SSL:+traefik.http.routers.metis-andromeda-sepolia-l2geth-archive-leveldb-hash.rule=Path(`/metis-andromeda-sepolia-archive`) || Path(`/metis-andromeda-sepolia-archive/`)} - ${NO_SSL:+traefik.http.routers.metis-andromeda-sepolia-l2geth-archive-leveldb-hash.rule=Path(`/metis-andromeda-sepolia-archive`) || Path(`/metis-andromeda-sepolia-archive/`)}
- traefik.http.routers.metis-andromeda-sepolia-l2geth-archive-leveldb-hash.middlewares=metis-andromeda-sepolia-l2geth-archive-leveldb-hash-stripprefix, ipallowlist - traefik.http.routers.metis-andromeda-sepolia-l2geth-archive-leveldb-hash.middlewares=metis-andromeda-sepolia-l2geth-archive-leveldb-hash-stripprefix, ipallowlist
- traefik.http.routers.metis-andromeda-sepolia-l2geth-archive-leveldb-hash.priority=50 # gets any request that is not GET with UPGRADE header
- traefik.http.routers.metis-andromeda-sepolia-l2geth-archive-leveldb-hash-ws.priority=100 # answers GET requests first
- traefik.http.services.metis-andromeda-sepolia-l2geth-archive-leveldb-hash-ws.loadbalancer.server.port=8546
- traefik.http.routers.metis-andromeda-sepolia-l2geth-archive-leveldb-hash-ws.service=metis-andromeda-sepolia-l2geth-archive-leveldb-hash-ws
- traefik.http.routers.metis-andromeda-sepolia-l2geth-archive-leveldb-hash.service=metis-andromeda-sepolia-l2geth-archive-leveldb-hash
- ${NO_SSL:-traefik.http.routers.metis-andromeda-sepolia-l2geth-archive-leveldb-hash-ws.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.metis-andromeda-sepolia-l2geth-archive-leveldb-hash-ws.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.metis-andromeda-sepolia-l2geth-archive-leveldb-hash-ws.rule=Host(`$DOMAIN`) && (Path(`/metis-andromeda-sepolia-archive`) || Path(`/metis-andromeda-sepolia-archive/`)) && Headers(`Upgrade`, `websocket`)}
- ${NO_SSL:+traefik.http.routers.metis-andromeda-sepolia-l2geth-archive-leveldb-hash-ws.rule=(Path(`/metis-andromeda-sepolia-archive`) || Path(`/metis-andromeda-sepolia-archive/`)) && Headers(`Upgrade`, `websocket`)}
- traefik.http.routers.metis-andromeda-sepolia-l2geth-archive-leveldb-hash-ws.middlewares=metis-andromeda-sepolia-l2geth-archive-leveldb-hash-stripprefix, ipallowlist
metis-andromeda-sepolia-archive-node: metis-andromeda-sepolia-archive-node:
image: ${METIS_ANDROMEDA_DTL_IMAGE:-metisdao/dtl}:${METIS_ANDROMEDA_SEPOLIA_DTL_VERSION:-v0.1.3} image: ${METIS_ANDROMEDA_DTL_IMAGE:-metisdao/dtl}:${METIS_ANDROMEDA_SEPOLIA_DTL_VERSION:-v0.2.6}
ports: ports:
- 19563:19563 - 19563:19563
- 19563:19563/udp - 19563:19563/udp
expose:
- 7878
environment: environment:
- DATA_TRANSPORT_LAYER__BATCH_INBOX_ADDRESS=0xff00000000000000000000000001115511159902 - DATA_TRANSPORT_LAYER__BATCH_INBOX_ADDRESS=0xff00000000000000000000000001115511159902
- DATA_TRANSPORT_LAYER__BATCH_INBOX_L1_HEIGHT=5536000 - DATA_TRANSPORT_LAYER__BATCH_INBOX_L1_HEIGHT=5536000
@@ -138,12 +164,15 @@ services:
- URL=https://metisprotocol.github.io/metis-networks/sepolia-testnet/addresses.json - URL=https://metisprotocol.github.io/metis-networks/sepolia-testnet/addresses.json
restart: unless-stopped restart: unless-stopped
depends_on: depends_on:
- metis-andromeda-sepolia-archive-client - metis-andromeda-sepolia-archive
networks: networks:
- chains - chains
volumes: volumes:
- ${METIS_ANDROMEDA_SEPOLIA_L2GETH_ARCHIVE_LEVELDB_HASH__DTL_DATA:-metis-andromeda-sepolia-l2geth-archive-leveldb-hash_dtl}:/data - ${METIS_ANDROMEDA_SEPOLIA_L2GETH_ARCHIVE_LEVELDB_HASH__DTL_DATA:-metis-andromeda-sepolia-l2geth-archive-leveldb-hash_dtl}:/data
- .jwtsecret:/jwtsecret:ro - .jwtsecret:/jwtsecret:ro
logging: *logging-defaults
labels:
- prometheus-scrape.enabled=false
volumes: volumes:
metis-andromeda-sepolia-l2geth-archive-leveldb-hash: metis-andromeda-sepolia-l2geth-archive-leveldb-hash:
@@ -161,7 +190,7 @@ x-upstreams:
frameSize: 20Mb frameSize: 20Mb
msgSize: 50Mb msgSize: 50Mb
url: $${WS_URL} url: $${WS_URL}
chain: $${CHAIN} chain:
method-groups: method-groups:
enabled: enabled:
- debug - debug

View File

@@ -56,6 +56,7 @@ services:
- GETH_CONFIG=/config/gethconfig.toml - GETH_CONFIG=/config/gethconfig.toml
- GETH_ETHSTATS=d${DOMAIN}:${ZIRCUIT_TESTNET_WS_SECRET}@${ZIRCUIT_TESTNET_ETH_STATS_SERVER}:${ZIRCUIT_TESTNET_ETH_STATS_SERVER_PORT} - GETH_ETHSTATS=d${DOMAIN}:${ZIRCUIT_TESTNET_WS_SECRET}@${ZIRCUIT_TESTNET_ETH_STATS_SERVER}:${ZIRCUIT_TESTNET_ETH_STATS_SERVER_PORT}
- GETH_ROLLUP_DISABLETXPOOLGOSSIP=true - GETH_ROLLUP_DISABLETXPOOLGOSSIP=true
- GETH_ROLLUP_SEQUENCERHTTP=https://zircuit-testnet.drpc.org
- GETH_TXPOOL_GLOBALQUEUE=1024 - GETH_TXPOOL_GLOBALQUEUE=1024
entrypoint: /bin/sh -c 'exec geth "$@"' -- entrypoint: /bin/sh -c 'exec geth "$@"' --
command: command:

View File

@@ -56,6 +56,7 @@ services:
- GETH_CONFIG=/config/gethconfig.toml - GETH_CONFIG=/config/gethconfig.toml
- GETH_ETHSTATS=d${DOMAIN}:${ZIRCUIT_TESTNET_WS_SECRET}@${ZIRCUIT_TESTNET_ETH_STATS_SERVER}:${ZIRCUIT_TESTNET_ETH_STATS_SERVER_PORT} - GETH_ETHSTATS=d${DOMAIN}:${ZIRCUIT_TESTNET_WS_SECRET}@${ZIRCUIT_TESTNET_ETH_STATS_SERVER}:${ZIRCUIT_TESTNET_ETH_STATS_SERVER_PORT}
- GETH_ROLLUP_DISABLETXPOOLGOSSIP=true - GETH_ROLLUP_DISABLETXPOOLGOSSIP=true
- GETH_ROLLUP_SEQUENCERHTTP=https://zircuit-testnet.drpc.org
- GETH_TXPOOL_GLOBALQUEUE=1024 - GETH_TXPOOL_GLOBALQUEUE=1024
entrypoint: /bin/sh -c 'exec geth "$@"' -- entrypoint: /bin/sh -c 'exec geth "$@"' --
command: command:

View File

@@ -56,6 +56,7 @@ services:
- GETH_CONFIG=/config/gethconfig.toml - GETH_CONFIG=/config/gethconfig.toml
- GETH_ETHSTATS=d${DOMAIN}:${ZIRCUIT_TESTNET_WS_SECRET}@${ZIRCUIT_TESTNET_ETH_STATS_SERVER}:${ZIRCUIT_TESTNET_ETH_STATS_SERVER_PORT} - GETH_ETHSTATS=d${DOMAIN}:${ZIRCUIT_TESTNET_WS_SECRET}@${ZIRCUIT_TESTNET_ETH_STATS_SERVER}:${ZIRCUIT_TESTNET_ETH_STATS_SERVER_PORT}
- GETH_ROLLUP_DISABLETXPOOLGOSSIP=true - GETH_ROLLUP_DISABLETXPOOLGOSSIP=true
- GETH_ROLLUP_SEQUENCERHTTP=https://zircuit-testnet.drpc.org
- GETH_TXPOOL_GLOBALQUEUE=1024 - GETH_TXPOOL_GLOBALQUEUE=1024
entrypoint: /bin/sh -c 'exec geth "$@"' -- entrypoint: /bin/sh -c 'exec geth "$@"' --
command: command:

View File

@@ -56,6 +56,7 @@ services:
- GETH_CONFIG=/config/gethconfig.toml - GETH_CONFIG=/config/gethconfig.toml
- GETH_ETHSTATS=d${DOMAIN}:${ZIRCUIT_TESTNET_WS_SECRET}@${ZIRCUIT_TESTNET_ETH_STATS_SERVER}:${ZIRCUIT_TESTNET_ETH_STATS_SERVER_PORT} - GETH_ETHSTATS=d${DOMAIN}:${ZIRCUIT_TESTNET_WS_SECRET}@${ZIRCUIT_TESTNET_ETH_STATS_SERVER}:${ZIRCUIT_TESTNET_ETH_STATS_SERVER_PORT}
- GETH_ROLLUP_DISABLETXPOOLGOSSIP=true - GETH_ROLLUP_DISABLETXPOOLGOSSIP=true
- GETH_ROLLUP_SEQUENCERHTTP=https://zircuit-testnet.drpc.org
- GETH_TXPOOL_GLOBALQUEUE=1024 - GETH_TXPOOL_GLOBALQUEUE=1024
entrypoint: /bin/sh -c 'exec geth "$@"' -- entrypoint: /bin/sh -c 'exec geth "$@"' --
command: command:

File diff suppressed because it is too large Load Diff

View File

@@ -178,7 +178,7 @@ x-upstreams:
frameSize: 20Mb frameSize: 20Mb
msgSize: 50Mb msgSize: 50Mb
url: $${WS_URL} url: $${WS_URL}
chain: chain: solana
method-groups: method-groups:
enabled: enabled:
- debug - debug

View File

@@ -176,7 +176,7 @@ x-upstreams:
frameSize: 20Mb frameSize: 20Mb
msgSize: 50Mb msgSize: 50Mb
url: $${WS_URL} url: $${WS_URL}
chain: chain: solana-testnet
method-groups: method-groups:
enabled: enabled:
- debug - debug