Repository navigation
v30.0.0
Important
Hoodi operators must run this release before Glamsterdam activates on Hoodi at 1793036568 (2026-10-26 17:42:48 UTC). It is the first ethrex release with the fork scheduled on Hoodi; earlier releases stop following Hoodi at the fork. Pair it with a consensus client release that ships the Hoodi Gloas config. Mainnet has no Glamsterdam time scheduled.
Warning
L2: the prover and the SP1 guest move to SP1 6.9.0. SP1 6 proofs need the SP1 v6.1.0 Groth16 verifier, and an existing deployment's SP1 5 verifier rejects them whatever key is registered. Before the upgraded sequencer commits batches, let every committed batch be verified, then upgrade the OnChainProposer and replace the verifier in one Timelock call, upgradeToAndCall(newImplementation, upgradeSP1Verifier(newVerifier)), and register this release's verification key. The L2 upgrades guide has the full procedure. Aligned mode is unavailable until Aligned ships SP1 6 support, and the OpenVM L2 prover backend is removed. L1 node operators are unaffected.
Note
What's new
- Hardening: JSON-RPC parsing is bounded in memory and the Auth-RPC token is checked before the request body is read;
eth_getLogsand log filter polls are bounded in cost; serving eth/72 cells to peers is bounded in CPU; what a peer's transaction announcements can make the node track is bounded; maps keyed by contract- or block-chosen values are seeded; and MODEXP gas is charged before its operands are sized. - RPC:
eth_getFilterChangesreports each new log once, and the receipts of blocks still held in memory are returned in full. - Sync: snap/2 catch-up charges peers that cannot serve block access lists, and accounts left with no storage slots get the empty storage root.
- Performance and zkVM guests: calldata, CALL arguments and CREATE initcode are no longer copied per call, so zkVM guests stop running out of heap; finality pruning no longer piles up overlapping range deletes; and state-history journaling skips layers that are already final.
- L2: the committer generates the prover input for batches another build sealed, so a sequencer that takes over, or batches committed again after a revert, can still be proven; and the OnChainProposer owner can replace the SP1 verifier.
No resync is needed.
Installation and running instructions can be found in our docs
✨ New Features
1b73fd6- l1: print a Glamsterdam banner after the first Amsterdam block (PR #7341 by @ilitteri)95b2edf- l1: schedule Amsterdam on Hoodi (PR #7391 by @ilitteri)36b878c- l2: upgrade the L2 prover and SP1 guest to SP1 6.9.0 (PR #7401 by @ilitteri)
🐛 Bug Fixes
ea39cbe- l1: keepglobal_asm!blocks from leaking their section state (PR #7248 by @MegaRedHand)1c37678- levm: seed the transient storage hasher (PR #7373 by @juanbono)da50b34- l1: verify eth/71 block access lists against their headers in full sync (PR #7370 by @ilitteri)398a01f- l1: execute each in-flight newPayload once (PR #7374 by @juanbono)62e3453- l1: return every receipt of a block from the in-memory store (PR #7387 by @ilitteri)79ac600- l1,l2: bound JSON-RPC parsing memory and check the Auth-RPC JWT before reading the body (PR #7385 by @ilitteri)3083063- l1: report each new log once from eth_getFilterChanges (PR #7388 by @ilitteri)fc518d5- l1: reuse calldata buffers across calls so zkVM guests stop running out of heap (PR #7390 by @ilitteri)12e3a05- l1: copy CREATE initcode once and reuse its buffer across CREATEs (PR #7392 by @ilitteri)f16b196- l1,l2: bound the cost of eth_getLogs and log filter polls (PR #7389 by @ilitteri)d958dcb- l1: bound the CPU cost of serving eth/72 cells to peers (PR #7404 by @ilitteri)e5b8e37- l1,l2: stop finality pruning from piling up overlapping range deletes (PR #7353 by @jrchatruc)5435233- levm: pass CALL-family arguments to the callee without copying them (PR #7402 by @ilitteri)e19d82c- l1: charge snap/2 peers for unavailable block access lists during catch-up (PR #7406 by @ilitteri)b44812c- l1: write the empty storage root for snap/2 accounts left with no slots (PR #7403 by @ilitteri)55ccbbd- l1: bump the multisync Lighthouse image for the Sepolia Gloas fork (PR #7409 by @ilitteri)336fd1c- levm: charge MODEXP gas before sizing its operands by the declared lengths (PR #7405 by @ilitteri)ede9f67- l2: generate the prover input for batches another build sealed (PR #7411 by @ilitteri)ffaec1a- l1: seed the hashers of every map keyed by contract- or block-chosen values (PR #7408 by @ilitteri)7042861- l1: bound what a peer's transaction announcements make us track (PR #7400 by @ilitteri)
⚡ Performance Improvements
eb357e6- l1,l2: skip state-history journal entries for layers that are already final (PR #7377 by @ManuelBilbao)