github paradigmxyz/reth v2.2.0
Reth v2.2.0

latest release: v1.11.4
7 hours ago

image

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)
  • Track unknown tx types in announcement metrics (#23688)
  • Use a Weak reference in Discv5 kbuckets background task to release the port on shutdown (#23282)

Trie & Storage

  • Account for heap-allocated blinded hashes in SparseNode::memory_size (#23726)
  • reth db migrate-v2 works for pruned nodes (#23716)
  • Skip move_to_static_files for storage.v2 (#23814)
  • Move unix deps section after strum in Cargo.toml (#23697)

CLI

  • Avoid u64 underflow in setup_without_evm for the genesis-block header (#23728)
  • Preserve trusted_nodes_only from config when --trusted-only is not set (#23703)
  • Use node types in execution stage dump (#23705)
  • Use TxTy and ReceiptTy for static-file db get (#23692)

Era / Export

  • Align ERA1 export with spec (#23693)

Dependencies

Compatible versions:

  • revm: 38.0.0
  • alloy-*: 2.0.4
  • alloy-evm: 0.34.0
  • revm-inspectors: 0.39.0

Notable bumps:

  • Bump alloy crates to 2.0.4 (#23828)
  • Bump alloy-evm to 0.33.3 (#23778)
  • Bump alloy crates to 2.0.1 (#23677)
  • Bump rustls-webpki (#23681)

Binaries

See pre-built binaries documentation.

The binaries are signed with the PGP key: 50FB 7CC5 5B2E 8AFA 59FE 03B7 AA5E D56A 7FBF 253E

Reth

System Architecture Binary PGP Signature
x86_64 reth-v2.2.0-x86_64-unknown-linux-gnu.tar.gz PGP Signature
aarch64 reth-v2.2.0-aarch64-unknown-linux-gnu.tar.gz PGP Signature
x86_64 reth-v2.2.0-x86_64-apple-darwin.tar.gz PGP Signature
aarch64 reth-v2.2.0-aarch64-apple-darwin.tar.gz PGP Signature
Docker paradigmxyz/reth -

Full Changelog: v2.1.0...v2.2.0

Don't miss a new reth release

NewReleases is sending notifications on new releases.