Reth v2.6.0

Release

Version
v2.6.0
Repository
paradigmxyz/reth

Release notes

Reth v2.6.0 expands Amsterdam and Hegotá protocol support, installs the REST-SSZ Engine API by default, advances EIP-8189 snap-sync infrastructure, and moves partial persistence further into production paths.

The release also improves performance across block processing, historical-state RPC, pruning, transaction-pool updates, and peer discovery. On a 300M-gas BAL workload, storage-trie job parallelism reduced mean newPayload latency by 8.6% and state-root wait time by 39%.

Action Required

Operators with explicit engine persistence thresholds should review their configuration. The defaults are now 50 persisted blocks, 30 state-masking blocks, and 100 blocks of backpressure. A nonzero masking window must satisfy num-state-masking-blocks + memory-block-buffer-target < persistence-threshold (#27220).

• Set --engine.num-state-masking-blocks 0 to disable state masking (partial persistence).

• Set --engine.persistence-threshold 0 to preserve immediate persistence and disable state masking (partial persistence).

Operators which read the Reth database out-of-process should disable partial persistence by setting --engine.num-state-masking-blocks 0.

Update Priority

User Class

Priority

Payload Builders

Low

Non-Payload Builders

Low

Breaking Changes

Runtime and Configuration

• Raised the default persistence threshold from 7 to 50 blocks, enabled 30 blocks of state masking by default, and raised the backpressure threshold from 16 to 100 blocks. Partial persistence is now compiled unconditionally (#26800, #27220).

• Installed REST-SSZ routes on the authenticated Engine API server by default. Custom Engine API implementations must implement EngineSszApi (#26254).

SDK and RPC APIs

• Changed EthApiInner::new to accept a single EthApiSettings value instead of individual settings arguments. Custom RPC builders must update construction; existing builder setters and defaults remain available (#27251, #27268).

• Added the required in_memory_size cache field to the public EthPooledTransaction struct. Downstream users constructing it with struct literals must initialize the field; constructor users are unaffected (#27061).

• Replaced the layered transaction-announcement wrapper types with ordered TransactionAnnouncement, AnnouncedTransaction, and TransactionMetadata types. Downstream networking users of the previous public internals must migrate (#27021).

• Made eth_getMultiProof always return V2 proofs, including child branch nodes after extensions. The RPC method keeps its existing two-argument signature (#26851).

Features

Performance

• Ran storage-trie updates inside checked-out jobs, reducing mean newPayload latency and state-root wait time (#27156).

• Added opt-in caching and prewarming of RPC-computed BALs with --rpc-cache.cache-computed-bals and --rpc-cache.prewarm-bals[=BLOCKS]. (#24097).

• Reused RocksDB snapshots and iterators for historical-state lookups, reducing mean trace RPC latency, and CPU per request while increasing throughput (#27210).

• Skipped history shards that pruning cannot affect, improving mean pruning time (#26900).

• Limited transaction-pool fee updates to changed senders when possible, reducing a 0.25% sender update from 93 µs to 0.9 µs in a saturated-pool benchmark (#26956).

• Removed the one-second startup wait for discv5 boot-node ENR requests by moving them into the background (#26929).

• Reduced RPC memory and CPU overhead by windowing eth_getLogs scans, bloom-filtering log paths, lazily converting trace_get results, and sharing fee-history entries (#26946, #27000, #27031, #26942).

Partial Persistence

Reth now enables partial persistence by default. In this mode state/trie database keys are not updated in the database if later blocks contain updates to those same keys. Those later blocks are referred to as "state masking" blocks.

The new behavior, given default persistence parameters, is:

• --engine.persistence-threshold 50: Persistence is triggered once there are 50 blocks…

Full release on GitHub ↗

Release Polkadot SDK

Polkadot stable2606-3

This release contains the changes from polkadot-stable2606-2 to polkadot-stable2606-3. ℹ️ Please note: this is a patch release for the latest stable version stable2606. If your nodes...

Release Agave (Solana validator)

Agave (Solana validator) Release v4.5.0-alpha.2

This is a pre-release for testing only. Do not deploy to mainnet, testnet, or any production host. https://github.com/anza-xyz/agave/blob/master/CHANGELOG.md#edge-channel What's...

Release Hardhat

Hardhat v3.19.0

This release expands our support for the upcoming Amsterdam hardfork, including: EIP-7976, EIP-7981, EIP-7997, EIP-8024 and EIP-8037. In particular, EIP-8037's separation of execution...

Release Geth

Geth Protein Sludge Pack (v1.17.8)

This is a security-focused release, fixing several DoS risk issues ❤️‍🩹 . Note most of the the fixes related to bugs which only become possible after the activation of the Amsterdam...