Repository navigation
Important
Hoodi operators running v30.0.0 must upgrade to this release before 2026-10-26 17:42:48 UTC. v30.0.0 schedules the Glamsterdam fork on Hoodi for that time, but the All Core Devs Execution call unscheduled it on 2026-10-22. A node still on v30.0.0 would activate the fork alone and split off from the rest of Hoodi. This also applies to the v30.0.0 release candidates. L2 operators running a sequencer or follower node should upgrade too.
Warning
The stateless-validator guests move to ERE v0.19.5 (SP1 v6.9.0, ZisK v1.3.2-alpha), and the ZisK guest's verification key changes. Anyone who verifies ethrex's stateless-validator proofs, such as zkEVM integrations, must move to this release's keys together. Node operators who do not use the stateless validator are unaffected.
Note
What's new
- Hoodi: Glamsterdam is no longer scheduled on Hoodi, matching the other clients. Mainnet and Sepolia are unchanged.
- L2 followers keep syncing after a restart: when the sequencer or the follower restarted while the follower's head was past the last sealed batch, the follower stopped importing blocks and only wiping its data recovered it. It now resumes from its own head.
- No L2 import deadlock with several connections: a node holding more than one connection to the sequencer could stall mid-sync, with RPC and logging frozen. Blocks are now imported in order by one importer per node.
- Faster L2 catch-up: the sequencer sends a reconnecting peer only the blocks it is missing and up to 16 batches at a time, and followers no longer commit trie layers to disk after every imported block, which removes the disk-flush bottleneck while catching up.
- Stateless validation: witnesses with trie paths that do not end at the hashed key length are rejected, and zero-amount withdrawals read their recipient, as the specification requires. The check runs while the witness tries are rebuilt, so it adds little proving cost.
- Block building: withdrawals are applied before the request system calls, the order the specification and block import already use. Only chains with custom request predeploy code were affected; mainnet and public testnets were not.
- Networking: node records are encoded without base64 padding, so clients with strict parsers can bootstrap from an ethrex node.
Mainnet and Sepolia operators who don't run an L2 or the stateless validator can stay on v30.0.0. No resync is needed.
Installation and running instructions can be found in our docs
✨ New Features
🐛 Bug Fixes
077b83a- l1: seed the hashers of every map keyed by contract- or block-chosen values (PR #7408 by @ilitteri)b497c94- l1: bound what a peer's transaction announcements make us track (PR #7400 by @ilitteri)d002164- l1: encode ENR text form without base64 padding (PR #7433 by @barnabasbusa)00867cd- l2: resume block import on a new peer connection (commit by @ManuelBilbao)54c3e7c- l2: import peer blocks through a single node-wide importer (commit by @ManuelBilbao)0393eb8- l1: bump zkevm tests to v21.0.6 and reject the two incomplete witnesses it catches (PR #7438 by @ilitteri)f2602cd- l1: unschedule Amsterdam on Hoodi (commit by @MegaRedHand)27d6b1b- l1: apply withdrawals before the request system calls when building payloads (PR #7437 by @jsign)