Skip to content

v30.0.1

Latest

Choose a tag to compare

@github-actions github-actions released this 23 Oct 01:30
391a2cd

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

⚡ Performance Improvements

  • 042aabc - l2: stop re-sending the whole chain to reconnecting peers (commit by @ManuelBilbao)
  • eaa1018 - l2: commit trie layers by depth when importing peer blocks (commit by @JuArce)
  • a3d42c1 - l1: check secured trie paths while embedding the witness tries (PR #7436 by @jsign)