- 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>
SNAP sync is broken for Linea - it picks an old pivot block (~24.7M) that
no peers can serve world state for. This causes:
- World state download stuck with 0 pending requests
- Maru unable to push blocks to EL without complete world state
- Node stuck returning block 0 for "latest"
FULL sync executes every block from genesis. It's slower but reliable
and allows maru to drive the sync via engine API.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
When Besu is behind the CL head (e.g., during initial sync or after restart),
desync-tolerance=0 prevents maru from sending any fork choice updates to Besu.
This causes Besu to remain stuck at its current block.
Increasing desync-tolerance to 100000 allows maru to continue sending blocks
even when Besu is significantly behind, enabling it to catch up.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
When payload-validation-enabled is true, maru validates every block against
Besu before sending fork choice updates. If Besu is in an inconsistent state
(e.g., stuck in SNAP sync), this causes maru to stop sending fork choice
updates entirely, preventing Besu from ever syncing.
The official Linea configuration uses payload-validation-enabled = false,
which allows maru to continue sending fork choice updates regardless of
Besu's current state.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Set payload-validation-enabled=true in Maru config to ensure
payloads are sent to the execution client. Without this, Maru
doesn't send forkchoice/newPayload calls when EL reports synced
status (even at block 0).
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add linea/geth/ compose files (mainnet/sepolia, pruned/archive)
- Update Maru version and --network flag in besu/erigon3 configs
- Update compose_registry.json
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Upgrade from 9737a45 to v1.0.0-20260108114606-36f5e2f
- Use --network=linea-mainnet for built-in config
- May fix advertise-ip issue for peer discovery
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Juno returns chain ID as hex-encoded ASCII (0x534e5f5345504f4c4941)
rather than plain string (SN_SEPOLIA). Match both formats.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Detect Starknet paths and use starknet_getBlockWithTxHashes
- Return decimal block_number directly instead of hex conversion
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- sync-status.sh now detects Starknet paths and uses starknet_chainId
- Maps SN_MAIN/SN_SEPOLIA chain IDs to reference endpoints
- check-health.sh accepts --starknet flag for Starknet mode
- Uses starknet_getBlockWithTxHashes instead of eth_getBlockByNumber
- Handles decimal timestamps and block_hash field differences
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Service name simplified to rootstock-mainnet (no -client suffix)
- Traefik middlewares handle Host:localhost header rewriting
- Proper WS routing on port 8546
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Replace nginx proxy with traefik headers middleware for Host rewriting.
Fixes container IP mismatch issues on container restart.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>