Setting hosts via -Dhosts.0=*, -Dhosts.1=*, etc creates an OBJECT in
HOCON (indexed entries), but rskj's schema expects LIST. Result: rskj
warns and falls back to default whitelist (localhost only).
Drop the hosts.X JVM properties entirely. The file /etc/rsk/node.conf
already declares hosts = ["*"] which IS a HOCON LIST. Without the JVM
override, the file value wins.
The rsksmart/rskj:VETIVER-9.0.1 image bakes an env var:
RSKJ_SYS_PROPS=-Drpc.providers.web.http.bind_address=0.0.0.0
-Drpc.providers.web.http.hosts.0=localhost
-Drpc.providers.web.http.hosts.1=127.0.0.1
-Drpc.providers.web.http.hosts.2=::1
These JVM -D system properties take precedence over /etc/rsk/node.conf
in HOCON, so the Host whitelist always resolves to {localhost,127.0.0.1,::1}.
Result: traefik routing to rskj at IP rootstock-mainnet-client:8545
arrives with Host header that doesn't match those three. rskj returns
HTTP 400, traefik translates to 502 Bad Gateway.
Override the env var in the compose template so the http hosts whitelist
contains '*' (any host). Traefik's ipallowlist middleware is the actual
gatekeeper. Affects rootstock-mainnet AND rootstock-bamboo.
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>