Files
ethereum-rpc-docker/metis-andromeda/l2geth/metis-andromeda-mainnet-l2geth-archive-leveldb-hash.yml
goldsquid 47044e36e5 updates
2025-12-12 12:07:47 +07:00

218 lines
11 KiB
YAML

---
x-logging-defaults: &logging-defaults
driver: json-file
options:
max-size: "10m"
max-file: "3"
# 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-mainnet-l2geth-archive-leveldb-hash.yml
#
# docker compose up -d
#
# curl -X POST https://${IP}.traefik.me/metis-andromeda-mainnet-archive \
# -H "Content-Type: application/json" \
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
services:
metis-andromeda-mainnet-archive:
image: ${METIS_ANDROMEDA_L2GETH_IMAGE:-metisdao/l2geth}:${METIS_ANDROMEDA_MAINNET_L2GETH_VERSION:-v0.3.9}
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:
- 10743:10743
- 10743:10743/udp
expose:
- 8545
- 8546
environment:
- BLOCK_SIGNER_ADDRESS=0x00000398232E2064F896018496b4b44b3D62751F
- BLOCK_SIGNER_KEY=6587ae678cf4fc9a33000cdbf9f35226b71dcc6a4684a31203241f9bcfd55d27
- BOOTNODES=enode://61b617d2549296b0b950efcf8c1d87227d454d44362e642dde37d83092a445f2b6a6fd651d611b2893249d1e9d15c8f1d4b067142cff53280a08c9c7565c29e2@3.22.33.68:30303,enode://524e335aaa2a4555fe2d54f07fc34da83d80b0407d86c606b76ce918f96a348cf91947f7c60b0eabd29f68d2669cc0ced1360636daa53d0ccc948e154d0ce21e@3.129.121.37:30303,enode://c4cc213e3c5cb57b1ea6e1aa0b8a28240b03a5fa4b65ff08c53faf448182ae161d68c78fe48040da1e5d9087c6f19b60644605c4c2d78845627f09b90207e56c@3.17.198.212:30303,enode://690969c716d2e4f55936a2801ab1d513598f8f2afa85be1c9f9c41e8ce1f07ee352dac2925f86fd54449d7bdd9bddc7342d33c0c46c604db19de63e21362f2cd@54.237.23.7:30303,enode://9bbe2b0d7e2cd7c3de7f9674fb95059026667e9b9ce717f927b4f53132dde131fab34995a984ed47328f867e5efea4e5a27dc6a90b6b1f4106f07be215e0ece5@54.174.30.211:30303,enode://2577f7c6ffafcdf311e2f79bcc56671825f00a265e5cd1f0224d8bd4b484ba1870930584f37593abfb910a76b51fa82a8b48c53d2511848680beb00c357cf3e0@52.20.251.43:30303,enode://5a41bbc2a57c90b443244bc2d9c4470ee84b7af21aa27256178e53a1772950c3bf9a2b6c1a761688064aaa8456f6b4e918918cda867ce59d007ff825bbefe61d@3.126.202.64:30303,enode://c0c2826d5bc7baeb2b8fe3aa8726d2572508142aa2476e2d2a667c7452a3dc78b47c1176522a9b4c3203902c3ae487ae4b656c7089334536d9c1468056799939@52.57.227.34:30303,enode://86fffa408fca0afc8c9f5cf3f5831d1bc39c2a49d3690ae5219001ff7bec08cac6932dc7e94c65186f7d46daa738449f2eb361d50cde15212a8e8c84eec62605@18.193.199.155:30303
- CHAIN_ID=1088
- DATADIR=/root/.ethereum
- DESEQBLOCK=16500000
- ETH1_CTC_DEPLOYMENT_HEIGHT=13626959
- ETH1_SYNC_SERVICE_ENABLE=false
- EXTERNAL_IP=${IP}
- GCMODE=archive
- IPC_DISABLE=false
- MAX_PEER=150
- NETWORK_ID=1088
- NO_USB=true
- PORT=10743
- ROLLUP_BACKEND=l1
- ROLLUP_CLIENT_HTTP=http://metis-andromeda-mainnet-archive-node:7878
- ROLLUP_ENFORCE_FEES=true
- ROLLUP_MAX_CALLDATA_SIZE=40000
- ROLLUP_POLL_INTERVAL_FLAG=10s
- ROLLUP_STATE_DUMP_PATH=https://metisprotocol.github.io/metis-networks/andromeda-mainnet/state-dump.latest.json
- ROLLUP_TIMESTAMP_REFRESH=10s
- RPC_ADDR=0.0.0.0
- RPC_API=admin,eth,net,web3,mvm,debug
- RPC_CORS_DOMAIN=*
- RPC_ENABLE=true
- RPC_PORT=8545
- RPC_VHOSTS=*
- SEQSET_CONTRACT=0x0fe382b74C3894B65c10E5C12ae60Bbd8FAf5b48
- SEQSET_VALID_HEIGHT=15214531
- SEQ_BRIDGE_URL=https://andromeda.metis.io
- TARGET_GAS_LIMIT=1100000000
- USING_OVM=true
- VERBOSITY=3
- WS=true
- WS_ADDR=0.0.0.0
- WS_API=admin,eth,net,web3,mvm,debug
- WS_ORIGINS=*
- WS_PORT=8546
command:
- --cache.noprefetch=true
- --mine=false
- --miner.noverify
restart: unless-stopped
stop_grace_period: 5m
networks:
- chains
volumes:
- ${METIS_ANDROMEDA_MAINNET_L2GETH_ARCHIVE_LEVELDB_HASH_DATA:-metis-andromeda-mainnet-l2geth-archive-leveldb-hash}:/root/.ethereum
- /slowdisk:/slowdisk
logging: *logging-defaults
labels:
- prometheus-scrape.enabled=false
- traefik.enable=true
- traefik.http.middlewares.metis-andromeda-mainnet-l2geth-archive-leveldb-hash-stripprefix.stripprefix.prefixes=/metis-andromeda-mainnet-archive
- traefik.http.services.metis-andromeda-mainnet-l2geth-archive-leveldb-hash.loadbalancer.server.port=8545
- ${NO_SSL:-traefik.http.routers.metis-andromeda-mainnet-l2geth-archive-leveldb-hash.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.metis-andromeda-mainnet-l2geth-archive-leveldb-hash.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.metis-andromeda-mainnet-l2geth-archive-leveldb-hash.rule=Host(`$DOMAIN`) && (Path(`/metis-andromeda-mainnet-archive`) || Path(`/metis-andromeda-mainnet-archive/`))}
- ${NO_SSL:+traefik.http.routers.metis-andromeda-mainnet-l2geth-archive-leveldb-hash.rule=Path(`/metis-andromeda-mainnet-archive`) || Path(`/metis-andromeda-mainnet-archive/`)}
- traefik.http.routers.metis-andromeda-mainnet-l2geth-archive-leveldb-hash.middlewares=metis-andromeda-mainnet-l2geth-archive-leveldb-hash-stripprefix, ipallowlist
- traefik.http.routers.metis-andromeda-mainnet-l2geth-archive-leveldb-hash.priority=50 # gets any request that is not GET with UPGRADE header
- traefik.http.routers.metis-andromeda-mainnet-l2geth-archive-leveldb-hash-ws.priority=100 # answers GET requests first
- traefik.http.services.metis-andromeda-mainnet-l2geth-archive-leveldb-hash-ws.loadbalancer.server.port=8546
- traefik.http.routers.metis-andromeda-mainnet-l2geth-archive-leveldb-hash-ws.service=metis-andromeda-mainnet-l2geth-archive-leveldb-hash-ws
- traefik.http.routers.metis-andromeda-mainnet-l2geth-archive-leveldb-hash.service=metis-andromeda-mainnet-l2geth-archive-leveldb-hash
- ${NO_SSL:-traefik.http.routers.metis-andromeda-mainnet-l2geth-archive-leveldb-hash-ws.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.metis-andromeda-mainnet-l2geth-archive-leveldb-hash-ws.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.metis-andromeda-mainnet-l2geth-archive-leveldb-hash-ws.rule=Host(`$DOMAIN`) && (Path(`/metis-andromeda-mainnet-archive`) || Path(`/metis-andromeda-mainnet-archive/`)) && Headers(`Upgrade`, `websocket`)}
- ${NO_SSL:+traefik.http.routers.metis-andromeda-mainnet-l2geth-archive-leveldb-hash-ws.rule=(Path(`/metis-andromeda-mainnet-archive`) || Path(`/metis-andromeda-mainnet-archive/`)) && Headers(`Upgrade`, `websocket`)}
- traefik.http.routers.metis-andromeda-mainnet-l2geth-archive-leveldb-hash-ws.middlewares=metis-andromeda-mainnet-l2geth-archive-leveldb-hash-stripprefix, ipallowlist
metis-andromeda-mainnet-archive-node:
image: ${METIS_ANDROMEDA_DTL_IMAGE:-metisdao/dtl}:${METIS_ANDROMEDA_MAINNET_DTL_VERSION:-v0.2.5}
ports:
- 15743:15743
- 15743:15743/udp
expose:
- 7878
environment:
- DATA_TRANSPORT_LAYER__BATCH_INBOX_ADDRESS=0xff00000000000000000000000000000000001088
- DATA_TRANSPORT_LAYER__BATCH_INBOX_L1_HEIGHT=19438451
- DATA_TRANSPORT_LAYER__BATCH_INBOX_SENDER=0x1a9da0aeda630ddf2748a453bf6d92560762d914
- DATA_TRANSPORT_LAYER__BATCH_INBOX_START_INDEX=42647
- DATA_TRANSPORT_LAYER__CONFIRMATIONS=12
- DATA_TRANSPORT_LAYER__DANGEROUSLY_CATCH_ALL_ERRORS=true
- DATA_TRANSPORT_LAYER__DB_PATH=/data/db
- DATA_TRANSPORT_LAYER__DESEQBLOCK=16500000
- DATA_TRANSPORT_LAYER__ETH_NETWORK_NAME=mainnet
- DATA_TRANSPORT_LAYER__L1_RPC_ENDPOINT=${ETHEREUM_MAINNET_EXECUTION_RPC}
- DATA_TRANSPORT_LAYER__L1_START_HEIGHT=13625200
- DATA_TRANSPORT_LAYER__L2_CHAIN_ID=1088
- DATA_TRANSPORT_LAYER__L2_RPC_ENDPOINT=https://andromeda.metis.io
- DATA_TRANSPORT_LAYER__LOGS_PER_POLLING_INTERVAL=1000
- DATA_TRANSPORT_LAYER__MINIO_ACCESS_KEY=metisread
- DATA_TRANSPORT_LAYER__MINIO_BUCKET=metis-1088-prod
- DATA_TRANSPORT_LAYER__MINIO_ENABLED=true
- DATA_TRANSPORT_LAYER__MINIO_ENDPOINT=memoapi.metis.io
- DATA_TRANSPORT_LAYER__MINIO_PORT=6083
- DATA_TRANSPORT_LAYER__MINIO_SECRET_KEY=8uyywb*7y3
- DATA_TRANSPORT_LAYER__MINIO_USE_SSL=true
- DATA_TRANSPORT_LAYER__POLLING_INTERVAL=10000
- DATA_TRANSPORT_LAYER__SERVER_HOSTNAME=0.0.0.0
- DATA_TRANSPORT_LAYER__SERVER_PORT=7878
- DATA_TRANSPORT_LAYER__SYNC_FROM_L1=true
- DATA_TRANSPORT_LAYER__SYNC_FROM_L2=false
- DATA_TRANSPORT_LAYER__SYNC_L1_BATCH=false
- DATA_TRANSPORT_LAYER__TRANSACTIONS_PER_POLLING_INTERVAL=1000
- URL=https://metisprotocol.github.io/metis-networks/andromeda-mainnet/addresses.json
restart: unless-stopped
depends_on:
- metis-andromeda-mainnet-archive
networks:
- chains
volumes:
- ${METIS_ANDROMEDA_MAINNET_L2GETH_ARCHIVE_LEVELDB_HASH__DTL_DATA:-metis-andromeda-mainnet-l2geth-archive-leveldb-hash_dtl}:/data
- .jwtsecret:/jwtsecret:ro
logging: *logging-defaults
labels:
- prometheus-scrape.enabled=false
volumes:
metis-andromeda-mainnet-l2geth-archive-leveldb-hash:
metis-andromeda-mainnet-l2geth-archive-leveldb-hash_dtl:
x-upstreams:
- id: $${ID}
labels:
provider: $${PROVIDER}
connection:
generic:
rpc:
url: $${RPC_URL}
ws:
frameSize: 20Mb
msgSize: 50Mb
url: $${WS_URL}
chain: metis
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
...