Compare commits

..

15 Commits

Author SHA1 Message Date
80b0e4253e linea/mainnet/maru: reduce blocks-parallelism 10→2 and blocks-batch-size 10→5 to reduce engine API saturation 2026-08-02 18:03:02 +00:00
c5f9e5000f linea: lower desync-tolerance from 100000 to 64 to allow range-sync mode 2026-08-02 14:51:49 +00:00
2779f359d6 polygon: remove bor minimal profile .prune.yml (prune-block incompatible with pebble+path freezer) 2026-08-02 03:10:47 +00:00
879ea1769f polygon: remove bor minimal profile (prune-block incompatible with pebble+path freezer) 2026-08-02 03:09:56 +00:00
rob
5d56334d3c polygon minimal prune: point --datadir.ancient at ancient/chain (freezer tables dir)
bor snapshot prune-block wants the directory holding the freezer tables
(bodies.*.cdat) - the modern layout splits ancient/ into chain/ + state/,
so ancient/ root fails with 'ancient chain segments already extracted' and
the prune container crash-loops (de-12, 2026-08-02). Matches BSC's
prune-block usage which targets .../ancient/chain.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-02 02:25:40 +00:00
776aabd231 polygon minimal .prune: pass --datadir.ancient (bor nests chaindata under bor/; prune-block cannot derive the freezer path — crash-looped on de-12) 2026-08-02 02:10:59 +00:00
sebastian
e416e61f3d Merge pull request 'Bump erigon3 v3.5.2→v3.5.3 (Dockerfile asset)' (#47) from vupd/2284-erigon3-v3.5.3 into main
Reviewed-on: #47
2026-08-01 23:50:58 +00:00
399fe87f46 ethereum: bump erigon3 from v3.5.2 to v3.5.3
Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-08-01 06:16:03 +00:00
9e1aaf6393 erigon3: bump Dockerfile VERSION to v3.5.3 2026-07-31 10:35:01 +00:00
302c663039 op.zircuit.garfield: bump op-node to v1.19.3
Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-07-31 09:06:07 +00:00
30aa16e4e2 arc.mainnet: bump arc-execution (reth) and arc-consensus to v0.7.3
Mirror arc.testnet pins so mainnet EL/CL image defaults use v0.7.3.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-31 07:35:35 +00:00
59e432fa72 linea-mainnet: disable Maru [linea] finalization provider
Maru CL stuck behind tip was sending FCU with finalized ahead of EL head
(Besu -38002). Comment out [linea] until EL catches tip (no enabled flag).

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-31 07:31:23 +00:00
rob
d8386e43be backup-node: torn-backup floor guards the main data volume only
A 0G sidecar volume (ronin eigenda-proxy) FATAL'd the whole backup before the
manifest was written - verify found no new backup and the refresh pipeline's
bench-retire escalated 4 cycles in a row, head-of-line blocking the single
refresh lane. Sidecars are legitimately tiny; the <1G fail-closed floor now
applies only to the main data volume (key == compose basename).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-31 06:55:48 +00:00
f68b541f58 ink-mainnet: bump op-reth to v2.4.0
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-31 04:34:06 +00:00
97482cffe1 polygon: add bor minimal profile + .prune compose (bor snapshot prune-block rotation, arb-style) 2026-07-31 01:16:15 +00:00
33 changed files with 168 additions and 79 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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')

View File

@@ -8389,6 +8389,23 @@
"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",

View File

@@ -318,19 +318,12 @@ check_rpc_success() {
return 1 return 1
} }
# Function to detect client type from node name (+ optional compose path hint). # Function to detect client type from node name
# 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"
@@ -353,12 +346,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
# op-geth, reth, and most other clients use admin_addPeer # Reth and most other clients use admin_addPeer
method="admin_addPeer" method="admin_addPeer"
fi fi
@@ -371,11 +364,10 @@ add_static_peer() {
return 1 return 1
} }
# Fallback when the primary method is unsupported. go-ethereum-style errors # Check if method not found, try fallback
# say "the method X does not exist/is not available", not "method not found". if echo "$response" | grep -qi "method not found"; then
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 (required for op-geth) # Try admin_addPeer as fallback
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" \
@@ -433,7 +425,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" "$COMPOSE_FILE") SOURCE_CLIENT=$(detect_client_type "$SOURCE_NAME")
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}"
@@ -465,7 +457,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_COMPOSE_FILE") TARGET_CLIENT=$(detect_client_type "$TARGET_NAME")
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}"

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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"
@@ -45,12 +49,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 = 100000 desync-tolerance = 64
[syncing.download] [syncing.download]
block-range-request-timeout = "10s" block-range-request-timeout = "10s"
blocks-batch-size = 10 blocks-batch-size = 5
blocks-parallelism = 10 blocks-parallelism = 2
max-retries = 5 max-retries = 5
backoff-delay = "1s" backoff-delay = "1s"
use-unconditional-random-download-peer = false use-unconditional-random-download-peer = false

View File

@@ -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

View File

@@ -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

View File

@@ -78,21 +78,16 @@ 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" \

View File

@@ -1,8 +1,7 @@
#!/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 vanilla geth, admin_addPeer for op-geth and others # Uses admin_addStaticPeer for geth, admin_addPeer otherwise (connect-peers.sh).
# (connect-peers.sh). In-network vantage (rpc_chains). Idempotent; best-effort # In-network vantage (rpc_chains). Idempotent; best-effort (never fails the restart).
# (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)
@@ -69,12 +68,6 @@ 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
@@ -127,7 +120,6 @@ 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
@@ -140,8 +132,7 @@ 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)"
# go-ethereum-style: "the method X does not exist/is not available" (not "method not found") if echo "$resp" | grep -qi 'method not found'; then
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

View File

@@ -3735,6 +3735,89 @@
"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": [