Compare commits

...

15 Commits

Author SHA1 Message Date
b062191754 deploy: regenerate compose from vibe-node main c16e40b68366 2026-09-11 10:27:10 +00:00
rob
eee8bc13de avalanche C-chain configs: select APIs via eth-apis (defaults + debug/debug-tracer/debug-file-tracer/debug-handler); the legacy *-api-enabled flags are ignored by avalanchego 1.14.2 (canary rpc-de-22: debug_trace* now served)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KjqejYycVyVvrxV9aTDhgX
2026-09-11 09:58:49 +00:00
rob
2960ac3480 avalanche C-chain configs: debug-api-enabled true (mainnet pruned/archive/firewood, fuji pruned/archive) so the advertised dshackle debug group is actually served (dRPC routed 110 debug_trace* calls/day into method-not-available)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KjqejYycVyVvrxV9aTDhgX
2026-09-11 09:34:36 +00:00
03eece850f deploy: regenerate compose from vibe-node main ad1b9236adf5 2026-09-11 09:31:12 +00:00
20618f9f56 deploy: regenerate compose from vibe-node main c113407f089d 2026-09-11 08:56:22 +00:00
be4c1a599f deploy: regenerate compose from vibe-node main 218bbb0b7615 2026-09-11 08:11:28 +00:00
a8a8986305 deploy: regenerate compose from vibe-node main 2c123e09150c 2026-09-11 07:16:37 +00:00
dd059dfa1e deploy: regenerate compose from vibe-node main 02930ac0a52b 2026-09-11 06:32:40 +00:00
75e92270c6 Merge pull request 'haqq: fix startup crash-loop by adding missing cometbft-common.sh' (#73) from issue-4373 into main 2026-09-10 14:25:53 +00:00
ecf3eea227 deploy: regenerate compose from vibe-node main 8d6970c716b7 2026-09-10 09:50:10 +00:00
bc81a514d3 deploy: regenerate compose from vibe-node main 588eabf061ef 2026-09-10 09:22:19 +00:00
4d0d4e84bd deploy: regenerate compose from vibe-node main 482841b9f702 2026-09-10 09:17:47 +00:00
rob
4daf21cb27 haqq: drop truncated dteam peer, stop feeding the Polkachu addrbook JSON to ct_merge_seeds; cometbft-common: validate peer entries
- haqq/scripts/init.sh: 7c153a83@peer.haqq.mainnet.dteam.tech:28656 is not a 40-hex node id;
  haqqd refuses to start with it in seeds/persistent_peers. Removed from both defaults.
- haqq/scripts/init.sh: ct_merge_seeds was given ADDRBOOK_URL (a JSON addrbook, hundreds of KB)
  as the official seed list; the resulting sed argument exceeded ARG_MAX on Alpine. The
  addrbook is already installed by ct_set_addrbook; pass no seeds URL.
- scripts/cometbft-common.sh (+ per-chain copies via update.sh sync): ct_valid_peers filters
  seeds and persistent_peers to <40-hex>@host:port and logs what it drops, so a bad upstream
  entry can never block startup again.

Replaces the runtime override /root/onsite-overrides/haqq-mainnet-skip-addrbook-as-seeds.yml
that the onsite agent left on rpc-de-31 on 2026-09-07.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01KjqejYycVyVvrxV9aTDhgX
2026-09-09 06:43:08 +00:00
7006907548 bump apechain nitro version to apechain-3.9.9 and sync with current context
- Update apechain nitro node from v3.5.6 to 3.9.9 for ArbOS v33 support
- Sync ARC client versions (reth: 0.8.0 -> 0.7.2, consensus: 0.8.0 -> 0.7.2)
- Sync Linea besu client version (2.0.0-20260714 -> 2.2.0-20260821)
2026-09-08 20:57:08 +00:00
9f7317dcd1 haqq: add missing cometbft-common.sh COPY to Dockerfile 2026-09-07 11:48:42 +00:00
79 changed files with 1797 additions and 162 deletions

View File

@@ -54,7 +54,7 @@ services:
environment:
- DATABASE_POOL_SIZE=50
- DATABASE_URL=postgres://postgres:notsecurepassword@abstract-mainnet-archive-db:5430/zksync_local_ext_node
- EN_API_NAMESAPCES=eth,net,web3,debug,pubsub,debug,zks
- EN_API_NAMESPACES=eth,net,web3,debug,pubsub,debug,zks
- EN_ETH_CLIENT_URL=${ETHEREUM_MAINNET_EXECUTION_RPC}
- EN_HEALTHCHECK_PORT=3081
- EN_HTTP_PORT=8545

View File

@@ -54,7 +54,7 @@ services:
environment:
- DATABASE_POOL_SIZE=50
- DATABASE_URL=postgres://postgres:notsecurepassword@abstract-mainnet-db:5430/zksync_local_ext_node
- EN_API_NAMESAPCES=eth,net,web3,debug,pubsub,debug,zks
- EN_API_NAMESPACES=eth,net,web3,debug,pubsub,debug,zks
- EN_ETH_CLIENT_URL=${ETHEREUM_MAINNET_EXECUTION_RPC}
- EN_HEALTHCHECK_PORT=3081
- EN_HTTP_PORT=8545

View File

@@ -54,7 +54,7 @@ services:
environment:
- DATABASE_POOL_SIZE=50
- DATABASE_URL=postgres://postgres:notsecurepassword@abstract-testnet-archive-db:5430/zksync_local_ext_node
- EN_API_NAMESAPCES=eth,net,web3,debug,pubsub,debug,zks
- EN_API_NAMESPACES=eth,net,web3,debug,pubsub,debug,zks
- EN_ETH_CLIENT_URL=${ETHEREUM_SEPOLIA_EXECUTION_RPC}
- EN_HEALTHCHECK_PORT=3081
- EN_HTTP_PORT=8545

View File

@@ -54,7 +54,7 @@ services:
environment:
- DATABASE_POOL_SIZE=50
- DATABASE_URL=postgres://postgres:notsecurepassword@abstract-testnet-db:5430/zksync_local_ext_node
- EN_API_NAMESAPCES=eth,net,web3,debug,pubsub,debug,zks
- EN_API_NAMESPACES=eth,net,web3,debug,pubsub,debug,zks
- EN_ETH_CLIENT_URL=${ETHEREUM_SEPOLIA_EXECUTION_RPC}
- EN_HEALTHCHECK_PORT=3081
- EN_HTTP_PORT=8545

View File

@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
services:
apechain-mainnet-archive:
image: ${APECHAIN_NITRO_IMAGE:-public.ecr.aws/i6b2w2n6/nitro-node}:${APECHAIN_MAINNET_NITRO_VERSION:-apechain-v3.5.6}
image: ${APECHAIN_NITRO_IMAGE:-public.ecr.aws/i6b2w2n6/nitro-node}:${APECHAIN_MAINNET_NITRO_VERSION:-apechain-3.9.9}
sysctls:
# TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle

View File

@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
services:
apechain-mainnet:
image: ${APECHAIN_NITRO_IMAGE:-public.ecr.aws/i6b2w2n6/nitro-node}:${APECHAIN_MAINNET_NITRO_VERSION:-apechain-v3.5.6}
image: ${APECHAIN_NITRO_IMAGE:-public.ecr.aws/i6b2w2n6/nitro-node}:${APECHAIN_MAINNET_NITRO_VERSION:-apechain-3.9.9}
sysctls:
# TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle

View File

@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
services:
arc-mainnet-archive-consensus-init:
image: ${ARC_CONSENSUS_IMAGE:-docker.cloudsmith.io/circle/arc-network/arc-consensus}:${ARC_MAINNET_CONSENSUS_VERSION:-0.8.0}
image: ${ARC_CONSENSUS_IMAGE:-docker.cloudsmith.io/circle/arc-network/arc-consensus}:${ARC_MAINNET_CONSENSUS_VERSION:-0.7.2}
user: 0:0
entrypoint: [/usr/local/bin/arc-node-consensus, init]
command:
@@ -57,7 +57,7 @@ services:
logging: *logging-defaults
arc-mainnet-archive:
image: ${ARC_RETH_IMAGE:-docker.cloudsmith.io/circle/arc-network/arc-execution}:${ARC_MAINNET_RETH_VERSION:-0.8.0}
image: ${ARC_RETH_IMAGE:-docker.cloudsmith.io/circle/arc-network/arc-execution}:${ARC_MAINNET_RETH_VERSION:-0.7.2}
sysctls:
# TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -119,7 +119,7 @@ services:
shm_size: 2gb
arc-mainnet-archive-node:
image: ${ARC_CONSENSUS_IMAGE:-docker.cloudsmith.io/circle/arc-network/arc-consensus}:${ARC_MAINNET_CONSENSUS_VERSION:-0.8.0}
image: ${ARC_CONSENSUS_IMAGE:-docker.cloudsmith.io/circle/arc-network/arc-consensus}:${ARC_MAINNET_CONSENSUS_VERSION:-0.7.2}
user: 0:0
expose:
- 31000

View File

@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
services:
arc-mainnet-consensus-init:
image: ${ARC_CONSENSUS_IMAGE:-docker.cloudsmith.io/circle/arc-network/arc-consensus}:${ARC_MAINNET_CONSENSUS_VERSION:-0.8.0}
image: ${ARC_CONSENSUS_IMAGE:-docker.cloudsmith.io/circle/arc-network/arc-consensus}:${ARC_MAINNET_CONSENSUS_VERSION:-0.7.2}
user: 0:0
entrypoint: [/usr/local/bin/arc-node-consensus, init]
command:
@@ -57,7 +57,7 @@ services:
logging: *logging-defaults
arc-mainnet:
image: ${ARC_RETH_IMAGE:-docker.cloudsmith.io/circle/arc-network/arc-execution}:${ARC_MAINNET_RETH_VERSION:-0.8.0}
image: ${ARC_RETH_IMAGE:-docker.cloudsmith.io/circle/arc-network/arc-execution}:${ARC_MAINNET_RETH_VERSION:-0.7.2}
sysctls:
# TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -121,7 +121,7 @@ services:
shm_size: 2gb
arc-mainnet-node:
image: ${ARC_CONSENSUS_IMAGE:-docker.cloudsmith.io/circle/arc-network/arc-consensus}:${ARC_MAINNET_CONSENSUS_VERSION:-0.8.0}
image: ${ARC_CONSENSUS_IMAGE:-docker.cloudsmith.io/circle/arc-network/arc-consensus}:${ARC_MAINNET_CONSENSUS_VERSION:-0.7.2}
user: 0:0
expose:
- 31000

View File

@@ -2,5 +2,18 @@
"state-sync-enabled": false,
"pruning-enabled": false,
"rpc-gas-cap": 2500000000,
"eth-rpc-gas-limit": 2500000000
"eth-rpc-gas-limit": 2500000000,
"eth-apis": [
"eth",
"eth-filter",
"net",
"web3",
"internal-eth",
"internal-blockchain",
"internal-transaction",
"debug",
"debug-tracer",
"debug-file-tracer",
"debug-handler"
]
}

View File

@@ -2,5 +2,18 @@
"rpc-gas-cap": 2500000000,
"eth-rpc-gas-limit": 2500000000,
"state-sync-enabled": true,
"state-sync-skip-resume": true
}
"state-sync-skip-resume": true,
"eth-apis": [
"eth",
"eth-filter",
"net",
"web3",
"internal-eth",
"internal-blockchain",
"internal-transaction",
"debug",
"debug-tracer",
"debug-file-tracer",
"debug-handler"
]
}

View File

@@ -1,4 +1,17 @@
{
"state-sync-enabled": false,
"pruning-enabled": false
"pruning-enabled": false,
"eth-apis": [
"eth",
"eth-filter",
"net",
"web3",
"internal-eth",
"internal-blockchain",
"internal-transaction",
"debug",
"debug-tracer",
"debug-file-tracer",
"debug-handler"
]
}

View File

@@ -1,15 +1,7 @@
{
"snowman-api-enabled": false,
"coreth-admin-api-enabled": false,
"net-api-enabled": true,
"rpc-gas-cap": 2500000000,
"rpc-tx-fee-cap": 100,
"eth-rpc-gas-limit": 2500000000,
"eth-api-enabled": true,
"personal-api-enabled": false,
"tx-pool-api-enabled": false,
"debug-api-enabled": false,
"web3-api-enabled": true,
"local-txs-enabled": false,
"pruning-enabled": false,
"api-max-duration": 0,
@@ -20,5 +12,18 @@
"state-sync-skip-resume": true,
"state-scheme": "firewood",
"populate-missing-tries": null,
"snapshot-cache": 0
"snapshot-cache": 0,
"eth-apis": [
"eth",
"eth-filter",
"net",
"web3",
"internal-eth",
"internal-blockchain",
"internal-transaction",
"debug",
"debug-tracer",
"debug-file-tracer",
"debug-handler"
]
}

View File

@@ -1,15 +1,7 @@
{
"snowman-api-enabled": false,
"coreth-admin-api-enabled": false,
"net-api-enabled": true,
"rpc-gas-cap": 2500000000,
"rpc-tx-fee-cap": 100,
"eth-rpc-gas-limit": 2500000000,
"eth-api-enabled": true,
"personal-api-enabled": false,
"tx-pool-api-enabled": false,
"debug-api-enabled": false,
"web3-api-enabled": true,
"local-txs-enabled": false,
"pruning-enabled": true,
"api-max-duration": 0,
@@ -17,5 +9,18 @@
"allow-unfinalized-queries": false,
"log-level": "info",
"state-sync-enabled": true,
"state-sync-skip-resume": true
}
"state-sync-skip-resume": true,
"eth-apis": [
"eth",
"eth-filter",
"net",
"web3",
"internal-eth",
"internal-blockchain",
"internal-transaction",
"debug",
"debug-tracer",
"debug-file-tracer",
"debug-handler"
]
}

View File

@@ -68,11 +68,28 @@ ct_merge_seeds() {
ct_log "no official seeds fetched from $_url (continuing with configured)"
fi
fi
_seeds=$(ct_valid_peers "$_seeds")
if [ -n "$_seeds" ]; then
sed -i "s/^seeds = \".*\"/seeds = \"${_seeds}\"/" "$_cfg"
fi
}
# ct_valid_peers LIST
# Keep only well-formed CometBFT peer entries (<40-hex node id>@<host>:<port>), drop and
# log the rest. A truncated id such as 7c153a83@peer.haqq.mainnet.dteam.tech:28656 makes
# haqqd refuse to start ("invalid node ID"), 2026-09-07 rpc-de-31.
ct_valid_peers() {
_in="$1"; _out=""
for _p in $(echo "$_in" | tr ',' ' '); do
if echo "$_p" | grep -Eqi '^[0-9a-f]{40}@[^@,:]+:[0-9]+$'; then
_out="${_out:+$_out,}$_p"
else
ct_log "dropping malformed peer entry: $_p"
fi
done
echo "$_out"
}
# ct_set_persistent_peers CONFIG_TOML PEERS
# Handles both cometbft-classic `persistent_peers` (underscore) and forks that use
# `persistent-peers` (hyphen, e.g. sei) — patches whichever key is present.
@@ -80,6 +97,8 @@ ct_set_persistent_peers() {
_cfg="$1"; _peers="$2"
[ -f "$_cfg" ] || return 0
[ -n "$_peers" ] || return 0
_peers=$(ct_valid_peers "$_peers")
[ -n "$_peers" ] || return 0
sed -i "s/^persistent_peers = \".*\"/persistent_peers = \"${_peers}\"/" "$_cfg"
sed -i "s/^persistent-peers = \".*\"/persistent-peers = \"${_peers}\"/" "$_cfg"
return 0

View File

@@ -7706,6 +7706,23 @@
"base-mainnet-op-reth-archive-trace"
]
},
{
"chain": "mainnet",
"client": "reth",
"compose_file": "op/reth/base-mainnet-op-reth-minimal-trace--kona",
"drpc_chain": "base",
"features": [
"trace"
],
"network": "base",
"node": "kona",
"relay": null,
"stack": "op",
"type": "minimal",
"volumes": [
"base-mainnet-op-reth-minimal-trace"
]
},
{
"chain": "mainnet",
"client": "reth",
@@ -7715,7 +7732,7 @@
"trace"
],
"network": "base",
"node": "node",
"node": "kona",
"relay": null,
"stack": "op",
"type": "minimal",
@@ -7723,6 +7740,23 @@
"base-mainnet-op-reth-minimal-trace"
]
},
{
"chain": "mainnet",
"client": "reth",
"compose_file": "op/reth/base-mainnet-op-reth-pruned-trace--kona",
"drpc_chain": "base",
"features": [
"trace"
],
"network": "base",
"node": "kona",
"relay": null,
"stack": "op",
"type": "pruned",
"volumes": [
"base-mainnet-op-reth-pruned-trace"
]
},
{
"chain": "mainnet",
"client": "reth",
@@ -7732,7 +7766,7 @@
"trace"
],
"network": "base",
"node": "node",
"node": "kona",
"relay": null,
"stack": "op",
"type": "pruned",
@@ -7740,6 +7774,23 @@
"base-mainnet-op-reth-pruned-trace"
]
},
{
"chain": "sepolia",
"client": "reth",
"compose_file": "op/reth/base-sepolia-op-reth-archive-trace--kona",
"drpc_chain": "base-sepolia",
"features": [
"trace"
],
"network": "base",
"node": "kona",
"relay": null,
"stack": "op",
"type": "archive",
"volumes": [
"base-sepolia-op-reth-archive-trace"
]
},
{
"chain": "sepolia",
"client": "reth",
@@ -7749,7 +7800,7 @@
"trace"
],
"network": "base",
"node": "node",
"node": "kona",
"relay": null,
"stack": "op",
"type": "archive",
@@ -7757,6 +7808,23 @@
"base-sepolia-op-reth-archive-trace"
]
},
{
"chain": "sepolia",
"client": "reth",
"compose_file": "op/reth/base-sepolia-op-reth-minimal-trace--kona",
"drpc_chain": "base-sepolia",
"features": [
"trace"
],
"network": "base",
"node": "kona",
"relay": null,
"stack": "op",
"type": "minimal",
"volumes": [
"base-sepolia-op-reth-minimal-trace"
]
},
{
"chain": "sepolia",
"client": "reth",
@@ -7766,7 +7834,7 @@
"trace"
],
"network": "base",
"node": "node",
"node": "kona",
"relay": null,
"stack": "op",
"type": "minimal",
@@ -7774,6 +7842,23 @@
"base-sepolia-op-reth-minimal-trace"
]
},
{
"chain": "sepolia",
"client": "reth",
"compose_file": "op/reth/base-sepolia-op-reth-pruned-trace--kona",
"drpc_chain": "base-sepolia",
"features": [
"trace"
],
"network": "base",
"node": "kona",
"relay": null,
"stack": "op",
"type": "pruned",
"volumes": [
"base-sepolia-op-reth-pruned-trace"
]
},
{
"chain": "sepolia",
"client": "reth",
@@ -7783,7 +7868,7 @@
"trace"
],
"network": "base",
"node": "node",
"node": "kona",
"relay": null,
"stack": "op",
"type": "pruned",
@@ -8644,6 +8729,23 @@
"unichain-sepolia-op-reth-archive-trace"
]
},
{
"chain": "sepolia",
"client": "reth",
"compose_file": "op/reth/unichain-sepolia-op-reth-pruned-trace--kona",
"drpc_chain": "unichain-sepolia",
"features": [
"trace"
],
"network": "unichain",
"node": "kona",
"relay": null,
"stack": "op",
"type": "pruned",
"volumes": [
"unichain-sepolia-op-reth-pruned-trace"
]
},
{
"chain": "sepolia",
"client": "reth",
@@ -8653,7 +8755,7 @@
"trace"
],
"network": "unichain",
"node": "node",
"node": "kona",
"relay": null,
"stack": "op",
"type": "pruned",
@@ -8729,6 +8831,23 @@
"worldchain-sepolia-op-reth-minimal-trace"
]
},
{
"chain": "sepolia",
"client": "reth",
"compose_file": "op/reth/worldchain-sepolia-op-reth-pruned-trace--kona",
"drpc_chain": "worldchain-sepolia",
"features": [
"trace"
],
"network": "worldchain",
"node": "kona",
"relay": null,
"stack": "op",
"type": "pruned",
"volumes": [
"worldchain-sepolia-op-reth-pruned-trace"
]
},
{
"chain": "sepolia",
"client": "reth",
@@ -8738,7 +8857,7 @@
"trace"
],
"network": "worldchain",
"node": "node",
"node": "kona",
"relay": null,
"stack": "op",
"type": "pruned",
@@ -8863,8 +8982,7 @@
"type": "pruned",
"volumes": [
"plasma-mainnet-reth-pruned-trace-consensus",
"plasma-mainnet-reth-pruned-trace-execution",
"plasma-mainnet-reth-pruned-trace-jwt"
"plasma-mainnet-reth-pruned-trace-execution"
]
},
{
@@ -8882,8 +9000,7 @@
"type": "pruned",
"volumes": [
"plasma-testnet-reth-pruned-trace-consensus",
"plasma-testnet-reth-pruned-trace-execution",
"plasma-testnet-reth-pruned-trace-jwt"
"plasma-testnet-reth-pruned-trace-execution"
]
},
{

View File

@@ -68,11 +68,28 @@ ct_merge_seeds() {
ct_log "no official seeds fetched from $_url (continuing with configured)"
fi
fi
_seeds=$(ct_valid_peers "$_seeds")
if [ -n "$_seeds" ]; then
sed -i "s/^seeds = \".*\"/seeds = \"${_seeds}\"/" "$_cfg"
fi
}
# ct_valid_peers LIST
# Keep only well-formed CometBFT peer entries (<40-hex node id>@<host>:<port>), drop and
# log the rest. A truncated id such as 7c153a83@peer.haqq.mainnet.dteam.tech:28656 makes
# haqqd refuse to start ("invalid node ID"), 2026-09-07 rpc-de-31.
ct_valid_peers() {
_in="$1"; _out=""
for _p in $(echo "$_in" | tr ',' ' '); do
if echo "$_p" | grep -Eqi '^[0-9a-f]{40}@[^@,:]+:[0-9]+$'; then
_out="${_out:+$_out,}$_p"
else
ct_log "dropping malformed peer entry: $_p"
fi
done
echo "$_out"
}
# ct_set_persistent_peers CONFIG_TOML PEERS
# Handles both cometbft-classic `persistent_peers` (underscore) and forks that use
# `persistent-peers` (hyphen, e.g. sei) — patches whichever key is present.
@@ -80,6 +97,8 @@ ct_set_persistent_peers() {
_cfg="$1"; _peers="$2"
[ -f "$_cfg" ] || return 0
[ -n "$_peers" ] || return 0
_peers=$(ct_valid_peers "$_peers")
[ -n "$_peers" ] || return 0
sed -i "s/^persistent_peers = \".*\"/persistent_peers = \"${_peers}\"/" "$_cfg"
sed -i "s/^persistent-peers = \".*\"/persistent-peers = \"${_peers}\"/" "$_cfg"
return 0

View File

@@ -57,7 +57,7 @@ services:
environment:
- DATABASE_POOL_SIZE=50
- DATABASE_URL=postgres://postgres:notsecurepassword@cronos-zkevm-mainnet-archive-db:5430/zksync_local_ext_node
- EN_API_NAMESAPCES=eth,net,web3,debug,pubsub,debug,zks
- EN_API_NAMESPACES=eth,net,web3,debug,pubsub,debug,zks
- EN_ETH_CLIENT_URL=${ETHEREUM_MAINNET_EXECUTION_RPC}
- EN_HEALTHCHECK_PORT=3081
- EN_HTTP_PORT=8545

View File

@@ -57,7 +57,7 @@ services:
environment:
- DATABASE_POOL_SIZE=50
- DATABASE_URL=postgres://postgres:notsecurepassword@cronos-zkevm-mainnet-db:5430/zksync_local_ext_node
- EN_API_NAMESAPCES=eth,net,web3,debug,pubsub,debug,zks
- EN_API_NAMESPACES=eth,net,web3,debug,pubsub,debug,zks
- EN_ETH_CLIENT_URL=${ETHEREUM_MAINNET_EXECUTION_RPC}
- EN_HEALTHCHECK_PORT=3081
- EN_HTTP_PORT=8545

View File

@@ -57,7 +57,7 @@ services:
environment:
- DATABASE_POOL_SIZE=50
- DATABASE_URL=postgres://postgres:notsecurepassword@cronos-zkevm-testnet-archive-db:5430/zksync_local_ext_node
- EN_API_NAMESAPCES=eth,net,web3,debug,pubsub,debug,zks
- EN_API_NAMESPACES=eth,net,web3,debug,pubsub,debug,zks
- EN_ETH_CLIENT_URL=${ETHEREUM_SEPOLIA_EXECUTION_RPC}
- EN_HEALTHCHECK_PORT=3081
- EN_HTTP_PORT=8545

View File

@@ -57,7 +57,7 @@ services:
environment:
- DATABASE_POOL_SIZE=50
- DATABASE_URL=postgres://postgres:notsecurepassword@cronos-zkevm-testnet-db:5430/zksync_local_ext_node
- EN_API_NAMESAPCES=eth,net,web3,debug,pubsub,debug,zks
- EN_API_NAMESPACES=eth,net,web3,debug,pubsub,debug,zks
- EN_ETH_CLIENT_URL=${ETHEREUM_SEPOLIA_EXECUTION_RPC}
- EN_HEALTHCHECK_PORT=3081
- EN_HTTP_PORT=8545

View File

@@ -68,11 +68,28 @@ ct_merge_seeds() {
ct_log "no official seeds fetched from $_url (continuing with configured)"
fi
fi
_seeds=$(ct_valid_peers "$_seeds")
if [ -n "$_seeds" ]; then
sed -i "s/^seeds = \".*\"/seeds = \"${_seeds}\"/" "$_cfg"
fi
}
# ct_valid_peers LIST
# Keep only well-formed CometBFT peer entries (<40-hex node id>@<host>:<port>), drop and
# log the rest. A truncated id such as 7c153a83@peer.haqq.mainnet.dteam.tech:28656 makes
# haqqd refuse to start ("invalid node ID"), 2026-09-07 rpc-de-31.
ct_valid_peers() {
_in="$1"; _out=""
for _p in $(echo "$_in" | tr ',' ' '); do
if echo "$_p" | grep -Eqi '^[0-9a-f]{40}@[^@,:]+:[0-9]+$'; then
_out="${_out:+$_out,}$_p"
else
ct_log "dropping malformed peer entry: $_p"
fi
done
echo "$_out"
}
# ct_set_persistent_peers CONFIG_TOML PEERS
# Handles both cometbft-classic `persistent_peers` (underscore) and forks that use
# `persistent-peers` (hyphen, e.g. sei) — patches whichever key is present.
@@ -80,6 +97,8 @@ ct_set_persistent_peers() {
_cfg="$1"; _peers="$2"
[ -f "$_cfg" ] || return 0
[ -n "$_peers" ] || return 0
_peers=$(ct_valid_peers "$_peers")
[ -n "$_peers" ] || return 0
sed -i "s/^persistent_peers = \".*\"/persistent_peers = \"${_peers}\"/" "$_cfg"
sed -i "s/^persistent-peers = \".*\"/persistent-peers = \"${_peers}\"/" "$_cfg"
return 0

View File

@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
services:
ethereum-mainnet-besu:
image: ${ETHEREUM_BESU_IMAGE:-hyperledger/besu}:${ETHEREUM_MAINNET_BESU_VERSION:-26.7.1}
image: ${ETHEREUM_BESU_IMAGE:-hyperledger/besu}:${ETHEREUM_MAINNET_BESU_VERSION:-26.8.1}
sysctls:
# TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle

View File

@@ -68,11 +68,28 @@ ct_merge_seeds() {
ct_log "no official seeds fetched from $_url (continuing with configured)"
fi
fi
_seeds=$(ct_valid_peers "$_seeds")
if [ -n "$_seeds" ]; then
sed -i "s/^seeds = \".*\"/seeds = \"${_seeds}\"/" "$_cfg"
fi
}
# ct_valid_peers LIST
# Keep only well-formed CometBFT peer entries (<40-hex node id>@<host>:<port>), drop and
# log the rest. A truncated id such as 7c153a83@peer.haqq.mainnet.dteam.tech:28656 makes
# haqqd refuse to start ("invalid node ID"), 2026-09-07 rpc-de-31.
ct_valid_peers() {
_in="$1"; _out=""
for _p in $(echo "$_in" | tr ',' ' '); do
if echo "$_p" | grep -Eqi '^[0-9a-f]{40}@[^@,:]+:[0-9]+$'; then
_out="${_out:+$_out,}$_p"
else
ct_log "dropping malformed peer entry: $_p"
fi
done
echo "$_out"
}
# ct_set_persistent_peers CONFIG_TOML PEERS
# Handles both cometbft-classic `persistent_peers` (underscore) and forks that use
# `persistent-peers` (hyphen, e.g. sei) — patches whichever key is present.
@@ -80,6 +97,8 @@ ct_set_persistent_peers() {
_cfg="$1"; _peers="$2"
[ -f "$_cfg" ] || return 0
[ -n "$_peers" ] || return 0
_peers=$(ct_valid_peers "$_peers")
[ -n "$_peers" ] || return 0
sed -i "s/^persistent_peers = \".*\"/persistent_peers = \"${_peers}\"/" "$_cfg"
sed -i "s/^persistent-peers = \".*\"/persistent-peers = \"${_peers}\"/" "$_cfg"
return 0

View File

@@ -18,10 +18,10 @@ MIN_GAS="${MIN_GAS:-0.01hqq}"
MONIKER="${MONIKER:-rpc-node}"
# Polkachu seeds + official Haqq network seeds for reliable peer discovery
SEEDS="${SEEDS:-936e27a05f3cfb090507dd810395cbbd8efbffb0@65.109.115.172:24056,f4675b63b8872fb9216efa99428eb5b1fb297393@65.109.104.118:61256,6c9a6fc0e0d94bf303075e46560832e652cffc14@65.108.71.137:24056,7c153a83@peer.haqq.mainnet.dteam.tech:28656}"
SEEDS="${SEEDS:-936e27a05f3cfb090507dd810395cbbd8efbffb0@65.109.115.172:24056,f4675b63b8872fb9216efa99428eb5b1fb297393@65.109.104.118:61256,6c9a6fc0e0d94bf303075e46560832e652cffc14@65.108.71.137:24056}"
# Optional persistent peers for additional bootstrap reliability
PERSISTENT_PEERS="${PERSISTENT_PEERS:-17e0fd08f04e062d18412808b8bf134e9ad34508@65.109.109.189:10656,e000b992a0066eae9e87c66e0d65229a76647509@198.96.92.242:32656,7c153a83@peer.haqq.mainnet.dteam.tech:28656,235ac65359582357b04754e838496545b3ba6429@haqq-seed-1.allnodes.me:26656,9573a569016378765444095484840d7f543d2800@haqq-seed-2.allnodes.me:26656}"
PERSISTENT_PEERS="${PERSISTENT_PEERS:-17e0fd08f04e062d18412808b8bf134e9ad34508@65.109.109.189:10656,e000b992a0066eae9e87c66e0d65229a76647509@198.96.92.242:32656,235ac65359582357b04754e838496545b3ba6429@haqq-seed-1.allnodes.me:26656,9573a569016378765444095484840d7f543d2800@haqq-seed-2.allnodes.me:26656}"
ct_apk curl jq
@@ -44,7 +44,10 @@ fi
sed -i '/^\[rpc\]/,/^\[/{s|^laddr = .*|laddr = "tcp://0.0.0.0:26657"|}' "$CONFIG_DIR/config.toml"
ct_patch_p2p "$CONFIG_DIR/config.toml" "$IP" "${P2P_PORT:-10465}"
ct_merge_seeds "$CONFIG_DIR/config.toml" "$SEEDS" "$ADDRBOOK_URL"
# The Polkachu addrbook is a JSON file handled by ct_set_addrbook above; it is NOT a
# seed list. Feeding it to ct_merge_seeds blew the sed argument past ARG_MAX (2026-09-07,
# rpc-de-31) and left haqqd unable to start.
ct_merge_seeds "$CONFIG_DIR/config.toml" "$SEEDS"
ct_set_persistent_peers "$CONFIG_DIR/config.toml" "$PERSISTENT_PEERS"
ct_set_moniker "$CONFIG_DIR/config.toml" "$MONIKER"
ct_configure_statesync "$CONFIG_DIR/config.toml" "$STATESYNC_RPC"

View File

@@ -54,7 +54,7 @@ services:
environment:
- DATABASE_POOL_SIZE=50
- DATABASE_URL=postgres://postgres:notsecurepassword@lens-mainnet-archive-db:5430/zksync_local_ext_node
- EN_API_NAMESAPCES=eth,net,web3,debug,pubsub,debug,zks
- EN_API_NAMESPACES=eth,net,web3,debug,pubsub,debug,zks
- EN_DA_API_NODE_URL=wss://mainnet.avail-rpc.com
- EN_DA_APP_ID=26
- EN_DA_AVAIL_CLIENT_TYPE=FullClient

View File

@@ -54,7 +54,7 @@ services:
environment:
- DATABASE_POOL_SIZE=50
- DATABASE_URL=postgres://postgres:notsecurepassword@lens-mainnet-db:5430/zksync_local_ext_node
- EN_API_NAMESAPCES=eth,net,web3,debug,pubsub,debug,zks
- EN_API_NAMESPACES=eth,net,web3,debug,pubsub,debug,zks
- EN_DA_API_NODE_URL=wss://mainnet.avail-rpc.com
- EN_DA_APP_ID=26
- EN_DA_AVAIL_CLIENT_TYPE=FullClient

View File

@@ -54,7 +54,7 @@ services:
environment:
- DATABASE_POOL_SIZE=50
- DATABASE_URL=postgres://postgres:notsecurepassword@lens-testnet-archive-db:5430/zksync_local_ext_node
- EN_API_NAMESAPCES=eth,net,web3,debug,pubsub,debug,zks
- EN_API_NAMESPACES=eth,net,web3,debug,pubsub,debug,zks
- EN_DA_API_NODE_URL=wss://turing-rpc.avail.so/ws
- EN_DA_APP_ID=247
- EN_DA_AVAIL_CLIENT_TYPE=FullClient

View File

@@ -54,7 +54,7 @@ services:
environment:
- DATABASE_POOL_SIZE=50
- DATABASE_URL=postgres://postgres:notsecurepassword@lens-testnet-db:5430/zksync_local_ext_node
- EN_API_NAMESAPCES=eth,net,web3,debug,pubsub,debug,zks
- EN_API_NAMESPACES=eth,net,web3,debug,pubsub,debug,zks
- EN_DA_API_NODE_URL=wss://turing-rpc.avail.so/ws
- EN_DA_APP_ID=247
- EN_DA_AVAIL_CLIENT_TYPE=FullClient

View File

@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
services:
linea-mainnet:
image: ${LINEA_BESU_IMAGE:-consensys/linea-besu-package}:${LINEA_MAINNET_BESU_VERSION:-2.0.0-20260714-6a92ee2}
image: ${LINEA_BESU_IMAGE:-consensys/linea-besu-package}:${LINEA_MAINNET_BESU_VERSION:-2.2.0-20260821-8bb72b4}
sysctls:
# TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle

View File

@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
services:
linea-sepolia:
image: ${LINEA_BESU_IMAGE:-consensys/linea-besu-package}:${LINEA_SEPOLIA_BESU_VERSION:-2.0.0-20260714-6a92ee2}
image: ${LINEA_BESU_IMAGE:-consensys/linea-besu-package}:${LINEA_SEPOLIA_BESU_VERSION:-2.2.0-20260821-8bb72b4}
sysctls:
# TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle

View File

@@ -106,7 +106,7 @@ services:
shm_size: 2gb
soneium-mainnet-op-erigon-node:
image: ${SONEIUM_NODE_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/op-node}:${SONEIUM_MAINNET_NODE_VERSION:-v1.19.2}
image: ${SONEIUM_NODE_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/op-node}:${SONEIUM_MAINNET_NODE_VERSION:-v1.19.6}
ports:
- 18689:18689
- 18689:18689/udp

View File

@@ -106,7 +106,7 @@ services:
shm_size: 2gb
soneium-minato-sepolia-op-erigon-node:
image: ${SONEIUM_NODE_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/op-node}:${SONEIUM_MINATO_SEPOLIA_NODE_VERSION:-v1.19.2}
image: ${SONEIUM_NODE_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/op-node}:${SONEIUM_MINATO_SEPOLIA_NODE_VERSION:-v1.19.6}
ports:
- 17283:17283
- 17283:17283/udp

View File

@@ -106,7 +106,7 @@ services:
shm_size: 2gb
worldchain-sepolia-op-erigon-node:
image: ${WORLDCHAIN_NODE_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/op-node}:${WORLDCHAIN_SEPOLIA_NODE_VERSION:-v1.19.2}
image: ${WORLDCHAIN_NODE_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/op-node}:${WORLDCHAIN_SEPOLIA_NODE_VERSION:-v1.19.6}
ports:
- 16046:16046
- 16046:16046/udp

View File

@@ -61,9 +61,6 @@ services:
ulimits:
nofile: 1048576 # Max open files (for RPC/WS connections)
user: root
ports:
- 12111:12111
- 12111:12111/udp
expose:
- 8545
- 6060
@@ -87,7 +84,6 @@ services:
- GETH_ROLLUP_SEQUENCERHTTP=https://cel2-sequencer.celo.org
entrypoint: /bin/sh -c '[ -f /config/genesis.json ] && geth --db.engine=leveldb --gcmode=archive --datadir /data init --state.scheme=hash /config/genesis.json; [ -f /config/static-nodes.json ] && cp -f /config/static-nodes.json /data/static-nodes.json; exec geth "$@"' --
command:
- --bootnodes=enode://28f4fcb7f38c1b012087f7aef25dcb0a1257ccf1cdc4caa88584dc25416129069b514908c8cead5d0105cb0041dd65cd4ee185ae0d379a586fb07b1447e9de38@34.169.39.223:30303,enode://a9077c3e030206954c5c7f22cc16a32cb5013112aa8985e3575fadda7884a508384e1e63c077b7d9fcb4a15c716465d8585567f047c564ada2e823145591e444@34.169.212.31:30303,enode://029b007a7a56acbaa8ea50ec62cda279484bf3843fae1646f690566f784aca50e7d732a9a0530f0541e5ed82ba9bf2a4e21b9021559c5b8b527b91c9c7a38579@34.82.139.199:30303,enode://f3c96b73a5772c5efb48d5a33bf193e58080d826ba7f03e9d5bdef20c0634a4f83475add92ab6313b7a24aa4f729689efb36f5093e5d527bb25e823f8a377224@34.82.84.247:30303,enode://daa5ad65d16bcb0967cf478d9f20544bf1b6de617634e452dff7b947279f41f408b548261d62483f2034d237f61cbcf92a83fc992dbae884156f28ce68533205@34.168.45.168:30303,enode://c79d596d77268387e599695d23e941c14c220745052ea6642a71ef7df31a13874cb7f2ce2ecf5a8a458cfc9b5d9219ce3e8bc6e5c279656177579605a5533c4f@35.247.32.229:30303,enode://4151336075dd08eb6c75bfd63855e8a4bd6fd0f91ae4a81b14930f2671e16aee55495c139380c16e1094a49691875e69e40a3a5e2b4960c7859e7eb5745f9387@35.205.149.224:30303,enode://ab999db751265c714b171344de1972ed74348162de465a0444f56e50b8cfd048725b213ba1fe48c15e3dfb0638e685ea9a21b8447a54eb2962c6768f43018e5c@34.79.3.199:30303,enode://9d86d92fb38a429330546fe1aefce264e1f55c5d40249b63153e7df744005fa3c1e2da295e307041fd30ab1c618715f362c932c28715bc20bed7ae4fc76dea81@34.77.144.164:30303,enode://c82c31f21dd5bbb8dc35686ff67a4353382b4017c9ec7660a383ccb5b8e3b04c6d7aefe71203e550382f6f892795728570f8190afd885efcb7b78fa398608699@34.76.202.74:30303,enode://3bad5f57ad8de6541f02e36d806b87e7e9ca6d533c956e89a56b3054ae85d608784f2cd948dc685f7d6bbd5a2f6dd1a23cc03e529ea370dd72d880864a2af6a3@104.199.93.87:30303,enode://1decf3b8b9a0d0b8332d15218f3bf0ceb9606b0efe18f352c51effc14bbf1f4f3f46711e1d460230cb361302ceaad2be48b5b187ad946e50d729b34e463268d2@35.240.26.148:30303
- --datadir=/data
- --db.engine=leveldb
- --gcmode=archive
@@ -95,9 +91,8 @@ services:
- --metrics
- --metrics.addr=0.0.0.0
- --metrics.port=6060
- --nat=extip:${IP}
- --networkid=42220
- --port=12111
- --nodiscover
- --rollup.historicalrpc=${CELO_MAINNET_CLASSIC_ARCHIVE_RPC:-http://celo-mainnet-geth-archive:8545}
- --rpc.gascap=600000000
- --rpc.txfeecap=0
@@ -190,7 +185,7 @@ services:
- OP_NODE_L2_ENGINE_AUTH=/jwtsecret
- OP_NODE_L2_ENGINE_RPC=http://celo-mainnet-archive:8551
- OP_NODE_L2_ENGINE_RPC_TIMEOUT=120s
- OP_NODE_L2_SKIP_SYNC_START_CHECK=true
- OP_NODE_L2_SKIP_SYNC_START_CHECK=false
- OP_NODE_LOG_LEVEL=info
- OP_NODE_METRICS_ADDR=0.0.0.0
- OP_NODE_METRICS_ENABLED=true
@@ -206,7 +201,7 @@ services:
- OP_NODE_RPC_ADDR=0.0.0.0
- OP_NODE_RPC_PORT=9545
- OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log
- OP_NODE_SYNCMODE=execution-layer
- OP_NODE_SYNCMODE=consensus-layer
- OP_NODE_VERIFIER_L1_CONFS=0
entrypoint: [op-node]
command:

View File

@@ -61,9 +61,6 @@ services:
ulimits:
nofile: 1048576 # Max open files (for RPC/WS connections)
user: root
ports:
- 14087:14087
- 14087:14087/udp
expose:
- 8545
- 6060
@@ -87,7 +84,6 @@ services:
- GETH_ROLLUP_SEQUENCERHTTP=https://cel2-sequencer.celo.org
entrypoint: /bin/sh -c '[ -f /config/genesis.json ] && geth --db.engine=leveldb --gcmode=full --datadir /data init --state.scheme=hash /config/genesis.json; [ -f /config/static-nodes.json ] && cp -f /config/static-nodes.json /data/static-nodes.json; exec geth "$@"' --
command:
- --bootnodes=enode://28f4fcb7f38c1b012087f7aef25dcb0a1257ccf1cdc4caa88584dc25416129069b514908c8cead5d0105cb0041dd65cd4ee185ae0d379a586fb07b1447e9de38@34.169.39.223:30303,enode://a9077c3e030206954c5c7f22cc16a32cb5013112aa8985e3575fadda7884a508384e1e63c077b7d9fcb4a15c716465d8585567f047c564ada2e823145591e444@34.169.212.31:30303,enode://029b007a7a56acbaa8ea50ec62cda279484bf3843fae1646f690566f784aca50e7d732a9a0530f0541e5ed82ba9bf2a4e21b9021559c5b8b527b91c9c7a38579@34.82.139.199:30303,enode://f3c96b73a5772c5efb48d5a33bf193e58080d826ba7f03e9d5bdef20c0634a4f83475add92ab6313b7a24aa4f729689efb36f5093e5d527bb25e823f8a377224@34.82.84.247:30303,enode://daa5ad65d16bcb0967cf478d9f20544bf1b6de617634e452dff7b947279f41f408b548261d62483f2034d237f61cbcf92a83fc992dbae884156f28ce68533205@34.168.45.168:30303,enode://c79d596d77268387e599695d23e941c14c220745052ea6642a71ef7df31a13874cb7f2ce2ecf5a8a458cfc9b5d9219ce3e8bc6e5c279656177579605a5533c4f@35.247.32.229:30303,enode://4151336075dd08eb6c75bfd63855e8a4bd6fd0f91ae4a81b14930f2671e16aee55495c139380c16e1094a49691875e69e40a3a5e2b4960c7859e7eb5745f9387@35.205.149.224:30303,enode://ab999db751265c714b171344de1972ed74348162de465a0444f56e50b8cfd048725b213ba1fe48c15e3dfb0638e685ea9a21b8447a54eb2962c6768f43018e5c@34.79.3.199:30303,enode://9d86d92fb38a429330546fe1aefce264e1f55c5d40249b63153e7df744005fa3c1e2da295e307041fd30ab1c618715f362c932c28715bc20bed7ae4fc76dea81@34.77.144.164:30303,enode://c82c31f21dd5bbb8dc35686ff67a4353382b4017c9ec7660a383ccb5b8e3b04c6d7aefe71203e550382f6f892795728570f8190afd885efcb7b78fa398608699@34.76.202.74:30303,enode://3bad5f57ad8de6541f02e36d806b87e7e9ca6d533c956e89a56b3054ae85d608784f2cd948dc685f7d6bbd5a2f6dd1a23cc03e529ea370dd72d880864a2af6a3@104.199.93.87:30303,enode://1decf3b8b9a0d0b8332d15218f3bf0ceb9606b0efe18f352c51effc14bbf1f4f3f46711e1d460230cb361302ceaad2be48b5b187ad946e50d729b34e463268d2@35.240.26.148:30303
- --datadir=/data
- --db.engine=leveldb
- --gcmode=full
@@ -95,9 +91,8 @@ services:
- --metrics
- --metrics.addr=0.0.0.0
- --metrics.port=6060
- --nat=extip:${IP}
- --networkid=42220
- --port=14087
- --nodiscover
- --rpc.gascap=600000000
- --rpc.txfeecap=0
- --state.scheme=hash
@@ -189,7 +184,7 @@ services:
- OP_NODE_L2_ENGINE_AUTH=/jwtsecret
- OP_NODE_L2_ENGINE_RPC=http://celo-mainnet:8551
- OP_NODE_L2_ENGINE_RPC_TIMEOUT=120s
- OP_NODE_L2_SKIP_SYNC_START_CHECK=true
- OP_NODE_L2_SKIP_SYNC_START_CHECK=false
- OP_NODE_LOG_LEVEL=info
- OP_NODE_METRICS_ADDR=0.0.0.0
- OP_NODE_METRICS_ENABLED=true
@@ -205,7 +200,7 @@ services:
- OP_NODE_RPC_ADDR=0.0.0.0
- OP_NODE_RPC_PORT=9545
- OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log
- OP_NODE_SYNCMODE=execution-layer
- OP_NODE_SYNCMODE=consensus-layer
- OP_NODE_VERIFIER_L1_CONFS=0
entrypoint: [op-node]
command:

View File

@@ -61,9 +61,6 @@ services:
ulimits:
nofile: 1048576 # Max open files (for RPC/WS connections)
user: root
ports:
- 11775:11775
- 11775:11775/udp
expose:
- 8545
- 6060
@@ -87,7 +84,6 @@ services:
- GETH_ROLLUP_SEQUENCERHTTP=https://cel2-sequencer.celo.org
entrypoint: /bin/sh -c '[ -f /config/genesis.json ] && geth --db.engine=pebble --gcmode=full --datadir /data init --state.scheme=hash /config/genesis.json; [ -f /config/static-nodes.json ] && cp -f /config/static-nodes.json /data/static-nodes.json; exec geth "$@"' --
command:
- --bootnodes=enode://28f4fcb7f38c1b012087f7aef25dcb0a1257ccf1cdc4caa88584dc25416129069b514908c8cead5d0105cb0041dd65cd4ee185ae0d379a586fb07b1447e9de38@34.169.39.223:30303,enode://a9077c3e030206954c5c7f22cc16a32cb5013112aa8985e3575fadda7884a508384e1e63c077b7d9fcb4a15c716465d8585567f047c564ada2e823145591e444@34.169.212.31:30303,enode://029b007a7a56acbaa8ea50ec62cda279484bf3843fae1646f690566f784aca50e7d732a9a0530f0541e5ed82ba9bf2a4e21b9021559c5b8b527b91c9c7a38579@34.82.139.199:30303,enode://f3c96b73a5772c5efb48d5a33bf193e58080d826ba7f03e9d5bdef20c0634a4f83475add92ab6313b7a24aa4f729689efb36f5093e5d527bb25e823f8a377224@34.82.84.247:30303,enode://daa5ad65d16bcb0967cf478d9f20544bf1b6de617634e452dff7b947279f41f408b548261d62483f2034d237f61cbcf92a83fc992dbae884156f28ce68533205@34.168.45.168:30303,enode://c79d596d77268387e599695d23e941c14c220745052ea6642a71ef7df31a13874cb7f2ce2ecf5a8a458cfc9b5d9219ce3e8bc6e5c279656177579605a5533c4f@35.247.32.229:30303,enode://4151336075dd08eb6c75bfd63855e8a4bd6fd0f91ae4a81b14930f2671e16aee55495c139380c16e1094a49691875e69e40a3a5e2b4960c7859e7eb5745f9387@35.205.149.224:30303,enode://ab999db751265c714b171344de1972ed74348162de465a0444f56e50b8cfd048725b213ba1fe48c15e3dfb0638e685ea9a21b8447a54eb2962c6768f43018e5c@34.79.3.199:30303,enode://9d86d92fb38a429330546fe1aefce264e1f55c5d40249b63153e7df744005fa3c1e2da295e307041fd30ab1c618715f362c932c28715bc20bed7ae4fc76dea81@34.77.144.164:30303,enode://c82c31f21dd5bbb8dc35686ff67a4353382b4017c9ec7660a383ccb5b8e3b04c6d7aefe71203e550382f6f892795728570f8190afd885efcb7b78fa398608699@34.76.202.74:30303,enode://3bad5f57ad8de6541f02e36d806b87e7e9ca6d533c956e89a56b3054ae85d608784f2cd948dc685f7d6bbd5a2f6dd1a23cc03e529ea370dd72d880864a2af6a3@104.199.93.87:30303,enode://1decf3b8b9a0d0b8332d15218f3bf0ceb9606b0efe18f352c51effc14bbf1f4f3f46711e1d460230cb361302ceaad2be48b5b187ad946e50d729b34e463268d2@35.240.26.148:30303
- --datadir=/data
- --db.engine=pebble
- --gcmode=full
@@ -95,9 +91,8 @@ services:
- --metrics
- --metrics.addr=0.0.0.0
- --metrics.port=6060
- --nat=extip:${IP}
- --networkid=42220
- --port=11775
- --nodiscover
- --rpc.gascap=600000000
- --rpc.txfeecap=0
- --state.scheme=hash
@@ -187,7 +182,7 @@ services:
- OP_NODE_L2_ENGINE_AUTH=/jwtsecret
- OP_NODE_L2_ENGINE_RPC=http://celo-mainnet:8551
- OP_NODE_L2_ENGINE_RPC_TIMEOUT=120s
- OP_NODE_L2_SKIP_SYNC_START_CHECK=true
- OP_NODE_L2_SKIP_SYNC_START_CHECK=false
- OP_NODE_LOG_LEVEL=info
- OP_NODE_METRICS_ADDR=0.0.0.0
- OP_NODE_METRICS_ENABLED=true
@@ -203,7 +198,7 @@ services:
- OP_NODE_RPC_ADDR=0.0.0.0
- OP_NODE_RPC_PORT=9545
- OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log
- OP_NODE_SYNCMODE=execution-layer
- OP_NODE_SYNCMODE=consensus-layer
- OP_NODE_VERIFIER_L1_CONFS=0
entrypoint: [op-node]
command:

View File

@@ -61,9 +61,6 @@ services:
ulimits:
nofile: 1048576 # Max open files (for RPC/WS connections)
user: root
ports:
- 11993:11993
- 11993:11993/udp
expose:
- 8545
- 6060
@@ -87,7 +84,6 @@ services:
- GETH_ROLLUP_SEQUENCERHTTP=https://cel2-sequencer.celo.org
entrypoint: /bin/sh -c '[ -f /config/genesis.json ] && geth --db.engine=pebble --gcmode=full --datadir /data init --state.scheme=path /config/genesis.json; [ -f /config/static-nodes.json ] && cp -f /config/static-nodes.json /data/static-nodes.json; exec geth "$@"' --
command:
- --bootnodes=enode://28f4fcb7f38c1b012087f7aef25dcb0a1257ccf1cdc4caa88584dc25416129069b514908c8cead5d0105cb0041dd65cd4ee185ae0d379a586fb07b1447e9de38@34.169.39.223:30303,enode://a9077c3e030206954c5c7f22cc16a32cb5013112aa8985e3575fadda7884a508384e1e63c077b7d9fcb4a15c716465d8585567f047c564ada2e823145591e444@34.169.212.31:30303,enode://029b007a7a56acbaa8ea50ec62cda279484bf3843fae1646f690566f784aca50e7d732a9a0530f0541e5ed82ba9bf2a4e21b9021559c5b8b527b91c9c7a38579@34.82.139.199:30303,enode://f3c96b73a5772c5efb48d5a33bf193e58080d826ba7f03e9d5bdef20c0634a4f83475add92ab6313b7a24aa4f729689efb36f5093e5d527bb25e823f8a377224@34.82.84.247:30303,enode://daa5ad65d16bcb0967cf478d9f20544bf1b6de617634e452dff7b947279f41f408b548261d62483f2034d237f61cbcf92a83fc992dbae884156f28ce68533205@34.168.45.168:30303,enode://c79d596d77268387e599695d23e941c14c220745052ea6642a71ef7df31a13874cb7f2ce2ecf5a8a458cfc9b5d9219ce3e8bc6e5c279656177579605a5533c4f@35.247.32.229:30303,enode://4151336075dd08eb6c75bfd63855e8a4bd6fd0f91ae4a81b14930f2671e16aee55495c139380c16e1094a49691875e69e40a3a5e2b4960c7859e7eb5745f9387@35.205.149.224:30303,enode://ab999db751265c714b171344de1972ed74348162de465a0444f56e50b8cfd048725b213ba1fe48c15e3dfb0638e685ea9a21b8447a54eb2962c6768f43018e5c@34.79.3.199:30303,enode://9d86d92fb38a429330546fe1aefce264e1f55c5d40249b63153e7df744005fa3c1e2da295e307041fd30ab1c618715f362c932c28715bc20bed7ae4fc76dea81@34.77.144.164:30303,enode://c82c31f21dd5bbb8dc35686ff67a4353382b4017c9ec7660a383ccb5b8e3b04c6d7aefe71203e550382f6f892795728570f8190afd885efcb7b78fa398608699@34.76.202.74:30303,enode://3bad5f57ad8de6541f02e36d806b87e7e9ca6d533c956e89a56b3054ae85d608784f2cd948dc685f7d6bbd5a2f6dd1a23cc03e529ea370dd72d880864a2af6a3@104.199.93.87:30303,enode://1decf3b8b9a0d0b8332d15218f3bf0ceb9606b0efe18f352c51effc14bbf1f4f3f46711e1d460230cb361302ceaad2be48b5b187ad946e50d729b34e463268d2@35.240.26.148:30303
- --datadir=/data
- --db.engine=pebble
- --gcmode=full
@@ -95,13 +91,12 @@ services:
- --metrics
- --metrics.addr=0.0.0.0
- --metrics.port=6060
- --nat=extip:${IP}
- --networkid=42220
- --port=11993
- --nodiscover
- --rpc.gascap=600000000
- --rpc.txfeecap=0
- --state.scheme=path
- --syncmode=snap
- --syncmode=full
- --http
- --http.addr=0.0.0.0
- --http.api=eth,net,web3,debug,admin,txpool,engine
@@ -187,7 +182,7 @@ services:
- OP_NODE_L2_ENGINE_AUTH=/jwtsecret
- OP_NODE_L2_ENGINE_RPC=http://celo-mainnet:8551
- OP_NODE_L2_ENGINE_RPC_TIMEOUT=120s
- OP_NODE_L2_SKIP_SYNC_START_CHECK=true
- OP_NODE_L2_SKIP_SYNC_START_CHECK=false
- OP_NODE_LOG_LEVEL=info
- OP_NODE_METRICS_ADDR=0.0.0.0
- OP_NODE_METRICS_ENABLED=true
@@ -203,7 +198,7 @@ services:
- OP_NODE_RPC_ADDR=0.0.0.0
- OP_NODE_RPC_PORT=9545
- OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log
- OP_NODE_SYNCMODE=execution-layer
- OP_NODE_SYNCMODE=consensus-layer
- OP_NODE_VERIFIER_L1_CONFS=0
entrypoint: [op-node]
command:

View File

@@ -107,7 +107,7 @@ services:
- traefik.http.routers.soneium-minato-sepolia-op-geth-archive-leveldb-hash.middlewares=soneium-minato-sepolia-op-geth-archive-leveldb-hash-stripprefix, ipallowlist
soneium-minato-sepolia-archive-node:
image: ${SONEIUM_NODE_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/op-node}:${SONEIUM_MINATO_SEPOLIA_NODE_VERSION:-v1.19.2}
image: ${SONEIUM_NODE_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/op-node}:${SONEIUM_MINATO_SEPOLIA_NODE_VERSION:-v1.19.6}
ports:
- 16279:16279
- 16279:16279/udp

View File

@@ -107,7 +107,7 @@ services:
- traefik.http.routers.soneium-minato-sepolia-op-geth-pruned-pebble-path.middlewares=soneium-minato-sepolia-op-geth-pruned-pebble-path-stripprefix, ipallowlist
soneium-minato-sepolia-node:
image: ${SONEIUM_NODE_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/op-node}:${SONEIUM_MINATO_SEPOLIA_NODE_VERSION:-v1.19.2}
image: ${SONEIUM_NODE_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/op-node}:${SONEIUM_MINATO_SEPOLIA_NODE_VERSION:-v1.19.6}
ports:
- 17166:17166
- 17166:17166/udp

View File

@@ -127,7 +127,7 @@ services:
- OP_NODE_METRICS_PORT=7300
- OP_NODE_OVERRIDE_GRANITE=1725984001
- OP_NODE_OVERRIDE_HOLOCENE=1732633200
- OP_NODE_OVERRIDE_KARST=1781712000
- OP_NODE_OVERRIDE_KARST=1787068801
- OP_NODE_OVERRIDE_PECTRABLOBSCHEDULE=1742486400
- OP_NODE_P2P_ADVERTISE_IP=${IP}
- OP_NODE_P2P_BOOTNODES=enode://c9fb471294f243ce4aa32f8987d743fed73fa109013996f169f81914efd2a76762f2f142bd6dcc147afe342c752a587e06ef2ea1418c99ff757986242e372f3d@34.105.58.183:9222?discport=30301,enode://d25ce99435982b04d60c4b41ba256b84b888626db7bee45a9419382300fbe907359ae5ef250346785bff8d3b9d07cd3e017a27e2ee3cfda3bcbb0ba762ac9674@bootnode.conduit.xyz:0?discport=30301,enode://2d4e7e9d48f4dd4efe9342706dd1b0024681bd4c3300d021f86fc75eab7865d4e0cbec6fbc883f011cfd6a57423e7e2f6e104baad2b744c3cafaec6bc7dc92c1@34.65.43.171:0?discport=30305,enode://9d7a3efefe442351217e73b3a593bcb8efffb55b4807699972145324eab5e6b382152f8d24f6301baebbfb5ecd4127bd3faab2842c04cd432bdf50ba092f6645@34.65.109.126:0?discport=30305

View File

@@ -109,7 +109,7 @@ services:
- traefik.http.routers.worldchain-sepolia-op-geth-archive-leveldb-hash.middlewares=worldchain-sepolia-op-geth-archive-leveldb-hash-stripprefix, ipallowlist
worldchain-sepolia-archive-node:
image: ${WORLDCHAIN_NODE_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/op-node}:${WORLDCHAIN_SEPOLIA_NODE_VERSION:-v1.19.2}
image: ${WORLDCHAIN_NODE_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/op-node}:${WORLDCHAIN_SEPOLIA_NODE_VERSION:-v1.19.6}
ports:
- 16720:16720
- 16720:16720/udp

View File

@@ -109,7 +109,7 @@ services:
- traefik.http.routers.worldchain-sepolia-op-geth-pruned-pebble-path.middlewares=worldchain-sepolia-op-geth-pruned-pebble-path-stripprefix, ipallowlist
worldchain-sepolia-node:
image: ${WORLDCHAIN_NODE_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/op-node}:${WORLDCHAIN_SEPOLIA_NODE_VERSION:-v1.19.2}
image: ${WORLDCHAIN_NODE_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/op-node}:${WORLDCHAIN_SEPOLIA_NODE_VERSION:-v1.19.6}
ports:
- 19620:19620
- 19620:19620/udp

View File

@@ -0,0 +1,187 @@
---
x-logging-defaults: &logging-defaults
driver: json-file
options:
max-size: "512m"
max-file: "2"
# 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:op/reth/base-mainnet-op-reth-minimal-trace--kona.yml
#
# docker compose up -d
#
# curl -X POST https://${IP}.traefik.me/base-mainnet-op-reth-minimal \
# -H "Content-Type: application/json" \
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
services:
base-mainnet-op-reth-minimal:
image: ${BASE_RETH_IMAGE:-ghcr.io/base/node-reth}:${BASE_MAINNET_RETH_VERSION:-v1.1.1}
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)
memlock: -1 # Disable memory locking limits (for in-memory DBs like MDBX)
user: root
ports:
- 11240:11240
- 11240:11240/udp
expose:
- 8545
- 9001
- 8551
entrypoint: [/app/base-reth-node, node]
command:
- --chain=base
- --datadir=/root/.local/share/reth
- --discovery.addr=0.0.0.0
- --discovery.port=11240
- --discovery.v5.addr=0.0.0.0
- --discovery.v5.port=11240
- --engine.cross-block-cache-size=${BASE_MAINNET_RETH_STATE_CACHE:-4096}
- --max-inbound-peers=50
- --max-outbound-peers=50
- --metrics=0.0.0.0:9001
- --nat=extip:${IP}
- --port=11240
- --rollup.sequencer-http=https://mainnet-sequencer.base.org
- --rpc-cache.max-blocks=10000
- --rpc-cache.max-concurrent-db-requests=2048
- --rpc.gascap=600000000
- --rpc.max-blocks-per-filter=0
- --rpc.max-connections=50000
- --rpc.max-logs-per-response=0
- --rpc.max-trace-filter-blocks=10000
- --http
- --http.addr=0.0.0.0
- --http.api=admin,debug,eth,net,trace,txpool,web3,rpc,reth,ots,flashbots,mev
- --http.corsdomain=*
- --http.port=8545
- --ws
- --ws.addr=0.0.0.0
- --ws.api=admin,debug,eth,net,trace,txpool,web3,rpc,reth,ots,flashbots,mev
- --ws.origins=*
- --ws.port=8545
- --authrpc.addr=0.0.0.0
- --authrpc.jwtsecret=/jwtsecret
restart: unless-stopped
stop_grace_period: 5m
networks:
- chains
volumes:
- ${BASE_MAINNET_OP_RETH_MINIMAL_TRACE_DATA:-base-mainnet-op-reth-minimal-trace}:/root/.local/share/reth
- .jwtsecret:/jwtsecret:ro
- /slowdisk:/slowdisk
logging: *logging-defaults
labels:
- prometheus-scrape.enabled=true
- prometheus-scrape.port=9001
- prometheus-scrape.path=/metrics
- traefik.enable=true
- traefik.http.middlewares.base-mainnet-op-reth-minimal-trace-stripprefix.stripprefix.prefixes=/base-mainnet-op-reth-minimal
- traefik.http.services.base-mainnet-op-reth-minimal-trace.loadbalancer.server.port=8545
- ${NO_SSL:-traefik.http.routers.base-mainnet-op-reth-minimal-trace.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.base-mainnet-op-reth-minimal-trace.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.base-mainnet-op-reth-minimal-trace.rule=Host(`$DOMAIN`) && (Path(`/base-mainnet-op-reth-minimal`) || Path(`/base-mainnet-op-reth-minimal/`))}
- ${NO_SSL:+traefik.http.routers.base-mainnet-op-reth-minimal-trace.rule=Path(`/base-mainnet-op-reth-minimal`) || Path(`/base-mainnet-op-reth-minimal/`)}
- traefik.http.routers.base-mainnet-op-reth-minimal-trace.middlewares=base-mainnet-op-reth-minimal-trace-stripprefix, ipallowlist
shm_size: 2gb
base-mainnet-op-reth-minimal-node:
image: ${BASE_KONA_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/kona-node}:${BASE_MAINNET_KONA_VERSION:-v1.6.2}
ports:
- 16240:16240
- 16240:16240/udp
environment:
- KONA_METRICS_ADDR=0.0.0.0
- KONA_NODE_L1_BEACON=${ETHEREUM_MAINNET_BEACON_REST}
- KONA_NODE_L1_ETH_RPC=${BASE_MAINNET_L1_EXECUTION_RPC:-${ETHEREUM_MAINNET_EXECUTION_RPC}}
- KONA_NODE_L1_TRUST_RPC=${ETHEREUM_MAINNET_EXECUTION_TRUST:-false}
- KONA_NODE_L2_CHAIN_ID=8453
- KONA_NODE_L2_ENGINE_AUTH=/jwtsecret
- KONA_NODE_L2_ENGINE_RPC=http://base-mainnet-op-reth-minimal:8551
- KONA_NODE_L2_ENGINE_TIMEOUT=120000
- KONA_NODE_L2_TRUST_RPC=true
- KONA_NODE_METRICS_PORT=7300
- KONA_NODE_MODE=Validator
- KONA_NODE_P2P_ADVERTISE_IP=${IP}
- KONA_NODE_P2P_LISTEN_IP=0.0.0.0
- KONA_NODE_P2P_LISTEN_TCP_PORT=16240
- KONA_NODE_P2P_LISTEN_UDP_PORT=16240
- KONA_NODE_RPC_ADDR=0.0.0.0
- KONA_NODE_RPC_PORT=9545
- OP_NODE_SYNCMODE=execution-layer
entrypoint: [kona-node, node]
restart: unless-stopped
depends_on:
base-mainnet-op-reth-minimal:
condition: service_started
restart: true
networks:
- chains
volumes:
- .jwtsecret:/jwtsecret:ro
logging: *logging-defaults
labels:
- prometheus-scrape.enabled=true
- prometheus-scrape.port=7300
- prometheus-scrape.path=/metrics
- traefik.enable=true
- traefik.http.middlewares.base-mainnet-op-reth-minimal-trace-node-stripprefix.stripprefix.prefixes=/base-mainnet-op-reth-minimal/node
- traefik.http.services.base-mainnet-op-reth-minimal-trace-node.loadbalancer.server.port=9545
- ${NO_SSL:-traefik.http.routers.base-mainnet-op-reth-minimal-trace-node.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.base-mainnet-op-reth-minimal-trace-node.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.base-mainnet-op-reth-minimal-trace-node.rule=Host(`$DOMAIN`) && PathPrefix(`/base-mainnet-op-reth-minimal/node`)}
- ${NO_SSL:+traefik.http.routers.base-mainnet-op-reth-minimal-trace-node.rule=PathPrefix(`/base-mainnet-op-reth-minimal/node`)}
- traefik.http.routers.base-mainnet-op-reth-minimal-trace-node.middlewares=base-mainnet-op-reth-minimal-trace-node-stripprefix, ipallowlist
volumes:
base-mainnet-op-reth-minimal-trace:
x-upstreams:
- id: $${ID}
labels:
provider: $${PROVIDER}
connection:
generic:
rpc:
url: $${RPC_URL}
ws:
frameSize: 20Mb
msgSize: 50Mb
url: $${WS_URL}
chain: base
method-groups:
enabled:
- debug
- filter
- trace
methods:
disabled:
- name: eth_maxPriorityFeePerGas
enabled:
- name: txpool_content # TODO: should be disabled for rollup nodes
...

View File

@@ -0,0 +1,188 @@
---
x-logging-defaults: &logging-defaults
driver: json-file
options:
max-size: "512m"
max-file: "2"
# 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:op/reth/base-mainnet-op-reth-pruned-trace--kona.yml
#
# docker compose up -d
#
# curl -X POST https://${IP}.traefik.me/base-mainnet-op-reth-pruned \
# -H "Content-Type: application/json" \
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
services:
base-mainnet-op-reth-pruned:
image: ${BASE_RETH_IMAGE:-ghcr.io/base/node-reth}:${BASE_MAINNET_RETH_VERSION:-v1.1.1}
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)
memlock: -1 # Disable memory locking limits (for in-memory DBs like MDBX)
user: root
ports:
- 14759:14759
- 14759:14759/udp
expose:
- 8545
- 9001
- 8551
entrypoint: [/app/base-reth-node, node]
command:
- --chain=base
- --datadir=/root/.local/share/reth
- --discovery.addr=0.0.0.0
- --discovery.port=14759
- --discovery.v5.addr=0.0.0.0
- --discovery.v5.port=14759
- --engine.cross-block-cache-size=${BASE_MAINNET_RETH_STATE_CACHE:-4096}
- --full
- --max-inbound-peers=50
- --max-outbound-peers=50
- --metrics=0.0.0.0:9001
- --nat=extip:${IP}
- --port=14759
- --rollup.sequencer-http=https://mainnet-sequencer.base.org
- --rpc-cache.max-blocks=10000
- --rpc-cache.max-concurrent-db-requests=2048
- --rpc.gascap=600000000
- --rpc.max-blocks-per-filter=0
- --rpc.max-connections=50000
- --rpc.max-logs-per-response=0
- --rpc.max-trace-filter-blocks=10000
- --http
- --http.addr=0.0.0.0
- --http.api=admin,debug,eth,net,trace,txpool,web3,rpc,reth,ots,flashbots,mev
- --http.corsdomain=*
- --http.port=8545
- --ws
- --ws.addr=0.0.0.0
- --ws.api=admin,debug,eth,net,trace,txpool,web3,rpc,reth,ots,flashbots,mev
- --ws.origins=*
- --ws.port=8545
- --authrpc.addr=0.0.0.0
- --authrpc.jwtsecret=/jwtsecret
restart: unless-stopped
stop_grace_period: 5m
networks:
- chains
volumes:
- ${BASE_MAINNET_OP_RETH_PRUNED_TRACE_DATA:-base-mainnet-op-reth-pruned-trace}:/root/.local/share/reth
- .jwtsecret:/jwtsecret:ro
- /slowdisk:/slowdisk
logging: *logging-defaults
labels:
- prometheus-scrape.enabled=true
- prometheus-scrape.port=9001
- prometheus-scrape.path=/metrics
- traefik.enable=true
- traefik.http.middlewares.base-mainnet-op-reth-pruned-trace-stripprefix.stripprefix.prefixes=/base-mainnet-op-reth-pruned
- traefik.http.services.base-mainnet-op-reth-pruned-trace.loadbalancer.server.port=8545
- ${NO_SSL:-traefik.http.routers.base-mainnet-op-reth-pruned-trace.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.base-mainnet-op-reth-pruned-trace.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.base-mainnet-op-reth-pruned-trace.rule=Host(`$DOMAIN`) && (Path(`/base-mainnet-op-reth-pruned`) || Path(`/base-mainnet-op-reth-pruned/`))}
- ${NO_SSL:+traefik.http.routers.base-mainnet-op-reth-pruned-trace.rule=Path(`/base-mainnet-op-reth-pruned`) || Path(`/base-mainnet-op-reth-pruned/`)}
- traefik.http.routers.base-mainnet-op-reth-pruned-trace.middlewares=base-mainnet-op-reth-pruned-trace-stripprefix, ipallowlist
shm_size: 2gb
base-mainnet-op-reth-pruned-node:
image: ${BASE_KONA_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/kona-node}:${BASE_MAINNET_KONA_VERSION:-v1.6.2}
ports:
- 19759:19759
- 19759:19759/udp
environment:
- KONA_METRICS_ADDR=0.0.0.0
- KONA_NODE_L1_BEACON=${ETHEREUM_MAINNET_BEACON_REST}
- KONA_NODE_L1_ETH_RPC=${BASE_MAINNET_L1_EXECUTION_RPC:-${ETHEREUM_MAINNET_EXECUTION_RPC}}
- KONA_NODE_L1_TRUST_RPC=${ETHEREUM_MAINNET_EXECUTION_TRUST:-false}
- KONA_NODE_L2_CHAIN_ID=8453
- KONA_NODE_L2_ENGINE_AUTH=/jwtsecret
- KONA_NODE_L2_ENGINE_RPC=http://base-mainnet-op-reth-pruned:8551
- KONA_NODE_L2_ENGINE_TIMEOUT=120000
- KONA_NODE_L2_TRUST_RPC=true
- KONA_NODE_METRICS_PORT=7300
- KONA_NODE_MODE=Validator
- KONA_NODE_P2P_ADVERTISE_IP=${IP}
- KONA_NODE_P2P_LISTEN_IP=0.0.0.0
- KONA_NODE_P2P_LISTEN_TCP_PORT=19759
- KONA_NODE_P2P_LISTEN_UDP_PORT=19759
- KONA_NODE_RPC_ADDR=0.0.0.0
- KONA_NODE_RPC_PORT=9545
- OP_NODE_SYNCMODE=execution-layer
entrypoint: [kona-node, node]
restart: unless-stopped
depends_on:
base-mainnet-op-reth-pruned:
condition: service_started
restart: true
networks:
- chains
volumes:
- .jwtsecret:/jwtsecret:ro
logging: *logging-defaults
labels:
- prometheus-scrape.enabled=true
- prometheus-scrape.port=7300
- prometheus-scrape.path=/metrics
- traefik.enable=true
- traefik.http.middlewares.base-mainnet-op-reth-pruned-trace-node-stripprefix.stripprefix.prefixes=/base-mainnet-op-reth-pruned/node
- traefik.http.services.base-mainnet-op-reth-pruned-trace-node.loadbalancer.server.port=9545
- ${NO_SSL:-traefik.http.routers.base-mainnet-op-reth-pruned-trace-node.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.base-mainnet-op-reth-pruned-trace-node.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.base-mainnet-op-reth-pruned-trace-node.rule=Host(`$DOMAIN`) && PathPrefix(`/base-mainnet-op-reth-pruned/node`)}
- ${NO_SSL:+traefik.http.routers.base-mainnet-op-reth-pruned-trace-node.rule=PathPrefix(`/base-mainnet-op-reth-pruned/node`)}
- traefik.http.routers.base-mainnet-op-reth-pruned-trace-node.middlewares=base-mainnet-op-reth-pruned-trace-node-stripprefix, ipallowlist
volumes:
base-mainnet-op-reth-pruned-trace:
x-upstreams:
- id: $${ID}
labels:
provider: $${PROVIDER}
connection:
generic:
rpc:
url: $${RPC_URL}
ws:
frameSize: 20Mb
msgSize: 50Mb
url: $${WS_URL}
chain: base
method-groups:
enabled:
- debug
- filter
- trace
methods:
disabled:
- name: eth_maxPriorityFeePerGas
enabled:
- name: txpool_content # TODO: should be disabled for rollup nodes
...

View File

@@ -0,0 +1,188 @@
---
x-logging-defaults: &logging-defaults
driver: json-file
options:
max-size: "512m"
max-file: "2"
# 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:op/reth/base-sepolia-op-reth-archive-trace--kona.yml
#
# docker compose up -d
#
# curl -X POST https://${IP}.traefik.me/base-sepolia-op-reth \
# -H "Content-Type: application/json" \
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
services:
base-sepolia-op-reth:
image: ${BASE_RETH_IMAGE:-ghcr.io/base/node-reth}:${BASE_SEPOLIA_RETH_VERSION:-v1.1.0}
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)
memlock: -1 # Disable memory locking limits (for in-memory DBs like MDBX)
user: root
ports:
- 11390:11390
- 11390:11390/udp
expose:
- 8545
- 9001
- 8551
entrypoint: [/app/base-reth-node, node]
command:
- --chain=base-sepolia
- --datadir=/root/.local/share/reth
- --discovery.addr=0.0.0.0
- --discovery.port=11390
- --discovery.v5.addr=0.0.0.0
- --discovery.v5.port=11390
- --engine.cross-block-cache-size=${BASE_SEPOLIA_RETH_STATE_CACHE:-4096}
- --max-inbound-peers=50
- --max-outbound-peers=50
- --metrics=0.0.0.0:9001
- --nat=extip:${IP}
- --port=11390
- --rollup.sequencer-http=https://sepolia-sequencer.base.org
- --rpc-cache.max-blocks=10000
- --rpc-cache.max-concurrent-db-requests=2048
- --rpc.gascap=600000000
- --rpc.max-blocks-per-filter=0
- --rpc.max-connections=50000
- --rpc.max-logs-per-response=0
- --rpc.max-trace-filter-blocks=10000
- --http
- --http.addr=0.0.0.0
- --http.api=admin,debug,eth,net,trace,txpool,web3,rpc,reth,ots,flashbots,mev
- --http.corsdomain=*
- --http.port=8545
- --ws
- --ws.addr=0.0.0.0
- --ws.api=admin,debug,eth,net,trace,txpool,web3,rpc,reth,ots,flashbots,mev
- --ws.origins=*
- --ws.port=8545
- --authrpc.addr=0.0.0.0
- --authrpc.jwtsecret=/jwtsecret
restart: unless-stopped
stop_grace_period: 5m
networks:
- chains
volumes:
- ${BASE_SEPOLIA_OP_RETH_ARCHIVE_TRACE_DATA:-base-sepolia-op-reth-archive-trace}:/root/.local/share/reth
- .jwtsecret:/jwtsecret:ro
- /slowdisk:/slowdisk
logging: *logging-defaults
labels:
- prometheus-scrape.enabled=true
- prometheus-scrape.port=9001
- prometheus-scrape.path=/metrics
- traefik.enable=true
- traefik.http.middlewares.base-sepolia-op-reth-archive-trace-stripprefix.stripprefix.prefixes=/base-sepolia-op-reth
- traefik.http.services.base-sepolia-op-reth-archive-trace.loadbalancer.server.port=8545
- ${NO_SSL:-traefik.http.routers.base-sepolia-op-reth-archive-trace.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.base-sepolia-op-reth-archive-trace.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.base-sepolia-op-reth-archive-trace.rule=Host(`$DOMAIN`) && (Path(`/base-sepolia-op-reth`) || Path(`/base-sepolia-op-reth/`))}
- ${NO_SSL:+traefik.http.routers.base-sepolia-op-reth-archive-trace.rule=Path(`/base-sepolia-op-reth`) || Path(`/base-sepolia-op-reth/`)}
- traefik.http.routers.base-sepolia-op-reth-archive-trace.middlewares=base-sepolia-op-reth-archive-trace-stripprefix, ipallowlist
shm_size: 2gb
base-sepolia-op-reth-node:
image: ${BASE_KONA_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/kona-node}:${BASE_SEPOLIA_KONA_VERSION:-v1.6.2}
ports:
- 16390:16390
- 16390:16390/udp
environment:
- KONA_METRICS_ADDR=0.0.0.0
- KONA_NODE_L1_BEACON=${ETHEREUM_SEPOLIA_BEACON_REST}
- KONA_NODE_L1_ETH_RPC=${BASE_SEPOLIA_L1_EXECUTION_RPC:-${ETHEREUM_SEPOLIA_EXECUTION_RPC}}
- KONA_NODE_L1_TRUST_RPC=${ETHEREUM_SEPOLIA_EXECUTION_TRUST:-false}
- KONA_NODE_L2_CHAIN_ID=84532
- KONA_NODE_L2_ENGINE_AUTH=/jwtsecret
- KONA_NODE_L2_ENGINE_RPC=http://base-sepolia-op-reth:8551
- KONA_NODE_L2_ENGINE_TIMEOUT=120000
- KONA_NODE_L2_TRUST_RPC=true
- KONA_NODE_METRICS_PORT=7300
- KONA_NODE_MODE=Validator
- KONA_NODE_OVERRIDE_PECTRA_BLOB_SCHEDULE=1742486400
- KONA_NODE_P2P_ADVERTISE_IP=${IP}
- KONA_NODE_P2P_LISTEN_IP=0.0.0.0
- KONA_NODE_P2P_LISTEN_TCP_PORT=16390
- KONA_NODE_P2P_LISTEN_UDP_PORT=16390
- KONA_NODE_RPC_ADDR=0.0.0.0
- KONA_NODE_RPC_PORT=9545
- OP_NODE_SYNCMODE=execution-layer
entrypoint: [kona-node, node]
restart: unless-stopped
depends_on:
base-sepolia-op-reth:
condition: service_started
restart: true
networks:
- chains
volumes:
- .jwtsecret:/jwtsecret:ro
logging: *logging-defaults
labels:
- prometheus-scrape.enabled=true
- prometheus-scrape.port=7300
- prometheus-scrape.path=/metrics
- traefik.enable=true
- traefik.http.middlewares.base-sepolia-op-reth-archive-trace-node-stripprefix.stripprefix.prefixes=/base-sepolia-op-reth/node
- traefik.http.services.base-sepolia-op-reth-archive-trace-node.loadbalancer.server.port=9545
- ${NO_SSL:-traefik.http.routers.base-sepolia-op-reth-archive-trace-node.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.base-sepolia-op-reth-archive-trace-node.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.base-sepolia-op-reth-archive-trace-node.rule=Host(`$DOMAIN`) && PathPrefix(`/base-sepolia-op-reth/node`)}
- ${NO_SSL:+traefik.http.routers.base-sepolia-op-reth-archive-trace-node.rule=PathPrefix(`/base-sepolia-op-reth/node`)}
- traefik.http.routers.base-sepolia-op-reth-archive-trace-node.middlewares=base-sepolia-op-reth-archive-trace-node-stripprefix, ipallowlist
volumes:
base-sepolia-op-reth-archive-trace:
x-upstreams:
- id: $${ID}
labels:
provider: $${PROVIDER}
connection:
generic:
rpc:
url: $${RPC_URL}
ws:
frameSize: 20Mb
msgSize: 50Mb
url: $${WS_URL}
chain: base-sepolia
method-groups:
enabled:
- debug
- filter
- trace
methods:
disabled:
- name: eth_maxPriorityFeePerGas
enabled:
- name: txpool_content # TODO: should be disabled for rollup nodes
...

View File

@@ -0,0 +1,188 @@
---
x-logging-defaults: &logging-defaults
driver: json-file
options:
max-size: "512m"
max-file: "2"
# 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:op/reth/base-sepolia-op-reth-minimal-trace--kona.yml
#
# docker compose up -d
#
# curl -X POST https://${IP}.traefik.me/base-sepolia-op-reth-minimal \
# -H "Content-Type: application/json" \
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
services:
base-sepolia-op-reth-minimal:
image: ${BASE_RETH_IMAGE:-ghcr.io/base/node-reth}:${BASE_SEPOLIA_RETH_VERSION:-v1.1.0}
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)
memlock: -1 # Disable memory locking limits (for in-memory DBs like MDBX)
user: root
ports:
- 12165:12165
- 12165:12165/udp
expose:
- 8545
- 9001
- 8551
entrypoint: [/app/base-reth-node, node]
command:
- --chain=base-sepolia
- --datadir=/root/.local/share/reth
- --discovery.addr=0.0.0.0
- --discovery.port=12165
- --discovery.v5.addr=0.0.0.0
- --discovery.v5.port=12165
- --engine.cross-block-cache-size=${BASE_SEPOLIA_RETH_STATE_CACHE:-4096}
- --max-inbound-peers=50
- --max-outbound-peers=50
- --metrics=0.0.0.0:9001
- --nat=extip:${IP}
- --port=12165
- --rollup.sequencer-http=https://sepolia-sequencer.base.org
- --rpc-cache.max-blocks=10000
- --rpc-cache.max-concurrent-db-requests=2048
- --rpc.gascap=600000000
- --rpc.max-blocks-per-filter=0
- --rpc.max-connections=50000
- --rpc.max-logs-per-response=0
- --rpc.max-trace-filter-blocks=10000
- --http
- --http.addr=0.0.0.0
- --http.api=admin,debug,eth,net,trace,txpool,web3,rpc,reth,ots,flashbots,mev
- --http.corsdomain=*
- --http.port=8545
- --ws
- --ws.addr=0.0.0.0
- --ws.api=admin,debug,eth,net,trace,txpool,web3,rpc,reth,ots,flashbots,mev
- --ws.origins=*
- --ws.port=8545
- --authrpc.addr=0.0.0.0
- --authrpc.jwtsecret=/jwtsecret
restart: unless-stopped
stop_grace_period: 5m
networks:
- chains
volumes:
- ${BASE_SEPOLIA_OP_RETH_MINIMAL_TRACE_DATA:-base-sepolia-op-reth-minimal-trace}:/root/.local/share/reth
- .jwtsecret:/jwtsecret:ro
- /slowdisk:/slowdisk
logging: *logging-defaults
labels:
- prometheus-scrape.enabled=true
- prometheus-scrape.port=9001
- prometheus-scrape.path=/metrics
- traefik.enable=true
- traefik.http.middlewares.base-sepolia-op-reth-minimal-trace-stripprefix.stripprefix.prefixes=/base-sepolia-op-reth-minimal
- traefik.http.services.base-sepolia-op-reth-minimal-trace.loadbalancer.server.port=8545
- ${NO_SSL:-traefik.http.routers.base-sepolia-op-reth-minimal-trace.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.base-sepolia-op-reth-minimal-trace.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.base-sepolia-op-reth-minimal-trace.rule=Host(`$DOMAIN`) && (Path(`/base-sepolia-op-reth-minimal`) || Path(`/base-sepolia-op-reth-minimal/`))}
- ${NO_SSL:+traefik.http.routers.base-sepolia-op-reth-minimal-trace.rule=Path(`/base-sepolia-op-reth-minimal`) || Path(`/base-sepolia-op-reth-minimal/`)}
- traefik.http.routers.base-sepolia-op-reth-minimal-trace.middlewares=base-sepolia-op-reth-minimal-trace-stripprefix, ipallowlist
shm_size: 2gb
base-sepolia-op-reth-minimal-node:
image: ${BASE_KONA_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/kona-node}:${BASE_SEPOLIA_KONA_VERSION:-v1.6.2}
ports:
- 17165:17165
- 17165:17165/udp
environment:
- KONA_METRICS_ADDR=0.0.0.0
- KONA_NODE_L1_BEACON=${ETHEREUM_SEPOLIA_BEACON_REST}
- KONA_NODE_L1_ETH_RPC=${BASE_SEPOLIA_L1_EXECUTION_RPC:-${ETHEREUM_SEPOLIA_EXECUTION_RPC}}
- KONA_NODE_L1_TRUST_RPC=${ETHEREUM_SEPOLIA_EXECUTION_TRUST:-false}
- KONA_NODE_L2_CHAIN_ID=84532
- KONA_NODE_L2_ENGINE_AUTH=/jwtsecret
- KONA_NODE_L2_ENGINE_RPC=http://base-sepolia-op-reth-minimal:8551
- KONA_NODE_L2_ENGINE_TIMEOUT=120000
- KONA_NODE_L2_TRUST_RPC=true
- KONA_NODE_METRICS_PORT=7300
- KONA_NODE_MODE=Validator
- KONA_NODE_OVERRIDE_PECTRA_BLOB_SCHEDULE=1742486400
- KONA_NODE_P2P_ADVERTISE_IP=${IP}
- KONA_NODE_P2P_LISTEN_IP=0.0.0.0
- KONA_NODE_P2P_LISTEN_TCP_PORT=17165
- KONA_NODE_P2P_LISTEN_UDP_PORT=17165
- KONA_NODE_RPC_ADDR=0.0.0.0
- KONA_NODE_RPC_PORT=9545
- OP_NODE_SYNCMODE=execution-layer
entrypoint: [kona-node, node]
restart: unless-stopped
depends_on:
base-sepolia-op-reth-minimal:
condition: service_started
restart: true
networks:
- chains
volumes:
- .jwtsecret:/jwtsecret:ro
logging: *logging-defaults
labels:
- prometheus-scrape.enabled=true
- prometheus-scrape.port=7300
- prometheus-scrape.path=/metrics
- traefik.enable=true
- traefik.http.middlewares.base-sepolia-op-reth-minimal-trace-node-stripprefix.stripprefix.prefixes=/base-sepolia-op-reth-minimal/node
- traefik.http.services.base-sepolia-op-reth-minimal-trace-node.loadbalancer.server.port=9545
- ${NO_SSL:-traefik.http.routers.base-sepolia-op-reth-minimal-trace-node.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.base-sepolia-op-reth-minimal-trace-node.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.base-sepolia-op-reth-minimal-trace-node.rule=Host(`$DOMAIN`) && PathPrefix(`/base-sepolia-op-reth-minimal/node`)}
- ${NO_SSL:+traefik.http.routers.base-sepolia-op-reth-minimal-trace-node.rule=PathPrefix(`/base-sepolia-op-reth-minimal/node`)}
- traefik.http.routers.base-sepolia-op-reth-minimal-trace-node.middlewares=base-sepolia-op-reth-minimal-trace-node-stripprefix, ipallowlist
volumes:
base-sepolia-op-reth-minimal-trace:
x-upstreams:
- id: $${ID}
labels:
provider: $${PROVIDER}
connection:
generic:
rpc:
url: $${RPC_URL}
ws:
frameSize: 20Mb
msgSize: 50Mb
url: $${WS_URL}
chain: base-sepolia
method-groups:
enabled:
- debug
- filter
- trace
methods:
disabled:
- name: eth_maxPriorityFeePerGas
enabled:
- name: txpool_content # TODO: should be disabled for rollup nodes
...

View File

@@ -0,0 +1,189 @@
---
x-logging-defaults: &logging-defaults
driver: json-file
options:
max-size: "512m"
max-file: "2"
# 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:op/reth/base-sepolia-op-reth-pruned-trace--kona.yml
#
# docker compose up -d
#
# curl -X POST https://${IP}.traefik.me/base-sepolia-op-reth-pruned \
# -H "Content-Type: application/json" \
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
services:
base-sepolia-op-reth-pruned:
image: ${BASE_RETH_IMAGE:-ghcr.io/base/node-reth}:${BASE_SEPOLIA_RETH_VERSION:-v1.1.0}
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)
memlock: -1 # Disable memory locking limits (for in-memory DBs like MDBX)
user: root
ports:
- 11147:11147
- 11147:11147/udp
expose:
- 8545
- 9001
- 8551
entrypoint: [/app/base-reth-node, node]
command:
- --chain=base-sepolia
- --datadir=/root/.local/share/reth
- --discovery.addr=0.0.0.0
- --discovery.port=11147
- --discovery.v5.addr=0.0.0.0
- --discovery.v5.port=11147
- --engine.cross-block-cache-size=${BASE_SEPOLIA_RETH_STATE_CACHE:-4096}
- --full
- --max-inbound-peers=50
- --max-outbound-peers=50
- --metrics=0.0.0.0:9001
- --nat=extip:${IP}
- --port=11147
- --rollup.sequencer-http=https://sepolia-sequencer.base.org
- --rpc-cache.max-blocks=10000
- --rpc-cache.max-concurrent-db-requests=2048
- --rpc.gascap=600000000
- --rpc.max-blocks-per-filter=0
- --rpc.max-connections=50000
- --rpc.max-logs-per-response=0
- --rpc.max-trace-filter-blocks=10000
- --http
- --http.addr=0.0.0.0
- --http.api=admin,debug,eth,net,trace,txpool,web3,rpc,reth,ots,flashbots,mev
- --http.corsdomain=*
- --http.port=8545
- --ws
- --ws.addr=0.0.0.0
- --ws.api=admin,debug,eth,net,trace,txpool,web3,rpc,reth,ots,flashbots,mev
- --ws.origins=*
- --ws.port=8545
- --authrpc.addr=0.0.0.0
- --authrpc.jwtsecret=/jwtsecret
restart: unless-stopped
stop_grace_period: 5m
networks:
- chains
volumes:
- ${BASE_SEPOLIA_OP_RETH_PRUNED_TRACE_DATA:-base-sepolia-op-reth-pruned-trace}:/root/.local/share/reth
- .jwtsecret:/jwtsecret:ro
- /slowdisk:/slowdisk
logging: *logging-defaults
labels:
- prometheus-scrape.enabled=true
- prometheus-scrape.port=9001
- prometheus-scrape.path=/metrics
- traefik.enable=true
- traefik.http.middlewares.base-sepolia-op-reth-pruned-trace-stripprefix.stripprefix.prefixes=/base-sepolia-op-reth-pruned
- traefik.http.services.base-sepolia-op-reth-pruned-trace.loadbalancer.server.port=8545
- ${NO_SSL:-traefik.http.routers.base-sepolia-op-reth-pruned-trace.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.base-sepolia-op-reth-pruned-trace.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.base-sepolia-op-reth-pruned-trace.rule=Host(`$DOMAIN`) && (Path(`/base-sepolia-op-reth-pruned`) || Path(`/base-sepolia-op-reth-pruned/`))}
- ${NO_SSL:+traefik.http.routers.base-sepolia-op-reth-pruned-trace.rule=Path(`/base-sepolia-op-reth-pruned`) || Path(`/base-sepolia-op-reth-pruned/`)}
- traefik.http.routers.base-sepolia-op-reth-pruned-trace.middlewares=base-sepolia-op-reth-pruned-trace-stripprefix, ipallowlist
shm_size: 2gb
base-sepolia-op-reth-pruned-node:
image: ${BASE_KONA_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/kona-node}:${BASE_SEPOLIA_KONA_VERSION:-v1.6.2}
ports:
- 16147:16147
- 16147:16147/udp
environment:
- KONA_METRICS_ADDR=0.0.0.0
- KONA_NODE_L1_BEACON=${ETHEREUM_SEPOLIA_BEACON_REST}
- KONA_NODE_L1_ETH_RPC=${BASE_SEPOLIA_L1_EXECUTION_RPC:-${ETHEREUM_SEPOLIA_EXECUTION_RPC}}
- KONA_NODE_L1_TRUST_RPC=${ETHEREUM_SEPOLIA_EXECUTION_TRUST:-false}
- KONA_NODE_L2_CHAIN_ID=84532
- KONA_NODE_L2_ENGINE_AUTH=/jwtsecret
- KONA_NODE_L2_ENGINE_RPC=http://base-sepolia-op-reth-pruned:8551
- KONA_NODE_L2_ENGINE_TIMEOUT=120000
- KONA_NODE_L2_TRUST_RPC=true
- KONA_NODE_METRICS_PORT=7300
- KONA_NODE_MODE=Validator
- KONA_NODE_OVERRIDE_PECTRA_BLOB_SCHEDULE=1742486400
- KONA_NODE_P2P_ADVERTISE_IP=${IP}
- KONA_NODE_P2P_LISTEN_IP=0.0.0.0
- KONA_NODE_P2P_LISTEN_TCP_PORT=16147
- KONA_NODE_P2P_LISTEN_UDP_PORT=16147
- KONA_NODE_RPC_ADDR=0.0.0.0
- KONA_NODE_RPC_PORT=9545
- OP_NODE_SYNCMODE=execution-layer
entrypoint: [kona-node, node]
restart: unless-stopped
depends_on:
base-sepolia-op-reth-pruned:
condition: service_started
restart: true
networks:
- chains
volumes:
- .jwtsecret:/jwtsecret:ro
logging: *logging-defaults
labels:
- prometheus-scrape.enabled=true
- prometheus-scrape.port=7300
- prometheus-scrape.path=/metrics
- traefik.enable=true
- traefik.http.middlewares.base-sepolia-op-reth-pruned-trace-node-stripprefix.stripprefix.prefixes=/base-sepolia-op-reth-pruned/node
- traefik.http.services.base-sepolia-op-reth-pruned-trace-node.loadbalancer.server.port=9545
- ${NO_SSL:-traefik.http.routers.base-sepolia-op-reth-pruned-trace-node.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.base-sepolia-op-reth-pruned-trace-node.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.base-sepolia-op-reth-pruned-trace-node.rule=Host(`$DOMAIN`) && PathPrefix(`/base-sepolia-op-reth-pruned/node`)}
- ${NO_SSL:+traefik.http.routers.base-sepolia-op-reth-pruned-trace-node.rule=PathPrefix(`/base-sepolia-op-reth-pruned/node`)}
- traefik.http.routers.base-sepolia-op-reth-pruned-trace-node.middlewares=base-sepolia-op-reth-pruned-trace-node-stripprefix, ipallowlist
volumes:
base-sepolia-op-reth-pruned-trace:
x-upstreams:
- id: $${ID}
labels:
provider: $${PROVIDER}
connection:
generic:
rpc:
url: $${RPC_URL}
ws:
frameSize: 20Mb
msgSize: 50Mb
url: $${WS_URL}
chain: base-sepolia
method-groups:
enabled:
- debug
- filter
- trace
methods:
disabled:
- name: eth_maxPriorityFeePerGas
enabled:
- name: txpool_content # TODO: should be disabled for rollup nodes
...

View File

@@ -134,7 +134,7 @@ services:
- OP_NODE_P2P_LISTEN_IP=0.0.0.0
- OP_NODE_P2P_LISTEN_TCP_PORT=19265
- OP_NODE_P2P_LISTEN_UDP_PORT=19265
- OP_NODE_P2P_STATIC=/ip4/34.19.21.27/tcp/9222/p2p/16Uiu2HAm3xezniqrtMrMqXKPp46Rb2d4mJ67f9TYayHC51SvCrqN
- OP_NODE_P2P_STATIC=/ip4/34.19.21.27/tcp/9222/p2p/16Uiu2HAm3xezniqrtMrMqXKPp46Rb2d4mJ67f9TYayHC51SvCrqN,/ip4/162.55.232.96/tcp/18767/p2p/16Uiu2HAmVN7o51j2pThspMtjWYe9TborWsxZD9uuFqq1H7xANKyz,/ip4/185.242.112.9/tcp/18767/p2p/16Uiu2HAm4txTfhdMqdM3QrQo2HcqL7M2a8fjFFFv4c1H9JgYgqvB,/ip4/193.160.22.66/tcp/18767/p2p/16Uiu2HAkzt7d4F5ufJfwGPd4TrGoT3DmhXzWnxuJWgGWc44nigz6,/ip4/38.18.230.23/tcp/18767/p2p/16Uiu2HAmK5EXWKKgzWsrSVkk6sNDmnjy6udL4swiahUEuguTYUnd
- OP_NODE_ROLLUP_CONFIG=/config/rollup.json
- OP_NODE_ROLLUP_LOAD_PROTOCOL_VERSIONS=true
- OP_NODE_RPC_ADDR=0.0.0.0

View File

@@ -135,7 +135,7 @@ services:
- OP_NODE_P2P_LISTEN_IP=0.0.0.0
- OP_NODE_P2P_LISTEN_TCP_PORT=18767
- OP_NODE_P2P_LISTEN_UDP_PORT=18767
- OP_NODE_P2P_STATIC=/ip4/34.19.21.27/tcp/9222/p2p/16Uiu2HAm3xezniqrtMrMqXKPp46Rb2d4mJ67f9TYayHC51SvCrqN
- OP_NODE_P2P_STATIC=/ip4/34.19.21.27/tcp/9222/p2p/16Uiu2HAm3xezniqrtMrMqXKPp46Rb2d4mJ67f9TYayHC51SvCrqN,/ip4/162.55.232.96/tcp/18767/p2p/16Uiu2HAmVN7o51j2pThspMtjWYe9TborWsxZD9uuFqq1H7xANKyz,/ip4/185.242.112.9/tcp/18767/p2p/16Uiu2HAm4txTfhdMqdM3QrQo2HcqL7M2a8fjFFFv4c1H9JgYgqvB,/ip4/193.160.22.66/tcp/18767/p2p/16Uiu2HAkzt7d4F5ufJfwGPd4TrGoT3DmhXzWnxuJWgGWc44nigz6,/ip4/38.18.230.23/tcp/18767/p2p/16Uiu2HAmK5EXWKKgzWsrSVkk6sNDmnjy6udL4swiahUEuguTYUnd
- OP_NODE_ROLLUP_CONFIG=/config/rollup.json
- OP_NODE_ROLLUP_LOAD_PROTOCOL_VERSIONS=true
- OP_NODE_RPC_ADDR=0.0.0.0

View File

@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
services:
soneium-mainnet-archive:
image: ${SONEIUM_RETH_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/op-reth}:${SONEIUM_MAINNET_RETH_VERSION:-v2.3.3}
image: ${SONEIUM_RETH_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/op-reth}:${SONEIUM_MAINNET_RETH_VERSION:-v2.4.3}
sysctls:
# TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle

View File

@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
services:
soneium-mainnet-archive:
image: ${SONEIUM_RETH_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/op-reth}:${SONEIUM_MAINNET_RETH_VERSION:-v2.3.3}
image: ${SONEIUM_RETH_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/op-reth}:${SONEIUM_MAINNET_RETH_VERSION:-v2.4.3}
sysctls:
# TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -111,7 +111,7 @@ services:
shm_size: 2gb
soneium-mainnet-archive-node:
image: ${SONEIUM_NODE_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/op-node}:${SONEIUM_MAINNET_NODE_VERSION:-v1.19.2}
image: ${SONEIUM_NODE_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/op-node}:${SONEIUM_MAINNET_NODE_VERSION:-v1.19.6}
ports:
- 19133:19133
- 19133:19133/udp

View File

@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
services:
soneium-mainnet:
image: ${SONEIUM_RETH_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/op-reth}:${SONEIUM_MAINNET_RETH_VERSION:-v2.3.3}
image: ${SONEIUM_RETH_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/op-reth}:${SONEIUM_MAINNET_RETH_VERSION:-v2.4.3}
sysctls:
# TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle

View File

@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
services:
soneium-mainnet:
image: ${SONEIUM_RETH_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/op-reth}:${SONEIUM_MAINNET_RETH_VERSION:-v2.3.3}
image: ${SONEIUM_RETH_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/op-reth}:${SONEIUM_MAINNET_RETH_VERSION:-v2.4.3}
sysctls:
# TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -112,7 +112,7 @@ services:
shm_size: 2gb
soneium-mainnet-node:
image: ${SONEIUM_NODE_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/op-node}:${SONEIUM_MAINNET_NODE_VERSION:-v1.19.2}
image: ${SONEIUM_NODE_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/op-node}:${SONEIUM_MAINNET_NODE_VERSION:-v1.19.6}
ports:
- 16080:16080
- 16080:16080/udp

View File

@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
services:
soneium-minato-sepolia-op-reth:
image: ${SONEIUM_RETH_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/op-reth}:${SONEIUM_MINATO_SEPOLIA_RETH_VERSION:-v2.3.3}
image: ${SONEIUM_RETH_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/op-reth}:${SONEIUM_MINATO_SEPOLIA_RETH_VERSION:-v2.4.3}
sysctls:
# TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -111,7 +111,7 @@ services:
shm_size: 2gb
soneium-minato-sepolia-op-reth-node:
image: ${SONEIUM_NODE_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/op-node}:${SONEIUM_MINATO_SEPOLIA_NODE_VERSION:-v1.19.2}
image: ${SONEIUM_NODE_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/op-node}:${SONEIUM_MINATO_SEPOLIA_NODE_VERSION:-v1.19.6}
ports:
- 19829:19829
- 19829:19829/udp

View File

@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
services:
soneium-minato-sepolia-op-reth-pruned:
image: ${SONEIUM_RETH_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/op-reth}:${SONEIUM_MINATO_SEPOLIA_RETH_VERSION:-v2.3.3}
image: ${SONEIUM_RETH_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/op-reth}:${SONEIUM_MINATO_SEPOLIA_RETH_VERSION:-v2.4.3}
sysctls:
# TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -112,7 +112,7 @@ services:
shm_size: 2gb
soneium-minato-sepolia-op-reth-pruned-node:
image: ${SONEIUM_NODE_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/op-node}:${SONEIUM_MINATO_SEPOLIA_NODE_VERSION:-v1.19.2}
image: ${SONEIUM_NODE_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/op-node}:${SONEIUM_MINATO_SEPOLIA_NODE_VERSION:-v1.19.6}
ports:
- 18724:18724
- 18724:18724/udp

View File

@@ -128,7 +128,7 @@ services:
- OP_NODE_METRICS_PORT=7300
- OP_NODE_OVERRIDE_GRANITE=1725984001
- OP_NODE_OVERRIDE_HOLOCENE=1732633200
- OP_NODE_OVERRIDE_KARST=1781712000
- OP_NODE_OVERRIDE_KARST=1787068801
- OP_NODE_OVERRIDE_PECTRABLOBSCHEDULE=1742486400
- OP_NODE_P2P_ADVERTISE_IP=${IP}
- OP_NODE_P2P_BOOTNODES=enode://c9fb471294f243ce4aa32f8987d743fed73fa109013996f169f81914efd2a76762f2f142bd6dcc147afe342c752a587e06ef2ea1418c99ff757986242e372f3d@34.105.58.183:9222?discport=30301,enode://d25ce99435982b04d60c4b41ba256b84b888626db7bee45a9419382300fbe907359ae5ef250346785bff8d3b9d07cd3e017a27e2ee3cfda3bcbb0ba762ac9674@bootnode.conduit.xyz:0?discport=30301,enode://2d4e7e9d48f4dd4efe9342706dd1b0024681bd4c3300d021f86fc75eab7865d4e0cbec6fbc883f011cfd6a57423e7e2f6e104baad2b744c3cafaec6bc7dc92c1@34.65.43.171:0?discport=30305,enode://9d7a3efefe442351217e73b3a593bcb8efffb55b4807699972145324eab5e6b382152f8d24f6301baebbfb5ecd4127bd3faab2842c04cd432bdf50ba092f6645@34.65.109.126:0?discport=30305

View File

@@ -0,0 +1,189 @@
---
x-logging-defaults: &logging-defaults
driver: json-file
options:
max-size: "512m"
max-file: "2"
# 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:op/reth/unichain-sepolia-op-reth-pruned-trace--kona.yml
#
# docker compose up -d
#
# curl -X POST https://${IP}.traefik.me/unichain-sepolia-op-reth-pruned \
# -H "Content-Type: application/json" \
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
services:
unichain-sepolia-op-reth-pruned:
image: ${UNICHAIN_RETH_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/op-reth}:${UNICHAIN_SEPOLIA_RETH_VERSION:-v2.3.3}
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)
memlock: -1 # Disable memory locking limits (for in-memory DBs like MDBX)
user: root
ports:
- 14152:14152
- 14152:14152/udp
expose:
- 8545
- 9001
- 8551
entrypoint: [op-reth, node]
command:
- --chain=unichain-sepolia
- --datadir=/root/.local/share/reth
- --discovery.addr=0.0.0.0
- --discovery.port=14152
- --discovery.v5.addr=0.0.0.0
- --discovery.v5.port=14152
- --engine.cross-block-cache-size=${UNICHAIN_SEPOLIA_RETH_STATE_CACHE:-4096}
- --full
- --max-inbound-peers=50
- --max-outbound-peers=50
- --metrics=0.0.0.0:9001
- --nat=extip:${IP}
- --port=14152
- --rollup.sequencer-http=https://sepolia.unichain.org
- --rpc-cache.max-blocks=10000
- --rpc-cache.max-concurrent-db-requests=2048
- --rpc.gascap=600000000
- --rpc.max-blocks-per-filter=0
- --rpc.max-connections=50000
- --rpc.max-logs-per-response=0
- --rpc.max-trace-filter-blocks=10000
- --http
- --http.addr=0.0.0.0
- --http.api=admin,debug,eth,net,trace,txpool,web3,rpc,reth,ots,flashbots,mev
- --http.corsdomain=*
- --http.port=8545
- --ws
- --ws.addr=0.0.0.0
- --ws.api=admin,debug,eth,net,trace,txpool,web3,rpc,reth,ots,flashbots,mev
- --ws.origins=*
- --ws.port=8545
- --authrpc.addr=0.0.0.0
- --authrpc.jwtsecret=/jwtsecret
restart: unless-stopped
stop_grace_period: 5m
networks:
- chains
volumes:
- ${UNICHAIN_SEPOLIA_OP_RETH_PRUNED_TRACE_DATA:-unichain-sepolia-op-reth-pruned-trace}:/root/.local/share/reth
- .jwtsecret:/jwtsecret:ro
- /slowdisk:/slowdisk
logging: *logging-defaults
labels:
- prometheus-scrape.enabled=true
- prometheus-scrape.port=9001
- prometheus-scrape.path=/metrics
- traefik.enable=true
- traefik.http.middlewares.unichain-sepolia-op-reth-pruned-trace-stripprefix.stripprefix.prefixes=/unichain-sepolia-op-reth-pruned
- traefik.http.services.unichain-sepolia-op-reth-pruned-trace.loadbalancer.server.port=8545
- ${NO_SSL:-traefik.http.routers.unichain-sepolia-op-reth-pruned-trace.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.unichain-sepolia-op-reth-pruned-trace.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.unichain-sepolia-op-reth-pruned-trace.rule=Host(`$DOMAIN`) && (Path(`/unichain-sepolia-op-reth-pruned`) || Path(`/unichain-sepolia-op-reth-pruned/`))}
- ${NO_SSL:+traefik.http.routers.unichain-sepolia-op-reth-pruned-trace.rule=Path(`/unichain-sepolia-op-reth-pruned`) || Path(`/unichain-sepolia-op-reth-pruned/`)}
- traefik.http.routers.unichain-sepolia-op-reth-pruned-trace.middlewares=unichain-sepolia-op-reth-pruned-trace-stripprefix, ipallowlist
shm_size: 2gb
unichain-sepolia-op-reth-pruned-node:
image: ${UNICHAIN_KONA_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/kona-node}:${UNICHAIN_SEPOLIA_KONA_VERSION:-v1.6.2}
ports:
- 19152:19152
- 19152:19152/udp
environment:
- KONA_METRICS_ADDR=0.0.0.0
- KONA_NODE_L1_BEACON=${ETHEREUM_SEPOLIA_BEACON_REST}
- KONA_NODE_L1_ETH_RPC=${UNICHAIN_SEPOLIA_L1_EXECUTION_RPC:-${ETHEREUM_SEPOLIA_EXECUTION_RPC}}
- KONA_NODE_L1_TRUST_RPC=${ETHEREUM_SEPOLIA_EXECUTION_TRUST:-false}
- KONA_NODE_L2_CHAIN_ID=1301
- KONA_NODE_L2_ENGINE_AUTH=/jwtsecret
- KONA_NODE_L2_ENGINE_RPC=http://unichain-sepolia-op-reth-pruned:8551
- KONA_NODE_L2_ENGINE_TIMEOUT=120000
- KONA_NODE_L2_TRUST_RPC=true
- KONA_NODE_METRICS_PORT=7300
- KONA_NODE_MODE=Validator
- KONA_NODE_OVERRIDE_PECTRA_BLOB_SCHEDULE=1742486400
- KONA_NODE_P2P_ADVERTISE_IP=${IP}
- KONA_NODE_P2P_LISTEN_IP=0.0.0.0
- KONA_NODE_P2P_LISTEN_TCP_PORT=19152
- KONA_NODE_P2P_LISTEN_UDP_PORT=19152
- KONA_NODE_RPC_ADDR=0.0.0.0
- KONA_NODE_RPC_PORT=9545
- OP_NODE_SYNCMODE=execution-layer
entrypoint: [kona-node, node]
restart: unless-stopped
depends_on:
unichain-sepolia-op-reth-pruned:
condition: service_started
restart: true
networks:
- chains
volumes:
- .jwtsecret:/jwtsecret:ro
logging: *logging-defaults
labels:
- prometheus-scrape.enabled=true
- prometheus-scrape.port=7300
- prometheus-scrape.path=/metrics
- traefik.enable=true
- traefik.http.middlewares.unichain-sepolia-op-reth-pruned-trace-node-stripprefix.stripprefix.prefixes=/unichain-sepolia-op-reth-pruned/node
- traefik.http.services.unichain-sepolia-op-reth-pruned-trace-node.loadbalancer.server.port=9545
- ${NO_SSL:-traefik.http.routers.unichain-sepolia-op-reth-pruned-trace-node.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.unichain-sepolia-op-reth-pruned-trace-node.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.unichain-sepolia-op-reth-pruned-trace-node.rule=Host(`$DOMAIN`) && PathPrefix(`/unichain-sepolia-op-reth-pruned/node`)}
- ${NO_SSL:+traefik.http.routers.unichain-sepolia-op-reth-pruned-trace-node.rule=PathPrefix(`/unichain-sepolia-op-reth-pruned/node`)}
- traefik.http.routers.unichain-sepolia-op-reth-pruned-trace-node.middlewares=unichain-sepolia-op-reth-pruned-trace-node-stripprefix, ipallowlist
volumes:
unichain-sepolia-op-reth-pruned-trace:
x-upstreams:
- id: $${ID}
labels:
provider: $${PROVIDER}
connection:
generic:
rpc:
url: $${RPC_URL}
ws:
frameSize: 20Mb
msgSize: 50Mb
url: $${WS_URL}
chain: unichain-sepolia
method-groups:
enabled:
- debug
- filter
- trace
methods:
disabled:
- name: eth_maxPriorityFeePerGas
enabled:
- name: txpool_content # TODO: should be disabled for rollup nodes
...

View File

@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
services:
worldchain-sepolia-op-reth:
image: ${WORLDCHAIN_RETH_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/op-reth}:${WORLDCHAIN_SEPOLIA_RETH_VERSION:-v2.3.3}
image: ${WORLDCHAIN_RETH_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/op-reth}:${WORLDCHAIN_SEPOLIA_RETH_VERSION:-v2.4.3}
sysctls:
# TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -111,7 +111,7 @@ services:
shm_size: 2gb
worldchain-sepolia-op-reth-node:
image: ${WORLDCHAIN_NODE_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/op-node}:${WORLDCHAIN_SEPOLIA_NODE_VERSION:-v1.19.2}
image: ${WORLDCHAIN_NODE_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/op-node}:${WORLDCHAIN_SEPOLIA_NODE_VERSION:-v1.19.6}
ports:
- 18954:18954
- 18954:18954/udp

View File

@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
services:
worldchain-sepolia-op-reth-minimal:
image: ${WORLDCHAIN_RETH_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/op-reth}:${WORLDCHAIN_SEPOLIA_RETH_VERSION:-v2.3.3}
image: ${WORLDCHAIN_RETH_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/op-reth}:${WORLDCHAIN_SEPOLIA_RETH_VERSION:-v2.4.3}
sysctls:
# TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -111,7 +111,7 @@ services:
shm_size: 2gb
worldchain-sepolia-op-reth-minimal-node:
image: ${WORLDCHAIN_NODE_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/op-node}:${WORLDCHAIN_SEPOLIA_NODE_VERSION:-v1.19.2}
image: ${WORLDCHAIN_NODE_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/op-node}:${WORLDCHAIN_SEPOLIA_NODE_VERSION:-v1.19.6}
ports:
- 18923:18923
- 18923:18923/udp

View File

@@ -0,0 +1,189 @@
---
x-logging-defaults: &logging-defaults
driver: json-file
options:
max-size: "512m"
max-file: "2"
# 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:op/reth/worldchain-sepolia-op-reth-pruned-trace--kona.yml
#
# docker compose up -d
#
# curl -X POST https://${IP}.traefik.me/worldchain-sepolia-op-reth-pruned \
# -H "Content-Type: application/json" \
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
services:
worldchain-sepolia-op-reth-pruned:
image: ${WORLDCHAIN_RETH_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/op-reth}:${WORLDCHAIN_SEPOLIA_RETH_VERSION:-v2.4.3}
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)
memlock: -1 # Disable memory locking limits (for in-memory DBs like MDBX)
user: root
ports:
- 10736:10736
- 10736:10736/udp
expose:
- 8545
- 9001
- 8551
entrypoint: [op-reth, node]
command:
- --chain=worldchain-sepolia
- --datadir=/root/.local/share/reth
- --discovery.addr=0.0.0.0
- --discovery.port=10736
- --discovery.v5.addr=0.0.0.0
- --discovery.v5.port=10736
- --engine.cross-block-cache-size=${WORLDCHAIN_SEPOLIA_RETH_STATE_CACHE:-4096}
- --full
- --max-inbound-peers=50
- --max-outbound-peers=50
- --metrics=0.0.0.0:9001
- --nat=extip:${IP}
- --port=10736
- --rollup.sequencer-http=https://worldchain-sepolia.g.alchemy.com/public
- --rpc-cache.max-blocks=10000
- --rpc-cache.max-concurrent-db-requests=2048
- --rpc.gascap=600000000
- --rpc.max-blocks-per-filter=0
- --rpc.max-connections=50000
- --rpc.max-logs-per-response=0
- --rpc.max-trace-filter-blocks=10000
- --http
- --http.addr=0.0.0.0
- --http.api=admin,debug,eth,net,trace,txpool,web3,rpc,reth,ots,flashbots,mev
- --http.corsdomain=*
- --http.port=8545
- --ws
- --ws.addr=0.0.0.0
- --ws.api=admin,debug,eth,net,trace,txpool,web3,rpc,reth,ots,flashbots,mev
- --ws.origins=*
- --ws.port=8545
- --authrpc.addr=0.0.0.0
- --authrpc.jwtsecret=/jwtsecret
restart: unless-stopped
stop_grace_period: 5m
networks:
- chains
volumes:
- ${WORLDCHAIN_SEPOLIA_OP_RETH_PRUNED_TRACE_DATA:-worldchain-sepolia-op-reth-pruned-trace}:/root/.local/share/reth
- .jwtsecret:/jwtsecret:ro
- /slowdisk:/slowdisk
logging: *logging-defaults
labels:
- prometheus-scrape.enabled=true
- prometheus-scrape.port=9001
- prometheus-scrape.path=/metrics
- traefik.enable=true
- traefik.http.middlewares.worldchain-sepolia-op-reth-pruned-trace-stripprefix.stripprefix.prefixes=/worldchain-sepolia-op-reth-pruned
- traefik.http.services.worldchain-sepolia-op-reth-pruned-trace.loadbalancer.server.port=8545
- ${NO_SSL:-traefik.http.routers.worldchain-sepolia-op-reth-pruned-trace.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.worldchain-sepolia-op-reth-pruned-trace.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.worldchain-sepolia-op-reth-pruned-trace.rule=Host(`$DOMAIN`) && (Path(`/worldchain-sepolia-op-reth-pruned`) || Path(`/worldchain-sepolia-op-reth-pruned/`))}
- ${NO_SSL:+traefik.http.routers.worldchain-sepolia-op-reth-pruned-trace.rule=Path(`/worldchain-sepolia-op-reth-pruned`) || Path(`/worldchain-sepolia-op-reth-pruned/`)}
- traefik.http.routers.worldchain-sepolia-op-reth-pruned-trace.middlewares=worldchain-sepolia-op-reth-pruned-trace-stripprefix, ipallowlist
shm_size: 2gb
worldchain-sepolia-op-reth-pruned-node:
image: ${WORLDCHAIN_KONA_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/kona-node}:${WORLDCHAIN_SEPOLIA_KONA_VERSION:-v1.6.2}
ports:
- 15736:15736
- 15736:15736/udp
environment:
- KONA_METRICS_ADDR=0.0.0.0
- KONA_NODE_L1_BEACON=${ETHEREUM_SEPOLIA_BEACON_REST}
- KONA_NODE_L1_ETH_RPC=${WORLDCHAIN_SEPOLIA_L1_EXECUTION_RPC:-${ETHEREUM_SEPOLIA_EXECUTION_RPC}}
- KONA_NODE_L1_TRUST_RPC=${ETHEREUM_SEPOLIA_EXECUTION_TRUST:-false}
- KONA_NODE_L2_CHAIN_ID=4801
- KONA_NODE_L2_ENGINE_AUTH=/jwtsecret
- KONA_NODE_L2_ENGINE_RPC=http://worldchain-sepolia-op-reth-pruned:8551
- KONA_NODE_L2_ENGINE_TIMEOUT=120000
- KONA_NODE_L2_TRUST_RPC=true
- KONA_NODE_METRICS_PORT=7300
- KONA_NODE_MODE=Validator
- KONA_NODE_OVERRIDE_PECTRA_BLOB_SCHEDULE=1742486400
- KONA_NODE_P2P_ADVERTISE_IP=${IP}
- KONA_NODE_P2P_LISTEN_IP=0.0.0.0
- KONA_NODE_P2P_LISTEN_TCP_PORT=15736
- KONA_NODE_P2P_LISTEN_UDP_PORT=15736
- KONA_NODE_RPC_ADDR=0.0.0.0
- KONA_NODE_RPC_PORT=9545
- OP_NODE_SYNCMODE=execution-layer
entrypoint: [kona-node, node]
restart: unless-stopped
depends_on:
worldchain-sepolia-op-reth-pruned:
condition: service_started
restart: true
networks:
- chains
volumes:
- .jwtsecret:/jwtsecret:ro
logging: *logging-defaults
labels:
- prometheus-scrape.enabled=true
- prometheus-scrape.port=7300
- prometheus-scrape.path=/metrics
- traefik.enable=true
- traefik.http.middlewares.worldchain-sepolia-op-reth-pruned-trace-node-stripprefix.stripprefix.prefixes=/worldchain-sepolia-op-reth-pruned/node
- traefik.http.services.worldchain-sepolia-op-reth-pruned-trace-node.loadbalancer.server.port=9545
- ${NO_SSL:-traefik.http.routers.worldchain-sepolia-op-reth-pruned-trace-node.entrypoints=websecure}
- ${NO_SSL:-traefik.http.routers.worldchain-sepolia-op-reth-pruned-trace-node.tls.certresolver=myresolver}
- ${NO_SSL:-traefik.http.routers.worldchain-sepolia-op-reth-pruned-trace-node.rule=Host(`$DOMAIN`) && PathPrefix(`/worldchain-sepolia-op-reth-pruned/node`)}
- ${NO_SSL:+traefik.http.routers.worldchain-sepolia-op-reth-pruned-trace-node.rule=PathPrefix(`/worldchain-sepolia-op-reth-pruned/node`)}
- traefik.http.routers.worldchain-sepolia-op-reth-pruned-trace-node.middlewares=worldchain-sepolia-op-reth-pruned-trace-node-stripprefix, ipallowlist
volumes:
worldchain-sepolia-op-reth-pruned-trace:
x-upstreams:
- id: $${ID}
labels:
provider: $${PROVIDER}
connection:
generic:
rpc:
url: $${RPC_URL}
ws:
frameSize: 20Mb
msgSize: 50Mb
url: $${WS_URL}
chain: worldchain-sepolia
method-groups:
enabled:
- debug
- filter
- trace
methods:
disabled:
- name: eth_maxPriorityFeePerGas
enabled:
- name: txpool_content # TODO: should be disabled for rollup nodes
...

View File

@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
services:
worldchain-sepolia-op-reth-pruned:
image: ${WORLDCHAIN_RETH_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/op-reth}:${WORLDCHAIN_SEPOLIA_RETH_VERSION:-v2.3.3}
image: ${WORLDCHAIN_RETH_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/op-reth}:${WORLDCHAIN_SEPOLIA_RETH_VERSION:-v2.4.3}
sysctls:
# TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
@@ -112,7 +112,7 @@ services:
shm_size: 2gb
worldchain-sepolia-op-reth-pruned-node:
image: ${WORLDCHAIN_NODE_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/op-node}:${WORLDCHAIN_SEPOLIA_NODE_VERSION:-v1.19.2}
image: ${WORLDCHAIN_NODE_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/op-node}:${WORLDCHAIN_SEPOLIA_NODE_VERSION:-v1.19.6}
ports:
- 15736:15736
- 15736:15736/udp

View File

@@ -215,6 +215,9 @@ x-upstreams:
methods:
disabled:
- name: eth_maxPriorityFeePerGas
# xlayer-reth fork answers "rpc method is not whitelisted" (2026-09-11, 488 errors/day on dRPC);
# debug_traceCall / debug_traceBlockByNumber / trace_block do work.
- name: debug_traceTransaction
enabled:
- name: txpool_content # TODO: should be disabled for rollup nodes
...

View File

@@ -217,6 +217,9 @@ x-upstreams:
methods:
disabled:
- name: eth_maxPriorityFeePerGas
# xlayer-reth fork answers "rpc method is not whitelisted" (2026-09-11, 488 errors/day on dRPC);
# debug_traceCall / debug_traceBlockByNumber / trace_block do work.
- name: debug_traceTransaction
enabled:
- name: txpool_content # TODO: should be disabled for rollup nodes
...

View File

@@ -34,12 +34,6 @@ services:
entrypoint: [/bin/sh, -c]
command:
- |
if [ ! -f /jwt/jwt.hex ]; then
echo 'INFO Generating jwt secret'
openssl rand -hex 32 | tr -d '\n' > /jwt/jwt.hex
else
echo 'INFO JWT secret already exists'
fi
if [ ! -f /consensus/ec-secp256k1-non-validator.pem ]; then
echo 'INFO Generating secp256k1 keypair for non-validator'
openssl ecparam -name secp256k1 -genkey -noout -out /consensus/ec-secp256k1-non-validator.pem
@@ -53,7 +47,6 @@ services:
- chains
volumes:
- ${PLASMA_MAINNET_RETH_PRUNED_TRACE_CONSENSUS_DATA:-plasma-mainnet-reth-pruned-trace-consensus}:/consensus:rw
- plasma-mainnet-reth-pruned-trace-jwt:/jwt:rw
logging: *logging-defaults
plasma-mainnet-initialize-consensus:
@@ -87,7 +80,7 @@ services:
volumes:
- ${PLASMA_MAINNET_RETH_PRUNED_TRACE_CONSENSUS_DATA:-plasma-mainnet-reth-pruned-trace-consensus}:/consensus:rw
- ./plasma/mainnet/genesis.json:/node/genesis.json:ro
- plasma-mainnet-reth-pruned-trace-jwt:/jwt:ro
- .jwtsecret:/jwt/jwt.hex:ro
logging: *logging-defaults
plasma-mainnet-initialize-execution:
@@ -115,7 +108,7 @@ services:
volumes:
- ${PLASMA_MAINNET_RETH_PRUNED_TRACE_EXECUTION_DATA:-plasma-mainnet-reth-pruned-trace-execution}:/execution:rw
- ./plasma/mainnet/genesis.json:/node/genesis.json:ro
- plasma-mainnet-reth-pruned-trace-jwt:/jwt:ro
- .jwtsecret:/jwt/jwt.hex:ro
logging: *logging-defaults
plasma-mainnet:
@@ -174,8 +167,8 @@ services:
volumes:
- ${PLASMA_MAINNET_RETH_PRUNED_TRACE_EXECUTION_DATA:-plasma-mainnet-reth-pruned-trace-execution}:/execution:rw
- ./plasma/mainnet/genesis.json:/node/genesis.json:ro
- .jwtsecret:/jwt/jwt.hex:ro
- /slowdisk:/slowdisk
- plasma-mainnet-reth-pruned-trace-jwt:/jwt:ro
healthcheck:
test: [CMD, bash, -c, exec 6<> /dev/tcp/localhost/8545 && exec 6<> /dev/tcp/localhost/8551]
interval: 10s
@@ -207,7 +200,13 @@ services:
entrypoint: [/bin/bash, -c]
command:
- |
sed 's|http://plasma-mainnet:8551|http://plasma-mainnet:8551|g' /config/non-validator.toml > /tmp/non-validator.toml
# The fleet .jwtsecret is 0x-prefixed (geth/reth accept that); plasma-cli insists on a
# bare 64-char hex string, so hand it a stripped copy (2026-09-11).
tr -d '\n\r ' < /jwt/jwt.hex | sed 's/^0x//' > /tmp/jwt.hex
# Rewrite engine_api_url to this compose service (mainnet/testnet tomls ship chain-specific hosts)
# and point authrpc_jwtsecret at the stripped copy.
sed -E -e 's|http://[^[:space:]/"]+:8551|http://plasma-mainnet:8551|g' \
-e 's|^(authrpc_jwtsecret *= *).*$|\1"/tmp/jwt.hex"|' /config/non-validator.toml > /tmp/non-validator.toml
exec plasma-cli observer \
--config-path /tmp/non-validator.toml \
--no-color \
@@ -232,7 +231,7 @@ services:
- ./plasma/mainnet/identities:/node/identities:ro
- ./plasma/mainnet/keys:/node/keys:ro
- ./plasma/mainnet/non-validator.toml:/config/non-validator.toml:ro
- plasma-mainnet-reth-pruned-trace-jwt:/jwt:ro
- .jwtsecret:/jwt/jwt.hex:ro
logging: *logging-defaults
labels:
- prometheus-scrape.enabled=true
@@ -241,7 +240,6 @@ services:
volumes:
plasma-mainnet-reth-pruned-trace-consensus:
plasma-mainnet-reth-pruned-trace-execution:
plasma-mainnet-reth-pruned-trace-jwt:
x-upstreams:
- id: $${ID}

View File

@@ -34,12 +34,6 @@ services:
entrypoint: [/bin/sh, -c]
command:
- |
if [ ! -f /jwt/jwt.hex ]; then
echo 'INFO Generating jwt secret'
openssl rand -hex 32 | tr -d '\n' > /jwt/jwt.hex
else
echo 'INFO JWT secret already exists'
fi
if [ ! -f /consensus/ec-secp256k1-non-validator.pem ]; then
echo 'INFO Generating secp256k1 keypair for non-validator'
openssl ecparam -name secp256k1 -genkey -noout -out /consensus/ec-secp256k1-non-validator.pem
@@ -53,7 +47,6 @@ services:
- chains
volumes:
- ${PLASMA_TESTNET_RETH_PRUNED_TRACE_CONSENSUS_DATA:-plasma-testnet-reth-pruned-trace-consensus}:/consensus:rw
- plasma-testnet-reth-pruned-trace-jwt:/jwt:rw
logging: *logging-defaults
plasma-testnet-initialize-consensus:
@@ -87,7 +80,7 @@ services:
volumes:
- ${PLASMA_TESTNET_RETH_PRUNED_TRACE_CONSENSUS_DATA:-plasma-testnet-reth-pruned-trace-consensus}:/consensus:rw
- ./plasma/testnet/genesis.json:/node/genesis.json:ro
- plasma-testnet-reth-pruned-trace-jwt:/jwt:ro
- .jwtsecret:/jwt/jwt.hex:ro
logging: *logging-defaults
plasma-testnet-initialize-execution:
@@ -115,7 +108,7 @@ services:
volumes:
- ${PLASMA_TESTNET_RETH_PRUNED_TRACE_EXECUTION_DATA:-plasma-testnet-reth-pruned-trace-execution}:/execution:rw
- ./plasma/testnet/genesis.json:/node/genesis.json:ro
- plasma-testnet-reth-pruned-trace-jwt:/jwt:ro
- .jwtsecret:/jwt/jwt.hex:ro
logging: *logging-defaults
plasma-testnet:
@@ -174,8 +167,8 @@ services:
volumes:
- ${PLASMA_TESTNET_RETH_PRUNED_TRACE_EXECUTION_DATA:-plasma-testnet-reth-pruned-trace-execution}:/execution:rw
- ./plasma/testnet/genesis.json:/node/genesis.json:ro
- .jwtsecret:/jwt/jwt.hex:ro
- /slowdisk:/slowdisk
- plasma-testnet-reth-pruned-trace-jwt:/jwt:ro
healthcheck:
test: [CMD, bash, -c, exec 6<> /dev/tcp/localhost/8545 && exec 6<> /dev/tcp/localhost/8551]
interval: 10s
@@ -207,8 +200,13 @@ services:
entrypoint: [/bin/bash, -c]
command:
- |
# Rewrite engine_api_url to this compose service (mainnet/testnet tomls ship chain-specific hosts).
sed -E 's|http://[^[:space:]/"]+:8551|http://plasma-testnet:8551|g' /config/non-validator.toml > /tmp/non-validator.toml
# The fleet .jwtsecret is 0x-prefixed (geth/reth accept that); plasma-cli insists on a
# bare 64-char hex string, so hand it a stripped copy (2026-09-11).
tr -d '\n\r ' < /jwt/jwt.hex | sed 's/^0x//' > /tmp/jwt.hex
# Rewrite engine_api_url to this compose service (mainnet/testnet tomls ship chain-specific hosts)
# and point authrpc_jwtsecret at the stripped copy.
sed -E -e 's|http://[^[:space:]/"]+:8551|http://plasma-testnet:8551|g' \
-e 's|^(authrpc_jwtsecret *= *).*$|\1"/tmp/jwt.hex"|' /config/non-validator.toml > /tmp/non-validator.toml
exec plasma-cli observer \
--config-path /tmp/non-validator.toml \
--no-color \
@@ -233,7 +231,7 @@ services:
- ./plasma/testnet/identities:/node/identities:ro
- ./plasma/testnet/keys:/node/keys:ro
- ./plasma/testnet/non-validator.toml:/config/non-validator.toml:ro
- plasma-testnet-reth-pruned-trace-jwt:/jwt:ro
- .jwtsecret:/jwt/jwt.hex:ro
logging: *logging-defaults
labels:
- prometheus-scrape.enabled=true
@@ -242,7 +240,6 @@ services:
volumes:
plasma-testnet-reth-pruned-trace-consensus:
plasma-testnet-reth-pruned-trace-execution:
plasma-testnet-reth-pruned-trace-jwt:
x-upstreams:
- id: $${ID}

View File

@@ -37,6 +37,7 @@
"https://rpc.mevblocker.io/fullprivacy",
"https://eth.drpc.org",
"https://api.securerpc.com/v1",
"https://xrpc.cl/eth",
"https://ethereum.drpc.org"
]
},
@@ -53,7 +54,8 @@
"https://sepolia.gateway.tenderly.co",
"https://ethereum-sepolia-rpc.publicnode.com",
"https://sepolia.drpc.org",
"https://eth-sepolia.g.alchemy.com/v2/WddzdzI2o9S3COdT73d5w6AIogbKq4X-"
"https://eth-sepolia.g.alchemy.com/v2/WddzdzI2o9S3COdT73d5w6AIogbKq4X-",
"https://xrpc.cl/sepolia"
]
},
"holesky": {
@@ -131,7 +133,8 @@
"https://polygon-bor-rpc.publicnode.com",
"https://polygon.gateway.tenderly.co",
"https://rpc.satelink.network/rpc/polygon",
"https://rpcfree.com/polygon-rpc"
"https://rpcfree.com/polygon-rpc",
"https://xrpc.cl/polygon"
]
},
"polygon-amoy": {
@@ -159,6 +162,7 @@
"https://arbitrum-one-rpc.publicnode.com",
"https://rpcfree.com/arbitrum-rpc",
"https://rpc.satelink.network/rpc/arbitrum",
"https://xrpc.cl/arbitrum",
"https://arbitrum.drpc.org"
]
},
@@ -184,7 +188,8 @@
"https://mainnet.optimism.io",
"https://optimism-rpc.publicnode.com",
"https://optimism.gateway.tenderly.co",
"https://optimism.drpc.org"
"https://optimism.drpc.org",
"https://xrpc.cl/optimism"
]
},
"optimism-sepolia": {
@@ -219,6 +224,7 @@
"https://bsc-dataseed4.ninicoin.io",
"https://bsc-rpc.publicnode.com",
"https://bsc-rpc-public.chainpulse.cc",
"https://xrpc.cl/bsc",
"https://bsc.drpc.org"
]
},
@@ -310,6 +316,7 @@
"https://rpcfree.com/base-rpc",
"https://rpc.baseazul.dev",
"https://rpc.satelink.network/rpc/base",
"https://xrpc.cl/base",
"https://base.drpc.org"
]
},
@@ -391,6 +398,7 @@
"urls": [
"https://api.avax.network/ext/bc/C/rpc",
"https://avalanche-c-chain-rpc.publicnode.com",
"https://xrpc.cl/avalanche",
"https://avalanche.drpc.org"
]
},
@@ -1627,8 +1635,7 @@
"lagging_lag": 5,
"syncing_lag": 10,
"urls": [
"https://garfield-testnet.zircuit.com/",
"https://zircuit-garfield-testnet.drpc.org"
"https://rpc.garfield-testnet.zircuit.com"
]
},
"avail": {
@@ -3890,6 +3897,27 @@
"https://sui-testnet.drpc.org"
]
},
"gravity": {
"protocol": "eth",
"id": 127001,
"block_time_ms": 200,
"lagging_lag": 30,
"syncing_lag": 100,
"urls": [
"https://mainnet-rpc.gravity.xyz",
"https://gravity.drpc.org"
]
},
"gravity-testnet": {
"protocol": "eth",
"id": 7771625,
"block_time_ms": 200,
"lagging_lag": 30,
"syncing_lag": 100,
"urls": [
"https://gravity-testnet.drpc.org"
]
},
"core-pigeon": {
"id": 1114,
"urls": [

View File

@@ -52,6 +52,7 @@ services:
- 8545
- 8546
environment:
DEFAULT_JVM_OPTS: -Xms4G -Xmx8G
DOMAIN: ${DOMAIN}
RSKJ_SYS_PROPS: -Drpc.providers.web.http.bind_address=0.0.0.0
restart: unless-stopped
@@ -131,4 +132,6 @@ x-upstreams:
disabled:
enabled:
- name: txpool_content # TODO: should be disabled for rollup nodes
options:
validate-syncing: false
...

View File

@@ -52,6 +52,7 @@ services:
- 8545
- 8546
environment:
DEFAULT_JVM_OPTS: -Xms4G -Xmx8G
DOMAIN: ${DOMAIN}
RSKJ_SYS_PROPS: -Drpc.providers.web.http.bind_address=0.0.0.0
restart: unless-stopped
@@ -131,4 +132,6 @@ x-upstreams:
disabled:
enabled:
- name: txpool_content # TODO: should be disabled for rollup nodes
options:
validate-syncing: false
...

View File

@@ -68,11 +68,28 @@ ct_merge_seeds() {
ct_log "no official seeds fetched from $_url (continuing with configured)"
fi
fi
_seeds=$(ct_valid_peers "$_seeds")
if [ -n "$_seeds" ]; then
sed -i "s/^seeds = \".*\"/seeds = \"${_seeds}\"/" "$_cfg"
fi
}
# ct_valid_peers LIST
# Keep only well-formed CometBFT peer entries (<40-hex node id>@<host>:<port>), drop and
# log the rest. A truncated id such as 7c153a83@peer.haqq.mainnet.dteam.tech:28656 makes
# haqqd refuse to start ("invalid node ID"), 2026-09-07 rpc-de-31.
ct_valid_peers() {
_in="$1"; _out=""
for _p in $(echo "$_in" | tr ',' ' '); do
if echo "$_p" | grep -Eqi '^[0-9a-f]{40}@[^@,:]+:[0-9]+$'; then
_out="${_out:+$_out,}$_p"
else
ct_log "dropping malformed peer entry: $_p"
fi
done
echo "$_out"
}
# ct_set_persistent_peers CONFIG_TOML PEERS
# Handles both cometbft-classic `persistent_peers` (underscore) and forks that use
# `persistent-peers` (hyphen, e.g. sei) — patches whichever key is present.
@@ -80,6 +97,8 @@ ct_set_persistent_peers() {
_cfg="$1"; _peers="$2"
[ -f "$_cfg" ] || return 0
[ -n "$_peers" ] || return 0
_peers=$(ct_valid_peers "$_peers")
[ -n "$_peers" ] || return 0
sed -i "s/^persistent_peers = \".*\"/persistent_peers = \"${_peers}\"/" "$_cfg"
sed -i "s/^persistent-peers = \".*\"/persistent-peers = \"${_peers}\"/" "$_cfg"
return 0

View File

@@ -68,11 +68,28 @@ ct_merge_seeds() {
ct_log "no official seeds fetched from $_url (continuing with configured)"
fi
fi
_seeds=$(ct_valid_peers "$_seeds")
if [ -n "$_seeds" ]; then
sed -i "s/^seeds = \".*\"/seeds = \"${_seeds}\"/" "$_cfg"
fi
}
# ct_valid_peers LIST
# Keep only well-formed CometBFT peer entries (<40-hex node id>@<host>:<port>), drop and
# log the rest. A truncated id such as 7c153a83@peer.haqq.mainnet.dteam.tech:28656 makes
# haqqd refuse to start ("invalid node ID"), 2026-09-07 rpc-de-31.
ct_valid_peers() {
_in="$1"; _out=""
for _p in $(echo "$_in" | tr ',' ' '); do
if echo "$_p" | grep -Eqi '^[0-9a-f]{40}@[^@,:]+:[0-9]+$'; then
_out="${_out:+$_out,}$_p"
else
ct_log "dropping malformed peer entry: $_p"
fi
done
echo "$_out"
}
# ct_set_persistent_peers CONFIG_TOML PEERS
# Handles both cometbft-classic `persistent_peers` (underscore) and forks that use
# `persistent-peers` (hyphen, e.g. sei) — patches whichever key is present.
@@ -80,6 +97,8 @@ ct_set_persistent_peers() {
_cfg="$1"; _peers="$2"
[ -f "$_cfg" ] || return 0
[ -n "$_peers" ] || return 0
_peers=$(ct_valid_peers "$_peers")
[ -n "$_peers" ] || return 0
sed -i "s/^persistent_peers = \".*\"/persistent_peers = \"${_peers}\"/" "$_cfg"
sed -i "s/^persistent-peers = \".*\"/persistent-peers = \"${_peers}\"/" "$_cfg"
return 0

View File

@@ -54,7 +54,7 @@ services:
environment:
- DATABASE_POOL_SIZE=50
- DATABASE_URL=postgres://postgres:notsecurepassword@sophon-mainnet-archive-db:5430/zksync_local_ext_node
- EN_API_NAMESAPCES=eth,net,web3,debug,pubsub,debug,zks
- EN_API_NAMESPACES=eth,net,web3,debug,pubsub,debug,zks
- EN_CONSENSUS_CONFIG_PATH=/config/consensus_config.yaml
- EN_DA_API_NODE_URL=wss://mainnet.avail-rpc.com/
- EN_DA_APP_ID=102

View File

@@ -54,7 +54,7 @@ services:
environment:
- DATABASE_POOL_SIZE=50
- DATABASE_URL=postgres://postgres:notsecurepassword@sophon-mainnet-db:5430/zksync_local_ext_node
- EN_API_NAMESAPCES=eth,net,web3,debug,pubsub,debug,zks
- EN_API_NAMESPACES=eth,net,web3,debug,pubsub,debug,zks
- EN_CONSENSUS_CONFIG_PATH=/config/consensus_config.yaml
- EN_DA_API_NODE_URL=wss://mainnet.avail-rpc.com/
- EN_DA_APP_ID=102

View File

@@ -68,11 +68,28 @@ ct_merge_seeds() {
ct_log "no official seeds fetched from $_url (continuing with configured)"
fi
fi
_seeds=$(ct_valid_peers "$_seeds")
if [ -n "$_seeds" ]; then
sed -i "s/^seeds = \".*\"/seeds = \"${_seeds}\"/" "$_cfg"
fi
}
# ct_valid_peers LIST
# Keep only well-formed CometBFT peer entries (<40-hex node id>@<host>:<port>), drop and
# log the rest. A truncated id such as 7c153a83@peer.haqq.mainnet.dteam.tech:28656 makes
# haqqd refuse to start ("invalid node ID"), 2026-09-07 rpc-de-31.
ct_valid_peers() {
_in="$1"; _out=""
for _p in $(echo "$_in" | tr ',' ' '); do
if echo "$_p" | grep -Eqi '^[0-9a-f]{40}@[^@,:]+:[0-9]+$'; then
_out="${_out:+$_out,}$_p"
else
ct_log "dropping malformed peer entry: $_p"
fi
done
echo "$_out"
}
# ct_set_persistent_peers CONFIG_TOML PEERS
# Handles both cometbft-classic `persistent_peers` (underscore) and forks that use
# `persistent-peers` (hyphen, e.g. sei) — patches whichever key is present.
@@ -80,6 +97,8 @@ ct_set_persistent_peers() {
_cfg="$1"; _peers="$2"
[ -f "$_cfg" ] || return 0
[ -n "$_peers" ] || return 0
_peers=$(ct_valid_peers "$_peers")
[ -n "$_peers" ] || return 0
sed -i "s/^persistent_peers = \".*\"/persistent_peers = \"${_peers}\"/" "$_cfg"
sed -i "s/^persistent-peers = \".*\"/persistent-peers = \"${_peers}\"/" "$_cfg"
return 0

View File

@@ -32,7 +32,7 @@ x-logging-defaults: &logging-defaults
services:
tempo-mainnet-reth-init:
image: ${TEMPO_RETH_IMAGE:-ghcr.io/tempoxyz/tempo}:${TEMPO_CONSENSUS_KEYGEN_VERSION:-1.12.0}
image: ${TEMPO_RETH_IMAGE:-ghcr.io/tempoxyz/tempo}:${TEMPO_CONSENSUS_KEYGEN_VERSION:-1.14.0}
entrypoint: [/bin/sh, -c]
command:
- if [ ! -f /secrets/validator_key.json ]; then tempo consensus generate-signing-key --output /secrets/validator_key.json; fi
@@ -44,7 +44,7 @@ services:
logging: *logging-defaults
tempo-mainnet-reth:
image: ${TEMPO_RETH_IMAGE:-ghcr.io/tempoxyz/tempo}:${TEMPO_MAINNET_RETH_VERSION:-1.12.0}
image: ${TEMPO_RETH_IMAGE:-ghcr.io/tempoxyz/tempo}:${TEMPO_MAINNET_RETH_VERSION:-1.14.0}
sysctls:
# TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle

View File

@@ -32,7 +32,7 @@ x-logging-defaults: &logging-defaults
services:
tempo-mainnet-reth-pruned-init:
image: ${TEMPO_RETH_IMAGE:-ghcr.io/tempoxyz/tempo}:${TEMPO_CONSENSUS_KEYGEN_VERSION:-1.12.0}
image: ${TEMPO_RETH_IMAGE:-ghcr.io/tempoxyz/tempo}:${TEMPO_CONSENSUS_KEYGEN_VERSION:-1.14.0}
entrypoint: [/bin/sh, -c]
command:
- if [ ! -f /secrets/validator_key.json ]; then tempo consensus generate-signing-key --output /secrets/validator_key.json; fi
@@ -44,7 +44,7 @@ services:
logging: *logging-defaults
tempo-mainnet-reth-pruned:
image: ${TEMPO_RETH_IMAGE:-ghcr.io/tempoxyz/tempo}:${TEMPO_MAINNET_RETH_VERSION:-1.12.0}
image: ${TEMPO_RETH_IMAGE:-ghcr.io/tempoxyz/tempo}:${TEMPO_MAINNET_RETH_VERSION:-1.14.0}
sysctls:
# TCP Performance
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle

View File

@@ -54,7 +54,7 @@ services:
environment:
- DATABASE_POOL_SIZE=50
- DATABASE_URL=postgres://postgres:notsecurepassword@zksync-era-boojnet-archive-db:5430/zksync_local_ext_node
- EN_API_NAMESAPCES=eth,net,web3,debug,pubsub,debug,zks
- EN_API_NAMESPACES=eth,net,web3,debug,pubsub,debug,zks
- EN_ETH_CLIENT_URL=${ETHEREUM_SEPOLIA_EXECUTION_RPC}
- EN_HEALTHCHECK_PORT=3081
- EN_HTTP_PORT=8545

View File

@@ -54,7 +54,7 @@ services:
environment:
- DATABASE_POOL_SIZE=50
- DATABASE_URL=postgres://postgres:notsecurepassword@zksync-era-boojnet-db:5430/zksync_local_ext_node
- EN_API_NAMESAPCES=eth,net,web3,debug,pubsub,debug,zks
- EN_API_NAMESPACES=eth,net,web3,debug,pubsub,debug,zks
- EN_ETH_CLIENT_URL=${ETHEREUM_SEPOLIA_EXECUTION_RPC}
- EN_HEALTHCHECK_PORT=3081
- EN_HTTP_PORT=8545

View File

@@ -54,7 +54,7 @@ services:
environment:
- DATABASE_POOL_SIZE=50
- DATABASE_URL=postgres://postgres:notsecurepassword@zksync-era-mainnet-archive-db:5430/zksync_local_ext_node
- EN_API_NAMESAPCES=eth,net,web3,debug,pubsub,debug,zks
- EN_API_NAMESPACES=eth,net,web3,debug,pubsub,debug,zks
- EN_ETH_CLIENT_URL=${ETHEREUM_MAINNET_EXECUTION_RPC}
- EN_HEALTHCHECK_PORT=3081
- EN_HTTP_PORT=8545

View File

@@ -54,7 +54,7 @@ services:
environment:
- DATABASE_POOL_SIZE=50
- DATABASE_URL=postgres://postgres:notsecurepassword@zksync-era-mainnet-db:5430/zksync_local_ext_node
- EN_API_NAMESAPCES=eth,net,web3,debug,pubsub,debug,zks
- EN_API_NAMESPACES=eth,net,web3,debug,pubsub,debug,zks
- EN_ETH_CLIENT_URL=${ETHEREUM_MAINNET_EXECUTION_RPC}
- EN_HEALTHCHECK_PORT=3081
- EN_HTTP_PORT=8545