Compare commits
1 Commits
issue-2412
...
issue-2155
| Author | SHA1 | Date | |
|---|---|---|---|
| a7135129eb |
@@ -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:-v0.7.3}
|
image: ${ARC_CONSENSUS_IMAGE:-docker.cloudsmith.io/circle/arc-network/arc-consensus}:${ARC_MAINNET_CONSENSUS_VERSION:-0.7.2}
|
||||||
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:-v0.7.3}
|
image: ${ARC_RETH_IMAGE:-docker.cloudsmith.io/circle/arc-network/arc-execution}:${ARC_MAINNET_RETH_VERSION:-0.7.2}
|
||||||
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:-v0.7.3}
|
image: ${ARC_CONSENSUS_IMAGE:-docker.cloudsmith.io/circle/arc-network/arc-consensus}:${ARC_MAINNET_CONSENSUS_VERSION:-0.7.2}
|
||||||
user: 0:0
|
user: 0:0
|
||||||
expose:
|
expose:
|
||||||
- 31000
|
- 31000
|
||||||
|
|||||||
@@ -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:-v0.7.3}
|
image: ${ARC_CONSENSUS_IMAGE:-docker.cloudsmith.io/circle/arc-network/arc-consensus}:${ARC_MAINNET_CONSENSUS_VERSION:-0.7.2}
|
||||||
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:-v0.7.3}
|
image: ${ARC_RETH_IMAGE:-docker.cloudsmith.io/circle/arc-network/arc-execution}:${ARC_MAINNET_RETH_VERSION:-0.7.2}
|
||||||
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:-v0.7.3}
|
image: ${ARC_CONSENSUS_IMAGE:-docker.cloudsmith.io/circle/arc-network/arc-consensus}:${ARC_MAINNET_CONSENSUS_VERSION:-0.7.2}
|
||||||
user: 0:0
|
user: 0:0
|
||||||
expose:
|
expose:
|
||||||
- 31000
|
- 31000
|
||||||
|
|||||||
@@ -157,15 +157,8 @@ 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
|
||||||
# The torn-backup floor applies to the MAIN data volume only (key == compose
|
echo "FATAL: existing datadir too small for backup (${folder_size_gb}G at $source_folder); use --force if intentional" >&2
|
||||||
# basename). Sidecar volumes (eigenda-proxy, configs, ...) are legitimately
|
exit 1
|
||||||
# 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')
|
||||||
|
|||||||
@@ -8389,23 +8389,6 @@
|
|||||||
"polygon-mainnet-bor-archive-pebble-path"
|
"polygon-mainnet-bor-archive-pebble-path"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"chain": "mainnet",
|
|
||||||
"client": "bor",
|
|
||||||
"compose_file": "polygon/bor/polygon-mainnet-bor-minimal-pebble-path",
|
|
||||||
"features": [
|
|
||||||
"path",
|
|
||||||
"pebble"
|
|
||||||
],
|
|
||||||
"network": "polygon",
|
|
||||||
"node": null,
|
|
||||||
"relay": null,
|
|
||||||
"stack": null,
|
|
||||||
"type": "minimal",
|
|
||||||
"volumes": [
|
|
||||||
"polygon-mainnet-bor-minimal-pebble-path"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"chain": "mainnet",
|
"chain": "mainnet",
|
||||||
"client": "bor",
|
"client": "bor",
|
||||||
|
|||||||
@@ -318,12 +318,19 @@ check_rpc_success() {
|
|||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
# Function to detect client type from node name
|
# Function to detect client type from node name (+ optional compose path hint).
|
||||||
|
# op-geth often still reports admin_nodeInfo.name as "Geth/…", so the compose
|
||||||
|
# path (…/op-geth/… or *-op-geth-*) is the reliable signal.
|
||||||
detect_client_type() {
|
detect_client_type() {
|
||||||
local node_name="$1"
|
local node_name="$1"
|
||||||
|
local compose_hint="${2:-}"
|
||||||
local name_lower=$(echo "$node_name" | tr '[:upper:]' '[:lower:]')
|
local name_lower=$(echo "$node_name" | tr '[:upper:]' '[:lower:]')
|
||||||
|
local hint_lower=$(echo "$compose_hint" | tr '[:upper:]' '[:lower:]')
|
||||||
if [[ "$name_lower" == *"geth"* ]]; then
|
|
||||||
|
# op-geth lacks admin_addStaticPeer — must use admin_addPeer
|
||||||
|
if [[ "$name_lower" == *"op-geth"* ]] || [[ "$hint_lower" == *"op-geth"* ]]; then
|
||||||
|
echo "op-geth"
|
||||||
|
elif [[ "$name_lower" == *"geth"* ]]; then
|
||||||
echo "geth"
|
echo "geth"
|
||||||
elif [[ "$name_lower" == *"reth"* ]]; then
|
elif [[ "$name_lower" == *"reth"* ]]; then
|
||||||
echo "reth"
|
echo "reth"
|
||||||
@@ -346,12 +353,12 @@ add_static_peer() {
|
|||||||
local response
|
local response
|
||||||
local method
|
local method
|
||||||
|
|
||||||
# Determine which method to try first based on client type
|
# Determine which method to try first based on client type.
|
||||||
|
# Only vanilla geth supports admin_addStaticPeer; op-geth does not.
|
||||||
if [[ "$client_type" == "geth" ]]; then
|
if [[ "$client_type" == "geth" ]]; then
|
||||||
# Geth supports admin_addStaticPeer
|
|
||||||
method="admin_addStaticPeer"
|
method="admin_addStaticPeer"
|
||||||
else
|
else
|
||||||
# Reth and most other clients use admin_addPeer
|
# op-geth, reth, and most other clients use admin_addPeer
|
||||||
method="admin_addPeer"
|
method="admin_addPeer"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -364,10 +371,11 @@ add_static_peer() {
|
|||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
# Check if method not found, try fallback
|
# Fallback when the primary method is unsupported. go-ethereum-style errors
|
||||||
if echo "$response" | grep -qi "method not found"; then
|
# say "the method X does not exist/is not available", not "method not found".
|
||||||
|
if echo "$response" | grep -qiE 'method not found|does not exist|not available|-32601'; then
|
||||||
if [[ "$method" == "admin_addStaticPeer" ]]; then
|
if [[ "$method" == "admin_addStaticPeer" ]]; then
|
||||||
# Try admin_addPeer as fallback
|
# Try admin_addPeer as fallback (required for op-geth)
|
||||||
method="admin_addPeer"
|
method="admin_addPeer"
|
||||||
response=$(curl --ipv4 -s -X POST "$url" \
|
response=$(curl --ipv4 -s -X POST "$url" \
|
||||||
-H "Content-Type: application/json" \
|
-H "Content-Type: application/json" \
|
||||||
@@ -425,7 +433,7 @@ echo -e "${GREEN}OK${NC}"
|
|||||||
SOURCE_ENODE=$(extract_enode "$SOURCE_INFO")
|
SOURCE_ENODE=$(extract_enode "$SOURCE_INFO")
|
||||||
SOURCE_NAME=$(extract_name "$SOURCE_INFO")
|
SOURCE_NAME=$(extract_name "$SOURCE_INFO")
|
||||||
SOURCE_PUBKEY=$(echo "$SOURCE_ENODE" | sed -E 's|enode://([^@]+)@.*|\1|')
|
SOURCE_PUBKEY=$(echo "$SOURCE_ENODE" | sed -E 's|enode://([^@]+)@.*|\1|')
|
||||||
SOURCE_CLIENT=$(detect_client_type "$SOURCE_NAME")
|
SOURCE_CLIENT=$(detect_client_type "$SOURCE_NAME" "$COMPOSE_FILE")
|
||||||
|
|
||||||
if [[ -z "$SOURCE_ENODE" ]]; then
|
if [[ -z "$SOURCE_ENODE" ]]; then
|
||||||
echo -e "${RED}Could not extract enode from source${NC}"
|
echo -e "${RED}Could not extract enode from source${NC}"
|
||||||
@@ -457,7 +465,7 @@ echo -e "${GREEN}OK${NC}"
|
|||||||
TARGET_ENODE=$(extract_enode "$TARGET_INFO")
|
TARGET_ENODE=$(extract_enode "$TARGET_INFO")
|
||||||
TARGET_NAME=$(extract_name "$TARGET_INFO")
|
TARGET_NAME=$(extract_name "$TARGET_INFO")
|
||||||
TARGET_PUBKEY=$(echo "$TARGET_ENODE" | sed -E 's|enode://([^@]+)@.*|\1|')
|
TARGET_PUBKEY=$(echo "$TARGET_ENODE" | sed -E 's|enode://([^@]+)@.*|\1|')
|
||||||
TARGET_CLIENT=$(detect_client_type "$TARGET_NAME")
|
TARGET_CLIENT=$(detect_client_type "$TARGET_NAME" "$TARGET_COMPOSE_FILE")
|
||||||
|
|
||||||
if [[ -z "$TARGET_ENODE" ]]; then
|
if [[ -z "$TARGET_ENODE" ]]; then
|
||||||
echo -e "${RED}Could not extract enode from target${NC}"
|
echo -e "${RED}Could not extract enode from target${NC}"
|
||||||
|
|||||||
@@ -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.5.3
|
ARG VERSION=v3.4.4
|
||||||
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
|
||||||
|
|||||||
@@ -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.3}
|
image: ${ETHEREUM_ERIGON3_IMAGE:-erigontech/erigon}:${ETHEREUM_HOODI_ERIGON3_VERSION:-v3.5.2}
|
||||||
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.3}
|
image: ${ETHEREUM_ERIGON3_IMAGE:-erigontech/erigon}:${ETHEREUM_HOODI_ERIGON3_VERSION:-v3.5.2}
|
||||||
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.3}
|
image: ${ETHEREUM_ERIGON3_IMAGE:-erigontech/erigon}:${ETHEREUM_HOODI_ERIGON3_VERSION:-v3.5.2}
|
||||||
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.3}
|
image: ${ETHEREUM_ERIGON3_IMAGE:-erigontech/erigon}:${ETHEREUM_MAINNET_ERIGON3_VERSION:-v3.5.2}
|
||||||
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.3}
|
image: ${ETHEREUM_ERIGON3_IMAGE:-erigontech/erigon}:${ETHEREUM_MAINNET_ERIGON3_VERSION:-v3.5.2}
|
||||||
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.3}
|
image: ${ETHEREUM_ERIGON3_IMAGE:-erigontech/erigon}:${ETHEREUM_MAINNET_ERIGON3_VERSION:-v3.5.2}
|
||||||
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.3}
|
image: ${ETHEREUM_ERIGON3_IMAGE:-erigontech/erigon}:${ETHEREUM_SEPOLIA_ERIGON3_VERSION:-v3.5.2}
|
||||||
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.3}
|
image: ${ETHEREUM_ERIGON3_IMAGE:-erigontech/erigon}:${ETHEREUM_SEPOLIA_ERIGON3_VERSION:-v3.5.2}
|
||||||
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.3}
|
image: ${ETHEREUM_ERIGON3_IMAGE:-erigontech/erigon}:${ETHEREUM_SEPOLIA_ERIGON3_VERSION:-v3.5.2}
|
||||||
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-archive:
|
gnosis-chiado-erigon3-archive:
|
||||||
image: ${GNOSIS_ERIGON3_IMAGE:-erigontech/erigon}:${GNOSIS_CHIADO_ERIGON3_VERSION:-v3.5.3}
|
image: ${GNOSIS_ERIGON3_IMAGE:-erigontech/erigon}:${GNOSIS_CHIADO_ERIGON3_VERSION:-v3.5.2}
|
||||||
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.3}
|
image: ${GNOSIS_ERIGON3_IMAGE:-erigontech/erigon}:${GNOSIS_CHIADO_ERIGON3_VERSION:-v3.5.2}
|
||||||
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.3}
|
image: ${GNOSIS_ERIGON3_IMAGE:-erigontech/erigon}:${GNOSIS_CHIADO_ERIGON3_VERSION:-v3.5.2}
|
||||||
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.3}
|
image: ${GNOSIS_ERIGON3_IMAGE:-erigontech/erigon}:${GNOSIS_MAINNET_ERIGON3_VERSION:-v3.5.2}
|
||||||
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.3}
|
image: ${GNOSIS_ERIGON3_IMAGE:-erigontech/erigon}:${GNOSIS_MAINNET_ERIGON3_VERSION:-v3.5.2}
|
||||||
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.3}
|
image: ${GNOSIS_ERIGON3_IMAGE:-erigontech/erigon}:${GNOSIS_MAINNET_ERIGON3_VERSION:-v3.5.2}
|
||||||
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.3}
|
image: ${LINEA_ERIGON3_IMAGE:-erigontech/erigon}:${LINEA_MAINNET_ERIGON3_VERSION:-v3.5.2}
|
||||||
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.3}
|
image: ${LINEA_ERIGON3_IMAGE:-erigontech/erigon}:${LINEA_MAINNET_ERIGON3_VERSION:-v3.5.2}
|
||||||
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.3}
|
image: ${LINEA_ERIGON3_IMAGE:-erigontech/erigon}:${LINEA_MAINNET_ERIGON3_VERSION:-v3.5.2}
|
||||||
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.3}
|
image: ${LINEA_ERIGON3_IMAGE:-erigontech/erigon}:${LINEA_SEPOLIA_ERIGON3_VERSION:-v3.5.2}
|
||||||
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.3}
|
image: ${LINEA_ERIGON3_IMAGE:-erigontech/erigon}:${LINEA_SEPOLIA_ERIGON3_VERSION:-v3.5.2}
|
||||||
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.3}
|
image: ${LINEA_ERIGON3_IMAGE:-erigontech/erigon}:${LINEA_SEPOLIA_ERIGON3_VERSION:-v3.5.2}
|
||||||
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,14 +1,10 @@
|
|||||||
# [linea] finalization provider DISABLED (2026-07-31): Maru CL stuck at slot
|
# Uncomment the below [linea] section for finalized L2 block tag
|
||||||
# 6764022 with EL head ~24k behind tip; Maru sent FCU finalized ahead of EL
|
[linea]
|
||||||
# head → Besu -38002 Invalid forkchoice. Maru has no linea.enabled flag —
|
contract-address = "0xd19d4B5d358258f05D7B411E21A1460D11B0876F"
|
||||||
# presence of [linea] enables the provider; comment out to disable. Re-enable
|
l1-eth-api = { endpoint = "${L1_RPC}" }
|
||||||
# (uncomment) once EL has caught tip.
|
l1-polling-interval = "6 seconds"
|
||||||
# [linea]
|
l1-highest-block-tag = "finalized"
|
||||||
# contract-address = "0xd19d4B5d358258f05D7B411E21A1460D11B0876F"
|
l2-eth-api-endpoint = { endpoint = "${SEQUENCER}" }
|
||||||
# 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"
|
||||||
@@ -49,12 +45,12 @@ port = 8080
|
|||||||
peer-chain-height-polling-interval = "5s"
|
peer-chain-height-polling-interval = "5s"
|
||||||
el-sync-status-refresh-interval = "5s"
|
el-sync-status-refresh-interval = "5s"
|
||||||
sync-target-selection = "Highest"
|
sync-target-selection = "Highest"
|
||||||
desync-tolerance = 64
|
desync-tolerance = 100000
|
||||||
|
|
||||||
[syncing.download]
|
[syncing.download]
|
||||||
block-range-request-timeout = "10s"
|
block-range-request-timeout = "10s"
|
||||||
blocks-batch-size = 5
|
blocks-batch-size = 10
|
||||||
blocks-parallelism = 2
|
blocks-parallelism = 10
|
||||||
max-retries = 5
|
max-retries = 5
|
||||||
backoff-delay = "1s"
|
backoff-delay = "1s"
|
||||||
use-unconditional-random-download-peer = false
|
use-unconditional-random-download-peer = false
|
||||||
@@ -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.4.0}
|
image: ${INK_RETH_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/op-reth}:${INK_MAINNET_RETH_VERSION:-v2.3.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
|
||||||
|
|||||||
@@ -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.3}
|
image: ${ZIRCUIT_NODE_IMAGE:-us-docker.pkg.dev/oplabs-tools-artifacts/images/op-node}:${GARFIELD_NODE_VERSION:-v1.19.0}
|
||||||
user: root
|
user: root
|
||||||
ports:
|
ports:
|
||||||
- 18027:18027
|
- 18027:18027
|
||||||
|
|||||||
@@ -78,16 +78,21 @@ CLIENT_NAME="$(echo "$INFO" | jq -r '.result.name // empty' 2>/dev/null || true)
|
|||||||
PEERS_JSON="$(rpc admin_peers)"
|
PEERS_JSON="$(rpc admin_peers)"
|
||||||
PEER_COUNT="$(echo "$PEERS_JSON" | jq -r '.result | length' 2>/dev/null || echo 0)"
|
PEER_COUNT="$(echo "$PEERS_JSON" | jq -r '.result | length' 2>/dev/null || echo 0)"
|
||||||
|
|
||||||
# Detect client type (connect-peers.sh logic)
|
# Detect client type (connect-peers.sh logic).
|
||||||
|
# op-geth often still reports as "Geth/…" — prefer compose path for op-geth.
|
||||||
NAME_LC="$(echo "$CLIENT_NAME" | tr '[:upper:]' '[:lower:]')"
|
NAME_LC="$(echo "$CLIENT_NAME" | tr '[:upper:]' '[:lower:]')"
|
||||||
CLIENT_TYPE="unknown"
|
CLIENT_TYPE="unknown"
|
||||||
case "$NAME_LC" in
|
case "$NAME_LC" in
|
||||||
|
*op-geth*) CLIENT_TYPE="op-geth" ;;
|
||||||
*geth*) CLIENT_TYPE="geth" ;;
|
*geth*) CLIENT_TYPE="geth" ;;
|
||||||
*reth*) CLIENT_TYPE="reth" ;;
|
*reth*) CLIENT_TYPE="reth" ;;
|
||||||
*erigon*) CLIENT_TYPE="erigon" ;;
|
*erigon*) CLIENT_TYPE="erigon" ;;
|
||||||
*nethermind*) CLIENT_TYPE="nethermind" ;;
|
*nethermind*) CLIENT_TYPE="nethermind" ;;
|
||||||
*besu*) CLIENT_TYPE="besu" ;;
|
*besu*) CLIENT_TYPE="besu" ;;
|
||||||
esac
|
esac
|
||||||
|
case "$COMPOSE_PATH" in
|
||||||
|
*op-geth*) CLIENT_TYPE="op-geth" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
TS="$(date -u +%Y-%m-%dT%H:%M:%SZ)"
|
TS="$(date -u +%Y-%m-%dT%H:%M:%SZ)"
|
||||||
echo "$PEERS_JSON" | jq -c --arg path "$COMPOSE_PATH" --arg ts "$TS" \
|
echo "$PEERS_JSON" | jq -c --arg path "$COMPOSE_PATH" --arg ts "$TS" \
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# peer-reinject.sh — generic .after-start hook: re-seed peers from peer-capture state.
|
# peer-reinject.sh — generic .after-start hook: re-seed peers from peer-capture state.
|
||||||
# Uses admin_addStaticPeer for geth, admin_addPeer otherwise (connect-peers.sh).
|
# Uses admin_addStaticPeer for vanilla geth, admin_addPeer for op-geth and others
|
||||||
# In-network vantage (rpc_chains). Idempotent; best-effort (never fails the restart).
|
# (connect-peers.sh). In-network vantage (rpc_chains). Idempotent; best-effort
|
||||||
|
# (never fails the restart).
|
||||||
#
|
#
|
||||||
# Seed order (one path for us and customers):
|
# Seed order (one path for us and customers):
|
||||||
# 1. Own persisted peerset (peer-state/<compose>.json from peer-capture)
|
# 1. Own persisted peerset (peer-state/<compose>.json from peer-capture)
|
||||||
@@ -68,6 +69,12 @@ if [ "${#ENODES[@]}" -eq 0 ]; then
|
|||||||
exit 0
|
exit 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# op-geth lacks admin_addStaticPeer; compose path wins over stale capture state
|
||||||
|
# that classified the node as plain "geth" (admin_nodeInfo often still says Geth).
|
||||||
|
case "$COMPOSE_PATH" in
|
||||||
|
*op-geth*) CLIENT_TYPE="op-geth" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
BASE="$(basename "$COMPOSE_PATH" | sed 's/--.*//')"
|
BASE="$(basename "$COMPOSE_PATH" | sed 's/--.*//')"
|
||||||
EL=""
|
EL=""
|
||||||
# wait briefly for container after recreate
|
# wait briefly for container after recreate
|
||||||
@@ -120,6 +127,7 @@ done
|
|||||||
add_peer() {
|
add_peer() {
|
||||||
local enode="$1"
|
local enode="$1"
|
||||||
local method
|
local method
|
||||||
|
# Only vanilla geth supports admin_addStaticPeer; op-geth must use admin_addPeer
|
||||||
if [ "$CLIENT_TYPE" = "geth" ]; then
|
if [ "$CLIENT_TYPE" = "geth" ]; then
|
||||||
method="admin_addStaticPeer"
|
method="admin_addStaticPeer"
|
||||||
else
|
else
|
||||||
@@ -132,7 +140,8 @@ add_peer() {
|
|||||||
resp="$(docker exec peer-hook-probe curl -s --max-time 8 -X POST \
|
resp="$(docker exec peer-hook-probe curl -s --max-time 8 -X POST \
|
||||||
-H 'Content-Type: application/json' --data "$payload" \
|
-H 'Content-Type: application/json' --data "$payload" \
|
||||||
"http://${IP}:8545" 2>/dev/null || true)"
|
"http://${IP}:8545" 2>/dev/null || true)"
|
||||||
if echo "$resp" | grep -qi 'method not found'; then
|
# go-ethereum-style: "the method X does not exist/is not available" (not "method not found")
|
||||||
|
if echo "$resp" | grep -qiE 'method not found|does not exist|not available|-32601'; then
|
||||||
if [ "$method" = "admin_addStaticPeer" ]; then
|
if [ "$method" = "admin_addStaticPeer" ]; then
|
||||||
method="admin_addPeer"
|
method="admin_addPeer"
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -3735,89 +3735,6 @@
|
|||||||
"https://humanity-testnet.drpc.org"
|
"https://humanity-testnet.drpc.org"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"astar": {
|
|
||||||
"protocol": "eth",
|
|
||||||
"id": 592,
|
|
||||||
"block_time_ms": 10000,
|
|
||||||
"lagging_lag": 5,
|
|
||||||
"syncing_lag": 10,
|
|
||||||
"urls": [
|
|
||||||
"https://rpc.astar.network:8545",
|
|
||||||
"https://astar.drpc.org"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"bitlayer": {
|
|
||||||
"protocol": "eth",
|
|
||||||
"id": 200901,
|
|
||||||
"block_time_ms": 3000,
|
|
||||||
"lagging_lag": 20,
|
|
||||||
"syncing_lag": 40,
|
|
||||||
"urls": [
|
|
||||||
"https://rpc.bitlayer.org",
|
|
||||||
"https://rpc.bitlayer-rpc.com",
|
|
||||||
"https://rpc.ankr.com/bitlayer",
|
|
||||||
"https://rpc-bitlayer.rockx.com",
|
|
||||||
"https://bitlayer.drpc.org"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"bitlayer-testnet": {
|
|
||||||
"protocol": "eth",
|
|
||||||
"id": 200810,
|
|
||||||
"block_time_ms": 3000,
|
|
||||||
"lagging_lag": 20,
|
|
||||||
"syncing_lag": 40,
|
|
||||||
"urls": [
|
|
||||||
"https://testnet-rpc.bitlayer.org",
|
|
||||||
"https://testnet-rpc.bitlayer-rpc.com",
|
|
||||||
"https://rpc.ankr.com/bitlayer_testnet",
|
|
||||||
"https://bitlayer-testnet.drpc.org"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"etherlink": {
|
|
||||||
"protocol": "eth",
|
|
||||||
"id": 42793,
|
|
||||||
"block_time_ms": 1000,
|
|
||||||
"lagging_lag": 20,
|
|
||||||
"syncing_lag": 40,
|
|
||||||
"urls": [
|
|
||||||
"https://node.mainnet.etherlink.com",
|
|
||||||
"https://etherlink.drpc.org"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"etherlink-shadownet": {
|
|
||||||
"protocol": "eth",
|
|
||||||
"id": 127823,
|
|
||||||
"block_time_ms": 6000,
|
|
||||||
"lagging_lag": 20,
|
|
||||||
"syncing_lag": 40,
|
|
||||||
"urls": [
|
|
||||||
"https://node.shadownet.etherlink.com",
|
|
||||||
"https://etherlink-shadownet.drpc.org"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"neo-x": {
|
|
||||||
"protocol": "eth",
|
|
||||||
"id": 47763,
|
|
||||||
"block_time_ms": 9000,
|
|
||||||
"lagging_lag": 5,
|
|
||||||
"syncing_lag": 10,
|
|
||||||
"urls": [
|
|
||||||
"https://mainnet-1.rpc.banelabs.org",
|
|
||||||
"https://mainnet-2.rpc.banelabs.org",
|
|
||||||
"https://neo-x.drpc.org"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"neo-x-testnet": {
|
|
||||||
"protocol": "eth",
|
|
||||||
"id": 12227332,
|
|
||||||
"block_time_ms": 5000,
|
|
||||||
"lagging_lag": 5,
|
|
||||||
"syncing_lag": 10,
|
|
||||||
"urls": [
|
|
||||||
"https://testnet.rpc.banelabs.org/",
|
|
||||||
"https://neo-x-testnet.drpc.org"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"core-pigeon": {
|
"core-pigeon": {
|
||||||
"id": 1114,
|
"id": 1114,
|
||||||
"urls": [
|
"urls": [
|
||||||
|
|||||||
Reference in New Issue
Block a user