VETIVER-9.0.1 enforces rpc.providers.web.http.hosts as a whitelist;
empty list / default rejects everything except 'Host: localhost'.
The traefik route uses 'customrequestheaders.Host=localhost' middleware
to rewrite the Host header, but that middleware appears not to be
applied for the rootstock route - real requests still arrive at rskj
with Host: rpc-de-XX.stakesquid.eu and rskj returns 400 Bad Request,
which traefik translates to 502 Bad Gateway.
Wildcard whitelist is fine here because traefik (with ipallowlist
middleware) is the actual gatekeeper.
Confirmed empirically: 'wget --header=Host:localhost' returns valid
JSON-RPC, anything else returns 400.
VETIVER-9.0.1 silently ignores rpc.modules when configured as a list of
{name,version,enabled} objects. Switch to canonical OBJECT format from
rskj's expected.conf:
modules = { eth { version = "1.0", enabled = "true" } ... }
Without this, the RPC server starts but no modules are registered, so
eth_blockNumber returns method-not-found and show-status flags as 'error'
even though the chain itself imports blocks fine.
Also added 'hosts = []' under rpc.providers.web.http (LIST per
expected.conf, was missing). Same fix applied to bamboo testnet config.
Note: this only resolves mainnet. Bamboo still needs DB recreate due to
unrelated 'Invalid block header size: 22' corruption.
Required to fix zksync-era-mainnet on de-13 which is failing with
'migration 20250820140638 was previously applied but is missing in the
resolved migrations'. We were 15 minor versions behind the latest stable
GitHub release (core-v29.16.0). Cascades to abstract/lens external-node
composes which inherit the base version (none currently deployed).
maru v1.2.x strictly validates l2-eth-api-endpoint as a URL and crashes when SEQUENCER
env var is empty. Old maru tolerated empty. Fixes 4 stuck Linea instances on
de-27, de-32, us-40 — all besu/geth running but maru crash-looping with config error
'Required type class java.net.URL could not be decoded from a String value: '
1.7.3 introduced a regression where --tries-verify-mode=none silently overrides
--state.scheme=path → hash, causing 'Incompatible state scheme' crash on minimal
nodes built with path scheme. 1.7.2 was confirmed working before the auto-bump.
v1.2.0 tag doesn't exist on Docker Hub, causing compose build
failures on de-27, de-32, us-40. Using the actual tag format.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Update drpcorg/dshackle from 0.75.17 to 0.75.21
- Required for Tron network support
- Updates both drpc.yml and drpc-free.yml
Co-Authored-By: Claude Agent <claude@stakesquid.eu>
- Replace outdated bootnodes (34.89.39.114, 35.197.249.21) with official ones from Polygon docs
- New bootnodes: 34.89.255.109, 34.185.137.160, 34.89.119.250, 34.89.40.235
- Increase maxpeers from 50 to 500 per Polygon docs recommendations
- Affects: Bor and all Erigon3 variants (archive, minimal, pruned)
Reference: https://docs.polygon.technology/pos/reference/seed-and-bootnodes/
Co-Authored-By: Claude Agent <claude@stakesquid.eu>
Old bootnodes (34.89.39.114, 35.197.249.21) were down causing sync failure.
Updated to official bootnodes from Polygon documentation.
Co-Authored-By: Claude Agent <claude@stakesquid.eu>
- polygon-amoy: reassigned from port 12188 (collision with hashkeychain-mainnet)
to 12190 via salt+2 in generate_ports()
- zircuit-garfield/testnet: fix empty --networkid= (was {{ chain_id }},
now {{ chainid }})
Co-Authored-By: Claude Agent <claude@stakesquid.eu>
Snap sync causes a deadlock on fresh nodes: consensus sends a zero
finalized block hash at startup which geth rejects, crashing consensus.
Full sync processes blocks sequentially from genesis and avoids this.
Co-Authored-By: Claude Agent <claude@stakesquid.eu>
Replace dead itrocket hostname with official seed from bundled config.toml:
461b27a9d1530eb47f62fe010a8d3e5d43b6740c@34.82.252.10:26656
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Fix networkid from 16601 to 16602 (confirmed by official docs)
- Bump version 3.0.3 → 3.0.4
- Replace dead bootnode (8.218.88.60) with bundled geth-config.toml
- Replace dead consensus seed (8.218.88.60:26656) with itrocket seed
- Same fixes applied to aristotle for consistency
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Overrides default gascap (600000000) to 0 (no gas cap) in BSC template.
Core inherits from BSC template, so also updated.
Co-Authored-By: Claude Agent <claude@stakesquid.eu>
op-reth moved from ghcr.io/paradigmxyz/op-reth to
us-docker.pkg.dev/oplabs-tools-artifacts/images/op-reth
starting with v1.11.0
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
zkevm.datastream-version, zkevm.get-logs-timeout, zkevm.get-logs-retries
are unknown/deprecated in v2.63.0-RC11.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Switch from defunct ghcr.io/immutable/go-ethereum/go-ethereum image
to the current ghcr.io/immutable/immutable-geth/immutable-geth image.
Pin version to v1.0.0-beta.17 instead of using 'latest' tag.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Keep ethereum/reth at v1.11.0 but op-reth stays at v1.10.2 since
ghcr.io/paradigmxyz/op-reth:v1.11.0 is not published.
Co-Authored-By: Claude Agent <claude@stakesquid.eu>
XLayer migrated from Polygon CDK to OP Stack (Jovian fork, Oct 2025).
The Kafka-based [Eth.GPO.XLayer] section was removed in op-geth v0.1.4
(okx/op-geth PR #168, Feb 2026) and causes Fatal crash on startup.
Replace with standard OP Stack GPO config with MinSuggestedPriorityFee.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Same fix as mainnet - katana-testnet is not in the superchain registry.
Chain ID 737373, L1 is Sepolia.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Katana is not in the OP Stack superchain registry, so it needs
custom genesis.json and rollup.json files instead of the built-in
network name. Follows the same pattern as superseed-mainnet.
Changes:
- Remove GETH_OP_NETWORK env var
- Add genesis init in entrypoint (checks if /data/geth exists)
- Add --networkid=747474
- Mount op/katana/mainnet as /config in both geth and op-node
- Replace OP_NODE_NETWORK with OP_NODE_ROLLUP_CONFIG
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add --consensus.signing-key and --consensus.fee-recipient
- Add secrets volume for validator key storage
- Add comment with key generation instructions
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add tempo-moderato-reth-archive-trace and tempo-moderato-reth-pruned-trace
- Add tempo-testnet-reth-archive-trace and tempo-testnet-reth-pruned-trace
- Update compose_registry.json with new endpoints
Chain IDs:
- Tempo Moderato: 42431
- Tempo Testnet (Andantino): 42429
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add granite_time, holocene_time, isthmus_time to superseed mainnet rollup.json
(fetched from live superseed sequencer)
- Update haqq image from v1.9.2 to v1.9.1 (v1.9.2 doesn't exist on Docker Hub)
Co-Authored-By: Claude Agent <claude@stakesquid.eu>
op-node v1.16.5 no longer accepts the da_challenge_contract_address field
in rollup.json (it was replaced by alt_da in newer OP Stack versions).
Since BOB sepolia doesn't use alt DA (zero address), simply removing the
field fixes the crash loop.
Co-Authored-By: Claude Agent <claude@stakesquid.eu>