Compare commits

..

35 Commits

Author SHA1 Message Date
92cdb31d17 zero-gravity: init guard must check the CONFIG volume, not a data-volume proxy
aristotle @ rpc-de-32 crash-looped after its build was fixed:

    priv_validator_state.json found in /root/.0g. Continuing!
    Already initialized, continuing!
    panic: ProvideBlsSigner (node-core/components/signer.go:46):
           key file does not exist at path: /root/.0g/config/priv_validator_key.json

$DATA_DIR and $CONFIG_DIR are SEPARATE docker volumes (<node>_zerog and
<node>_config), but the guard tested only $DATA_DIR/priv_validator_state.json —
inferring the state of the config volume from a file on the data volume. Worse, the
copy order wrote that guard file BEFORE the two key files, so an init interrupted
between them left the data volume with the guard and the config volume without the
keys. Every later start then took the 'Already initialized' branch, copied nothing,
and panicked. Unrecoverable by restarting: the node wedges permanently. aristotle
got there via the repeated build failures earlier today.

Fix, two parts:
  - guard on everything 0gchaind needs to boot (both config keys AND the data state
    file), not one proxy file on the wrong volume;
  - write the keys FIRST and the guard file LAST, so an interrupted init re-runs on
    the next start instead of latching into the wedged state.

Tested locally against the real 0gchaind binary (aristotle v1.0.6), sandboxed HOME:

  scenario                     before            after
  fresh volumes                keys created      keys created        (no regression)
  wedged (state, no keys)      keys MISSING      keys created        (unwedges)
  partial (state+node_key)     keys MISSING      keys created
  healthy (all present)        no re-init        no re-init, and a SENTINEL written
                                                 into priv_validator_key.json survives
                                                 -> never clobbers an initialized node

The 'wedged' row reproduces aristotle's production failure exactly.

Note this regenerates node identity on an affected node (node_key.json,
priv_validator_key.json). These are RPC nodes that never sign, so a fresh identity is
harmless; chain data on the _zerog volume is untouched.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-12 19:33:48 +00:00
4a060bee0d deploy: regenerate compose from vibe-node main 3c848087f5c8 2026-08-12 17:37:46 +00:00
4db13b2fc4 deploy: regenerate compose from vibe-node main 0415567d141c 2026-08-12 16:53:00 +00:00
6df9f0f17a zero-gravity: detect tarball layout; galileo 3.0.8 moved binaries to a shared root bin/
Fixes the de-32 build break introduced by vibe-node #2912 (galileo 3.0.3 -> 3.0.8,
merged as bc4cecf). Job ad580587:

    #16 chmod: cannot access '/0g/bin/0gchaind': No such file or directory

The Dockerfile hardcoded 'galileo -> mv <root>/rpc /0g'. That held for 3.0.3, where
every profile dir carried its own copy of the binaries. 3.0.8 DEDUPLICATED them into
a shared <root>/bin/ (168 MB -> 69 MB), leaving rpc/ as configs-only — so the move
produced configs and no binaries, and the build died two layers later on a chmod.

Note 'does <root>/rpc exist' is not a sufficient test: 3.0.8 still ships rpc/, it just
no longer holds bin/. Verified layouts:

  galileo 3.0.3     <root>/{rpc,validator,archive,seed}/bin/ + configs
  galileo 3.0.8     <root>/bin/ shared + <root>/{rpc,...}/ configs
  aristotle 1.0.6   <root>/bin/ + configs, no profile dirs

So: take configs from the profile dir when present, then top the binaries up from the
shared root bin/ if the profile dir did not supply them.

Also asserts both binaries exist immediately after extraction, naming the chain, the
version and the known layouts — so the next upstream reshuffle reports itself at the
point of failure rather than as an anonymous chmod error.

Verified against the real artifacts — all three now yield an identical /0g
(bin/0gchaind 76M, bin/geth 46M, geth-config.toml, geth-genesis.json,
kzg-trusted-setup.json, 0g-home/, rollback_cl.sh), and a synthetic unknown layout
exits 1 with the diagnostic instead of reaching chmod.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-12 11:09:51 +00:00
561ff43828 deploy: regenerate compose from vibe-node main bc4cecf1a74f 2026-08-12 08:38:04 +00:00
cfac32736e zero-gravity: resolve release tag by probing known forms; fail loudly on 404
0G publishes aristotle and galileo from two different repos, and neither uses a
consistent release-tag format. The asset filename is always <spec>-v<version>.tar.gz;
only the tag varies:

  aristotle -> 0gchain-Aristotle   1.0.4 = "1.0.4"    1.0.6 = "v1.0.6"
  galileo   -> 0gchain-NG          3.0.3 = "v3.0.3"   3.0.7 = "galileo-v3.0.7"   3.0.8 = "v3.0.8"

The hardcoded formats meant aristotle could not go past 1.0.4 and galileo could not
reach 3.0.7. Resolve the tag by trying the known forms in order instead.

Also switch curl -sL to -fsSL. Without -f a 404 HTML body was written into the
.tar.gz and the build failed several layers later at 'tar: not in gzip format',
an error pointing nowhere near the cause. That has now caused three separate
misdiagnoses, including a de-32 build blocker.

Verified end-to-end against the real artifacts: aristotle 1.0.4/1.0.6 and galileo
3.0.3/3.0.7/3.0.8 all resolve; aristotle 3.0.3 and galileo 9.9.9 fail immediately
with an actionable message.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-11 06:21:38 +00:00
799209b5d2 zero-gravity-aristotle: fix node version to 1.0.4 (was 3.0.3 which doesn't exist for Aristotle repo) 2026-08-10 21:56:44 +00:00
17cd0d5f23 deploy: regenerate compose from vibe-node main c5e4641499ff 2026-08-07 12:13:22 +00:00
d57fd2e644 tempo-mainnet: bump reth to 1.12.0 (T9 hardfork requires v1.12.0, node crash-loop at block 33513646) 2026-08-06 16:24:58 +00:00
e1427de966 ethereum: bump blsync to alltools-v1.17.5 for go-ethereum v1.17.5 patch (2026-07-27); includes polygon-amoy bor 2.10.0-private for hardfork at block 44,120,000 2026-08-06 11:48:53 +00:00
db38905bfe polygon-amoy: bump bor from 2.9.0 to 2.10.0-private for private Amoy hardfork at block 44,120,000 (ExtraData layout change)
Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-08-05 22:35:04 +00:00
699723d742 berachain: upgrade bera-reth to v1.4.4 for Osaka1 hardfork support
Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-08-05 21:15:20 +00:00
a0483f6934 thundercore: zeus is MAINNET (chainid 108) — fix mislabeled thundercore-testnet upstream label (drpc_name pin; SLUG-COLLISION lint find) 2026-08-05 05:09:30 +00:00
b940a72643 soneium: remove 5 orphaned 'soneium-miniato' composes (typo'd generated leftovers from a pre-rename config; correct minato-sepolia variants exist; flagged by SLUG-COLLISION lint) 2026-08-05 04:14:00 +00:00
d5e39c2329 zircuit: migrate mainnet to Conduit op-reth stack, drop dead op-geth archives
- Add zircuit-mainnet to conduit-op-reth (ghcr.io/conduitxyz/conduit-op-reth:v2.1.1)
- Add genesis.json/rollup.json from Conduit API with bedrockBlock=32956468 fix
- Add Conduit P2P bootnodes + static peer
- Use ETHEREUM_MAINNET_* vars for L1 (chainid 1) with oplabs op-node:v1.19.3
- Remove zircuit-mainnet op-geth archive/pruned profiles (SLS dependency dead)
- Keep sequencer endpoint and drpc_chain=zircuit-mainnet

SLS-decommission root cause: zircuit1/l2-geth hard-requires Zircuit-hosted
SLS DB that no longer resolves (mainnet-sls-db-global-primary.cluster-ro...
no such host). Migrating to Conduit external-node stack per operator directive.
2026-08-05 03:58:36 +00:00
rob
e536c19191 slug resolution: derive from dRPC chains.yaml, no in-code name heuristics
Regenerated by the expand_config.py redesign (see vibe-node commit). Slug
corrections, each verified present in chains.yaml:
  soneium-minato-sepolia x5: soneium (MAINNET!) -> soneium-minato
  avalanche-fuji x5:         avalanche (MAINNET!) -> avalanche-fuji
  thundercore-venus:         thundercore (MAINNET!) -> thundercore-testnet
  core-pigeon:               core-pigeon -> core-testnet
  zircuit-garfield:          zircuit-testnet -> zircuit-garfield-testnet
  sonic-testnet x2:          sonic-testnet -> sonic-testnet-v2
  ronin-saigon x3:           (none) -> ronin-saigon
  everclear-sepolia x2:      dropped (chain shut down 2026-06-05)
fuse-spark x3 (hand-written, fuse has chains: null in context.yml): x-upstreams
REMOVED - Sparknet is absent from chains.yaml; it declared the mainnet slug.

Verified: 310 testnet composes, 0 wrong-slug failures (was 22); 0 mainnet
composes carrying a testnet slug; 0 mainnet slug changes.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-05 03:28:22 +00:00
7d27ff1918 fix list-restorable.sh process-substitution infinite loop in volume-keys read loop
Regression from d896378e: putting < <(...) on `read` re-runs the producer each iteration. Capture required volume keys once and feed via done<<<.
2026-08-04 16:23:48 +02:00
b23545e143 immutable-zkevm: bump geth v1.17.4→v1.17.5 (mainnet)
Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-08-04 12:20:48 +00:00
3be855a681 fix soneium-minato→miniato typo + add drpc_chain to compose_registry.json
Add authoritative dRPC slug field (operator audit 2026-08-04):
- generate_registry.py: add drpc_chain field from x-upstreams[0].chain
- Fix soneium-minato-sepolia → soneium-miniato-sepolia typo in compose files
- drpc_chain is null for entries without x-upstreams (not dRPC-servable)

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-08-04 07:34:50 +00:00
d896378eb7 Add optional/ephemeral volume notation for restore resilience
Introduce x-optional-volumes for beacon sidecars (prysm, nimbus, lighthouse,
teku, lodestar) that are checkpoint-sync capable and rebuild state quickly.
Mark reth sockets volumes as ephemeral (runtime IPC artifacts).

Script changes:
- volume-utils.sh: add is_optional_volume_key() function
- restore-volumes.sh: tolerate missing optional/ephemeral volume archives
- clone-backup.sh: skip missing optional/ephemeral volumes gracefully
- list-restorable.sh: only require archives for non-optional persistent volumes

This fixes the de-25 ethereum prysm incident (entire 1.1T restore failed
due to missing prysm archive) and arc-testnet reth sockets restore loops.

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-08-04 06:10:55 +00:00
d21f2669ae beacon x-upstreams: restore disable-validation: true for gnosis and ethereum nimbus beacon-chain upstreams
Restore the beacon x-upstream options.disable-validation: true that was
removed during regeneration. This prevents dshackle 0.79.10's beacon health
validator from timing out on the spec-compliant empty-body 200 that nimbus
returns, causing the upstream to flap UNAVAILABLE. Matches the established
ethereum-beacon pattern.

Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai>
2026-08-03 06:58:50 +00:00
rob
3f3cedf625 Add Falkenstein/Hetzner edge prefix 168.119.195.0/24
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-03 06:48:53 +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
129 changed files with 16906 additions and 1213 deletions

View File

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

View File

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

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:
@@ -45,7 +45,7 @@ services:
arc-mainnet-archive-sockets-init: arc-mainnet-archive-sockets-init:
image: debian:bookworm-slim image: debian:bookworm-slim
entrypoint: [/bin/sh, -c] entrypoint: [/bin/sh, -c]
command: [rm -f /sockets/*.ipc && chown 999:999 /sockets] command: [chown 999:999 /sockets]
restart: no restart: no
depends_on: depends_on:
arc-mainnet-archive-consensus-init: arc-mainnet-archive-consensus-init:
@@ -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:

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:
@@ -45,7 +45,7 @@ services:
arc-mainnet-sockets-init: arc-mainnet-sockets-init:
image: debian:bookworm-slim image: debian:bookworm-slim
entrypoint: [/bin/sh, -c] entrypoint: [/bin/sh, -c]
command: [rm -f /sockets/*.ipc && chown 999:999 /sockets] command: [chown 999:999 /sockets]
restart: no restart: no
depends_on: depends_on:
arc-mainnet-consensus-init: arc-mainnet-consensus-init:
@@ -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:

View File

@@ -45,7 +45,7 @@ services:
arc-testnet-archive-sockets-init: arc-testnet-archive-sockets-init:
image: debian:bookworm-slim image: debian:bookworm-slim
entrypoint: [/bin/sh, -c] entrypoint: [/bin/sh, -c]
command: [rm -f /sockets/*.ipc && chown 999:999 /sockets] command: [chown 999:999 /sockets]
restart: no restart: no
depends_on: depends_on:
arc-testnet-archive-consensus-init: arc-testnet-archive-consensus-init:
@@ -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:

View File

@@ -45,7 +45,7 @@ services:
arc-testnet-sockets-init: arc-testnet-sockets-init:
image: debian:bookworm-slim image: debian:bookworm-slim
entrypoint: [/bin/sh, -c] entrypoint: [/bin/sh, -c]
command: [rm -f /sockets/*.ipc && chown 999:999 /sockets] command: [chown 999:999 /sockets]
restart: no restart: no
depends_on: depends_on:
arc-testnet-consensus-init: arc-testnet-consensus-init:
@@ -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:

View File

@@ -45,7 +45,7 @@ services:
arc-testnet-sockets-init: arc-testnet-sockets-init:
image: debian:bookworm-slim image: debian:bookworm-slim
entrypoint: [/bin/sh, -c] entrypoint: [/bin/sh, -c]
command: [rm -f /sockets/*.ipc && chown 999:999 /sockets] command: [chown 999:999 /sockets]
restart: no restart: no
depends_on: depends_on:
arc-testnet-consensus-init: arc-testnet-consensus-init:
@@ -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:

View File

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

View File

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

View File

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

View File

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

View File

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

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

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

File diff suppressed because it is too large Load Diff

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

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

View File

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

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

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

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

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -123,7 +123,7 @@ services:
- pruning - pruning
ethereum-mainnet-reth-minimal-node: ethereum-mainnet-reth-minimal-node:
image: ${ETHEREUM_BLSYNC_IMAGE:-ethereum/client-go}:${ETHEREUM_MAINNET_BLSYNC_VERSION:-alltools-v1.17.4} image: ${ETHEREUM_BLSYNC_IMAGE:-ethereum/client-go}:${ETHEREUM_MAINNET_BLSYNC_VERSION:-alltools-v1.17.5}
ports: ports:
- 19286:19286 - 19286:19286
- 19286:19286/udp - 19286:19286/udp

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

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

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -54,6 +54,7 @@ services:
- 9545 - 9545
command: command:
- --Xbonsai-full-flat-db-enabled=true - --Xbonsai-full-flat-db-enabled=true
- --bonsai-historical-block-limit=4096
- --bootnodes=enode://069800db9e6e0ec9cadca670994ef1aea2cfd3d88133e63ecadbc1cdbd1a5847b09838ee08d8b5f02a9c32ee13abeb4d4104bb5514e5322c9d7ee19f41ff3e51@3.132.73.210:31002,enode://a8e03a71eab12ec4b47bb6e19169d8e4dc7a58373a2476969bbe463f2dded6003037fa4dd5f71e15027f7fc8d7340956fbbefed67ddd116ac19a7f74da034b61@3.132.73.210:31003,enode://97706526cf79df9d930003644f9156805f6c8bd964fc79e083444f7014ce10c9bdd2c5049e63b58040dca1d4c82ebef970822198cf0714de830cff4111534ff1@18.223.198.165:31004,enode://24e1c654a801975a96b7f54ebd7452ab15777fc635c1db25bdbd4425fdb04e7f4768e9e838a87ab724320a765e41631d5d37758c933ad0e8668693558125c8aa@18.223.198.165:31000,enode://27010891d960f73d272a553f72b6336c6698db3ade98d631f09c764e57674a797be5ebc6829ddbb65ab564f439ebc75215d20aa98b6f351d12ea623e7d139ac3@3.132.73.210:31001,enode://228e1b8a4931e46f383e30721dac21fb8fb4e5e1b32c870e13b25478c82db3dc1cd9e7ceb93d302a766466b55638cc9c5cbfc43aa48fa41ced19baf365951f76@3.1.142.64:31002,enode://c22eb0d40fc3ad5ea710aeddea906567778166bfe18c157955e8c39b23a46c45db18a0fa2ba07f2b64c81178a8c796aec2a29151533920ead06fcdfc6d8d03c6@47.128.192.57:31004,enode://8ce733abe39fd7ae0a278b9893f85c1193c611a3886168690dd843435460f22cc4d61f9e8d0ace7f5905836a665319a31cccdaacdada2acc69972c382ecce7db@3.1.142.64:31003,enode://b7c1b2bed65a855f7a2104aac9a14674dfdf018fdac763415b373b29ce18cdb81d36328ba4e5c9f12629f3a50c3e8f9ee048f22dbdbe93a82813da89c6b81334@51.20.235.126:31004,enode://95270e0550848a72fb141cf27f1c4ea10714edde365b411dc0fa06c81c0f282ce155eb9fa472b6b8bb9ee98395eeaf4c5a7b02a01fe58b37ea98ba152eda4c37@13.50.94.193:31000,enode://72013391755f24f08567b932feeeec4c893c06e0b1fb480890c83bf87fd277ad86a5ab9cb586db9ae9970371a2f8cb0c96f6c9f69045abca0fb801db7f047138@51.20.235.126:31001 - --bootnodes=enode://069800db9e6e0ec9cadca670994ef1aea2cfd3d88133e63ecadbc1cdbd1a5847b09838ee08d8b5f02a9c32ee13abeb4d4104bb5514e5322c9d7ee19f41ff3e51@3.132.73.210:31002,enode://a8e03a71eab12ec4b47bb6e19169d8e4dc7a58373a2476969bbe463f2dded6003037fa4dd5f71e15027f7fc8d7340956fbbefed67ddd116ac19a7f74da034b61@3.132.73.210:31003,enode://97706526cf79df9d930003644f9156805f6c8bd964fc79e083444f7014ce10c9bdd2c5049e63b58040dca1d4c82ebef970822198cf0714de830cff4111534ff1@18.223.198.165:31004,enode://24e1c654a801975a96b7f54ebd7452ab15777fc635c1db25bdbd4425fdb04e7f4768e9e838a87ab724320a765e41631d5d37758c933ad0e8668693558125c8aa@18.223.198.165:31000,enode://27010891d960f73d272a553f72b6336c6698db3ade98d631f09c764e57674a797be5ebc6829ddbb65ab564f439ebc75215d20aa98b6f351d12ea623e7d139ac3@3.132.73.210:31001,enode://228e1b8a4931e46f383e30721dac21fb8fb4e5e1b32c870e13b25478c82db3dc1cd9e7ceb93d302a766466b55638cc9c5cbfc43aa48fa41ced19baf365951f76@3.1.142.64:31002,enode://c22eb0d40fc3ad5ea710aeddea906567778166bfe18c157955e8c39b23a46c45db18a0fa2ba07f2b64c81178a8c796aec2a29151533920ead06fcdfc6d8d03c6@47.128.192.57:31004,enode://8ce733abe39fd7ae0a278b9893f85c1193c611a3886168690dd843435460f22cc4d61f9e8d0ace7f5905836a665319a31cccdaacdada2acc69972c382ecce7db@3.1.142.64:31003,enode://b7c1b2bed65a855f7a2104aac9a14674dfdf018fdac763415b373b29ce18cdb81d36328ba4e5c9f12629f3a50c3e8f9ee048f22dbdbe93a82813da89c6b81334@51.20.235.126:31004,enode://95270e0550848a72fb141cf27f1c4ea10714edde365b411dc0fa06c81c0f282ce155eb9fa472b6b8bb9ee98395eeaf4c5a7b02a01fe58b37ea98ba152eda4c37@13.50.94.193:31000,enode://72013391755f24f08567b932feeeec4c893c06e0b1fb480890c83bf87fd277ad86a5ab9cb586db9ae9970371a2f8cb0c96f6c9f69045abca0fb801db7f047138@51.20.235.126:31001
- --data-path=/opt/besu/database - --data-path=/opt/besu/database
- --data-storage-format=BONSAI - --data-storage-format=BONSAI

View File

@@ -54,6 +54,7 @@ services:
- 9545 - 9545
command: command:
- --Xbonsai-full-flat-db-enabled=true - --Xbonsai-full-flat-db-enabled=true
- --bonsai-historical-block-limit=4096
- --bootnodes=enode://6f20afbe4397e51b717a7c1ad3095e79aee48c835eebd9237a3e8a16951ade1fe0e66e981e30ea269849fcb6ba03d838da37f524fabd2a557474194a2e2604fa@18.221.100.27:31002,enode://ce1e0d8e0500cb5c0ac56bdcdafb2d6320c3a2c5125b5ccf12f5dfc9b47ee74acbcafc32559017613136c9c36a0ce74ba4f83b7fb8244f099f3b15708d9d3129@3.23.75.47:31000,enode://1b026a5eb0ae74300f58987d235ef0e3a550df963345cb3574be3b0b54378bd11f14dfd515a8976f2c2d2826090e9507b8ccc24f896a9ffffffcabcfd996a733@3.129.120.128:31001 - --bootnodes=enode://6f20afbe4397e51b717a7c1ad3095e79aee48c835eebd9237a3e8a16951ade1fe0e66e981e30ea269849fcb6ba03d838da37f524fabd2a557474194a2e2604fa@18.221.100.27:31002,enode://ce1e0d8e0500cb5c0ac56bdcdafb2d6320c3a2c5125b5ccf12f5dfc9b47ee74acbcafc32559017613136c9c36a0ce74ba4f83b7fb8244f099f3b15708d9d3129@3.23.75.47:31000,enode://1b026a5eb0ae74300f58987d235ef0e3a550df963345cb3574be3b0b54378bd11f14dfd515a8976f2c2d2826090e9507b8ccc24f896a9ffffffcabcfd996a733@3.129.120.128:31001
- --data-path=/opt/besu/database - --data-path=/opt/besu/database
- --data-storage-format=BONSAI - --data-storage-format=BONSAI

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"

View File

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

View File

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

View File

@@ -267,7 +267,7 @@ services:
- EIGENDA_PROXY_S3_CREDENTIAL_TYPE=public - EIGENDA_PROXY_S3_CREDENTIAL_TYPE=public
- EIGENDA_PROXY_S3_ENDPOINT=storage.googleapis.com - EIGENDA_PROXY_S3_ENDPOINT=storage.googleapis.com
- EIGENDA_PROXY_S3_PATH=blobs/ - EIGENDA_PROXY_S3_PATH=blobs/
- EIGENDA_PROXY_STORAGE_BACKENDS_TO_ENABLE=V1,V2 - EIGENDA_PROXY_STORAGE_BACKENDS_TO_ENABLE=V2
- EIGENDA_PROXY_STORAGE_FALLBACK_TARGETS=s3 - EIGENDA_PROXY_STORAGE_FALLBACK_TARGETS=s3
restart: unless-stopped restart: unless-stopped
networks: networks:

View File

@@ -266,7 +266,7 @@ services:
- EIGENDA_PROXY_S3_CREDENTIAL_TYPE=public - EIGENDA_PROXY_S3_CREDENTIAL_TYPE=public
- EIGENDA_PROXY_S3_ENDPOINT=storage.googleapis.com - EIGENDA_PROXY_S3_ENDPOINT=storage.googleapis.com
- EIGENDA_PROXY_S3_PATH=blobs/ - EIGENDA_PROXY_S3_PATH=blobs/
- EIGENDA_PROXY_STORAGE_BACKENDS_TO_ENABLE=V1,V2 - EIGENDA_PROXY_STORAGE_BACKENDS_TO_ENABLE=V2
- EIGENDA_PROXY_STORAGE_FALLBACK_TARGETS=s3 - EIGENDA_PROXY_STORAGE_FALLBACK_TARGETS=s3
restart: unless-stopped restart: unless-stopped
networks: networks:

View File

@@ -264,7 +264,7 @@ services:
- EIGENDA_PROXY_S3_CREDENTIAL_TYPE=public - EIGENDA_PROXY_S3_CREDENTIAL_TYPE=public
- EIGENDA_PROXY_S3_ENDPOINT=storage.googleapis.com - EIGENDA_PROXY_S3_ENDPOINT=storage.googleapis.com
- EIGENDA_PROXY_S3_PATH=blobs/ - EIGENDA_PROXY_S3_PATH=blobs/
- EIGENDA_PROXY_STORAGE_BACKENDS_TO_ENABLE=V1,V2 - EIGENDA_PROXY_STORAGE_BACKENDS_TO_ENABLE=V2
- EIGENDA_PROXY_STORAGE_FALLBACK_TARGETS=s3 - EIGENDA_PROXY_STORAGE_FALLBACK_TARGETS=s3
restart: unless-stopped restart: unless-stopped
networks: networks:

View File

@@ -264,7 +264,7 @@ services:
- EIGENDA_PROXY_S3_CREDENTIAL_TYPE=public - EIGENDA_PROXY_S3_CREDENTIAL_TYPE=public
- EIGENDA_PROXY_S3_ENDPOINT=storage.googleapis.com - EIGENDA_PROXY_S3_ENDPOINT=storage.googleapis.com
- EIGENDA_PROXY_S3_PATH=blobs/ - EIGENDA_PROXY_S3_PATH=blobs/
- EIGENDA_PROXY_STORAGE_BACKENDS_TO_ENABLE=V1,V2 - EIGENDA_PROXY_STORAGE_BACKENDS_TO_ENABLE=V2
- EIGENDA_PROXY_STORAGE_FALLBACK_TARGETS=s3 - EIGENDA_PROXY_STORAGE_FALLBACK_TARGETS=s3
restart: unless-stopped restart: unless-stopped
networks: networks:

View File

@@ -45,9 +45,6 @@ services:
ulimits: ulimits:
nofile: 1048576 # Max open files (for RPC/WS connections) nofile: 1048576 # Max open files (for RPC/WS connections)
user: root user: root
ports:
- 13290:13290
- 13290:13290/udp
expose: expose:
- 8545 - 8545
- 6060 - 6060
@@ -64,7 +61,6 @@ services:
- GETH_ROLLUP_SEQUENCERHTTP=https://rpc.mainnet.frax.com - GETH_ROLLUP_SEQUENCERHTTP=https://rpc.mainnet.frax.com
entrypoint: /bin/sh -c '[ -f /config/genesis.json ] && geth --db.engine=leveldb --gcmode=archive --datadir /data init --state.scheme=hash /config/genesis.json; [ -f /config/static-nodes.json ] && cp -f /config/static-nodes.json /data/static-nodes.json; exec geth "$@"' -- entrypoint: /bin/sh -c '[ -f /config/genesis.json ] && geth --db.engine=leveldb --gcmode=archive --datadir /data init --state.scheme=hash /config/genesis.json; [ -f /config/static-nodes.json ] && cp -f /config/static-nodes.json /data/static-nodes.json; exec geth "$@"' --
command: command:
- --bootnodes=enr:-J24QI8QR7VIgvQFuvLl09b9ocugoQ1WkS_AOMWKFgNX48-4P1hjgDKGeMFXZmKtfjYA2aEehxKT066riaktnxhh92OGAY5Sw_QsgmlkgnY0gmlwhCztZu2Hb3BzdGFja4P8AQCJc2VjcDI1NmsxoQM2KM0mkdH97Ze8AqwxLeqc934PKj8-xoKsyP6mAptWwIN0Y3CCdl2DdWRwgnZd,enr:-J24QGD1J-g2EPY9b7XiuwLhIoGocVp2qx2gWSfDI_CdftiPSHlgi7G6LtzkQlDskuSvRj4OXTg3vXLISubphXNNhqyGAY5Sw8GxgmlkgnY0gmlwhCzW_iGHb3BzdGFja4P8AQCJc2VjcDI1NmsxoQPvMYlJHJUsEyciuJCTkKHLE2ogZ6cs2xuPI28CGq0CTIN0Y3CCdl2DdWRwgnZd,enr:-J24QCA5I3xroUXt7Ge_Kf04VCRBnI-GbZeyBxOkkpIDGGLrVsonrbngQG1hAEnufRb1TgS6sNFCGtaZ2ZpRx7AgciGGAY5SxEy0gmlkgnY0gmlwhCLzRQyHb3BzdGFja4P8AQCJc2VjcDI1NmsxoQOaHzrtPQWYcwAcFJWFrbGlbNUsBC0VEhCcH02RbgEIwIN0Y3CCdl2DdWRwgnZd
- --datadir=/data - --datadir=/data
- --db.engine=leveldb - --db.engine=leveldb
- --gcmode=archive - --gcmode=archive
@@ -72,9 +68,8 @@ services:
- --metrics - --metrics
- --metrics.addr=0.0.0.0 - --metrics.addr=0.0.0.0
- --metrics.port=6060 - --metrics.port=6060
- --nat=extip:${IP}
- --networkid=252 - --networkid=252
- --port=13290 - --nodiscover
- --rpc.gascap=600000000 - --rpc.gascap=600000000
- --rpc.txfeecap=0 - --rpc.txfeecap=0
- --state.scheme=hash - --state.scheme=hash
@@ -145,7 +140,7 @@ services:
- OP_NODE_RPC_ADDR=0.0.0.0 - OP_NODE_RPC_ADDR=0.0.0.0
- OP_NODE_RPC_PORT=9545 - OP_NODE_RPC_PORT=9545
- OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log - OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log
- OP_NODE_SYNCMODE=execution-layer - OP_NODE_SYNCMODE=consensus-layer
- OP_NODE_VERIFIER_L1_CONFS=0 - OP_NODE_VERIFIER_L1_CONFS=0
entrypoint: [op-node] entrypoint: [op-node]
restart: unless-stopped restart: unless-stopped

View File

@@ -45,9 +45,6 @@ services:
ulimits: ulimits:
nofile: 1048576 # Max open files (for RPC/WS connections) nofile: 1048576 # Max open files (for RPC/WS connections)
user: root user: root
ports:
- 10282:10282
- 10282:10282/udp
expose: expose:
- 8545 - 8545
- 6060 - 6060
@@ -64,7 +61,6 @@ services:
- GETH_ROLLUP_SEQUENCERHTTP=https://rpc.mainnet.frax.com - GETH_ROLLUP_SEQUENCERHTTP=https://rpc.mainnet.frax.com
entrypoint: /bin/sh -c '[ -f /config/genesis.json ] && geth --db.engine=pebble --gcmode=full --datadir /data init --state.scheme=path /config/genesis.json; [ -f /config/static-nodes.json ] && cp -f /config/static-nodes.json /data/static-nodes.json; exec geth "$@"' -- entrypoint: /bin/sh -c '[ -f /config/genesis.json ] && geth --db.engine=pebble --gcmode=full --datadir /data init --state.scheme=path /config/genesis.json; [ -f /config/static-nodes.json ] && cp -f /config/static-nodes.json /data/static-nodes.json; exec geth "$@"' --
command: command:
- --bootnodes=enr:-J24QI8QR7VIgvQFuvLl09b9ocugoQ1WkS_AOMWKFgNX48-4P1hjgDKGeMFXZmKtfjYA2aEehxKT066riaktnxhh92OGAY5Sw_QsgmlkgnY0gmlwhCztZu2Hb3BzdGFja4P8AQCJc2VjcDI1NmsxoQM2KM0mkdH97Ze8AqwxLeqc934PKj8-xoKsyP6mAptWwIN0Y3CCdl2DdWRwgnZd,enr:-J24QGD1J-g2EPY9b7XiuwLhIoGocVp2qx2gWSfDI_CdftiPSHlgi7G6LtzkQlDskuSvRj4OXTg3vXLISubphXNNhqyGAY5Sw8GxgmlkgnY0gmlwhCzW_iGHb3BzdGFja4P8AQCJc2VjcDI1NmsxoQPvMYlJHJUsEyciuJCTkKHLE2ogZ6cs2xuPI28CGq0CTIN0Y3CCdl2DdWRwgnZd,enr:-J24QCA5I3xroUXt7Ge_Kf04VCRBnI-GbZeyBxOkkpIDGGLrVsonrbngQG1hAEnufRb1TgS6sNFCGtaZ2ZpRx7AgciGGAY5SxEy0gmlkgnY0gmlwhCLzRQyHb3BzdGFja4P8AQCJc2VjcDI1NmsxoQOaHzrtPQWYcwAcFJWFrbGlbNUsBC0VEhCcH02RbgEIwIN0Y3CCdl2DdWRwgnZd
- --datadir=/data - --datadir=/data
- --db.engine=pebble - --db.engine=pebble
- --gcmode=full - --gcmode=full
@@ -72,13 +68,12 @@ services:
- --metrics - --metrics
- --metrics.addr=0.0.0.0 - --metrics.addr=0.0.0.0
- --metrics.port=6060 - --metrics.port=6060
- --nat=extip:${IP}
- --networkid=252 - --networkid=252
- --port=10282 - --nodiscover
- --rpc.gascap=600000000 - --rpc.gascap=600000000
- --rpc.txfeecap=0 - --rpc.txfeecap=0
- --state.scheme=path - --state.scheme=path
- --syncmode=snap - --syncmode=full
- --http - --http
- --http.addr=0.0.0.0 - --http.addr=0.0.0.0
- --http.api=eth,net,web3,debug,admin,txpool,engine - --http.api=eth,net,web3,debug,admin,txpool,engine
@@ -145,7 +140,7 @@ services:
- OP_NODE_RPC_ADDR=0.0.0.0 - OP_NODE_RPC_ADDR=0.0.0.0
- OP_NODE_RPC_PORT=9545 - OP_NODE_RPC_PORT=9545
- OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log - OP_NODE_SNAPSHOT_LOG=/tmp/op-node-snapshot-log
- OP_NODE_SYNCMODE=execution-layer - OP_NODE_SYNCMODE=consensus-layer
- OP_NODE_VERIFIER_L1_CONFS=0 - OP_NODE_VERIFIER_L1_CONFS=0
entrypoint: [op-node] entrypoint: [op-node]
restart: unless-stopped restart: unless-stopped

View File

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

View File

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

Some files were not shown because too many files have changed in this diff Show More