Reth v2.2.0
- Version
v2.2.0- Repository
- paradigmxyz/reth
Release notes
This release lays the groundwork for Amsterdam (EIP-7928 Block Access Lists), introducing a BAL store abstraction, P2P wire support for fetching BALs alongside full blocks, payload-builder integration, and parallel/batched BAL execution paths. It also enables Discv5 by default, adds snap/2 wire helpers, and bounds the memory footprint of the P2P transaction manager and network channels. Numerous performance improvements land in the trie, database, and re-execution paths, alongside a broad set of correctness fixes in the engine, RPC, networking, and CLI layers.
Action Required: Discv5 is now enabled by default (#23686). If you previously relied on Discv4-only behaviour, review your CLI/config flags. BAL parallel execution and storage prefetch are gated behind CLI flags and are off by default (#23764, #23770).
Backwards Compatibility
Important
In case you need to downgrade after running 2.2.x, please downgrade to v2.1.0.
Update Priority
This table provides priorities for which classes of users should update particular components.
User Class
Priority
Payload Builders
Medium
Non-Payload Builders
Medium
See Update Priorities for more information about this table.
Features
Engine & Payload
• Suppress persistence during payload building to reduce contention (#23618)
• Enabled BAL building in the Ethereum payload builder (#23597)
• New CLI flag to disable BAL storage prefetch (#23770)
• Added DecodedBal to ExecutionEnv (#23675)
P2P / Networking
• Discv5 is now enabled by default (#23686)
• Support binding Discv5 and Discv4 to the same port (#23613)
• Customizable discovery defaults (#23843)
• Memory-bounded channel between network and transaction manager (#23802)
• Bound memory footprint of P2P messages (#23718)
• Avoid RLP-decoding NewBlock payloads to save CPU (#23712)
• Added snap/2 wire helpers and messages (#23611)
• Optionally fetch BAL with full blocks over P2P (#23629)
• Added BAL requirement to block access list requests (#23682)
• Enforce BAL response soft limit (#23725)
• Added basic in-memory BAL store (#23710)
• Added BAL request e2e coverage (#23727)
• Scaffolded BAL store abstraction (#23596)
Performance
• Skip DB seek on exact overlay hits (#23559)
• Pass ExecutedBlocks to OverlayBuilder to reduce reverts queried (#23657)
• Prebind cursor operation metrics for hot DB paths (#23654)
• Avoid reopening .csoff on every changeset lookup (#23687)
• Spawn BAL hashed state before storage prefetch (#23761)
• Enable p256-aws-lc-rs feature in revm for faster P-256 (#23721)
• Configurable RocksDB block cache size and re-use of MDBX provider in re-execute (#23701)
• Platform-specific RUSTFLAGS in Dockerfile (#23738)
• Added BAL parallelization and batch I/O flags (#23663)
Storage / Database
• Detect and warn about ZFS filesystems (#23685)
• Replaced deprecated MDBX_NOTLS with MDBX_NOSTICKYTHREADS (#23378)
SDK
• Encapsulate state fetching in DB provider (#23656)
• Use overlay builders in historical state paths (#23667)
• Removed TrieNodeProvider (#23658)
• Unified opaque consensus error helpers (#23669)
• Let consensus impls control which errors are transient (#23668)
• Expose executor transaction result type (#23759)
• Return gas output from block builder (#23744)
• Verify reverts against changesets in re-execute (#23717)
Bug Fixes
Engine
• Apply finalized state after syncing FCU head import (#23838)
• Configure invalid header cache hit eviction (#23670)
• Properly handle selfdestructed storage slots in re-execute (#23832)
• Disable read tx timeout in re-execute (#23680)
• Track Amsterdam block gas in payload builders (#23743)
RPC
• Narrow eth_getLogs retry range (#23818)
• Include block numbers in BlockRangeExceedsHead error (#23720)
• Clean up eth state cache reorg entries (#23683)
Networking
• Apply count cap to BlockAccessLists request handler (#23754)
• Respect peer requirements for fetch followups (#23706)
• Retain active session buffer capacity (#23702)
•…