Compare commits
24
Commits
issue-2155
...
issue-2692
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2950163470 | ||
|
|
a0483f6934 | ||
|
|
b940a72643 | ||
|
|
d5e39c2329 | ||
|
|
e536c19191 | ||
|
|
7d27ff1918 | ||
|
|
b23545e143 | ||
|
|
3be855a681 | ||
|
|
d896378eb7 | ||
|
|
d21f2669ae | ||
|
|
3f3cedf625 | ||
|
|
2779f359d6 | ||
|
|
879ea1769f | ||
|
|
5d56334d3c | ||
|
|
776aabd231 | ||
|
|
e416e61f3d | ||
|
|
399fe87f46 | ||
|
|
9e1aaf6393 | ||
|
|
302c663039 | ||
|
|
30aa16e4e2 | ||
|
|
59e432fa72 | ||
|
|
d8386e43be | ||
|
|
f68b541f58 | ||
|
|
97482cffe1 |
@@ -116,7 +116,7 @@ x-upstreams:
|
|||||||
frameSize: 20Mb
|
frameSize: 20Mb
|
||||||
msgSize: 50Mb
|
msgSize: 50Mb
|
||||||
url: $${WS_URL}
|
url: $${WS_URL}
|
||||||
chain: everclear-sepolia
|
chain:
|
||||||
method-groups:
|
method-groups:
|
||||||
enabled:
|
enabled:
|
||||||
- debug
|
- debug
|
||||||
|
|||||||
@@ -117,7 +117,7 @@ x-upstreams:
|
|||||||
frameSize: 20Mb
|
frameSize: 20Mb
|
||||||
msgSize: 50Mb
|
msgSize: 50Mb
|
||||||
url: $${WS_URL}
|
url: $${WS_URL}
|
||||||
chain: everclear-sepolia
|
chain:
|
||||||
method-groups:
|
method-groups:
|
||||||
enabled:
|
enabled:
|
||||||
- debug
|
- debug
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
arc-mainnet-archive-consensus-init:
|
arc-mainnet-archive-consensus-init:
|
||||||
image: ${ARC_CONSENSUS_IMAGE:-docker.cloudsmith.io/circle/arc-network/arc-consensus}:${ARC_MAINNET_CONSENSUS_VERSION:-0.7.2}
|
image: ${ARC_CONSENSUS_IMAGE:-docker.cloudsmith.io/circle/arc-network/arc-consensus}:${ARC_MAINNET_CONSENSUS_VERSION:-v0.7.3}
|
||||||
user: 0:0
|
user: 0:0
|
||||||
entrypoint: [/usr/local/bin/arc-node-consensus, init]
|
entrypoint: [/usr/local/bin/arc-node-consensus, init]
|
||||||
command:
|
command:
|
||||||
@@ -57,7 +57,7 @@ services:
|
|||||||
logging: *logging-defaults
|
logging: *logging-defaults
|
||||||
|
|
||||||
arc-mainnet-archive:
|
arc-mainnet-archive:
|
||||||
image: ${ARC_RETH_IMAGE:-docker.cloudsmith.io/circle/arc-network/arc-execution}:${ARC_MAINNET_RETH_VERSION:-0.7.2}
|
image: ${ARC_RETH_IMAGE:-docker.cloudsmith.io/circle/arc-network/arc-execution}:${ARC_MAINNET_RETH_VERSION:-v0.7.3}
|
||||||
sysctls:
|
sysctls:
|
||||||
# TCP Performance
|
# TCP Performance
|
||||||
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
||||||
@@ -119,7 +119,7 @@ services:
|
|||||||
shm_size: 2gb
|
shm_size: 2gb
|
||||||
|
|
||||||
arc-mainnet-archive-node:
|
arc-mainnet-archive-node:
|
||||||
image: ${ARC_CONSENSUS_IMAGE:-docker.cloudsmith.io/circle/arc-network/arc-consensus}:${ARC_MAINNET_CONSENSUS_VERSION:-0.7.2}
|
image: ${ARC_CONSENSUS_IMAGE:-docker.cloudsmith.io/circle/arc-network/arc-consensus}:${ARC_MAINNET_CONSENSUS_VERSION:-v0.7.3}
|
||||||
user: 0:0
|
user: 0:0
|
||||||
expose:
|
expose:
|
||||||
- 31000
|
- 31000
|
||||||
@@ -160,6 +160,9 @@ volumes:
|
|||||||
arc-mainnet-reth-archive-trace-execution:
|
arc-mainnet-reth-archive-trace-execution:
|
||||||
arc-mainnet-reth-archive-trace-sockets:
|
arc-mainnet-reth-archive-trace-sockets:
|
||||||
|
|
||||||
|
x-ephemeral-volumes:
|
||||||
|
- arc-mainnet-reth-archive-trace-sockets
|
||||||
|
|
||||||
x-upstreams:
|
x-upstreams:
|
||||||
- id: $${ID}
|
- id: $${ID}
|
||||||
labels:
|
labels:
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
arc-mainnet-consensus-init:
|
arc-mainnet-consensus-init:
|
||||||
image: ${ARC_CONSENSUS_IMAGE:-docker.cloudsmith.io/circle/arc-network/arc-consensus}:${ARC_MAINNET_CONSENSUS_VERSION:-0.7.2}
|
image: ${ARC_CONSENSUS_IMAGE:-docker.cloudsmith.io/circle/arc-network/arc-consensus}:${ARC_MAINNET_CONSENSUS_VERSION:-v0.7.3}
|
||||||
user: 0:0
|
user: 0:0
|
||||||
entrypoint: [/usr/local/bin/arc-node-consensus, init]
|
entrypoint: [/usr/local/bin/arc-node-consensus, init]
|
||||||
command:
|
command:
|
||||||
@@ -57,7 +57,7 @@ services:
|
|||||||
logging: *logging-defaults
|
logging: *logging-defaults
|
||||||
|
|
||||||
arc-mainnet:
|
arc-mainnet:
|
||||||
image: ${ARC_RETH_IMAGE:-docker.cloudsmith.io/circle/arc-network/arc-execution}:${ARC_MAINNET_RETH_VERSION:-0.7.2}
|
image: ${ARC_RETH_IMAGE:-docker.cloudsmith.io/circle/arc-network/arc-execution}:${ARC_MAINNET_RETH_VERSION:-v0.7.3}
|
||||||
sysctls:
|
sysctls:
|
||||||
# TCP Performance
|
# TCP Performance
|
||||||
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
||||||
@@ -120,7 +120,7 @@ services:
|
|||||||
shm_size: 2gb
|
shm_size: 2gb
|
||||||
|
|
||||||
arc-mainnet-node:
|
arc-mainnet-node:
|
||||||
image: ${ARC_CONSENSUS_IMAGE:-docker.cloudsmith.io/circle/arc-network/arc-consensus}:${ARC_MAINNET_CONSENSUS_VERSION:-0.7.2}
|
image: ${ARC_CONSENSUS_IMAGE:-docker.cloudsmith.io/circle/arc-network/arc-consensus}:${ARC_MAINNET_CONSENSUS_VERSION:-v0.7.3}
|
||||||
user: 0:0
|
user: 0:0
|
||||||
expose:
|
expose:
|
||||||
- 31000
|
- 31000
|
||||||
@@ -161,6 +161,9 @@ volumes:
|
|||||||
arc-mainnet-reth-pruned-trace-execution:
|
arc-mainnet-reth-pruned-trace-execution:
|
||||||
arc-mainnet-reth-pruned-trace-sockets:
|
arc-mainnet-reth-pruned-trace-sockets:
|
||||||
|
|
||||||
|
x-ephemeral-volumes:
|
||||||
|
- arc-mainnet-reth-pruned-trace-sockets
|
||||||
|
|
||||||
x-upstreams:
|
x-upstreams:
|
||||||
- id: $${ID}
|
- id: $${ID}
|
||||||
labels:
|
labels:
|
||||||
|
|||||||
@@ -160,6 +160,9 @@ volumes:
|
|||||||
arc-testnet-reth-archive-trace-execution:
|
arc-testnet-reth-archive-trace-execution:
|
||||||
arc-testnet-reth-archive-trace-sockets:
|
arc-testnet-reth-archive-trace-sockets:
|
||||||
|
|
||||||
|
x-ephemeral-volumes:
|
||||||
|
- arc-testnet-reth-archive-trace-sockets
|
||||||
|
|
||||||
x-upstreams:
|
x-upstreams:
|
||||||
- id: $${ID}
|
- id: $${ID}
|
||||||
labels:
|
labels:
|
||||||
|
|||||||
@@ -161,6 +161,9 @@ volumes:
|
|||||||
arc-testnet-reth-pruned-trace-execution:
|
arc-testnet-reth-pruned-trace-execution:
|
||||||
arc-testnet-reth-pruned-trace-sockets:
|
arc-testnet-reth-pruned-trace-sockets:
|
||||||
|
|
||||||
|
x-ephemeral-volumes:
|
||||||
|
- arc-testnet-reth-pruned-trace-sockets
|
||||||
|
|
||||||
x-upstreams:
|
x-upstreams:
|
||||||
- id: $${ID}
|
- id: $${ID}
|
||||||
labels:
|
labels:
|
||||||
|
|||||||
@@ -161,6 +161,9 @@ volumes:
|
|||||||
arc-testnet-reth-pruned-execution:
|
arc-testnet-reth-pruned-execution:
|
||||||
arc-testnet-reth-pruned-sockets:
|
arc-testnet-reth-pruned-sockets:
|
||||||
|
|
||||||
|
x-ephemeral-volumes:
|
||||||
|
- arc-testnet-reth-pruned-sockets
|
||||||
|
|
||||||
x-upstreams:
|
x-upstreams:
|
||||||
- id: $${ID}
|
- id: $${ID}
|
||||||
labels:
|
labels:
|
||||||
|
|||||||
@@ -107,7 +107,7 @@ x-upstreams:
|
|||||||
frameSize: 20Mb
|
frameSize: 20Mb
|
||||||
msgSize: 50Mb
|
msgSize: 50Mb
|
||||||
url: $${WS_URL}
|
url: $${WS_URL}
|
||||||
chain: avalanche
|
chain: avalanche-fuji
|
||||||
method-groups:
|
method-groups:
|
||||||
enabled:
|
enabled:
|
||||||
- debug
|
- debug
|
||||||
|
|||||||
@@ -107,7 +107,7 @@ x-upstreams:
|
|||||||
frameSize: 20Mb
|
frameSize: 20Mb
|
||||||
msgSize: 50Mb
|
msgSize: 50Mb
|
||||||
url: $${WS_URL}
|
url: $${WS_URL}
|
||||||
chain: avalanche
|
chain: avalanche-fuji
|
||||||
method-groups:
|
method-groups:
|
||||||
enabled:
|
enabled:
|
||||||
- debug
|
- debug
|
||||||
|
|||||||
@@ -107,7 +107,7 @@ x-upstreams:
|
|||||||
frameSize: 20Mb
|
frameSize: 20Mb
|
||||||
msgSize: 50Mb
|
msgSize: 50Mb
|
||||||
url: $${WS_URL}
|
url: $${WS_URL}
|
||||||
chain: avalanche
|
chain: avalanche-fuji
|
||||||
method-groups:
|
method-groups:
|
||||||
enabled:
|
enabled:
|
||||||
- debug
|
- debug
|
||||||
|
|||||||
@@ -107,7 +107,7 @@ x-upstreams:
|
|||||||
frameSize: 20Mb
|
frameSize: 20Mb
|
||||||
msgSize: 50Mb
|
msgSize: 50Mb
|
||||||
url: $${WS_URL}
|
url: $${WS_URL}
|
||||||
chain: avalanche
|
chain: avalanche-fuji
|
||||||
method-groups:
|
method-groups:
|
||||||
enabled:
|
enabled:
|
||||||
- debug
|
- debug
|
||||||
|
|||||||
@@ -107,7 +107,7 @@ x-upstreams:
|
|||||||
frameSize: 20Mb
|
frameSize: 20Mb
|
||||||
msgSize: 50Mb
|
msgSize: 50Mb
|
||||||
url: $${WS_URL}
|
url: $${WS_URL}
|
||||||
chain: avalanche
|
chain: avalanche-fuji
|
||||||
method-groups:
|
method-groups:
|
||||||
enabled:
|
enabled:
|
||||||
- debug
|
- debug
|
||||||
|
|||||||
+9
-2
@@ -157,8 +157,15 @@ for key in $keys; do
|
|||||||
folder_size_gb=$(printf "%.0f" "$folder_size")
|
folder_size_gb=$(printf "%.0f" "$folder_size")
|
||||||
|
|
||||||
if (( folder_size_gb < 1 )) && [[ "$FORCE_SMALL" != true ]]; then
|
if (( folder_size_gb < 1 )) && [[ "$FORCE_SMALL" != true ]]; then
|
||||||
echo "FATAL: existing datadir too small for backup (${folder_size_gb}G at $source_folder); use --force if intentional" >&2
|
# The torn-backup floor applies to the MAIN data volume only (key == compose
|
||||||
exit 1
|
# basename). Sidecar volumes (eigenda-proxy, configs, ...) are legitimately
|
||||||
|
# tiny — a 0G sidecar aborting the whole backup left no manifest and blocked
|
||||||
|
# the refresh lane on every ronin bench-retire (4 cycles, 2026-07).
|
||||||
|
if [[ "$key" == "$(basename "$compose_name")" ]]; then
|
||||||
|
echo "FATAL: existing datadir too small for backup (${folder_size_gb}G at $source_folder); use --force if intentional" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
echo "NOTE: sidecar volume rpc_$key is ${folder_size_gb}G — allowing small backup (floor guards the main data volume only)"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
timestamp=$(date +'%Y-%m-%d-%H-%M-%S')
|
timestamp=$(date +'%Y-%m-%d-%H-%M-%S')
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ x-logging-defaults: &logging-defaults
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
berachain-bartio-reth:
|
berachain-bartio-reth:
|
||||||
image: ${BERACHAIN_RETH_IMAGE:-ghcr.io/berachain/bera-reth}:${BERACHAIN_BARTIO_RETH_VERSION:-v1.4.0}
|
image: ${BERACHAIN_RETH_IMAGE:-ghcr.io/berachain/bera-reth}:${BERACHAIN_BARTIO_RETH_VERSION:-v1.4.4}
|
||||||
sysctls:
|
sysctls:
|
||||||
# TCP Performance
|
# TCP Performance
|
||||||
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ x-logging-defaults: &logging-defaults
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
berachain-bartio-reth-pruned:
|
berachain-bartio-reth-pruned:
|
||||||
image: ${BERACHAIN_RETH_IMAGE:-ghcr.io/berachain/bera-reth}:${BERACHAIN_BARTIO_RETH_VERSION:-v1.4.0}
|
image: ${BERACHAIN_RETH_IMAGE:-ghcr.io/berachain/bera-reth}:${BERACHAIN_BARTIO_RETH_VERSION:-v1.4.4}
|
||||||
sysctls:
|
sysctls:
|
||||||
# TCP Performance
|
# TCP Performance
|
||||||
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ x-logging-defaults: &logging-defaults
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
berachain-bepolia-reth:
|
berachain-bepolia-reth:
|
||||||
image: ${BERACHAIN_RETH_IMAGE:-ghcr.io/berachain/bera-reth}:${BERACHAIN_BEPOLIA_RETH_VERSION:-v1.4.3-rc.0}
|
image: ${BERACHAIN_RETH_IMAGE:-ghcr.io/berachain/bera-reth}:${BERACHAIN_BEPOLIA_RETH_VERSION:-v1.4.4}
|
||||||
sysctls:
|
sysctls:
|
||||||
# TCP Performance
|
# TCP Performance
|
||||||
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ x-logging-defaults: &logging-defaults
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
berachain-bepolia-reth-pruned:
|
berachain-bepolia-reth-pruned:
|
||||||
image: ${BERACHAIN_RETH_IMAGE:-ghcr.io/berachain/bera-reth}:${BERACHAIN_BEPOLIA_RETH_VERSION:-v1.4.3-rc.0}
|
image: ${BERACHAIN_RETH_IMAGE:-ghcr.io/berachain/bera-reth}:${BERACHAIN_BEPOLIA_RETH_VERSION:-v1.4.4}
|
||||||
sysctls:
|
sysctls:
|
||||||
# TCP Performance
|
# TCP Performance
|
||||||
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ x-logging-defaults: &logging-defaults
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
berachain-mainnet-reth:
|
berachain-mainnet-reth:
|
||||||
image: ${BERACHAIN_RETH_IMAGE:-ghcr.io/berachain/bera-reth}:${BERACHAIN_MAINNET_RETH_VERSION:-v1.4.2}
|
image: ${BERACHAIN_RETH_IMAGE:-ghcr.io/berachain/bera-reth}:${BERACHAIN_MAINNET_RETH_VERSION:-v1.4.4}
|
||||||
sysctls:
|
sysctls:
|
||||||
# TCP Performance
|
# TCP Performance
|
||||||
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ x-logging-defaults: &logging-defaults
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
berachain-mainnet-reth-pruned:
|
berachain-mainnet-reth-pruned:
|
||||||
image: ${BERACHAIN_RETH_IMAGE:-ghcr.io/berachain/bera-reth}:${BERACHAIN_MAINNET_RETH_VERSION:-v1.4.2}
|
image: ${BERACHAIN_RETH_IMAGE:-ghcr.io/berachain/bera-reth}:${BERACHAIN_MAINNET_RETH_VERSION:-v1.4.4}
|
||||||
sysctls:
|
sysctls:
|
||||||
# TCP Performance
|
# TCP Performance
|
||||||
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
||||||
|
|||||||
+18
-2
@@ -298,6 +298,7 @@ cleanup_all_ports() {
|
|||||||
# Transfer backup file using screen method with better error handling
|
# Transfer backup file using screen method with better error handling
|
||||||
transfer_backup() {
|
transfer_backup() {
|
||||||
local key=$1
|
local key=$1
|
||||||
|
local compose_file=$2
|
||||||
local volume_name="rpc_$key"
|
local volume_name="rpc_$key"
|
||||||
|
|
||||||
# Find the newest restorable backup file (skip near-empty artifacts)
|
# Find the newest restorable backup file (skip near-empty artifacts)
|
||||||
@@ -309,6 +310,13 @@ transfer_backup() {
|
|||||||
echo "Note: no backup for secrets/jwt volume $volume_name (regenerated at create-node), skipping"
|
echo "Note: no backup for secrets/jwt volume $volume_name (regenerated at create-node), skipping"
|
||||||
return 2
|
return 2
|
||||||
fi
|
fi
|
||||||
|
# Check if this volume is optional or ephemeral - if so, skip gracefully
|
||||||
|
if [[ -n "$compose_file" && -f "$compose_file" ]]; then
|
||||||
|
if is_ephemeral_volume_key "$key" "$compose_file" || is_optional_volume_key "$key" "$compose_file"; then
|
||||||
|
echo "Note: no backup for optional/ephemeral volume $volume_name (will be created empty at destination), skipping"
|
||||||
|
return 2
|
||||||
|
fi
|
||||||
|
fi
|
||||||
echo "Warning: No restorable backup file found for $volume_name, skipping"
|
echo "Warning: No restorable backup file found for $volume_name, skipping"
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
@@ -502,6 +510,7 @@ LISTENER
|
|||||||
# Fallback: Direct SSH pipe
|
# Fallback: Direct SSH pipe
|
||||||
transfer_backup_ssh() {
|
transfer_backup_ssh() {
|
||||||
local key=$1
|
local key=$1
|
||||||
|
local compose_file=$2
|
||||||
local volume_name="rpc_$key"
|
local volume_name="rpc_$key"
|
||||||
|
|
||||||
# Find the newest restorable backup file (skip near-empty artifacts)
|
# Find the newest restorable backup file (skip near-empty artifacts)
|
||||||
@@ -513,6 +522,13 @@ transfer_backup_ssh() {
|
|||||||
echo "Note: no backup for secrets/jwt volume $volume_name (regenerated at create-node), skipping"
|
echo "Note: no backup for secrets/jwt volume $volume_name (regenerated at create-node), skipping"
|
||||||
return 2
|
return 2
|
||||||
fi
|
fi
|
||||||
|
# Check if this volume is optional or ephemeral - if so, skip gracefully
|
||||||
|
if [[ -n "$compose_file" && -f "$compose_file" ]]; then
|
||||||
|
if is_ephemeral_volume_key "$key" "$compose_file" || is_optional_volume_key "$key" "$compose_file"; then
|
||||||
|
echo "Note: no backup for optional/ephemeral volume $volume_name (will be created empty at destination), skipping"
|
||||||
|
return 2
|
||||||
|
fi
|
||||||
|
fi
|
||||||
echo "Warning: No restorable backup file found for $volume_name, skipping"
|
echo "Warning: No restorable backup file found for $volume_name, skipping"
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
@@ -642,7 +658,7 @@ main() {
|
|||||||
|
|
||||||
for key in $keys; do
|
for key in $keys; do
|
||||||
# Try nc method first
|
# Try nc method first
|
||||||
transfer_backup "$key"
|
transfer_backup "$key" "$dir/$1.yml"
|
||||||
rc=$?
|
rc=$?
|
||||||
|
|
||||||
if [[ $rc -eq 2 ]]; then
|
if [[ $rc -eq 2 ]]; then
|
||||||
@@ -650,7 +666,7 @@ main() {
|
|||||||
skipped_volumes="$skipped_volumes $key"
|
skipped_volumes="$skipped_volumes $key"
|
||||||
elif [[ $rc -ne 0 ]]; then
|
elif [[ $rc -ne 0 ]]; then
|
||||||
echo "NC transfer failed, trying direct SSH..."
|
echo "NC transfer failed, trying direct SSH..."
|
||||||
transfer_backup_ssh "$key"
|
transfer_backup_ssh "$key" "$dir/$1.yml"
|
||||||
rc=$?
|
rc=$?
|
||||||
|
|
||||||
if [[ $rc -eq 0 ]]; then
|
if [[ $rc -eq 0 ]]; then
|
||||||
|
|||||||
+652
-112
File diff suppressed because it is too large
Load Diff
@@ -115,7 +115,7 @@ x-upstreams:
|
|||||||
frameSize: 20Mb
|
frameSize: 20Mb
|
||||||
msgSize: 50Mb
|
msgSize: 50Mb
|
||||||
url: $${WS_URL}
|
url: $${WS_URL}
|
||||||
chain: core-testnet
|
chain:
|
||||||
method-groups:
|
method-groups:
|
||||||
enabled:
|
enabled:
|
||||||
- debug
|
- debug
|
||||||
|
|||||||
@@ -115,7 +115,7 @@ x-upstreams:
|
|||||||
frameSize: 20Mb
|
frameSize: 20Mb
|
||||||
msgSize: 50Mb
|
msgSize: 50Mb
|
||||||
url: $${WS_URL}
|
url: $${WS_URL}
|
||||||
chain: core-pigeon
|
chain: core-testnet
|
||||||
method-groups:
|
method-groups:
|
||||||
enabled:
|
enabled:
|
||||||
- debug
|
- debug
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
# syntax = docker/dockerfile:1.2
|
# syntax = docker/dockerfile:1.2
|
||||||
ARG REPO=https://github.com/erigontech/erigon.git
|
ARG REPO=https://github.com/erigontech/erigon.git
|
||||||
ARG VERSION=v3.4.4
|
ARG VERSION=v3.5.3
|
||||||
ARG COMMIT=${COMMIT:-${VERSION}}
|
ARG COMMIT=${COMMIT:-${VERSION}}
|
||||||
|
|
||||||
FROM docker.io/library/golang:1.24.1-alpine3.20 AS builder
|
FROM docker.io/library/golang:1.24.1-alpine3.20 AS builder
|
||||||
|
|||||||
@@ -189,8 +189,15 @@ x-upstreams:
|
|||||||
chain: eth-beacon-chain
|
chain: eth-beacon-chain
|
||||||
labels:
|
labels:
|
||||||
provider: $${PROVIDER}-beacon-chain
|
provider: $${PROVIDER}-beacon-chain
|
||||||
|
options:
|
||||||
|
# dshackle 0.79.10's beacon health validator times out on the spec-compliant
|
||||||
|
# empty-body 200 from /eth/v1/node/health (nimbus), flapping the upstream
|
||||||
|
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
|
||||||
|
# still governs health with validation off. 2026-07-10, dRPC incident.
|
||||||
|
disable-validation: true
|
||||||
connection:
|
connection:
|
||||||
generic:
|
generic:
|
||||||
rpc:
|
rpc:
|
||||||
url: $${RPC_URL}
|
url: $${RPC_URL}
|
||||||
|
x-optional-volumes: [ethereum-mainnet-besu-pruned-bonsai_nimbus]
|
||||||
...
|
...
|
||||||
@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
ethereum-hoodi-erigon3-archive:
|
ethereum-hoodi-erigon3-archive:
|
||||||
image: ${ETHEREUM_ERIGON3_IMAGE:-erigontech/erigon}:${ETHEREUM_HOODI_ERIGON3_VERSION:-v3.5.2}
|
image: ${ETHEREUM_ERIGON3_IMAGE:-erigontech/erigon}:${ETHEREUM_HOODI_ERIGON3_VERSION:-v3.5.3}
|
||||||
sysctls:
|
sysctls:
|
||||||
# TCP Performance
|
# TCP Performance
|
||||||
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
ethereum-hoodi-erigon3-minimal:
|
ethereum-hoodi-erigon3-minimal:
|
||||||
image: ${ETHEREUM_ERIGON3_IMAGE:-erigontech/erigon}:${ETHEREUM_HOODI_ERIGON3_VERSION:-v3.5.2}
|
image: ${ETHEREUM_ERIGON3_IMAGE:-erigontech/erigon}:${ETHEREUM_HOODI_ERIGON3_VERSION:-v3.5.3}
|
||||||
sysctls:
|
sysctls:
|
||||||
# TCP Performance
|
# TCP Performance
|
||||||
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
ethereum-hoodi-erigon3:
|
ethereum-hoodi-erigon3:
|
||||||
image: ${ETHEREUM_ERIGON3_IMAGE:-erigontech/erigon}:${ETHEREUM_HOODI_ERIGON3_VERSION:-v3.5.2}
|
image: ${ETHEREUM_ERIGON3_IMAGE:-erigontech/erigon}:${ETHEREUM_HOODI_ERIGON3_VERSION:-v3.5.3}
|
||||||
sysctls:
|
sysctls:
|
||||||
# TCP Performance
|
# TCP Performance
|
||||||
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
ethereum-mainnet-erigon3-archive:
|
ethereum-mainnet-erigon3-archive:
|
||||||
image: ${ETHEREUM_ERIGON3_IMAGE:-erigontech/erigon}:${ETHEREUM_MAINNET_ERIGON3_VERSION:-v3.5.2}
|
image: ${ETHEREUM_ERIGON3_IMAGE:-erigontech/erigon}:${ETHEREUM_MAINNET_ERIGON3_VERSION:-v3.5.3}
|
||||||
sysctls:
|
sysctls:
|
||||||
# TCP Performance
|
# TCP Performance
|
||||||
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
ethereum-mainnet-erigon3-minimal:
|
ethereum-mainnet-erigon3-minimal:
|
||||||
image: ${ETHEREUM_ERIGON3_IMAGE:-erigontech/erigon}:${ETHEREUM_MAINNET_ERIGON3_VERSION:-v3.5.2}
|
image: ${ETHEREUM_ERIGON3_IMAGE:-erigontech/erigon}:${ETHEREUM_MAINNET_ERIGON3_VERSION:-v3.5.3}
|
||||||
sysctls:
|
sysctls:
|
||||||
# TCP Performance
|
# TCP Performance
|
||||||
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
ethereum-mainnet-erigon3:
|
ethereum-mainnet-erigon3:
|
||||||
image: ${ETHEREUM_ERIGON3_IMAGE:-erigontech/erigon}:${ETHEREUM_MAINNET_ERIGON3_VERSION:-v3.5.2}
|
image: ${ETHEREUM_ERIGON3_IMAGE:-erigontech/erigon}:${ETHEREUM_MAINNET_ERIGON3_VERSION:-v3.5.3}
|
||||||
sysctls:
|
sysctls:
|
||||||
# TCP Performance
|
# TCP Performance
|
||||||
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
ethereum-sepolia-erigon3-archive:
|
ethereum-sepolia-erigon3-archive:
|
||||||
image: ${ETHEREUM_ERIGON3_IMAGE:-erigontech/erigon}:${ETHEREUM_SEPOLIA_ERIGON3_VERSION:-v3.5.2}
|
image: ${ETHEREUM_ERIGON3_IMAGE:-erigontech/erigon}:${ETHEREUM_SEPOLIA_ERIGON3_VERSION:-v3.5.3}
|
||||||
sysctls:
|
sysctls:
|
||||||
# TCP Performance
|
# TCP Performance
|
||||||
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
ethereum-sepolia-erigon3-minimal:
|
ethereum-sepolia-erigon3-minimal:
|
||||||
image: ${ETHEREUM_ERIGON3_IMAGE:-erigontech/erigon}:${ETHEREUM_SEPOLIA_ERIGON3_VERSION:-v3.5.2}
|
image: ${ETHEREUM_ERIGON3_IMAGE:-erigontech/erigon}:${ETHEREUM_SEPOLIA_ERIGON3_VERSION:-v3.5.3}
|
||||||
sysctls:
|
sysctls:
|
||||||
# TCP Performance
|
# TCP Performance
|
||||||
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
ethereum-sepolia-erigon3:
|
ethereum-sepolia-erigon3:
|
||||||
image: ${ETHEREUM_ERIGON3_IMAGE:-erigontech/erigon}:${ETHEREUM_SEPOLIA_ERIGON3_VERSION:-v3.5.2}
|
image: ${ETHEREUM_ERIGON3_IMAGE:-erigontech/erigon}:${ETHEREUM_SEPOLIA_ERIGON3_VERSION:-v3.5.3}
|
||||||
sysctls:
|
sysctls:
|
||||||
# TCP Performance
|
# TCP Performance
|
||||||
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
||||||
|
|||||||
@@ -195,8 +195,15 @@ x-upstreams:
|
|||||||
chain: eth-beacon-chain-hoodi
|
chain: eth-beacon-chain-hoodi
|
||||||
labels:
|
labels:
|
||||||
provider: $${PROVIDER}-beacon-chain
|
provider: $${PROVIDER}-beacon-chain
|
||||||
|
options:
|
||||||
|
# dshackle 0.79.10's beacon health validator times out on the spec-compliant
|
||||||
|
# empty-body 200 from /eth/v1/node/health (nimbus), flapping the upstream
|
||||||
|
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
|
||||||
|
# still governs health with validation off. 2026-07-10, dRPC incident.
|
||||||
|
disable-validation: true
|
||||||
connection:
|
connection:
|
||||||
generic:
|
generic:
|
||||||
rpc:
|
rpc:
|
||||||
url: $${RPC_URL}
|
url: $${RPC_URL}
|
||||||
|
x-optional-volumes: [ethereum-hoodi-geth-pruned-pebble-path_nimbus]
|
||||||
...
|
...
|
||||||
@@ -196,8 +196,15 @@ x-upstreams:
|
|||||||
chain: eth-beacon-chain-hoodi
|
chain: eth-beacon-chain-hoodi
|
||||||
labels:
|
labels:
|
||||||
provider: $${PROVIDER}-beacon-chain
|
provider: $${PROVIDER}-beacon-chain
|
||||||
|
options:
|
||||||
|
# dshackle 0.79.10's beacon health validator times out on the spec-compliant
|
||||||
|
# empty-body 200 from /eth/v1/node/health (nimbus), flapping the upstream
|
||||||
|
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
|
||||||
|
# still governs health with validation off. 2026-07-10, dRPC incident.
|
||||||
|
disable-validation: true
|
||||||
connection:
|
connection:
|
||||||
generic:
|
generic:
|
||||||
rpc:
|
rpc:
|
||||||
url: $${RPC_URL}
|
url: $${RPC_URL}
|
||||||
|
x-optional-volumes: [ethereum-hoodi-geth-pruned-pebble-path_prysm]
|
||||||
...
|
...
|
||||||
@@ -200,8 +200,15 @@ x-upstreams:
|
|||||||
chain: eth-beacon-chain
|
chain: eth-beacon-chain
|
||||||
labels:
|
labels:
|
||||||
provider: $${PROVIDER}-beacon-chain
|
provider: $${PROVIDER}-beacon-chain
|
||||||
|
options:
|
||||||
|
# dshackle 0.79.10's beacon health validator times out on the spec-compliant
|
||||||
|
# empty-body 200 from /eth/v1/node/health (nimbus), flapping the upstream
|
||||||
|
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
|
||||||
|
# still governs health with validation off. 2026-07-10, dRPC incident.
|
||||||
|
disable-validation: true
|
||||||
connection:
|
connection:
|
||||||
generic:
|
generic:
|
||||||
rpc:
|
rpc:
|
||||||
url: $${RPC_URL}
|
url: $${RPC_URL}
|
||||||
|
x-optional-volumes: [ethereum-mainnet-geth-minimal-pebble-path_prysm]
|
||||||
...
|
...
|
||||||
@@ -259,8 +259,15 @@ x-upstreams:
|
|||||||
chain: eth-beacon-chain
|
chain: eth-beacon-chain
|
||||||
labels:
|
labels:
|
||||||
provider: $${PROVIDER}-beacon-chain
|
provider: $${PROVIDER}-beacon-chain
|
||||||
|
options:
|
||||||
|
# dshackle 0.79.10's beacon health validator times out on the spec-compliant
|
||||||
|
# empty-body 200 from /eth/v1/node/health (nimbus), flapping the upstream
|
||||||
|
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
|
||||||
|
# still governs health with validation off. 2026-07-10, dRPC incident.
|
||||||
|
disable-validation: true
|
||||||
connection:
|
connection:
|
||||||
generic:
|
generic:
|
||||||
rpc:
|
rpc:
|
||||||
url: $${RPC_URL}
|
url: $${RPC_URL}
|
||||||
|
x-optional-volumes: [ethereum-mainnet-geth-pruned-leveldb-hash_nimbus]
|
||||||
...
|
...
|
||||||
@@ -261,8 +261,15 @@ x-upstreams:
|
|||||||
chain: eth-beacon-chain
|
chain: eth-beacon-chain
|
||||||
labels:
|
labels:
|
||||||
provider: $${PROVIDER}-beacon-chain
|
provider: $${PROVIDER}-beacon-chain
|
||||||
|
options:
|
||||||
|
# dshackle 0.79.10's beacon health validator times out on the spec-compliant
|
||||||
|
# empty-body 200 from /eth/v1/node/health (nimbus), flapping the upstream
|
||||||
|
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
|
||||||
|
# still governs health with validation off. 2026-07-10, dRPC incident.
|
||||||
|
disable-validation: true
|
||||||
connection:
|
connection:
|
||||||
generic:
|
generic:
|
||||||
rpc:
|
rpc:
|
||||||
url: $${RPC_URL}
|
url: $${RPC_URL}
|
||||||
|
x-optional-volumes: [ethereum-mainnet-geth-pruned-pebble-path_nimbus]
|
||||||
...
|
...
|
||||||
@@ -195,8 +195,15 @@ x-upstreams:
|
|||||||
chain: eth-beacon-chain
|
chain: eth-beacon-chain
|
||||||
labels:
|
labels:
|
||||||
provider: $${PROVIDER}-beacon-chain
|
provider: $${PROVIDER}-beacon-chain
|
||||||
|
options:
|
||||||
|
# dshackle 0.79.10's beacon health validator times out on the spec-compliant
|
||||||
|
# empty-body 200 from /eth/v1/node/health (nimbus), flapping the upstream
|
||||||
|
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
|
||||||
|
# still governs health with validation off. 2026-07-10, dRPC incident.
|
||||||
|
disable-validation: true
|
||||||
connection:
|
connection:
|
||||||
generic:
|
generic:
|
||||||
rpc:
|
rpc:
|
||||||
url: $${RPC_URL}
|
url: $${RPC_URL}
|
||||||
|
x-optional-volumes: [ethereum-mainnet-geth-pruned-pebble-path_nimbus]
|
||||||
...
|
...
|
||||||
@@ -196,8 +196,15 @@ x-upstreams:
|
|||||||
chain: eth-beacon-chain
|
chain: eth-beacon-chain
|
||||||
labels:
|
labels:
|
||||||
provider: $${PROVIDER}-beacon-chain
|
provider: $${PROVIDER}-beacon-chain
|
||||||
|
options:
|
||||||
|
# dshackle 0.79.10's beacon health validator times out on the spec-compliant
|
||||||
|
# empty-body 200 from /eth/v1/node/health (nimbus), flapping the upstream
|
||||||
|
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
|
||||||
|
# still governs health with validation off. 2026-07-10, dRPC incident.
|
||||||
|
disable-validation: true
|
||||||
connection:
|
connection:
|
||||||
generic:
|
generic:
|
||||||
rpc:
|
rpc:
|
||||||
url: $${RPC_URL}
|
url: $${RPC_URL}
|
||||||
|
x-optional-volumes: [ethereum-mainnet-geth-pruned-pebble-path_prysm]
|
||||||
...
|
...
|
||||||
@@ -195,8 +195,15 @@ x-upstreams:
|
|||||||
chain: eth-beacon-chain-sepolia
|
chain: eth-beacon-chain-sepolia
|
||||||
labels:
|
labels:
|
||||||
provider: $${PROVIDER}-beacon-chain
|
provider: $${PROVIDER}-beacon-chain
|
||||||
|
options:
|
||||||
|
# dshackle 0.79.10's beacon health validator times out on the spec-compliant
|
||||||
|
# empty-body 200 from /eth/v1/node/health (nimbus), flapping the upstream
|
||||||
|
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
|
||||||
|
# still governs health with validation off. 2026-07-10, dRPC incident.
|
||||||
|
disable-validation: true
|
||||||
connection:
|
connection:
|
||||||
generic:
|
generic:
|
||||||
rpc:
|
rpc:
|
||||||
url: $${RPC_URL}
|
url: $${RPC_URL}
|
||||||
|
x-optional-volumes: [ethereum-sepolia-geth-pruned-pebble-path_nimbus]
|
||||||
...
|
...
|
||||||
@@ -196,8 +196,15 @@ x-upstreams:
|
|||||||
chain: eth-beacon-chain-sepolia
|
chain: eth-beacon-chain-sepolia
|
||||||
labels:
|
labels:
|
||||||
provider: $${PROVIDER}-beacon-chain
|
provider: $${PROVIDER}-beacon-chain
|
||||||
|
options:
|
||||||
|
# dshackle 0.79.10's beacon health validator times out on the spec-compliant
|
||||||
|
# empty-body 200 from /eth/v1/node/health (nimbus), flapping the upstream
|
||||||
|
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
|
||||||
|
# still governs health with validation off. 2026-07-10, dRPC incident.
|
||||||
|
disable-validation: true
|
||||||
connection:
|
connection:
|
||||||
generic:
|
generic:
|
||||||
rpc:
|
rpc:
|
||||||
url: $${RPC_URL}
|
url: $${RPC_URL}
|
||||||
|
x-optional-volumes: [ethereum-sepolia-geth-pruned-pebble-path_prysm]
|
||||||
...
|
...
|
||||||
@@ -169,8 +169,15 @@ x-upstreams:
|
|||||||
chain: eth-beacon-chain-hoodi
|
chain: eth-beacon-chain-hoodi
|
||||||
labels:
|
labels:
|
||||||
provider: $${PROVIDER}-beacon-chain
|
provider: $${PROVIDER}-beacon-chain
|
||||||
|
options:
|
||||||
|
# dshackle 0.79.10's beacon health validator times out on the spec-compliant
|
||||||
|
# empty-body 200 from /eth/v1/node/health (nimbus), flapping the upstream
|
||||||
|
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
|
||||||
|
# still governs health with validation off. 2026-07-10, dRPC incident.
|
||||||
|
disable-validation: true
|
||||||
connection:
|
connection:
|
||||||
generic:
|
generic:
|
||||||
rpc:
|
rpc:
|
||||||
url: $${RPC_URL}
|
url: $${RPC_URL}
|
||||||
|
x-optional-volumes: [ethereum-hoodi-nethermind-pruned-rocksdb-trace_nimbus]
|
||||||
...
|
...
|
||||||
@@ -169,8 +169,15 @@ x-upstreams:
|
|||||||
chain: eth-beacon-chain
|
chain: eth-beacon-chain
|
||||||
labels:
|
labels:
|
||||||
provider: $${PROVIDER}-beacon-chain
|
provider: $${PROVIDER}-beacon-chain
|
||||||
|
options:
|
||||||
|
# dshackle 0.79.10's beacon health validator times out on the spec-compliant
|
||||||
|
# empty-body 200 from /eth/v1/node/health (nimbus), flapping the upstream
|
||||||
|
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
|
||||||
|
# still governs health with validation off. 2026-07-10, dRPC incident.
|
||||||
|
disable-validation: true
|
||||||
connection:
|
connection:
|
||||||
generic:
|
generic:
|
||||||
rpc:
|
rpc:
|
||||||
url: $${RPC_URL}
|
url: $${RPC_URL}
|
||||||
|
x-optional-volumes: [ethereum-mainnet-nethermind-pruned-rocksdb-trace_nimbus]
|
||||||
...
|
...
|
||||||
@@ -169,8 +169,15 @@ x-upstreams:
|
|||||||
chain: eth-beacon-chain-sepolia
|
chain: eth-beacon-chain-sepolia
|
||||||
labels:
|
labels:
|
||||||
provider: $${PROVIDER}-beacon-chain
|
provider: $${PROVIDER}-beacon-chain
|
||||||
|
options:
|
||||||
|
# dshackle 0.79.10's beacon health validator times out on the spec-compliant
|
||||||
|
# empty-body 200 from /eth/v1/node/health (nimbus), flapping the upstream
|
||||||
|
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
|
||||||
|
# still governs health with validation off. 2026-07-10, dRPC incident.
|
||||||
|
disable-validation: true
|
||||||
connection:
|
connection:
|
||||||
generic:
|
generic:
|
||||||
rpc:
|
rpc:
|
||||||
url: $${RPC_URL}
|
url: $${RPC_URL}
|
||||||
|
x-optional-volumes: [ethereum-sepolia-nethermind-pruned-rocksdb-trace_nimbus]
|
||||||
...
|
...
|
||||||
@@ -184,8 +184,15 @@ x-upstreams:
|
|||||||
chain: eth-beacon-chain-hoodi
|
chain: eth-beacon-chain-hoodi
|
||||||
labels:
|
labels:
|
||||||
provider: $${PROVIDER}-beacon-chain
|
provider: $${PROVIDER}-beacon-chain
|
||||||
|
options:
|
||||||
|
# dshackle 0.79.10's beacon health validator times out on the spec-compliant
|
||||||
|
# empty-body 200 from /eth/v1/node/health (nimbus), flapping the upstream
|
||||||
|
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
|
||||||
|
# still governs health with validation off. 2026-07-10, dRPC incident.
|
||||||
|
disable-validation: true
|
||||||
connection:
|
connection:
|
||||||
generic:
|
generic:
|
||||||
rpc:
|
rpc:
|
||||||
url: $${RPC_URL}
|
url: $${RPC_URL}
|
||||||
|
x-optional-volumes: [ethereum-hoodi-reth-archive-trace_prysm]
|
||||||
...
|
...
|
||||||
@@ -185,8 +185,15 @@ x-upstreams:
|
|||||||
chain: eth-beacon-chain-hoodi
|
chain: eth-beacon-chain-hoodi
|
||||||
labels:
|
labels:
|
||||||
provider: $${PROVIDER}-beacon-chain
|
provider: $${PROVIDER}-beacon-chain
|
||||||
|
options:
|
||||||
|
# dshackle 0.79.10's beacon health validator times out on the spec-compliant
|
||||||
|
# empty-body 200 from /eth/v1/node/health (nimbus), flapping the upstream
|
||||||
|
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
|
||||||
|
# still governs health with validation off. 2026-07-10, dRPC incident.
|
||||||
|
disable-validation: true
|
||||||
connection:
|
connection:
|
||||||
generic:
|
generic:
|
||||||
rpc:
|
rpc:
|
||||||
url: $${RPC_URL}
|
url: $${RPC_URL}
|
||||||
|
x-optional-volumes: [ethereum-hoodi-reth-pruned-trace_prysm]
|
||||||
...
|
...
|
||||||
@@ -191,8 +191,15 @@ x-upstreams:
|
|||||||
chain: eth-beacon-chain
|
chain: eth-beacon-chain
|
||||||
labels:
|
labels:
|
||||||
provider: $${PROVIDER}-beacon-chain
|
provider: $${PROVIDER}-beacon-chain
|
||||||
|
options:
|
||||||
|
# dshackle 0.79.10's beacon health validator times out on the spec-compliant
|
||||||
|
# empty-body 200 from /eth/v1/node/health (nimbus), flapping the upstream
|
||||||
|
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
|
||||||
|
# still governs health with validation off. 2026-07-10, dRPC incident.
|
||||||
|
disable-validation: true
|
||||||
connection:
|
connection:
|
||||||
generic:
|
generic:
|
||||||
rpc:
|
rpc:
|
||||||
url: $${RPC_URL}
|
url: $${RPC_URL}
|
||||||
|
x-optional-volumes: [ethereum-mainnet-reth-archive-trace_lighthouse-pruned-blobs]
|
||||||
...
|
...
|
||||||
@@ -183,8 +183,15 @@ x-upstreams:
|
|||||||
chain: eth-beacon-chain
|
chain: eth-beacon-chain
|
||||||
labels:
|
labels:
|
||||||
provider: $${PROVIDER}-beacon-chain
|
provider: $${PROVIDER}-beacon-chain
|
||||||
|
options:
|
||||||
|
# dshackle 0.79.10's beacon health validator times out on the spec-compliant
|
||||||
|
# empty-body 200 from /eth/v1/node/health (nimbus), flapping the upstream
|
||||||
|
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
|
||||||
|
# still governs health with validation off. 2026-07-10, dRPC incident.
|
||||||
|
disable-validation: true
|
||||||
connection:
|
connection:
|
||||||
generic:
|
generic:
|
||||||
rpc:
|
rpc:
|
||||||
url: $${RPC_URL}
|
url: $${RPC_URL}
|
||||||
|
x-optional-volumes: [ethereum-mainnet-reth-archive-trace_nimbus]
|
||||||
...
|
...
|
||||||
@@ -184,8 +184,15 @@ x-upstreams:
|
|||||||
chain: eth-beacon-chain
|
chain: eth-beacon-chain
|
||||||
labels:
|
labels:
|
||||||
provider: $${PROVIDER}-beacon-chain
|
provider: $${PROVIDER}-beacon-chain
|
||||||
|
options:
|
||||||
|
# dshackle 0.79.10's beacon health validator times out on the spec-compliant
|
||||||
|
# empty-body 200 from /eth/v1/node/health (nimbus), flapping the upstream
|
||||||
|
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
|
||||||
|
# still governs health with validation off. 2026-07-10, dRPC incident.
|
||||||
|
disable-validation: true
|
||||||
connection:
|
connection:
|
||||||
generic:
|
generic:
|
||||||
rpc:
|
rpc:
|
||||||
url: $${RPC_URL}
|
url: $${RPC_URL}
|
||||||
|
x-optional-volumes: [ethereum-mainnet-reth-archive-trace_prysm]
|
||||||
...
|
...
|
||||||
@@ -242,8 +242,15 @@ x-upstreams:
|
|||||||
chain: eth-beacon-chain
|
chain: eth-beacon-chain
|
||||||
labels:
|
labels:
|
||||||
provider: $${PROVIDER}-beacon-chain
|
provider: $${PROVIDER}-beacon-chain
|
||||||
|
options:
|
||||||
|
# dshackle 0.79.10's beacon health validator times out on the spec-compliant
|
||||||
|
# empty-body 200 from /eth/v1/node/health (nimbus), flapping the upstream
|
||||||
|
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
|
||||||
|
# still governs health with validation off. 2026-07-10, dRPC incident.
|
||||||
|
disable-validation: true
|
||||||
connection:
|
connection:
|
||||||
generic:
|
generic:
|
||||||
rpc:
|
rpc:
|
||||||
url: $${RPC_URL}
|
url: $${RPC_URL}
|
||||||
|
x-optional-volumes: [ethereum-mainnet-reth-minimal-trace_nimbus]
|
||||||
...
|
...
|
||||||
@@ -190,8 +190,15 @@ x-upstreams:
|
|||||||
chain: eth-beacon-chain
|
chain: eth-beacon-chain
|
||||||
labels:
|
labels:
|
||||||
provider: $${PROVIDER}-beacon-chain
|
provider: $${PROVIDER}-beacon-chain
|
||||||
|
options:
|
||||||
|
# dshackle 0.79.10's beacon health validator times out on the spec-compliant
|
||||||
|
# empty-body 200 from /eth/v1/node/health (nimbus), flapping the upstream
|
||||||
|
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
|
||||||
|
# still governs health with validation off. 2026-07-10, dRPC incident.
|
||||||
|
disable-validation: true
|
||||||
connection:
|
connection:
|
||||||
generic:
|
generic:
|
||||||
rpc:
|
rpc:
|
||||||
url: $${RPC_URL}
|
url: $${RPC_URL}
|
||||||
|
x-optional-volumes: [ethereum-mainnet-reth-pruned-trace_lighthouse]
|
||||||
...
|
...
|
||||||
@@ -184,8 +184,15 @@ x-upstreams:
|
|||||||
chain: eth-beacon-chain
|
chain: eth-beacon-chain
|
||||||
labels:
|
labels:
|
||||||
provider: $${PROVIDER}-beacon-chain
|
provider: $${PROVIDER}-beacon-chain
|
||||||
|
options:
|
||||||
|
# dshackle 0.79.10's beacon health validator times out on the spec-compliant
|
||||||
|
# empty-body 200 from /eth/v1/node/health (nimbus), flapping the upstream
|
||||||
|
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
|
||||||
|
# still governs health with validation off. 2026-07-10, dRPC incident.
|
||||||
|
disable-validation: true
|
||||||
connection:
|
connection:
|
||||||
generic:
|
generic:
|
||||||
rpc:
|
rpc:
|
||||||
url: $${RPC_URL}
|
url: $${RPC_URL}
|
||||||
|
x-optional-volumes: [ethereum-mainnet-reth-pruned-trace_nimbus]
|
||||||
...
|
...
|
||||||
@@ -185,8 +185,15 @@ x-upstreams:
|
|||||||
chain: eth-beacon-chain
|
chain: eth-beacon-chain
|
||||||
labels:
|
labels:
|
||||||
provider: $${PROVIDER}-beacon-chain
|
provider: $${PROVIDER}-beacon-chain
|
||||||
|
options:
|
||||||
|
# dshackle 0.79.10's beacon health validator times out on the spec-compliant
|
||||||
|
# empty-body 200 from /eth/v1/node/health (nimbus), flapping the upstream
|
||||||
|
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
|
||||||
|
# still governs health with validation off. 2026-07-10, dRPC incident.
|
||||||
|
disable-validation: true
|
||||||
connection:
|
connection:
|
||||||
generic:
|
generic:
|
||||||
rpc:
|
rpc:
|
||||||
url: $${RPC_URL}
|
url: $${RPC_URL}
|
||||||
|
x-optional-volumes: [ethereum-mainnet-reth-pruned-trace_prysm]
|
||||||
...
|
...
|
||||||
@@ -183,8 +183,15 @@ x-upstreams:
|
|||||||
chain: eth-beacon-chain-sepolia
|
chain: eth-beacon-chain-sepolia
|
||||||
labels:
|
labels:
|
||||||
provider: $${PROVIDER}-beacon-chain
|
provider: $${PROVIDER}-beacon-chain
|
||||||
|
options:
|
||||||
|
# dshackle 0.79.10's beacon health validator times out on the spec-compliant
|
||||||
|
# empty-body 200 from /eth/v1/node/health (nimbus), flapping the upstream
|
||||||
|
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
|
||||||
|
# still governs health with validation off. 2026-07-10, dRPC incident.
|
||||||
|
disable-validation: true
|
||||||
connection:
|
connection:
|
||||||
generic:
|
generic:
|
||||||
rpc:
|
rpc:
|
||||||
url: $${RPC_URL}
|
url: $${RPC_URL}
|
||||||
|
x-optional-volumes: [ethereum-sepolia-reth-archive-trace_nimbus]
|
||||||
...
|
...
|
||||||
@@ -184,8 +184,15 @@ x-upstreams:
|
|||||||
chain: eth-beacon-chain-sepolia
|
chain: eth-beacon-chain-sepolia
|
||||||
labels:
|
labels:
|
||||||
provider: $${PROVIDER}-beacon-chain
|
provider: $${PROVIDER}-beacon-chain
|
||||||
|
options:
|
||||||
|
# dshackle 0.79.10's beacon health validator times out on the spec-compliant
|
||||||
|
# empty-body 200 from /eth/v1/node/health (nimbus), flapping the upstream
|
||||||
|
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
|
||||||
|
# still governs health with validation off. 2026-07-10, dRPC incident.
|
||||||
|
disable-validation: true
|
||||||
connection:
|
connection:
|
||||||
generic:
|
generic:
|
||||||
rpc:
|
rpc:
|
||||||
url: $${RPC_URL}
|
url: $${RPC_URL}
|
||||||
|
x-optional-volumes: [ethereum-sepolia-reth-archive-trace_prysm]
|
||||||
...
|
...
|
||||||
@@ -184,8 +184,15 @@ x-upstreams:
|
|||||||
chain: eth-beacon-chain-sepolia
|
chain: eth-beacon-chain-sepolia
|
||||||
labels:
|
labels:
|
||||||
provider: $${PROVIDER}-beacon-chain
|
provider: $${PROVIDER}-beacon-chain
|
||||||
|
options:
|
||||||
|
# dshackle 0.79.10's beacon health validator times out on the spec-compliant
|
||||||
|
# empty-body 200 from /eth/v1/node/health (nimbus), flapping the upstream
|
||||||
|
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
|
||||||
|
# still governs health with validation off. 2026-07-10, dRPC incident.
|
||||||
|
disable-validation: true
|
||||||
connection:
|
connection:
|
||||||
generic:
|
generic:
|
||||||
rpc:
|
rpc:
|
||||||
url: $${RPC_URL}
|
url: $${RPC_URL}
|
||||||
|
x-optional-volumes: [ethereum-sepolia-reth-pruned-trace_nimbus]
|
||||||
...
|
...
|
||||||
@@ -185,8 +185,15 @@ x-upstreams:
|
|||||||
chain: eth-beacon-chain-sepolia
|
chain: eth-beacon-chain-sepolia
|
||||||
labels:
|
labels:
|
||||||
provider: $${PROVIDER}-beacon-chain
|
provider: $${PROVIDER}-beacon-chain
|
||||||
|
options:
|
||||||
|
# dshackle 0.79.10's beacon health validator times out on the spec-compliant
|
||||||
|
# empty-body 200 from /eth/v1/node/health (nimbus), flapping the upstream
|
||||||
|
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
|
||||||
|
# still governs health with validation off. 2026-07-10, dRPC incident.
|
||||||
|
disable-validation: true
|
||||||
connection:
|
connection:
|
||||||
generic:
|
generic:
|
||||||
rpc:
|
rpc:
|
||||||
url: $${RPC_URL}
|
url: $${RPC_URL}
|
||||||
|
x-optional-volumes: [ethereum-sepolia-reth-pruned-trace_prysm]
|
||||||
...
|
...
|
||||||
@@ -96,26 +96,8 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
fuse-spark-nethermind-archive-rocksdb-trace:
|
fuse-spark-nethermind-archive-rocksdb-trace:
|
||||||
|
|
||||||
x-upstreams:
|
# fuse-spark (Sparknet, chainid 123) is ABSENT from dRPC chains.yaml - not a
|
||||||
- id: $${ID}
|
# servable dRPC chain. x-upstreams removed 2026-08-05 (it declared the MAINNET
|
||||||
labels:
|
# slug "fuse", which would have advertised testnet data as mainnet). This file is
|
||||||
provider: $${PROVIDER}
|
# hand-written (fuse has chains: null in context.yml); onboarding it to generation
|
||||||
connection:
|
# is the clean long-term fix. See chain-aliases.yaml fuse/spark: null.
|
||||||
generic:
|
|
||||||
rpc:
|
|
||||||
url: $${RPC_URL}
|
|
||||||
ws:
|
|
||||||
frameSize: 20Mb
|
|
||||||
msgSize: 50Mb
|
|
||||||
url: $${WS_URL}
|
|
||||||
chain: fuse
|
|
||||||
method-groups:
|
|
||||||
enabled:
|
|
||||||
- debug
|
|
||||||
- filter
|
|
||||||
- trace
|
|
||||||
methods:
|
|
||||||
disabled:
|
|
||||||
enabled:
|
|
||||||
- name: txpool_content # TODO: should be disabled for rollup nodes
|
|
||||||
...
|
|
||||||
|
|||||||
@@ -99,26 +99,8 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
fuse-spark-nethermind-minimal-rocksdb-trace:
|
fuse-spark-nethermind-minimal-rocksdb-trace:
|
||||||
|
|
||||||
x-upstreams:
|
# fuse-spark (Sparknet, chainid 123) is ABSENT from dRPC chains.yaml - not a
|
||||||
- id: $${ID}
|
# servable dRPC chain. x-upstreams removed 2026-08-05 (it declared the MAINNET
|
||||||
labels:
|
# slug "fuse", which would have advertised testnet data as mainnet). This file is
|
||||||
provider: $${PROVIDER}
|
# hand-written (fuse has chains: null in context.yml); onboarding it to generation
|
||||||
connection:
|
# is the clean long-term fix. See chain-aliases.yaml fuse/spark: null.
|
||||||
generic:
|
|
||||||
rpc:
|
|
||||||
url: $${RPC_URL}
|
|
||||||
ws:
|
|
||||||
frameSize: 20Mb
|
|
||||||
msgSize: 50Mb
|
|
||||||
url: $${WS_URL}
|
|
||||||
chain: fuse
|
|
||||||
method-groups:
|
|
||||||
enabled:
|
|
||||||
- debug
|
|
||||||
- filter
|
|
||||||
- trace
|
|
||||||
methods:
|
|
||||||
disabled:
|
|
||||||
enabled:
|
|
||||||
- name: txpool_content # TODO: should be disabled for rollup nodes
|
|
||||||
...
|
|
||||||
|
|||||||
@@ -94,26 +94,8 @@ services:
|
|||||||
volumes:
|
volumes:
|
||||||
fuse-spark-nethermind-pruned-rocksdb-trace:
|
fuse-spark-nethermind-pruned-rocksdb-trace:
|
||||||
|
|
||||||
x-upstreams:
|
# fuse-spark (Sparknet, chainid 123) is ABSENT from dRPC chains.yaml - not a
|
||||||
- id: $${ID}
|
# servable dRPC chain. x-upstreams removed 2026-08-05 (it declared the MAINNET
|
||||||
labels:
|
# slug "fuse", which would have advertised testnet data as mainnet). This file is
|
||||||
provider: $${PROVIDER}
|
# hand-written (fuse has chains: null in context.yml); onboarding it to generation
|
||||||
connection:
|
# is the clean long-term fix. See chain-aliases.yaml fuse/spark: null.
|
||||||
generic:
|
|
||||||
rpc:
|
|
||||||
url: $${RPC_URL}
|
|
||||||
ws:
|
|
||||||
frameSize: 20Mb
|
|
||||||
msgSize: 50Mb
|
|
||||||
url: $${WS_URL}
|
|
||||||
chain: fuse
|
|
||||||
method-groups:
|
|
||||||
enabled:
|
|
||||||
- debug
|
|
||||||
- filter
|
|
||||||
- trace
|
|
||||||
methods:
|
|
||||||
disabled:
|
|
||||||
enabled:
|
|
||||||
- name: txpool_content # TODO: should be disabled for rollup nodes
|
|
||||||
...
|
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
gnosis-chiado-erigon3-archive:
|
gnosis-chiado-erigon3-archive:
|
||||||
image: ${GNOSIS_ERIGON3_IMAGE:-erigontech/erigon}:${GNOSIS_CHIADO_ERIGON3_VERSION:-v3.5.2}
|
image: ${GNOSIS_ERIGON3_IMAGE:-erigontech/erigon}:${GNOSIS_CHIADO_ERIGON3_VERSION:-v3.5.3}
|
||||||
sysctls:
|
sysctls:
|
||||||
# TCP Performance
|
# TCP Performance
|
||||||
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
gnosis-chiado-erigon3-minimal:
|
gnosis-chiado-erigon3-minimal:
|
||||||
image: ${GNOSIS_ERIGON3_IMAGE:-erigontech/erigon}:${GNOSIS_CHIADO_ERIGON3_VERSION:-v3.5.2}
|
image: ${GNOSIS_ERIGON3_IMAGE:-erigontech/erigon}:${GNOSIS_CHIADO_ERIGON3_VERSION:-v3.5.3}
|
||||||
sysctls:
|
sysctls:
|
||||||
# TCP Performance
|
# TCP Performance
|
||||||
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
gnosis-chiado-erigon3:
|
gnosis-chiado-erigon3:
|
||||||
image: ${GNOSIS_ERIGON3_IMAGE:-erigontech/erigon}:${GNOSIS_CHIADO_ERIGON3_VERSION:-v3.5.2}
|
image: ${GNOSIS_ERIGON3_IMAGE:-erigontech/erigon}:${GNOSIS_CHIADO_ERIGON3_VERSION:-v3.5.3}
|
||||||
sysctls:
|
sysctls:
|
||||||
# TCP Performance
|
# TCP Performance
|
||||||
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
gnosis-mainnet-erigon3-archive:
|
gnosis-mainnet-erigon3-archive:
|
||||||
image: ${GNOSIS_ERIGON3_IMAGE:-erigontech/erigon}:${GNOSIS_MAINNET_ERIGON3_VERSION:-v3.5.2}
|
image: ${GNOSIS_ERIGON3_IMAGE:-erigontech/erigon}:${GNOSIS_MAINNET_ERIGON3_VERSION:-v3.5.3}
|
||||||
sysctls:
|
sysctls:
|
||||||
# TCP Performance
|
# TCP Performance
|
||||||
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
gnosis-mainnet-erigon3-minimal:
|
gnosis-mainnet-erigon3-minimal:
|
||||||
image: ${GNOSIS_ERIGON3_IMAGE:-erigontech/erigon}:${GNOSIS_MAINNET_ERIGON3_VERSION:-v3.5.2}
|
image: ${GNOSIS_ERIGON3_IMAGE:-erigontech/erigon}:${GNOSIS_MAINNET_ERIGON3_VERSION:-v3.5.3}
|
||||||
sysctls:
|
sysctls:
|
||||||
# TCP Performance
|
# TCP Performance
|
||||||
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
gnosis-mainnet-erigon3:
|
gnosis-mainnet-erigon3:
|
||||||
image: ${GNOSIS_ERIGON3_IMAGE:-erigontech/erigon}:${GNOSIS_MAINNET_ERIGON3_VERSION:-v3.5.2}
|
image: ${GNOSIS_ERIGON3_IMAGE:-erigontech/erigon}:${GNOSIS_MAINNET_ERIGON3_VERSION:-v3.5.3}
|
||||||
sysctls:
|
sysctls:
|
||||||
# TCP Performance
|
# TCP Performance
|
||||||
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
||||||
|
|||||||
@@ -171,8 +171,15 @@ x-upstreams:
|
|||||||
chain: gnosis-beacon-chain-chiado
|
chain: gnosis-beacon-chain-chiado
|
||||||
labels:
|
labels:
|
||||||
provider: $${PROVIDER}-beacon-chain
|
provider: $${PROVIDER}-beacon-chain
|
||||||
|
options:
|
||||||
|
# dshackle 0.79.10's beacon health validator times out on the spec-compliant
|
||||||
|
# empty-body 200 from /eth/v1/node/health (nimbus), flapping the upstream
|
||||||
|
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
|
||||||
|
# still governs health with validation off. 2026-07-10, dRPC incident.
|
||||||
|
disable-validation: true
|
||||||
connection:
|
connection:
|
||||||
generic:
|
generic:
|
||||||
rpc:
|
rpc:
|
||||||
url: $${RPC_URL}
|
url: $${RPC_URL}
|
||||||
|
x-optional-volumes: [gnosis-chiado-nethermind-archive-rocksdb-trace_nimbus]
|
||||||
...
|
...
|
||||||
@@ -174,8 +174,15 @@ x-upstreams:
|
|||||||
chain: gnosis-beacon-chain-chiado
|
chain: gnosis-beacon-chain-chiado
|
||||||
labels:
|
labels:
|
||||||
provider: $${PROVIDER}-beacon-chain
|
provider: $${PROVIDER}-beacon-chain
|
||||||
|
options:
|
||||||
|
# dshackle 0.79.10's beacon health validator times out on the spec-compliant
|
||||||
|
# empty-body 200 from /eth/v1/node/health (nimbus), flapping the upstream
|
||||||
|
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
|
||||||
|
# still governs health with validation off. 2026-07-10, dRPC incident.
|
||||||
|
disable-validation: true
|
||||||
connection:
|
connection:
|
||||||
generic:
|
generic:
|
||||||
rpc:
|
rpc:
|
||||||
url: $${RPC_URL}
|
url: $${RPC_URL}
|
||||||
|
x-optional-volumes: [gnosis-chiado-nethermind-minimal-rocksdb-trace_nimbus]
|
||||||
...
|
...
|
||||||
@@ -169,8 +169,15 @@ x-upstreams:
|
|||||||
chain: gnosis-beacon-chain-chiado
|
chain: gnosis-beacon-chain-chiado
|
||||||
labels:
|
labels:
|
||||||
provider: $${PROVIDER}-beacon-chain
|
provider: $${PROVIDER}-beacon-chain
|
||||||
|
options:
|
||||||
|
# dshackle 0.79.10's beacon health validator times out on the spec-compliant
|
||||||
|
# empty-body 200 from /eth/v1/node/health (nimbus), flapping the upstream
|
||||||
|
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
|
||||||
|
# still governs health with validation off. 2026-07-10, dRPC incident.
|
||||||
|
disable-validation: true
|
||||||
connection:
|
connection:
|
||||||
generic:
|
generic:
|
||||||
rpc:
|
rpc:
|
||||||
url: $${RPC_URL}
|
url: $${RPC_URL}
|
||||||
|
x-optional-volumes: [gnosis-chiado-nethermind-pruned-rocksdb-trace_nimbus]
|
||||||
...
|
...
|
||||||
@@ -171,8 +171,15 @@ x-upstreams:
|
|||||||
chain: gnosis-beacon-chain
|
chain: gnosis-beacon-chain
|
||||||
labels:
|
labels:
|
||||||
provider: $${PROVIDER}-beacon-chain
|
provider: $${PROVIDER}-beacon-chain
|
||||||
|
options:
|
||||||
|
# dshackle 0.79.10's beacon health validator times out on the spec-compliant
|
||||||
|
# empty-body 200 from /eth/v1/node/health (nimbus), flapping the upstream
|
||||||
|
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
|
||||||
|
# still governs health with validation off. 2026-07-10, dRPC incident.
|
||||||
|
disable-validation: true
|
||||||
connection:
|
connection:
|
||||||
generic:
|
generic:
|
||||||
rpc:
|
rpc:
|
||||||
url: $${RPC_URL}
|
url: $${RPC_URL}
|
||||||
|
x-optional-volumes: [gnosis-mainnet-nethermind-archive-rocksdb-trace_nimbus]
|
||||||
...
|
...
|
||||||
@@ -174,8 +174,15 @@ x-upstreams:
|
|||||||
chain: gnosis-beacon-chain
|
chain: gnosis-beacon-chain
|
||||||
labels:
|
labels:
|
||||||
provider: $${PROVIDER}-beacon-chain
|
provider: $${PROVIDER}-beacon-chain
|
||||||
|
options:
|
||||||
|
# dshackle 0.79.10's beacon health validator times out on the spec-compliant
|
||||||
|
# empty-body 200 from /eth/v1/node/health (nimbus), flapping the upstream
|
||||||
|
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
|
||||||
|
# still governs health with validation off. 2026-07-10, dRPC incident.
|
||||||
|
disable-validation: true
|
||||||
connection:
|
connection:
|
||||||
generic:
|
generic:
|
||||||
rpc:
|
rpc:
|
||||||
url: $${RPC_URL}
|
url: $${RPC_URL}
|
||||||
|
x-optional-volumes: [gnosis-mainnet-nethermind-minimal-rocksdb-trace_nimbus]
|
||||||
...
|
...
|
||||||
@@ -169,8 +169,15 @@ x-upstreams:
|
|||||||
chain: gnosis-beacon-chain
|
chain: gnosis-beacon-chain
|
||||||
labels:
|
labels:
|
||||||
provider: $${PROVIDER}-beacon-chain
|
provider: $${PROVIDER}-beacon-chain
|
||||||
|
options:
|
||||||
|
# dshackle 0.79.10's beacon health validator times out on the spec-compliant
|
||||||
|
# empty-body 200 from /eth/v1/node/health (nimbus), flapping the upstream
|
||||||
|
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
|
||||||
|
# still governs health with validation off. 2026-07-10, dRPC incident.
|
||||||
|
disable-validation: true
|
||||||
connection:
|
connection:
|
||||||
generic:
|
generic:
|
||||||
rpc:
|
rpc:
|
||||||
url: $${RPC_URL}
|
url: $${RPC_URL}
|
||||||
|
x-optional-volumes: [gnosis-mainnet-nethermind-pruned-rocksdb-trace_nimbus]
|
||||||
...
|
...
|
||||||
@@ -183,8 +183,15 @@ x-upstreams:
|
|||||||
chain: gnosis-beacon-chain-chiado
|
chain: gnosis-beacon-chain-chiado
|
||||||
labels:
|
labels:
|
||||||
provider: $${PROVIDER}-beacon-chain
|
provider: $${PROVIDER}-beacon-chain
|
||||||
|
options:
|
||||||
|
# dshackle 0.79.10's beacon health validator times out on the spec-compliant
|
||||||
|
# empty-body 200 from /eth/v1/node/health (nimbus), flapping the upstream
|
||||||
|
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
|
||||||
|
# still governs health with validation off. 2026-07-10, dRPC incident.
|
||||||
|
disable-validation: true
|
||||||
connection:
|
connection:
|
||||||
generic:
|
generic:
|
||||||
rpc:
|
rpc:
|
||||||
url: $${RPC_URL}
|
url: $${RPC_URL}
|
||||||
|
x-optional-volumes: [gnosis-chiado-reth-archive-trace_nimbus]
|
||||||
...
|
...
|
||||||
@@ -184,8 +184,15 @@ x-upstreams:
|
|||||||
chain: gnosis-beacon-chain-chiado
|
chain: gnosis-beacon-chain-chiado
|
||||||
labels:
|
labels:
|
||||||
provider: $${PROVIDER}-beacon-chain
|
provider: $${PROVIDER}-beacon-chain
|
||||||
|
options:
|
||||||
|
# dshackle 0.79.10's beacon health validator times out on the spec-compliant
|
||||||
|
# empty-body 200 from /eth/v1/node/health (nimbus), flapping the upstream
|
||||||
|
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
|
||||||
|
# still governs health with validation off. 2026-07-10, dRPC incident.
|
||||||
|
disable-validation: true
|
||||||
connection:
|
connection:
|
||||||
generic:
|
generic:
|
||||||
rpc:
|
rpc:
|
||||||
url: $${RPC_URL}
|
url: $${RPC_URL}
|
||||||
|
x-optional-volumes: [gnosis-chiado-reth-pruned-trace_nimbus]
|
||||||
...
|
...
|
||||||
@@ -183,8 +183,15 @@ x-upstreams:
|
|||||||
chain: gnosis-beacon-chain
|
chain: gnosis-beacon-chain
|
||||||
labels:
|
labels:
|
||||||
provider: $${PROVIDER}-beacon-chain
|
provider: $${PROVIDER}-beacon-chain
|
||||||
|
options:
|
||||||
|
# dshackle 0.79.10's beacon health validator times out on the spec-compliant
|
||||||
|
# empty-body 200 from /eth/v1/node/health (nimbus), flapping the upstream
|
||||||
|
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
|
||||||
|
# still governs health with validation off. 2026-07-10, dRPC incident.
|
||||||
|
disable-validation: true
|
||||||
connection:
|
connection:
|
||||||
generic:
|
generic:
|
||||||
rpc:
|
rpc:
|
||||||
url: $${RPC_URL}
|
url: $${RPC_URL}
|
||||||
|
x-optional-volumes: [gnosis-mainnet-reth-archive-trace_nimbus]
|
||||||
...
|
...
|
||||||
@@ -184,8 +184,15 @@ x-upstreams:
|
|||||||
chain: gnosis-beacon-chain
|
chain: gnosis-beacon-chain
|
||||||
labels:
|
labels:
|
||||||
provider: $${PROVIDER}-beacon-chain
|
provider: $${PROVIDER}-beacon-chain
|
||||||
|
options:
|
||||||
|
# dshackle 0.79.10's beacon health validator times out on the spec-compliant
|
||||||
|
# empty-body 200 from /eth/v1/node/health (nimbus), flapping the upstream
|
||||||
|
# UNAVAILABLE and failing live requests ("Source was empty"). Head tracking
|
||||||
|
# still governs health with validation off. 2026-07-10, dRPC incident.
|
||||||
|
disable-validation: true
|
||||||
connection:
|
connection:
|
||||||
generic:
|
generic:
|
||||||
rpc:
|
rpc:
|
||||||
url: $${RPC_URL}
|
url: $${RPC_URL}
|
||||||
|
x-optional-volumes: [gnosis-mainnet-reth-pruned-trace_nimbus]
|
||||||
...
|
...
|
||||||
@@ -32,7 +32,7 @@ x-logging-defaults: &logging-defaults
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
immutable-zkevm-mainnet-geth:
|
immutable-zkevm-mainnet-geth:
|
||||||
image: ${IMMUTABLE_ZKEVM_GETH_IMAGE:-ethereum/client-go}:${IMMUTABLE_ZKEVM_MAINNET_GETH_VERSION:-v1.17.4}
|
image: ${IMMUTABLE_ZKEVM_GETH_IMAGE:-ethereum/client-go}:${IMMUTABLE_ZKEVM_MAINNET_GETH_VERSION:-v1.17.5}
|
||||||
sysctls:
|
sysctls:
|
||||||
# TCP Performance
|
# TCP Performance
|
||||||
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
linea-mainnet-erigon3-archive:
|
linea-mainnet-erigon3-archive:
|
||||||
image: ${LINEA_ERIGON3_IMAGE:-erigontech/erigon}:${LINEA_MAINNET_ERIGON3_VERSION:-v3.5.2}
|
image: ${LINEA_ERIGON3_IMAGE:-erigontech/erigon}:${LINEA_MAINNET_ERIGON3_VERSION:-v3.5.3}
|
||||||
sysctls:
|
sysctls:
|
||||||
# TCP Performance
|
# TCP Performance
|
||||||
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
linea-mainnet-erigon3-minimal:
|
linea-mainnet-erigon3-minimal:
|
||||||
image: ${LINEA_ERIGON3_IMAGE:-erigontech/erigon}:${LINEA_MAINNET_ERIGON3_VERSION:-v3.5.2}
|
image: ${LINEA_ERIGON3_IMAGE:-erigontech/erigon}:${LINEA_MAINNET_ERIGON3_VERSION:-v3.5.3}
|
||||||
sysctls:
|
sysctls:
|
||||||
# TCP Performance
|
# TCP Performance
|
||||||
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
linea-mainnet-erigon3:
|
linea-mainnet-erigon3:
|
||||||
image: ${LINEA_ERIGON3_IMAGE:-erigontech/erigon}:${LINEA_MAINNET_ERIGON3_VERSION:-v3.5.2}
|
image: ${LINEA_ERIGON3_IMAGE:-erigontech/erigon}:${LINEA_MAINNET_ERIGON3_VERSION:-v3.5.3}
|
||||||
sysctls:
|
sysctls:
|
||||||
# TCP Performance
|
# TCP Performance
|
||||||
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
linea-sepolia-erigon3-archive:
|
linea-sepolia-erigon3-archive:
|
||||||
image: ${LINEA_ERIGON3_IMAGE:-erigontech/erigon}:${LINEA_SEPOLIA_ERIGON3_VERSION:-v3.5.2}
|
image: ${LINEA_ERIGON3_IMAGE:-erigontech/erigon}:${LINEA_SEPOLIA_ERIGON3_VERSION:-v3.5.3}
|
||||||
sysctls:
|
sysctls:
|
||||||
# TCP Performance
|
# TCP Performance
|
||||||
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
linea-sepolia-erigon3-minimal:
|
linea-sepolia-erigon3-minimal:
|
||||||
image: ${LINEA_ERIGON3_IMAGE:-erigontech/erigon}:${LINEA_SEPOLIA_ERIGON3_VERSION:-v3.5.2}
|
image: ${LINEA_ERIGON3_IMAGE:-erigontech/erigon}:${LINEA_SEPOLIA_ERIGON3_VERSION:-v3.5.3}
|
||||||
sysctls:
|
sysctls:
|
||||||
# TCP Performance
|
# TCP Performance
|
||||||
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
linea-sepolia-erigon3:
|
linea-sepolia-erigon3:
|
||||||
image: ${LINEA_ERIGON3_IMAGE:-erigontech/erigon}:${LINEA_SEPOLIA_ERIGON3_VERSION:-v3.5.2}
|
image: ${LINEA_ERIGON3_IMAGE:-erigontech/erigon}:${LINEA_SEPOLIA_ERIGON3_VERSION:-v3.5.3}
|
||||||
sysctls:
|
sysctls:
|
||||||
# TCP Performance
|
# TCP Performance
|
||||||
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
||||||
|
|||||||
@@ -1,10 +1,14 @@
|
|||||||
# Uncomment the below [linea] section for finalized L2 block tag
|
# [linea] finalization provider DISABLED (2026-07-31): Maru CL stuck at slot
|
||||||
[linea]
|
# 6764022 with EL head ~24k behind tip; Maru sent FCU finalized ahead of EL
|
||||||
contract-address = "0xd19d4B5d358258f05D7B411E21A1460D11B0876F"
|
# head → Besu -38002 Invalid forkchoice. Maru has no linea.enabled flag —
|
||||||
l1-eth-api = { endpoint = "${L1_RPC}" }
|
# presence of [linea] enables the provider; comment out to disable. Re-enable
|
||||||
l1-polling-interval = "6 seconds"
|
# (uncomment) once EL has caught tip.
|
||||||
l1-highest-block-tag = "finalized"
|
# [linea]
|
||||||
l2-eth-api-endpoint = { endpoint = "${SEQUENCER}" }
|
# contract-address = "0xd19d4B5d358258f05D7B411E21A1460D11B0876F"
|
||||||
|
# l1-eth-api = { endpoint = "${L1_RPC}" }
|
||||||
|
# l1-polling-interval = "6 seconds"
|
||||||
|
# l1-highest-block-tag = "finalized"
|
||||||
|
# l2-eth-api-endpoint = { endpoint = "${SEQUENCER}" }
|
||||||
|
|
||||||
[persistence]
|
[persistence]
|
||||||
data-path = "/opt/maru/data"
|
data-path = "/opt/maru/data"
|
||||||
|
|||||||
+20
-2
@@ -13,6 +13,20 @@
|
|||||||
|
|
||||||
dir="$(dirname "$0")"
|
dir="$(dirname "$0")"
|
||||||
source "$dir/volume-utils.sh"
|
source "$dir/volume-utils.sh"
|
||||||
|
|
||||||
|
# Get required persistent volume keys (all volumes minus ephemeral minus optional)
|
||||||
|
get_required_volume_keys() {
|
||||||
|
local compose_file=$1
|
||||||
|
local key
|
||||||
|
|
||||||
|
while IFS= read -r key; do
|
||||||
|
[[ -z "$key" ]] && continue
|
||||||
|
# Skip if ephemeral or optional
|
||||||
|
if ! is_ephemeral_volume_key "$key" "$compose_file" && ! is_optional_volume_key "$key" "$compose_file"; then
|
||||||
|
echo "$key"
|
||||||
|
fi
|
||||||
|
done < <(get_volume_keys "$compose_file")
|
||||||
|
}
|
||||||
registry_file="${dir}/compose_registry.json"
|
registry_file="${dir}/compose_registry.json"
|
||||||
backup_dir="/backup"
|
backup_dir="/backup"
|
||||||
|
|
||||||
@@ -107,7 +121,6 @@ while IFS= read -r entry; do
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
compose_file=$(echo "$entry" | jq -r '.compose_file')
|
compose_file=$(echo "$entry" | jq -r '.compose_file')
|
||||||
volumes=$(echo "$entry" | jq -r '.volumes[]')
|
|
||||||
|
|
||||||
# Check if compose file exists
|
# Check if compose file exists
|
||||||
compose_path="${dir}/${compose_file}.yml"
|
compose_path="${dir}/${compose_file}.yml"
|
||||||
@@ -115,11 +128,16 @@ while IFS= read -r entry; do
|
|||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Check each volume for backup file
|
# Check each required volume for backup file
|
||||||
all_backups_exist=true
|
all_backups_exist=true
|
||||||
missing_volumes=()
|
missing_volumes=()
|
||||||
backup_info=()
|
backup_info=()
|
||||||
|
|
||||||
|
# Required persistent volumes only (exclude ephemeral + optional).
|
||||||
|
# Must feed the loop via done<<< / done< <(...) — putting < <(...) on
|
||||||
|
# `read` re-runs the producer every iteration and infinite-loops on the
|
||||||
|
# first key (vibe regression 2026-08-04 d896378e).
|
||||||
|
volumes=$(get_required_volume_keys "$compose_path")
|
||||||
while IFS= read -r volume; do
|
while IFS= read -r volume; do
|
||||||
volume_name="rpc_${volume}"
|
volume_name="rpc_${volume}"
|
||||||
# jwt/secrets volumes are regenerated at create-node — never backed up by
|
# jwt/secrets volumes are regenerated at create-node — never backed up by
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ services:
|
|||||||
- --p2p.allowed-ports=32283
|
- --p2p.allowed-ports=32283
|
||||||
- --p2p.allowed-ports=37283
|
- --p2p.allowed-ports=37283
|
||||||
- --port=12283
|
- --port=12283
|
||||||
- --rollup.sequencerhttp=https://rpc.soneium.org
|
- --rollup.sequencerhttp=https://rpc.minato.soneium.org
|
||||||
- --rpc.gascap=6000000000
|
- --rpc.gascap=6000000000
|
||||||
- --rpc.returndata.limit=1500000
|
- --rpc.returndata.limit=1500000
|
||||||
- --http
|
- --http
|
||||||
@@ -176,7 +176,7 @@ x-upstreams:
|
|||||||
frameSize: 20Mb
|
frameSize: 20Mb
|
||||||
msgSize: 50Mb
|
msgSize: 50Mb
|
||||||
url: $${WS_URL}
|
url: $${WS_URL}
|
||||||
chain: soneium
|
chain: soneium-minato
|
||||||
method-groups:
|
method-groups:
|
||||||
enabled:
|
enabled:
|
||||||
- debug
|
- debug
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
- GETH_OP_NETWORK=soneium-minato-sepolia
|
- GETH_OP_NETWORK=soneium-minato-sepolia
|
||||||
- GETH_ROLLUP_DISABLETXPOOLGOSSIP=true
|
- GETH_ROLLUP_DISABLETXPOOLGOSSIP=true
|
||||||
- GETH_ROLLUP_SEQUENCERHTTP=https://rpc.soneium.org
|
- GETH_ROLLUP_SEQUENCERHTTP=https://rpc.minato.soneium.org
|
||||||
entrypoint: /bin/sh -c 'exec geth "$@"' --
|
entrypoint: /bin/sh -c 'exec geth "$@"' --
|
||||||
command:
|
command:
|
||||||
- --datadir=/data
|
- --datadir=/data
|
||||||
@@ -176,7 +176,7 @@ x-upstreams:
|
|||||||
frameSize: 20Mb
|
frameSize: 20Mb
|
||||||
msgSize: 50Mb
|
msgSize: 50Mb
|
||||||
url: $${WS_URL}
|
url: $${WS_URL}
|
||||||
chain: soneium
|
chain: soneium-minato
|
||||||
method-groups:
|
method-groups:
|
||||||
enabled:
|
enabled:
|
||||||
- debug
|
- debug
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
- GETH_OP_NETWORK=soneium-minato-sepolia
|
- GETH_OP_NETWORK=soneium-minato-sepolia
|
||||||
- GETH_ROLLUP_DISABLETXPOOLGOSSIP=true
|
- GETH_ROLLUP_DISABLETXPOOLGOSSIP=true
|
||||||
- GETH_ROLLUP_SEQUENCERHTTP=https://rpc.soneium.org
|
- GETH_ROLLUP_SEQUENCERHTTP=https://rpc.minato.soneium.org
|
||||||
entrypoint: /bin/sh -c 'exec geth "$@"' --
|
entrypoint: /bin/sh -c 'exec geth "$@"' --
|
||||||
command:
|
command:
|
||||||
- --datadir=/data
|
- --datadir=/data
|
||||||
@@ -176,7 +176,7 @@ x-upstreams:
|
|||||||
frameSize: 20Mb
|
frameSize: 20Mb
|
||||||
msgSize: 50Mb
|
msgSize: 50Mb
|
||||||
url: $${WS_URL}
|
url: $${WS_URL}
|
||||||
chain: soneium
|
chain: soneium-minato
|
||||||
method-groups:
|
method-groups:
|
||||||
enabled:
|
enabled:
|
||||||
- debug
|
- debug
|
||||||
|
|||||||
@@ -1,214 +0,0 @@
|
|||||||
---
|
|
||||||
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/geth/zircuit-mainnet-op-geth-archive-leveldb-hash.yml
|
|
||||||
#
|
|
||||||
# docker compose up -d
|
|
||||||
#
|
|
||||||
# curl -X POST https://${IP}.traefik.me/zircuit-mainnet-archive \
|
|
||||||
# -H "Content-Type: application/json" \
|
|
||||||
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
|
|
||||||
|
|
||||||
services:
|
|
||||||
zircuit-mainnet-archive:
|
|
||||||
image: ${ZIRCUIT_GETH_IMAGE:-zircuit1/l2-geth}:${ZIRCUIT_MAINNET_GETH_VERSION:-v1.138.8}
|
|
||||||
sysctls:
|
|
||||||
# TCP Performance
|
|
||||||
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
|
||||||
net.ipv4.tcp_no_metrics_save: 1 # Disable metrics cache
|
|
||||||
net.ipv4.tcp_rmem: 4096 87380 16777216 # Increase TCP read buffers
|
|
||||||
net.ipv4.tcp_wmem: 4096 87380 16777216 # Increase TCP write buffers
|
|
||||||
net.core.somaxconn: 32768 # Higher connection queue
|
|
||||||
# Memory/Connection Management
|
|
||||||
# net.core.netdev_max_backlog: 50000 # Increase network buffer
|
|
||||||
net.ipv4.tcp_max_syn_backlog: 30000 # More SYN requests
|
|
||||||
net.ipv4.tcp_max_tw_buckets: 2000000 # Allow more TIME_WAIT sockets
|
|
||||||
ulimits:
|
|
||||||
nofile: 1048576 # Max open files (for RPC/WS connections)
|
|
||||||
user: root
|
|
||||||
expose:
|
|
||||||
- 8545
|
|
||||||
- 6060
|
|
||||||
- 8551
|
|
||||||
environment:
|
|
||||||
- GETH_CONFIG=/config/gethconfig.toml
|
|
||||||
- GETH_ETHSTATS=d${DOMAIN}:${ZIRCUIT_MAINNET_WS_SECRET}@${ZIRCUIT_MAINNET_ETH_STATS_SERVER}:${ZIRCUIT_MAINNET_ETH_STATS_SERVER_PORT}
|
|
||||||
- GETH_ROLLUP_DISABLETXPOOLGOSSIP=true
|
|
||||||
- GETH_ROLLUP_SEQUENCERHTTP=https://proxyd-ingress-eu.mainnet.zircuit.com/?token=drpcvATEn3gsYCLyLw7ztFLCBwQNoDJr2QjpcsNNkksu
|
|
||||||
- GETH_TXPOOL_GLOBALQUEUE=1024
|
|
||||||
- ZIRCUIT_NETWORK=mainnet
|
|
||||||
entrypoint: /bin/sh -c 'exec geth "$@"' --
|
|
||||||
command:
|
|
||||||
- --datadir=/data
|
|
||||||
- --db.engine=leveldb
|
|
||||||
- --gcmode=archive
|
|
||||||
- --maxpeers=50
|
|
||||||
- --metrics
|
|
||||||
- --metrics.addr=0.0.0.0
|
|
||||||
- --metrics.port=6060
|
|
||||||
- --network=mainnet
|
|
||||||
- --nodiscover
|
|
||||||
- --rpc.gascap=600000000
|
|
||||||
- --rpc.txfeecap=0
|
|
||||||
- --state.scheme=hash
|
|
||||||
- --syncmode=full
|
|
||||||
- --http
|
|
||||||
- --http.addr=0.0.0.0
|
|
||||||
- --http.api=eth,net,web3,debug,admin,txpool,engine
|
|
||||||
- --http.port=8545
|
|
||||||
- --http.vhosts=*
|
|
||||||
- --ws
|
|
||||||
- --ws.addr=0.0.0.0
|
|
||||||
- --ws.api=eth,net,web3,debug,admin,txpool,engine
|
|
||||||
- --ws.origins=*
|
|
||||||
- --ws.port=8545
|
|
||||||
- --authrpc.addr=0.0.0.0
|
|
||||||
- --authrpc.jwtsecret=/jwtsecret
|
|
||||||
- --authrpc.vhosts=*
|
|
||||||
restart: unless-stopped
|
|
||||||
stop_grace_period: 5m
|
|
||||||
networks:
|
|
||||||
- chains
|
|
||||||
volumes:
|
|
||||||
- ${ZIRCUIT_MAINNET_OP_GETH_ARCHIVE_LEVELDB_HASH_DATA:-zircuit-mainnet-op-geth-archive-leveldb-hash}:/data
|
|
||||||
- ./op/zircuit/mainnet:/config
|
|
||||||
- .jwtsecret:/jwtsecret:ro
|
|
||||||
- /slowdisk:/slowdisk
|
|
||||||
logging: *logging-defaults
|
|
||||||
labels:
|
|
||||||
- prometheus-scrape.enabled=true
|
|
||||||
- prometheus-scrape.port=6060
|
|
||||||
- prometheus-scrape.path=/debug/metrics/prometheus
|
|
||||||
- traefik.enable=true
|
|
||||||
- traefik.http.middlewares.zircuit-mainnet-op-geth-archive-leveldb-hash-stripprefix.stripprefix.prefixes=/zircuit-mainnet-archive
|
|
||||||
- traefik.http.services.zircuit-mainnet-op-geth-archive-leveldb-hash.loadbalancer.server.port=8545
|
|
||||||
- ${NO_SSL:-traefik.http.routers.zircuit-mainnet-op-geth-archive-leveldb-hash.entrypoints=websecure}
|
|
||||||
- ${NO_SSL:-traefik.http.routers.zircuit-mainnet-op-geth-archive-leveldb-hash.tls.certresolver=myresolver}
|
|
||||||
- ${NO_SSL:-traefik.http.routers.zircuit-mainnet-op-geth-archive-leveldb-hash.rule=Host(`$DOMAIN`) && (Path(`/zircuit-mainnet-archive`) || Path(`/zircuit-mainnet-archive/`))}
|
|
||||||
- ${NO_SSL:+traefik.http.routers.zircuit-mainnet-op-geth-archive-leveldb-hash.rule=Path(`/zircuit-mainnet-archive`) || Path(`/zircuit-mainnet-archive/`)}
|
|
||||||
- traefik.http.routers.zircuit-mainnet-op-geth-archive-leveldb-hash.middlewares=zircuit-mainnet-op-geth-archive-leveldb-hash-stripprefix, ipallowlist
|
|
||||||
|
|
||||||
zircuit-mainnet-archive-node:
|
|
||||||
image: ${ZIRCUIT_NODE_IMAGE:-zircuit1/op-node}:${MAINNET_NODE_VERSION:-v1.138.8}
|
|
||||||
user: root
|
|
||||||
ports:
|
|
||||||
- 19463:19463
|
|
||||||
- 19463:19463/udp
|
|
||||||
environment:
|
|
||||||
- OP_NODE_L1_BEACON=${ETHEREUM_MAINNET_BEACON_REST}
|
|
||||||
- OP_NODE_L1_BEACON_ARCHIVER=${ETHEREUM_MAINNET_BEACON_ARCHIVER}
|
|
||||||
- OP_NODE_L1_ETH_RPC=${MAINNET_L1_EXECUTION_RPC:-${ETHEREUM_MAINNET_EXECUTION_RPC}}
|
|
||||||
- OP_NODE_L1_RPC_KIND=${ETHEREUM_MAINNET_EXECUTION_KIND:-standard}
|
|
||||||
- OP_NODE_L1_TRUST_RPC=${ETHEREUM_MAINNET_EXECUTION_TRUST:-false}
|
|
||||||
- OP_NODE_L2_ENGINE_AUTH=/jwtsecret
|
|
||||||
- OP_NODE_L2_ENGINE_RPC=http://zircuit-mainnet-archive:8551
|
|
||||||
- OP_NODE_L2_ENGINE_RPC_TIMEOUT=120s
|
|
||||||
- OP_NODE_L2_SKIP_SYNC_START_CHECK=true
|
|
||||||
- OP_NODE_LOG_LEVEL=info
|
|
||||||
- OP_NODE_METRICS_ADDR=0.0.0.0
|
|
||||||
- OP_NODE_METRICS_ENABLED=true
|
|
||||||
- OP_NODE_METRICS_PORT=7300
|
|
||||||
- OP_NODE_NETWORK=mainnet
|
|
||||||
- OP_NODE_P2P_ADVERTISE_IP=${IP}
|
|
||||||
- OP_NODE_P2P_LISTEN_IP=0.0.0.0
|
|
||||||
- OP_NODE_P2P_LISTEN_TCP_PORT=19463
|
|
||||||
- OP_NODE_P2P_LISTEN_UDP_PORT=19463
|
|
||||||
- OP_NODE_P2P_STATIC=/dns4/node1-eu-p2p.mainnet.zircuit.com/tcp/9003/p2p/16Uiu2HAm5Uxn3E8RXEM2e5YsR9VNM8uKoPmZzwQjqp7r64ZLspd5,/dns4/node2-eu-p2p.mainnet.zircuit.com/tcp/9003/p2p/16Uiu2HAmPoLg64PL2X2oLrUSmYaqAbkATPAMNRxLCZTBavUP8UEB,/dns4/node3-eu-p2p.mainnet.zircuit.com/tcp/9003/p2p/16Uiu2HAmB9iZKfv9RPRZj6JwcwjbwZWECFwJ67b1LJMHrczTnbjf
|
|
||||||
- OP_NODE_ROLLUP_LOAD_PROTOCOL_VERSIONS=true
|
|
||||||
- OP_NODE_RPC_ADDR=0.0.0.0
|
|
||||||
- OP_NODE_RPC_PORT=9545
|
|
||||||
- OP_NODE_SEQUENCER_ENABLED=false
|
|
||||||
- OP_NODE_SEQUENCER_L1_CONFS=0
|
|
||||||
- OP_NODE_SEQUENCER_MAX_SAFE_LAG=0
|
|
||||||
- OP_NODE_SEQUENCER_STOPPED=false
|
|
||||||
- OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log
|
|
||||||
- OP_NODE_SYNCMODE=consensus-layer
|
|
||||||
- OP_NODE_VERIFIER_L1_CONFS=0
|
|
||||||
entrypoint: [op-node]
|
|
||||||
restart: unless-stopped
|
|
||||||
depends_on:
|
|
||||||
zircuit-mainnet-archive:
|
|
||||||
condition: service_started
|
|
||||||
restart: true
|
|
||||||
networks:
|
|
||||||
- chains
|
|
||||||
volumes:
|
|
||||||
- ./op/zircuit/mainnet:/config
|
|
||||||
- .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.zircuit-mainnet-op-geth-archive-leveldb-hash-node-stripprefix.stripprefix.prefixes=/zircuit-mainnet-archive/node
|
|
||||||
- traefik.http.services.zircuit-mainnet-op-geth-archive-leveldb-hash-node.loadbalancer.server.port=9545
|
|
||||||
- ${NO_SSL:-traefik.http.routers.zircuit-mainnet-op-geth-archive-leveldb-hash-node.entrypoints=websecure}
|
|
||||||
- ${NO_SSL:-traefik.http.routers.zircuit-mainnet-op-geth-archive-leveldb-hash-node.tls.certresolver=myresolver}
|
|
||||||
- ${NO_SSL:-traefik.http.routers.zircuit-mainnet-op-geth-archive-leveldb-hash-node.rule=Host(`$DOMAIN`) && PathPrefix(`/zircuit-mainnet-archive/node`)}
|
|
||||||
- ${NO_SSL:+traefik.http.routers.zircuit-mainnet-op-geth-archive-leveldb-hash-node.rule=PathPrefix(`/zircuit-mainnet-archive/node`)}
|
|
||||||
- traefik.http.routers.zircuit-mainnet-op-geth-archive-leveldb-hash-node.middlewares=zircuit-mainnet-op-geth-archive-leveldb-hash-node-stripprefix, ipallowlist
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
zircuit-mainnet-op-geth-archive-leveldb-hash:
|
|
||||||
|
|
||||||
x-upstreams:
|
|
||||||
- id: $${ID}
|
|
||||||
labels:
|
|
||||||
provider: $${PROVIDER}
|
|
||||||
connection:
|
|
||||||
generic:
|
|
||||||
rpc:
|
|
||||||
url: $${RPC_URL}
|
|
||||||
ws:
|
|
||||||
frameSize: 20Mb
|
|
||||||
msgSize: 50Mb
|
|
||||||
url: $${WS_URL}
|
|
||||||
chain: zircuit-mainnet
|
|
||||||
method-groups:
|
|
||||||
enabled:
|
|
||||||
- debug
|
|
||||||
- filter
|
|
||||||
methods:
|
|
||||||
disabled:
|
|
||||||
enabled:
|
|
||||||
- name: txpool_content # TODO: should be disabled for rollup nodes
|
|
||||||
# standard geth only
|
|
||||||
- name: debug_getRawBlock
|
|
||||||
- name: debug_getRawTransaction
|
|
||||||
- name: debug_getRawReceipts
|
|
||||||
- name: debug_getRawHeader
|
|
||||||
- name: debug_getBadBlocks
|
|
||||||
# non standard geth only slightly dangerous
|
|
||||||
- name: debug_intermediateRoots
|
|
||||||
- name: debug_dumpBlock
|
|
||||||
# standard geth and erigon
|
|
||||||
- name: debug_accountRange
|
|
||||||
- name: debug_getModifiedAccountsByNumber
|
|
||||||
- name: debug_getModifiedAccountsByHash
|
|
||||||
# non standard geth and erigon
|
|
||||||
- name: eth_getRawTransactionByHash
|
|
||||||
- name: eth_getRawTransactionByBlockHashAndIndex
|
|
||||||
- name: zirc_getQuarantineHistory
|
|
||||||
- name: zirc_getQuarantined
|
|
||||||
- name: zirc_isQuarantined
|
|
||||||
...
|
|
||||||
@@ -1,214 +0,0 @@
|
|||||||
---
|
|
||||||
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/geth/zircuit-mainnet-op-geth-archive-pebble-hash.yml
|
|
||||||
#
|
|
||||||
# docker compose up -d
|
|
||||||
#
|
|
||||||
# curl -X POST https://${IP}.traefik.me/zircuit-mainnet-archive \
|
|
||||||
# -H "Content-Type: application/json" \
|
|
||||||
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
|
|
||||||
|
|
||||||
services:
|
|
||||||
zircuit-mainnet-archive:
|
|
||||||
image: ${ZIRCUIT_GETH_IMAGE:-zircuit1/l2-geth}:${ZIRCUIT_MAINNET_GETH_VERSION:-v1.138.8}
|
|
||||||
sysctls:
|
|
||||||
# TCP Performance
|
|
||||||
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
|
||||||
net.ipv4.tcp_no_metrics_save: 1 # Disable metrics cache
|
|
||||||
net.ipv4.tcp_rmem: 4096 87380 16777216 # Increase TCP read buffers
|
|
||||||
net.ipv4.tcp_wmem: 4096 87380 16777216 # Increase TCP write buffers
|
|
||||||
net.core.somaxconn: 32768 # Higher connection queue
|
|
||||||
# Memory/Connection Management
|
|
||||||
# net.core.netdev_max_backlog: 50000 # Increase network buffer
|
|
||||||
net.ipv4.tcp_max_syn_backlog: 30000 # More SYN requests
|
|
||||||
net.ipv4.tcp_max_tw_buckets: 2000000 # Allow more TIME_WAIT sockets
|
|
||||||
ulimits:
|
|
||||||
nofile: 1048576 # Max open files (for RPC/WS connections)
|
|
||||||
user: root
|
|
||||||
expose:
|
|
||||||
- 8545
|
|
||||||
- 6060
|
|
||||||
- 8551
|
|
||||||
environment:
|
|
||||||
- GETH_CONFIG=/config/gethconfig.toml
|
|
||||||
- GETH_ETHSTATS=d${DOMAIN}:${ZIRCUIT_MAINNET_WS_SECRET}@${ZIRCUIT_MAINNET_ETH_STATS_SERVER}:${ZIRCUIT_MAINNET_ETH_STATS_SERVER_PORT}
|
|
||||||
- GETH_ROLLUP_DISABLETXPOOLGOSSIP=true
|
|
||||||
- GETH_ROLLUP_SEQUENCERHTTP=https://proxyd-ingress-eu.mainnet.zircuit.com/?token=drpcvATEn3gsYCLyLw7ztFLCBwQNoDJr2QjpcsNNkksu
|
|
||||||
- GETH_TXPOOL_GLOBALQUEUE=1024
|
|
||||||
- ZIRCUIT_NETWORK=mainnet
|
|
||||||
entrypoint: /bin/sh -c 'exec geth "$@"' --
|
|
||||||
command:
|
|
||||||
- --datadir=/data
|
|
||||||
- --db.engine=pebble
|
|
||||||
- --gcmode=archive
|
|
||||||
- --maxpeers=50
|
|
||||||
- --metrics
|
|
||||||
- --metrics.addr=0.0.0.0
|
|
||||||
- --metrics.port=6060
|
|
||||||
- --network=mainnet
|
|
||||||
- --nodiscover
|
|
||||||
- --rpc.gascap=600000000
|
|
||||||
- --rpc.txfeecap=0
|
|
||||||
- --state.scheme=hash
|
|
||||||
- --syncmode=full
|
|
||||||
- --http
|
|
||||||
- --http.addr=0.0.0.0
|
|
||||||
- --http.api=eth,net,web3,debug,admin,txpool,engine
|
|
||||||
- --http.port=8545
|
|
||||||
- --http.vhosts=*
|
|
||||||
- --ws
|
|
||||||
- --ws.addr=0.0.0.0
|
|
||||||
- --ws.api=eth,net,web3,debug,admin,txpool,engine
|
|
||||||
- --ws.origins=*
|
|
||||||
- --ws.port=8545
|
|
||||||
- --authrpc.addr=0.0.0.0
|
|
||||||
- --authrpc.jwtsecret=/jwtsecret
|
|
||||||
- --authrpc.vhosts=*
|
|
||||||
restart: unless-stopped
|
|
||||||
stop_grace_period: 5m
|
|
||||||
networks:
|
|
||||||
- chains
|
|
||||||
volumes:
|
|
||||||
- ${ZIRCUIT_MAINNET_OP_GETH_ARCHIVE_PEBBLE_HASH_DATA:-zircuit-mainnet-op-geth-archive-pebble-hash}:/data
|
|
||||||
- ./op/zircuit/mainnet:/config
|
|
||||||
- .jwtsecret:/jwtsecret:ro
|
|
||||||
- /slowdisk:/slowdisk
|
|
||||||
logging: *logging-defaults
|
|
||||||
labels:
|
|
||||||
- prometheus-scrape.enabled=true
|
|
||||||
- prometheus-scrape.port=6060
|
|
||||||
- prometheus-scrape.path=/debug/metrics/prometheus
|
|
||||||
- traefik.enable=true
|
|
||||||
- traefik.http.middlewares.zircuit-mainnet-op-geth-archive-pebble-hash-stripprefix.stripprefix.prefixes=/zircuit-mainnet-archive
|
|
||||||
- traefik.http.services.zircuit-mainnet-op-geth-archive-pebble-hash.loadbalancer.server.port=8545
|
|
||||||
- ${NO_SSL:-traefik.http.routers.zircuit-mainnet-op-geth-archive-pebble-hash.entrypoints=websecure}
|
|
||||||
- ${NO_SSL:-traefik.http.routers.zircuit-mainnet-op-geth-archive-pebble-hash.tls.certresolver=myresolver}
|
|
||||||
- ${NO_SSL:-traefik.http.routers.zircuit-mainnet-op-geth-archive-pebble-hash.rule=Host(`$DOMAIN`) && (Path(`/zircuit-mainnet-archive`) || Path(`/zircuit-mainnet-archive/`))}
|
|
||||||
- ${NO_SSL:+traefik.http.routers.zircuit-mainnet-op-geth-archive-pebble-hash.rule=Path(`/zircuit-mainnet-archive`) || Path(`/zircuit-mainnet-archive/`)}
|
|
||||||
- traefik.http.routers.zircuit-mainnet-op-geth-archive-pebble-hash.middlewares=zircuit-mainnet-op-geth-archive-pebble-hash-stripprefix, ipallowlist
|
|
||||||
|
|
||||||
zircuit-mainnet-archive-node:
|
|
||||||
image: ${ZIRCUIT_NODE_IMAGE:-zircuit1/op-node}:${MAINNET_NODE_VERSION:-v1.138.8}
|
|
||||||
user: root
|
|
||||||
ports:
|
|
||||||
- 15588:15588
|
|
||||||
- 15588:15588/udp
|
|
||||||
environment:
|
|
||||||
- OP_NODE_L1_BEACON=${ETHEREUM_MAINNET_BEACON_REST}
|
|
||||||
- OP_NODE_L1_BEACON_ARCHIVER=${ETHEREUM_MAINNET_BEACON_ARCHIVER}
|
|
||||||
- OP_NODE_L1_ETH_RPC=${MAINNET_L1_EXECUTION_RPC:-${ETHEREUM_MAINNET_EXECUTION_RPC}}
|
|
||||||
- OP_NODE_L1_RPC_KIND=${ETHEREUM_MAINNET_EXECUTION_KIND:-standard}
|
|
||||||
- OP_NODE_L1_TRUST_RPC=${ETHEREUM_MAINNET_EXECUTION_TRUST:-false}
|
|
||||||
- OP_NODE_L2_ENGINE_AUTH=/jwtsecret
|
|
||||||
- OP_NODE_L2_ENGINE_RPC=http://zircuit-mainnet-archive:8551
|
|
||||||
- OP_NODE_L2_ENGINE_RPC_TIMEOUT=120s
|
|
||||||
- OP_NODE_L2_SKIP_SYNC_START_CHECK=true
|
|
||||||
- OP_NODE_LOG_LEVEL=info
|
|
||||||
- OP_NODE_METRICS_ADDR=0.0.0.0
|
|
||||||
- OP_NODE_METRICS_ENABLED=true
|
|
||||||
- OP_NODE_METRICS_PORT=7300
|
|
||||||
- OP_NODE_NETWORK=mainnet
|
|
||||||
- OP_NODE_P2P_ADVERTISE_IP=${IP}
|
|
||||||
- OP_NODE_P2P_LISTEN_IP=0.0.0.0
|
|
||||||
- OP_NODE_P2P_LISTEN_TCP_PORT=15588
|
|
||||||
- OP_NODE_P2P_LISTEN_UDP_PORT=15588
|
|
||||||
- OP_NODE_P2P_STATIC=/dns4/node1-eu-p2p.mainnet.zircuit.com/tcp/9003/p2p/16Uiu2HAm5Uxn3E8RXEM2e5YsR9VNM8uKoPmZzwQjqp7r64ZLspd5,/dns4/node2-eu-p2p.mainnet.zircuit.com/tcp/9003/p2p/16Uiu2HAmPoLg64PL2X2oLrUSmYaqAbkATPAMNRxLCZTBavUP8UEB,/dns4/node3-eu-p2p.mainnet.zircuit.com/tcp/9003/p2p/16Uiu2HAmB9iZKfv9RPRZj6JwcwjbwZWECFwJ67b1LJMHrczTnbjf
|
|
||||||
- OP_NODE_ROLLUP_LOAD_PROTOCOL_VERSIONS=true
|
|
||||||
- OP_NODE_RPC_ADDR=0.0.0.0
|
|
||||||
- OP_NODE_RPC_PORT=9545
|
|
||||||
- OP_NODE_SEQUENCER_ENABLED=false
|
|
||||||
- OP_NODE_SEQUENCER_L1_CONFS=0
|
|
||||||
- OP_NODE_SEQUENCER_MAX_SAFE_LAG=0
|
|
||||||
- OP_NODE_SEQUENCER_STOPPED=false
|
|
||||||
- OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log
|
|
||||||
- OP_NODE_SYNCMODE=consensus-layer
|
|
||||||
- OP_NODE_VERIFIER_L1_CONFS=0
|
|
||||||
entrypoint: [op-node]
|
|
||||||
restart: unless-stopped
|
|
||||||
depends_on:
|
|
||||||
zircuit-mainnet-archive:
|
|
||||||
condition: service_started
|
|
||||||
restart: true
|
|
||||||
networks:
|
|
||||||
- chains
|
|
||||||
volumes:
|
|
||||||
- ./op/zircuit/mainnet:/config
|
|
||||||
- .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.zircuit-mainnet-op-geth-archive-pebble-hash-node-stripprefix.stripprefix.prefixes=/zircuit-mainnet-archive/node
|
|
||||||
- traefik.http.services.zircuit-mainnet-op-geth-archive-pebble-hash-node.loadbalancer.server.port=9545
|
|
||||||
- ${NO_SSL:-traefik.http.routers.zircuit-mainnet-op-geth-archive-pebble-hash-node.entrypoints=websecure}
|
|
||||||
- ${NO_SSL:-traefik.http.routers.zircuit-mainnet-op-geth-archive-pebble-hash-node.tls.certresolver=myresolver}
|
|
||||||
- ${NO_SSL:-traefik.http.routers.zircuit-mainnet-op-geth-archive-pebble-hash-node.rule=Host(`$DOMAIN`) && PathPrefix(`/zircuit-mainnet-archive/node`)}
|
|
||||||
- ${NO_SSL:+traefik.http.routers.zircuit-mainnet-op-geth-archive-pebble-hash-node.rule=PathPrefix(`/zircuit-mainnet-archive/node`)}
|
|
||||||
- traefik.http.routers.zircuit-mainnet-op-geth-archive-pebble-hash-node.middlewares=zircuit-mainnet-op-geth-archive-pebble-hash-node-stripprefix, ipallowlist
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
zircuit-mainnet-op-geth-archive-pebble-hash:
|
|
||||||
|
|
||||||
x-upstreams:
|
|
||||||
- id: $${ID}
|
|
||||||
labels:
|
|
||||||
provider: $${PROVIDER}
|
|
||||||
connection:
|
|
||||||
generic:
|
|
||||||
rpc:
|
|
||||||
url: $${RPC_URL}
|
|
||||||
ws:
|
|
||||||
frameSize: 20Mb
|
|
||||||
msgSize: 50Mb
|
|
||||||
url: $${WS_URL}
|
|
||||||
chain: zircuit-mainnet
|
|
||||||
method-groups:
|
|
||||||
enabled:
|
|
||||||
- debug
|
|
||||||
- filter
|
|
||||||
methods:
|
|
||||||
disabled:
|
|
||||||
enabled:
|
|
||||||
- name: txpool_content # TODO: should be disabled for rollup nodes
|
|
||||||
# standard geth only
|
|
||||||
- name: debug_getRawBlock
|
|
||||||
- name: debug_getRawTransaction
|
|
||||||
- name: debug_getRawReceipts
|
|
||||||
- name: debug_getRawHeader
|
|
||||||
- name: debug_getBadBlocks
|
|
||||||
# non standard geth only slightly dangerous
|
|
||||||
- name: debug_intermediateRoots
|
|
||||||
- name: debug_dumpBlock
|
|
||||||
# standard geth and erigon
|
|
||||||
- name: debug_accountRange
|
|
||||||
- name: debug_getModifiedAccountsByNumber
|
|
||||||
- name: debug_getModifiedAccountsByHash
|
|
||||||
# non standard geth and erigon
|
|
||||||
- name: eth_getRawTransactionByHash
|
|
||||||
- name: eth_getRawTransactionByBlockHashAndIndex
|
|
||||||
- name: zirc_getQuarantineHistory
|
|
||||||
- name: zirc_getQuarantined
|
|
||||||
- name: zirc_isQuarantined
|
|
||||||
...
|
|
||||||
@@ -1,214 +0,0 @@
|
|||||||
---
|
|
||||||
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/geth/zircuit-mainnet-op-geth-pruned-pebble-hash.yml
|
|
||||||
#
|
|
||||||
# docker compose up -d
|
|
||||||
#
|
|
||||||
# curl -X POST https://${IP}.traefik.me/zircuit-mainnet \
|
|
||||||
# -H "Content-Type: application/json" \
|
|
||||||
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
|
|
||||||
|
|
||||||
services:
|
|
||||||
zircuit-mainnet:
|
|
||||||
image: ${ZIRCUIT_GETH_IMAGE:-zircuit1/l2-geth}:${ZIRCUIT_MAINNET_GETH_VERSION:-v1.138.8}
|
|
||||||
sysctls:
|
|
||||||
# TCP Performance
|
|
||||||
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
|
||||||
net.ipv4.tcp_no_metrics_save: 1 # Disable metrics cache
|
|
||||||
net.ipv4.tcp_rmem: 4096 87380 16777216 # Increase TCP read buffers
|
|
||||||
net.ipv4.tcp_wmem: 4096 87380 16777216 # Increase TCP write buffers
|
|
||||||
net.core.somaxconn: 32768 # Higher connection queue
|
|
||||||
# Memory/Connection Management
|
|
||||||
# net.core.netdev_max_backlog: 50000 # Increase network buffer
|
|
||||||
net.ipv4.tcp_max_syn_backlog: 30000 # More SYN requests
|
|
||||||
net.ipv4.tcp_max_tw_buckets: 2000000 # Allow more TIME_WAIT sockets
|
|
||||||
ulimits:
|
|
||||||
nofile: 1048576 # Max open files (for RPC/WS connections)
|
|
||||||
user: root
|
|
||||||
expose:
|
|
||||||
- 8545
|
|
||||||
- 6060
|
|
||||||
- 8551
|
|
||||||
environment:
|
|
||||||
- GETH_CONFIG=/config/gethconfig.toml
|
|
||||||
- GETH_ETHSTATS=d${DOMAIN}:${ZIRCUIT_MAINNET_WS_SECRET}@${ZIRCUIT_MAINNET_ETH_STATS_SERVER}:${ZIRCUIT_MAINNET_ETH_STATS_SERVER_PORT}
|
|
||||||
- GETH_ROLLUP_DISABLETXPOOLGOSSIP=true
|
|
||||||
- GETH_ROLLUP_SEQUENCERHTTP=https://proxyd-ingress-eu.mainnet.zircuit.com/?token=drpcvATEn3gsYCLyLw7ztFLCBwQNoDJr2QjpcsNNkksu
|
|
||||||
- GETH_TXPOOL_GLOBALQUEUE=1024
|
|
||||||
- ZIRCUIT_NETWORK=mainnet
|
|
||||||
entrypoint: /bin/sh -c 'exec geth "$@"' --
|
|
||||||
command:
|
|
||||||
- --datadir=/data
|
|
||||||
- --db.engine=pebble
|
|
||||||
- --gcmode=full
|
|
||||||
- --maxpeers=50
|
|
||||||
- --metrics
|
|
||||||
- --metrics.addr=0.0.0.0
|
|
||||||
- --metrics.port=6060
|
|
||||||
- --network=mainnet
|
|
||||||
- --nodiscover
|
|
||||||
- --rpc.gascap=600000000
|
|
||||||
- --rpc.txfeecap=0
|
|
||||||
- --state.scheme=hash
|
|
||||||
- --syncmode=full
|
|
||||||
- --http
|
|
||||||
- --http.addr=0.0.0.0
|
|
||||||
- --http.api=eth,net,web3,debug,admin,txpool,engine
|
|
||||||
- --http.port=8545
|
|
||||||
- --http.vhosts=*
|
|
||||||
- --ws
|
|
||||||
- --ws.addr=0.0.0.0
|
|
||||||
- --ws.api=eth,net,web3,debug,admin,txpool,engine
|
|
||||||
- --ws.origins=*
|
|
||||||
- --ws.port=8545
|
|
||||||
- --authrpc.addr=0.0.0.0
|
|
||||||
- --authrpc.jwtsecret=/jwtsecret
|
|
||||||
- --authrpc.vhosts=*
|
|
||||||
restart: unless-stopped
|
|
||||||
stop_grace_period: 5m
|
|
||||||
networks:
|
|
||||||
- chains
|
|
||||||
volumes:
|
|
||||||
- ${ZIRCUIT_MAINNET_OP_GETH_PRUNED_PEBBLE_HASH_DATA:-zircuit-mainnet-op-geth-pruned-pebble-hash}:/data
|
|
||||||
- ./op/zircuit/mainnet:/config
|
|
||||||
- .jwtsecret:/jwtsecret:ro
|
|
||||||
- /slowdisk:/slowdisk
|
|
||||||
logging: *logging-defaults
|
|
||||||
labels:
|
|
||||||
- prometheus-scrape.enabled=true
|
|
||||||
- prometheus-scrape.port=6060
|
|
||||||
- prometheus-scrape.path=/debug/metrics/prometheus
|
|
||||||
- traefik.enable=true
|
|
||||||
- traefik.http.middlewares.zircuit-mainnet-op-geth-pruned-pebble-hash-stripprefix.stripprefix.prefixes=/zircuit-mainnet
|
|
||||||
- traefik.http.services.zircuit-mainnet-op-geth-pruned-pebble-hash.loadbalancer.server.port=8545
|
|
||||||
- ${NO_SSL:-traefik.http.routers.zircuit-mainnet-op-geth-pruned-pebble-hash.entrypoints=websecure}
|
|
||||||
- ${NO_SSL:-traefik.http.routers.zircuit-mainnet-op-geth-pruned-pebble-hash.tls.certresolver=myresolver}
|
|
||||||
- ${NO_SSL:-traefik.http.routers.zircuit-mainnet-op-geth-pruned-pebble-hash.rule=Host(`$DOMAIN`) && (Path(`/zircuit-mainnet`) || Path(`/zircuit-mainnet/`))}
|
|
||||||
- ${NO_SSL:+traefik.http.routers.zircuit-mainnet-op-geth-pruned-pebble-hash.rule=Path(`/zircuit-mainnet`) || Path(`/zircuit-mainnet/`)}
|
|
||||||
- traefik.http.routers.zircuit-mainnet-op-geth-pruned-pebble-hash.middlewares=zircuit-mainnet-op-geth-pruned-pebble-hash-stripprefix, ipallowlist
|
|
||||||
|
|
||||||
zircuit-mainnet-node:
|
|
||||||
image: ${ZIRCUIT_NODE_IMAGE:-zircuit1/op-node}:${MAINNET_NODE_VERSION:-v1.138.8}
|
|
||||||
user: root
|
|
||||||
ports:
|
|
||||||
- 18688:18688
|
|
||||||
- 18688:18688/udp
|
|
||||||
environment:
|
|
||||||
- OP_NODE_L1_BEACON=${ETHEREUM_MAINNET_BEACON_REST}
|
|
||||||
- OP_NODE_L1_BEACON_ARCHIVER=${ETHEREUM_MAINNET_BEACON_ARCHIVER}
|
|
||||||
- OP_NODE_L1_ETH_RPC=${MAINNET_L1_EXECUTION_RPC:-${ETHEREUM_MAINNET_EXECUTION_RPC}}
|
|
||||||
- OP_NODE_L1_RPC_KIND=${ETHEREUM_MAINNET_EXECUTION_KIND:-standard}
|
|
||||||
- OP_NODE_L1_TRUST_RPC=${ETHEREUM_MAINNET_EXECUTION_TRUST:-false}
|
|
||||||
- OP_NODE_L2_ENGINE_AUTH=/jwtsecret
|
|
||||||
- OP_NODE_L2_ENGINE_RPC=http://zircuit-mainnet:8551
|
|
||||||
- OP_NODE_L2_ENGINE_RPC_TIMEOUT=120s
|
|
||||||
- OP_NODE_L2_SKIP_SYNC_START_CHECK=true
|
|
||||||
- OP_NODE_LOG_LEVEL=info
|
|
||||||
- OP_NODE_METRICS_ADDR=0.0.0.0
|
|
||||||
- OP_NODE_METRICS_ENABLED=true
|
|
||||||
- OP_NODE_METRICS_PORT=7300
|
|
||||||
- OP_NODE_NETWORK=mainnet
|
|
||||||
- OP_NODE_P2P_ADVERTISE_IP=${IP}
|
|
||||||
- OP_NODE_P2P_LISTEN_IP=0.0.0.0
|
|
||||||
- OP_NODE_P2P_LISTEN_TCP_PORT=18688
|
|
||||||
- OP_NODE_P2P_LISTEN_UDP_PORT=18688
|
|
||||||
- OP_NODE_P2P_STATIC=/dns4/node1-eu-p2p.mainnet.zircuit.com/tcp/9003/p2p/16Uiu2HAm5Uxn3E8RXEM2e5YsR9VNM8uKoPmZzwQjqp7r64ZLspd5,/dns4/node2-eu-p2p.mainnet.zircuit.com/tcp/9003/p2p/16Uiu2HAmPoLg64PL2X2oLrUSmYaqAbkATPAMNRxLCZTBavUP8UEB,/dns4/node3-eu-p2p.mainnet.zircuit.com/tcp/9003/p2p/16Uiu2HAmB9iZKfv9RPRZj6JwcwjbwZWECFwJ67b1LJMHrczTnbjf
|
|
||||||
- OP_NODE_ROLLUP_LOAD_PROTOCOL_VERSIONS=true
|
|
||||||
- OP_NODE_RPC_ADDR=0.0.0.0
|
|
||||||
- OP_NODE_RPC_PORT=9545
|
|
||||||
- OP_NODE_SEQUENCER_ENABLED=false
|
|
||||||
- OP_NODE_SEQUENCER_L1_CONFS=0
|
|
||||||
- OP_NODE_SEQUENCER_MAX_SAFE_LAG=0
|
|
||||||
- OP_NODE_SEQUENCER_STOPPED=false
|
|
||||||
- OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log
|
|
||||||
- OP_NODE_SYNCMODE=consensus-layer
|
|
||||||
- OP_NODE_VERIFIER_L1_CONFS=0
|
|
||||||
entrypoint: [op-node]
|
|
||||||
restart: unless-stopped
|
|
||||||
depends_on:
|
|
||||||
zircuit-mainnet:
|
|
||||||
condition: service_started
|
|
||||||
restart: true
|
|
||||||
networks:
|
|
||||||
- chains
|
|
||||||
volumes:
|
|
||||||
- ./op/zircuit/mainnet:/config
|
|
||||||
- .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.zircuit-mainnet-op-geth-pruned-pebble-hash-node-stripprefix.stripprefix.prefixes=/zircuit-mainnet/node
|
|
||||||
- traefik.http.services.zircuit-mainnet-op-geth-pruned-pebble-hash-node.loadbalancer.server.port=9545
|
|
||||||
- ${NO_SSL:-traefik.http.routers.zircuit-mainnet-op-geth-pruned-pebble-hash-node.entrypoints=websecure}
|
|
||||||
- ${NO_SSL:-traefik.http.routers.zircuit-mainnet-op-geth-pruned-pebble-hash-node.tls.certresolver=myresolver}
|
|
||||||
- ${NO_SSL:-traefik.http.routers.zircuit-mainnet-op-geth-pruned-pebble-hash-node.rule=Host(`$DOMAIN`) && PathPrefix(`/zircuit-mainnet/node`)}
|
|
||||||
- ${NO_SSL:+traefik.http.routers.zircuit-mainnet-op-geth-pruned-pebble-hash-node.rule=PathPrefix(`/zircuit-mainnet/node`)}
|
|
||||||
- traefik.http.routers.zircuit-mainnet-op-geth-pruned-pebble-hash-node.middlewares=zircuit-mainnet-op-geth-pruned-pebble-hash-node-stripprefix, ipallowlist
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
zircuit-mainnet-op-geth-pruned-pebble-hash:
|
|
||||||
|
|
||||||
x-upstreams:
|
|
||||||
- id: $${ID}
|
|
||||||
labels:
|
|
||||||
provider: $${PROVIDER}
|
|
||||||
connection:
|
|
||||||
generic:
|
|
||||||
rpc:
|
|
||||||
url: $${RPC_URL}
|
|
||||||
ws:
|
|
||||||
frameSize: 20Mb
|
|
||||||
msgSize: 50Mb
|
|
||||||
url: $${WS_URL}
|
|
||||||
chain: zircuit-mainnet
|
|
||||||
method-groups:
|
|
||||||
enabled:
|
|
||||||
- debug
|
|
||||||
- filter
|
|
||||||
methods:
|
|
||||||
disabled:
|
|
||||||
enabled:
|
|
||||||
- name: txpool_content # TODO: should be disabled for rollup nodes
|
|
||||||
# standard geth only
|
|
||||||
- name: debug_getRawBlock
|
|
||||||
- name: debug_getRawTransaction
|
|
||||||
- name: debug_getRawReceipts
|
|
||||||
- name: debug_getRawHeader
|
|
||||||
- name: debug_getBadBlocks
|
|
||||||
# non standard geth only slightly dangerous
|
|
||||||
- name: debug_intermediateRoots
|
|
||||||
- name: debug_dumpBlock
|
|
||||||
# standard geth and erigon
|
|
||||||
- name: debug_accountRange
|
|
||||||
- name: debug_getModifiedAccountsByNumber
|
|
||||||
- name: debug_getModifiedAccountsByHash
|
|
||||||
# non standard geth and erigon
|
|
||||||
- name: eth_getRawTransactionByHash
|
|
||||||
- name: eth_getRawTransactionByBlockHashAndIndex
|
|
||||||
- name: zirc_getQuarantineHistory
|
|
||||||
- name: zirc_getQuarantined
|
|
||||||
- name: zirc_isQuarantined
|
|
||||||
...
|
|
||||||
@@ -1,216 +0,0 @@
|
|||||||
---
|
|
||||||
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/geth/zircuit-mainnet-op-geth-pruned-pebble-path.yml
|
|
||||||
#
|
|
||||||
# docker compose up -d
|
|
||||||
#
|
|
||||||
# curl -X POST https://${IP}.traefik.me/zircuit-mainnet \
|
|
||||||
# -H "Content-Type: application/json" \
|
|
||||||
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
|
|
||||||
|
|
||||||
services:
|
|
||||||
zircuit-mainnet:
|
|
||||||
image: ${ZIRCUIT_GETH_IMAGE:-zircuit1/l2-geth}:${ZIRCUIT_MAINNET_GETH_VERSION:-v1.138.8}
|
|
||||||
sysctls:
|
|
||||||
# TCP Performance
|
|
||||||
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
|
||||||
net.ipv4.tcp_no_metrics_save: 1 # Disable metrics cache
|
|
||||||
net.ipv4.tcp_rmem: 4096 87380 16777216 # Increase TCP read buffers
|
|
||||||
net.ipv4.tcp_wmem: 4096 87380 16777216 # Increase TCP write buffers
|
|
||||||
net.core.somaxconn: 32768 # Higher connection queue
|
|
||||||
# Memory/Connection Management
|
|
||||||
# net.core.netdev_max_backlog: 50000 # Increase network buffer
|
|
||||||
net.ipv4.tcp_max_syn_backlog: 30000 # More SYN requests
|
|
||||||
net.ipv4.tcp_max_tw_buckets: 2000000 # Allow more TIME_WAIT sockets
|
|
||||||
ulimits:
|
|
||||||
nofile: 1048576 # Max open files (for RPC/WS connections)
|
|
||||||
user: root
|
|
||||||
expose:
|
|
||||||
- 8545
|
|
||||||
- 6060
|
|
||||||
- 8551
|
|
||||||
environment:
|
|
||||||
- GETH_CONFIG=/config/gethconfig.toml
|
|
||||||
- GETH_ETHSTATS=d${DOMAIN}:${ZIRCUIT_MAINNET_WS_SECRET}@${ZIRCUIT_MAINNET_ETH_STATS_SERVER}:${ZIRCUIT_MAINNET_ETH_STATS_SERVER_PORT}
|
|
||||||
- GETH_ROLLUP_DISABLETXPOOLGOSSIP=true
|
|
||||||
- GETH_ROLLUP_SEQUENCERHTTP=https://proxyd-ingress-eu.mainnet.zircuit.com/?token=drpcvATEn3gsYCLyLw7ztFLCBwQNoDJr2QjpcsNNkksu
|
|
||||||
- GETH_TXPOOL_GLOBALQUEUE=1024
|
|
||||||
- ZIRCUIT_NETWORK=mainnet
|
|
||||||
entrypoint: /bin/sh -c 'exec geth "$@"' --
|
|
||||||
command:
|
|
||||||
- --datadir=/data
|
|
||||||
- --db.engine=pebble
|
|
||||||
- --gcmode=full
|
|
||||||
- --maxpeers=50
|
|
||||||
- --metrics
|
|
||||||
- --metrics.addr=0.0.0.0
|
|
||||||
- --metrics.port=6060
|
|
||||||
- --network=mainnet
|
|
||||||
- --nodiscover
|
|
||||||
- --rpc.gascap=600000000
|
|
||||||
- --rpc.txfeecap=0
|
|
||||||
- --state.scheme=path
|
|
||||||
- --syncmode=full
|
|
||||||
- --http
|
|
||||||
- --http.addr=0.0.0.0
|
|
||||||
- --http.api=eth,net,web3,debug,admin,txpool,engine
|
|
||||||
- --http.port=8545
|
|
||||||
- --http.vhosts=*
|
|
||||||
- --ws
|
|
||||||
- --ws.addr=0.0.0.0
|
|
||||||
- --ws.api=eth,net,web3,debug,admin,txpool,engine
|
|
||||||
- --ws.origins=*
|
|
||||||
- --ws.port=8545
|
|
||||||
- --authrpc.addr=0.0.0.0
|
|
||||||
- --authrpc.jwtsecret=/jwtsecret
|
|
||||||
- --authrpc.vhosts=*
|
|
||||||
restart: unless-stopped
|
|
||||||
stop_grace_period: 5m
|
|
||||||
networks:
|
|
||||||
- chains
|
|
||||||
volumes:
|
|
||||||
- ${ZIRCUIT_MAINNET_OP_GETH_PRUNED_PEBBLE_PATH_DATA:-zircuit-mainnet-op-geth-pruned-pebble-path}:/data
|
|
||||||
- ./op/zircuit/mainnet:/config
|
|
||||||
- .jwtsecret:/jwtsecret:ro
|
|
||||||
- /slowdisk:/slowdisk
|
|
||||||
logging: *logging-defaults
|
|
||||||
labels:
|
|
||||||
- prometheus-scrape.enabled=true
|
|
||||||
- prometheus-scrape.port=6060
|
|
||||||
- prometheus-scrape.path=/debug/metrics/prometheus
|
|
||||||
- traefik.enable=true
|
|
||||||
- traefik.http.middlewares.zircuit-mainnet-op-geth-pruned-pebble-path-stripprefix.stripprefix.prefixes=/zircuit-mainnet
|
|
||||||
- traefik.http.services.zircuit-mainnet-op-geth-pruned-pebble-path.loadbalancer.server.port=8545
|
|
||||||
- ${NO_SSL:-traefik.http.routers.zircuit-mainnet-op-geth-pruned-pebble-path.entrypoints=websecure}
|
|
||||||
- ${NO_SSL:-traefik.http.routers.zircuit-mainnet-op-geth-pruned-pebble-path.tls.certresolver=myresolver}
|
|
||||||
- ${NO_SSL:-traefik.http.routers.zircuit-mainnet-op-geth-pruned-pebble-path.rule=Host(`$DOMAIN`) && (Path(`/zircuit-mainnet`) || Path(`/zircuit-mainnet/`))}
|
|
||||||
- ${NO_SSL:+traefik.http.routers.zircuit-mainnet-op-geth-pruned-pebble-path.rule=Path(`/zircuit-mainnet`) || Path(`/zircuit-mainnet/`)}
|
|
||||||
- traefik.http.routers.zircuit-mainnet-op-geth-pruned-pebble-path.middlewares=zircuit-mainnet-op-geth-pruned-pebble-path-stripprefix, ipallowlist
|
|
||||||
|
|
||||||
zircuit-mainnet-node:
|
|
||||||
image: ${ZIRCUIT_NODE_IMAGE:-zircuit1/op-node}:${MAINNET_NODE_VERSION:-v1.138.8}
|
|
||||||
user: root
|
|
||||||
ports:
|
|
||||||
- 18359:18359
|
|
||||||
- 18359:18359/udp
|
|
||||||
environment:
|
|
||||||
- OP_NODE_L1_BEACON=${ETHEREUM_MAINNET_BEACON_REST}
|
|
||||||
- OP_NODE_L1_BEACON_ARCHIVER=${ETHEREUM_MAINNET_BEACON_ARCHIVER}
|
|
||||||
- OP_NODE_L1_ETH_RPC=${MAINNET_L1_EXECUTION_RPC:-${ETHEREUM_MAINNET_EXECUTION_RPC}}
|
|
||||||
- OP_NODE_L1_RPC_KIND=${ETHEREUM_MAINNET_EXECUTION_KIND:-standard}
|
|
||||||
- OP_NODE_L1_TRUST_RPC=${ETHEREUM_MAINNET_EXECUTION_TRUST:-false}
|
|
||||||
- OP_NODE_L2_ENGINE_AUTH=/jwtsecret
|
|
||||||
- OP_NODE_L2_ENGINE_RPC=http://zircuit-mainnet:8551
|
|
||||||
- OP_NODE_L2_ENGINE_RPC_TIMEOUT=120s
|
|
||||||
- OP_NODE_L2_SKIP_SYNC_START_CHECK=true
|
|
||||||
- OP_NODE_LOG_LEVEL=info
|
|
||||||
- OP_NODE_METRICS_ADDR=0.0.0.0
|
|
||||||
- OP_NODE_METRICS_ENABLED=true
|
|
||||||
- OP_NODE_METRICS_PORT=7300
|
|
||||||
- OP_NODE_NETWORK=mainnet
|
|
||||||
- OP_NODE_P2P_ADVERTISE_IP=${IP}
|
|
||||||
- OP_NODE_P2P_LISTEN_IP=0.0.0.0
|
|
||||||
- OP_NODE_P2P_LISTEN_TCP_PORT=18359
|
|
||||||
- OP_NODE_P2P_LISTEN_UDP_PORT=18359
|
|
||||||
- OP_NODE_P2P_STATIC=/dns4/node1-eu-p2p.mainnet.zircuit.com/tcp/9003/p2p/16Uiu2HAm5Uxn3E8RXEM2e5YsR9VNM8uKoPmZzwQjqp7r64ZLspd5,/dns4/node2-eu-p2p.mainnet.zircuit.com/tcp/9003/p2p/16Uiu2HAmPoLg64PL2X2oLrUSmYaqAbkATPAMNRxLCZTBavUP8UEB,/dns4/node3-eu-p2p.mainnet.zircuit.com/tcp/9003/p2p/16Uiu2HAmB9iZKfv9RPRZj6JwcwjbwZWECFwJ67b1LJMHrczTnbjf
|
|
||||||
- OP_NODE_ROLLUP_LOAD_PROTOCOL_VERSIONS=true
|
|
||||||
- OP_NODE_RPC_ADDR=0.0.0.0
|
|
||||||
- OP_NODE_RPC_PORT=9545
|
|
||||||
- OP_NODE_SEQUENCER_ENABLED=false
|
|
||||||
- OP_NODE_SEQUENCER_L1_CONFS=0
|
|
||||||
- OP_NODE_SEQUENCER_MAX_SAFE_LAG=0
|
|
||||||
- OP_NODE_SEQUENCER_STOPPED=false
|
|
||||||
- OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log
|
|
||||||
- OP_NODE_SYNCMODE=consensus-layer
|
|
||||||
- OP_NODE_VERIFIER_L1_CONFS=0
|
|
||||||
entrypoint: [op-node]
|
|
||||||
restart: unless-stopped
|
|
||||||
depends_on:
|
|
||||||
zircuit-mainnet:
|
|
||||||
condition: service_started
|
|
||||||
restart: true
|
|
||||||
networks:
|
|
||||||
- chains
|
|
||||||
volumes:
|
|
||||||
- ./op/zircuit/mainnet:/config
|
|
||||||
- .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.zircuit-mainnet-op-geth-pruned-pebble-path-node-stripprefix.stripprefix.prefixes=/zircuit-mainnet/node
|
|
||||||
- traefik.http.services.zircuit-mainnet-op-geth-pruned-pebble-path-node.loadbalancer.server.port=9545
|
|
||||||
- ${NO_SSL:-traefik.http.routers.zircuit-mainnet-op-geth-pruned-pebble-path-node.entrypoints=websecure}
|
|
||||||
- ${NO_SSL:-traefik.http.routers.zircuit-mainnet-op-geth-pruned-pebble-path-node.tls.certresolver=myresolver}
|
|
||||||
- ${NO_SSL:-traefik.http.routers.zircuit-mainnet-op-geth-pruned-pebble-path-node.rule=Host(`$DOMAIN`) && PathPrefix(`/zircuit-mainnet/node`)}
|
|
||||||
- ${NO_SSL:+traefik.http.routers.zircuit-mainnet-op-geth-pruned-pebble-path-node.rule=PathPrefix(`/zircuit-mainnet/node`)}
|
|
||||||
- traefik.http.routers.zircuit-mainnet-op-geth-pruned-pebble-path-node.middlewares=zircuit-mainnet-op-geth-pruned-pebble-path-node-stripprefix, ipallowlist
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
zircuit-mainnet-op-geth-pruned-pebble-path:
|
|
||||||
|
|
||||||
x-upstreams:
|
|
||||||
- id: $${ID}
|
|
||||||
labels:
|
|
||||||
provider: $${PROVIDER}
|
|
||||||
connection:
|
|
||||||
generic:
|
|
||||||
rpc:
|
|
||||||
url: $${RPC_URL}
|
|
||||||
ws:
|
|
||||||
frameSize: 20Mb
|
|
||||||
msgSize: 50Mb
|
|
||||||
url: $${WS_URL}
|
|
||||||
chain: zircuit-mainnet
|
|
||||||
method-groups:
|
|
||||||
enabled:
|
|
||||||
- debug
|
|
||||||
- filter
|
|
||||||
methods:
|
|
||||||
disabled:
|
|
||||||
# not compatible with path state scheme
|
|
||||||
- name: debug_traceBlockByHash
|
|
||||||
enabled:
|
|
||||||
- name: txpool_content # TODO: should be disabled for rollup nodes
|
|
||||||
# standard geth only
|
|
||||||
- name: debug_getRawBlock
|
|
||||||
- name: debug_getRawTransaction
|
|
||||||
- name: debug_getRawReceipts
|
|
||||||
- name: debug_getRawHeader
|
|
||||||
- name: debug_getBadBlocks
|
|
||||||
# non standard geth only slightly dangerous
|
|
||||||
- name: debug_intermediateRoots
|
|
||||||
- name: debug_dumpBlock
|
|
||||||
# standard geth and erigon
|
|
||||||
- name: debug_accountRange
|
|
||||||
- name: debug_getModifiedAccountsByNumber
|
|
||||||
- name: debug_getModifiedAccountsByHash
|
|
||||||
# non standard geth and erigon
|
|
||||||
- name: eth_getRawTransactionByHash
|
|
||||||
- name: eth_getRawTransactionByBlockHashAndIndex
|
|
||||||
- name: zirc_getQuarantineHistory
|
|
||||||
- name: zirc_getQuarantined
|
|
||||||
- name: zirc_isQuarantined
|
|
||||||
...
|
|
||||||
@@ -30,7 +30,7 @@ x-logging-defaults: &logging-defaults
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
ink-mainnet:
|
ink-mainnet:
|
||||||
image: ${INK_RETH_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/op-reth}:${INK_MAINNET_RETH_VERSION:-v2.3.3}
|
image: ${INK_RETH_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/op-reth}:${INK_MAINNET_RETH_VERSION:-v2.4.0}
|
||||||
sysctls:
|
sysctls:
|
||||||
# TCP Performance
|
# TCP Performance
|
||||||
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
net.ipv4.tcp_slow_start_after_idle: 0 # Disable slow start after idle
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ services:
|
|||||||
- --metrics=0.0.0.0:9001
|
- --metrics=0.0.0.0:9001
|
||||||
- --nat=extip:${IP}
|
- --nat=extip:${IP}
|
||||||
- --port=14829
|
- --port=14829
|
||||||
- --rollup.sequencer-http=https://rpc.soneium.org
|
- --rollup.sequencer-http=https://rpc.minato.soneium.org
|
||||||
- --rpc-cache.max-blocks=10000
|
- --rpc-cache.max-blocks=10000
|
||||||
- --rpc-cache.max-concurrent-db-requests=2048
|
- --rpc-cache.max-concurrent-db-requests=2048
|
||||||
- --rpc.gascap=600000000
|
- --rpc.gascap=600000000
|
||||||
@@ -181,7 +181,7 @@ x-upstreams:
|
|||||||
frameSize: 20Mb
|
frameSize: 20Mb
|
||||||
msgSize: 50Mb
|
msgSize: 50Mb
|
||||||
url: $${WS_URL}
|
url: $${WS_URL}
|
||||||
chain: soneium
|
chain: soneium-minato
|
||||||
method-groups:
|
method-groups:
|
||||||
enabled:
|
enabled:
|
||||||
- debug
|
- debug
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ services:
|
|||||||
- --metrics=0.0.0.0:9001
|
- --metrics=0.0.0.0:9001
|
||||||
- --nat=extip:${IP}
|
- --nat=extip:${IP}
|
||||||
- --port=13724
|
- --port=13724
|
||||||
- --rollup.sequencer-http=https://rpc.soneium.org
|
- --rollup.sequencer-http=https://rpc.minato.soneium.org
|
||||||
- --rpc-cache.max-blocks=10000
|
- --rpc-cache.max-blocks=10000
|
||||||
- --rpc-cache.max-concurrent-db-requests=2048
|
- --rpc-cache.max-concurrent-db-requests=2048
|
||||||
- --rpc.gascap=600000000
|
- --rpc.gascap=600000000
|
||||||
@@ -182,7 +182,7 @@ x-upstreams:
|
|||||||
frameSize: 20Mb
|
frameSize: 20Mb
|
||||||
msgSize: 50Mb
|
msgSize: 50Mb
|
||||||
url: $${WS_URL}
|
url: $${WS_URL}
|
||||||
chain: soneium
|
chain: soneium-minato
|
||||||
method-groups:
|
method-groups:
|
||||||
enabled:
|
enabled:
|
||||||
- debug
|
- debug
|
||||||
|
|||||||
@@ -106,7 +106,7 @@ services:
|
|||||||
shm_size: 2gb
|
shm_size: 2gb
|
||||||
|
|
||||||
zircuit-garfield-op-reth-pruned-node:
|
zircuit-garfield-op-reth-pruned-node:
|
||||||
image: ${ZIRCUIT_NODE_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/op-node}:${GARFIELD_NODE_VERSION:-v1.19.0}
|
image: ${ZIRCUIT_NODE_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/op-node}:${GARFIELD_NODE_VERSION:-v1.19.3}
|
||||||
user: root
|
user: root
|
||||||
ports:
|
ports:
|
||||||
- 18027:18027
|
- 18027:18027
|
||||||
@@ -184,7 +184,7 @@ x-upstreams:
|
|||||||
frameSize: 20Mb
|
frameSize: 20Mb
|
||||||
msgSize: 50Mb
|
msgSize: 50Mb
|
||||||
url: $${WS_URL}
|
url: $${WS_URL}
|
||||||
chain: zircuit-testnet
|
chain: zircuit-garfield-testnet
|
||||||
method-groups:
|
method-groups:
|
||||||
enabled:
|
enabled:
|
||||||
- debug
|
- debug
|
||||||
|
|||||||
@@ -0,0 +1,200 @@
|
|||||||
|
---
|
||||||
|
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/zircuit-mainnet-op-reth-pruned-trace.yml
|
||||||
|
#
|
||||||
|
# docker compose up -d
|
||||||
|
#
|
||||||
|
# curl -X POST https://${IP}.traefik.me/zircuit-mainnet-op-reth-pruned \
|
||||||
|
# -H "Content-Type: application/json" \
|
||||||
|
# --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
|
||||||
|
|
||||||
|
services:
|
||||||
|
zircuit-mainnet-op-reth-pruned:
|
||||||
|
image: ${ZIRCUIT_RETH_IMAGE:-ghcr.io/conduitxyz/conduit-op-reth}:${ZIRCUIT_MAINNET_RETH_VERSION:-v2.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
|
||||||
|
expose:
|
||||||
|
- 8545
|
||||||
|
- 9001
|
||||||
|
- 8551
|
||||||
|
entrypoint: [op-reth, node]
|
||||||
|
command:
|
||||||
|
- --chain=/config/genesis.json
|
||||||
|
- --config=/config/reth/reth.toml
|
||||||
|
- --datadir=/root/.local/share/reth
|
||||||
|
- --disable-discovery
|
||||||
|
- --engine.cross-block-cache-size=${ZIRCUIT_MAINNET_RETH_STATE_CACHE:-4096}
|
||||||
|
- --full
|
||||||
|
- --max-inbound-peers=50
|
||||||
|
- --max-outbound-peers=50
|
||||||
|
- --metrics=0.0.0.0:9001
|
||||||
|
- --rollup.sequencer-http=https://proxyd-ingress-eu.mainnet.zircuit.com/?token=drpcvATEn3gsYCLyLw7ztFLCBwQNoDJr2QjpcsNNkksu
|
||||||
|
- --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:
|
||||||
|
- ${ZIRCUIT_MAINNET_OP_RETH_PRUNED_TRACE_DATA:-zircuit-mainnet-op-reth-pruned-trace}:/root/.local/share/reth
|
||||||
|
- ./op/zircuit/mainnet:/config
|
||||||
|
- .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.zircuit-mainnet-op-reth-pruned-trace-stripprefix.stripprefix.prefixes=/zircuit-mainnet-op-reth-pruned
|
||||||
|
- traefik.http.services.zircuit-mainnet-op-reth-pruned-trace.loadbalancer.server.port=8545
|
||||||
|
- ${NO_SSL:-traefik.http.routers.zircuit-mainnet-op-reth-pruned-trace.entrypoints=websecure}
|
||||||
|
- ${NO_SSL:-traefik.http.routers.zircuit-mainnet-op-reth-pruned-trace.tls.certresolver=myresolver}
|
||||||
|
- ${NO_SSL:-traefik.http.routers.zircuit-mainnet-op-reth-pruned-trace.rule=Host(`$DOMAIN`) && (Path(`/zircuit-mainnet-op-reth-pruned`) || Path(`/zircuit-mainnet-op-reth-pruned/`))}
|
||||||
|
- ${NO_SSL:+traefik.http.routers.zircuit-mainnet-op-reth-pruned-trace.rule=Path(`/zircuit-mainnet-op-reth-pruned`) || Path(`/zircuit-mainnet-op-reth-pruned/`)}
|
||||||
|
- traefik.http.routers.zircuit-mainnet-op-reth-pruned-trace.middlewares=zircuit-mainnet-op-reth-pruned-trace-stripprefix, ipallowlist
|
||||||
|
shm_size: 2gb
|
||||||
|
|
||||||
|
zircuit-mainnet-op-reth-pruned-node:
|
||||||
|
image: ${ZIRCUIT_NODE_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/op-node}:${MAINNET_NODE_VERSION:-v1.19.3}
|
||||||
|
user: root
|
||||||
|
ports:
|
||||||
|
- 17481:17481
|
||||||
|
- 17481:17481/udp
|
||||||
|
environment:
|
||||||
|
- OP_NODE_L1_BEACON=${ETHEREUM_MAINNET_BEACON_REST}
|
||||||
|
- OP_NODE_L1_BEACON_ARCHIVER=${ETHEREUM_MAINNET_BEACON_ARCHIVER}
|
||||||
|
- OP_NODE_L1_ETH_RPC=${MAINNET_L1_EXECUTION_RPC:-${ETHEREUM_MAINNET_EXECUTION_RPC}}
|
||||||
|
- OP_NODE_L1_RPC_KIND=${ETHEREUM_MAINNET_EXECUTION_KIND:-standard}
|
||||||
|
- OP_NODE_L1_TRUST_RPC=${ETHEREUM_MAINNET_EXECUTION_TRUST:-false}
|
||||||
|
- OP_NODE_L2_ENGINE_AUTH=/jwtsecret
|
||||||
|
- OP_NODE_L2_ENGINE_KIND=reth
|
||||||
|
- OP_NODE_L2_ENGINE_RPC=http://zircuit-mainnet-op-reth-pruned:8551
|
||||||
|
- OP_NODE_L2_ENGINE_RPC_TIMEOUT=120s
|
||||||
|
- OP_NODE_L2_SKIP_SYNC_START_CHECK=true
|
||||||
|
- OP_NODE_LOG_LEVEL=info
|
||||||
|
- OP_NODE_METRICS_ADDR=0.0.0.0
|
||||||
|
- OP_NODE_METRICS_ENABLED=true
|
||||||
|
- OP_NODE_METRICS_PORT=7300
|
||||||
|
- OP_NODE_P2P_ADVERTISE_IP=${IP}
|
||||||
|
- OP_NODE_P2P_BOOTNODES=enode://de9f4784612b7523dc029a38091139aafae293c2f7d17c11bce8579f6246782216a7d61599fb001c38042e8e6ac6a0cdafd1a26d37743e5439bc3d4d6680f7df@35.185.208.192: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
|
||||||
|
- OP_NODE_P2P_LISTEN_IP=0.0.0.0
|
||||||
|
- OP_NODE_P2P_LISTEN_TCP_PORT=17481
|
||||||
|
- OP_NODE_P2P_LISTEN_UDP_PORT=17481
|
||||||
|
- OP_NODE_P2P_STATIC=/ip4/35.185.208.192/tcp/9222/p2p/16Uiu2HAmTe1j7ubQUanCiUSQs7K7SzkWxdrfDUP9GifkMoC2osLm
|
||||||
|
- OP_NODE_ROLLUP_CONFIG=/config/rollup.json
|
||||||
|
- OP_NODE_ROLLUP_LOAD_PROTOCOL_VERSIONS=true
|
||||||
|
- OP_NODE_RPC_ADDR=0.0.0.0
|
||||||
|
- OP_NODE_RPC_PORT=9545
|
||||||
|
- OP_NODE_SEQUENCER_ENABLED=false
|
||||||
|
- OP_NODE_SEQUENCER_L1_CONFS=0
|
||||||
|
- OP_NODE_SEQUENCER_MAX_SAFE_LAG=0
|
||||||
|
- OP_NODE_SEQUENCER_STOPPED=false
|
||||||
|
- OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log
|
||||||
|
- OP_NODE_SYNCMODE=consensus-layer
|
||||||
|
- OP_NODE_VERIFIER_L1_CONFS=0
|
||||||
|
entrypoint: [op-node]
|
||||||
|
restart: unless-stopped
|
||||||
|
depends_on:
|
||||||
|
zircuit-mainnet-op-reth-pruned:
|
||||||
|
condition: service_started
|
||||||
|
restart: true
|
||||||
|
networks:
|
||||||
|
- chains
|
||||||
|
volumes:
|
||||||
|
- ./op/zircuit/mainnet:/config
|
||||||
|
- .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.zircuit-mainnet-op-reth-pruned-trace-node-stripprefix.stripprefix.prefixes=/zircuit-mainnet-op-reth-pruned/node
|
||||||
|
- traefik.http.services.zircuit-mainnet-op-reth-pruned-trace-node.loadbalancer.server.port=9545
|
||||||
|
- ${NO_SSL:-traefik.http.routers.zircuit-mainnet-op-reth-pruned-trace-node.entrypoints=websecure}
|
||||||
|
- ${NO_SSL:-traefik.http.routers.zircuit-mainnet-op-reth-pruned-trace-node.tls.certresolver=myresolver}
|
||||||
|
- ${NO_SSL:-traefik.http.routers.zircuit-mainnet-op-reth-pruned-trace-node.rule=Host(`$DOMAIN`) && PathPrefix(`/zircuit-mainnet-op-reth-pruned/node`)}
|
||||||
|
- ${NO_SSL:+traefik.http.routers.zircuit-mainnet-op-reth-pruned-trace-node.rule=PathPrefix(`/zircuit-mainnet-op-reth-pruned/node`)}
|
||||||
|
- traefik.http.routers.zircuit-mainnet-op-reth-pruned-trace-node.middlewares=zircuit-mainnet-op-reth-pruned-trace-node-stripprefix, ipallowlist
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
zircuit-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: zircuit-mainnet
|
||||||
|
method-groups:
|
||||||
|
enabled:
|
||||||
|
- debug
|
||||||
|
- filter
|
||||||
|
- trace
|
||||||
|
methods:
|
||||||
|
disabled:
|
||||||
|
- name: eth_maxPriorityFeePerGas
|
||||||
|
enabled:
|
||||||
|
- name: txpool_content # TODO: should be disabled for rollup nodes
|
||||||
|
- name: zirc_getQuarantineHistory
|
||||||
|
- name: zirc_getQuarantined
|
||||||
|
- name: zirc_isQuarantined
|
||||||
|
...
|
||||||
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user