Reth v2.5.0
- Version
v2.5.0- Repository
- paradigmxyz/reth
Release notes
Reth v2.5.0 improves execution performance across the board. Release regression testing against v2.4.1 measured 5-10% lower mean block-processing latency, especially in long-tail workloads.
Performance
• Added an opt-in sender recovery cache shared across transaction paths, reducing mean mainnet block-processing latency by 3%. Enable it with --engine.sender-recovery-cache (#26494).
• Added an opt-in transaction-pool prewarming to pipeline transaction ingestion with block execution, reducing mean mainnet block-processing latency by 7%. Enable it with --engine.txpool-prewarming; it is enabled by default only in nightly Docker builds (#26378, #26493).
• Avoided proof-worker cursor overlays when the sparse trie already covers the required persisted state (#25952).
• Parallelized sparse-trie pruning retention-set construction and removed unnecessary LFU retention bookkeeping (#26439).
• Removed sparse-trie memory accounting from hot paths where repeated size estimation added unnecessary work (#26458).
• Kept five recent blocks in memory by default to reduce repeated state reconstruction (#26462).
• Centralized overlay anchoring to reduce duplicate Engine and persistence work (#26580).
Update Priority
User Class
Priority
Payload Builders
Medium
Non-Payload Builders
Medium
Breaking Changes
SDK and Storage APIs
• Reorganized storage-overlay APIs: renamed StateTrieOverlayManager to OverlayManager and moved it, OverlayBuilder, OverlayStateProvider, and OverlayStateProviderFactory to the new reth-storage-overlay crate. ChangesetCache is now internal rather than a public import (#26506, #26522, #26611).
• Changed PayloadValidator::validate_block_post_execution_with_hashed_state to take state updates by value and receive the resolved parent header. Custom validators overriding this method must update their signatures (#26398, #26420).
• Removed public changed-path tracking fields and methods from payload and sparse-trie APIs (#26403).
• Removed ConsistentDbView from reth-provider (#26581).
• Removed the reth-rpc-api-testing-util crate (#26393).
Features
Networking and P2P
• Added real snap/2 account-range, storage-range, and bytecode serving, including boundary proofs (#26339).
• Added support for discv5 ENR records in --bootnodes, --trusted-peers, and peers.trusted_nodes (#26448).
• Added bootnode configuration to reth.toml, with CLI configuration taking precedence (#26551).
• Added configurable no-op client-version handling for network connections (#26652).
• Added blob-cell availability tracking to the transaction pool (#25463).
RPC
• Added eth_getMultiProof to retrieve consolidated EIP-1186 proofs for multiple account and storage targets (#26555).
• Added debug_getRawBlockAccessList for retrieving the RLP-encoded EIP-7928 block access list (#26438).
• Reused a single EVM during block replay tracing, fixing downstream chains with block-scoped EVM state and avoiding redundant EVM construction (#26614).
• Added network-specific log response conversion for downstream chain implementations (#26491).
• Allowed execution-witness requests to use any BlockId (#26572).
• Made the testing RPC handler generic over node-specific types (#26547).
• Made IPC message decoding linear-time for large Engine API payloads instead of repeatedly scanning the entire buffered message (#26540).
Engine, Payload Building and Amsterdam
• Allowed payload construction on canonical ancestors at or above finality, while rejecting reorgs below the finalized block with -38006 (#26567).
• Added REST-SSZ blob-body witness containers and SSZ proxy support (#26328, #26335).
• Added configurable development finality depth (#26451).
• Exposed Engine thread resource-usage metrics (#26459).
CLI, ERA and Snapshots
• Added import-era --with-receipts to restore missing receipt static files from .era1 or .ere archives (#26436).
• Added reth download --print-plan-json for inspecting modular snapshot download plans without modifying the data…