Skip to content

Releases: paradigmxyz/reth

Reth v2.5.2

Choose a tag to compare

@github-actions github-actions released this 02 Sep 11:32
v2.5.2
5a6940e

image

Maintenance Release

  • Recovers ExEx WALs with non-contiguous file IDs, preventing startup failures after finalization leaves gaps.
  • Allows networks with dynamically scheduled forks to update their advertised fork filter without restarting.
  • Improves RocksDB open-file limit handling and includes rejected block hashes in stage error logs.

Update Priority

User Class Priority
Payload Builders High
Non-Payload Builders High

Full Changelog: v2.5.1...v2.5.2

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.5.2-x86_64-unknown-linux-gnu.tar.gz PGP Signature
aarch64 reth-v2.5.2-aarch64-unknown-linux-gnu.tar.gz PGP Signature
aarch64 reth-v2.5.2-aarch64-apple-darwin.tar.gz PGP Signature
Docker paradigmxyz/reth -

Reth v2.5.1

Choose a tag to compare

@github-actions github-actions released this 20 Aug 12:18

Maintenance Release

  • Finalizes pending payload builds when resolved early, preserving accumulated work instead of discarding it.
  • Correctly handles whole-storage trie wipes during batched persistence.

Update Priority

If you are running on a low-core machine (<5 cores), the update is mandatory as it fixes a regression.

User Class Priority
Payload Builders Medium
Non-Payload Builders Medium

All Changes

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.5.1-x86_64-unknown-linux-gnu.tar.gz PGP Signature
aarch64 reth-v2.5.1-aarch64-unknown-linux-gnu.tar.gz PGP Signature
aarch64 reth-v2.5.1-aarch64-apple-darwin.tar.gz PGP Signature
Docker paradigmxyz/reth -

Reth v2.5.0

Choose a tag to compare

@github-actions github-actions released this 12 Aug 13:11

image

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 directory (#26480).
  • Added per-chunk snapshot paths so manifests can reference immutable tip archives (#26576).
  • Added customizable dev-mode defaults for downstream node implementations (#26488).
  • Allowed ExEx instances to catch up to the current chain head after being paused (#26474).

Trie, Storage and Partial Persistence

  • Added partial trie unwind support and a partial-persistence completion checkpoint (#26543, #26447).
  • Added split-frontier and trie-only block persistence support (#26521, #26535).
  • Added sparse-trie epoch pruning and pruning-duration metrics (#26485, #26470).
  • Exposed the payload state-root receiver for downstream integrations (#26431).

Bug Fixes

Security and Networking

  • Bound the devp2p Hello identity to the authenticated ECIES peer identity, preventing peers from presenting a different node ID after the encrypted handshake (#26639).
  • Rejected message IDs outside a negotiated subprotocol’s declared range (#26654).
  • Restored DNS discovery for long EIP-1459 records by correctly joining multi-string TXT responses (#26602).
  • Skipped unrelated TXT records during DNS discovery (#26603).
  • Kept ENR ports paired with the correct IPv4 or IPv6 address (#26529).
  • Advertised fork ENR data for custom-chain discv5 networks (#26449).
  • Recovered partial header responses and returned an empty response for unsupported GetNodeData requests (#26482, #26513).

Engine and Trie

  • Deferred destructive persistence handoff until active payload-building jobs release their overlay leases (#26559).
  • Prevented reused sparse-trie coverage anchors from moving backwards before persistence catches up (#26422).
  • Avoided marking unchanged empty storage tries as deleted (#26526).
  • Retained required sparse-trie branch children during pruning (#26376).
  • Supported partial persistence in the changeset cache and propagated proof-worker startup failures (#26612, #26545).

RPC and Txpool

  • Honored targetGasLimit in testing_buildBlockV1 (#26632).
  • Capped implicit eth_simulate gas limits and aligned debug trace error codes (#26502, #26479).
  • Stopped cancelled payload-body requests instead of continuing background work (#26546, #26569).
  • Allowed transaction senders whose account contains the canonical empty code hash, matching EIP-3607 semantics (#26644).
  • Included block numbers in pruned-history errors (#26550).

Pruning, Storage and Snapsho...

Read more

Reth v2.4.1

Choose a tag to compare

@github-actions github-actions released this 17 Jul 13:23

image

Latest Release

This patch release is for alloy dependency updates.

Update Priority

This table provides priorities for which classes of users should update particular components.

User Class Priority
Payload Builders High
Non-Payload Builders High

See Update Priorities for more information about this table.

All Changes

  • chore: remove release formatting noise
  • chore(deps): bump alloy core 1.6.1 (#26419)
  • chore: release 2.4.1

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.4.1-x86_64-unknown-linux-gnu.tar.gz PGP Signature
aarch64 reth-v2.4.1-aarch64-unknown-linux-gnu.tar.gz PGP Signature
aarch64 reth-v2.4.1-aarch64-apple-darwin.tar.gz PGP Signature
Docker paradigmxyz/reth -

Reth v2.4.0

Choose a tag to compare

@github-actions github-actions released this 14 Jul 13:37
943af24

image

Performance

Reth v2.4.0 reduces mean newPayload latency by 6.2% compared with v2.3.0.

Experimental revmc JIT EVM support is added and can be activated with --jit.enabled flag.

Networking and transaction propagation get a large set of throughput-oriented improvements: faster pooled transaction recovery (#26304), cached full transaction propagation encoding (#26012), and multiple ECIES / P2PStream allocation reductions.

Features

We continue with Amsterdam and EIP-7928 Block Access List development.

reth p2p bootnode --v5 now co-locates discv4 and discv5 on a single UDP port (--addr), matching go-ethereum and reth's own networking stack, with IPv4/IPv6 support (#26089)

RPC compatibility was improved with eth_sendRawTransactionSync timeout support, geth-aligned raw transaction handling, empty-proof normalization for eth_getProof, and several eth_simulate, eth_estimateGas, fee-history, and txpool fixes.

ParallelStateRoot deprecation

SDK/library users that depend on trie internals should update usages of ParallelStateRoot, ParallelSparseTrie, and ParallelStateRootError that were removed in this version.

Deployments still passing --engine.legacy-state-root should remove it or use --engine.state-root-fallback if they intentionally need synchronous state-root computation.

Update Priority

This table provides priorities for which classes of users should update particular components.

User Class Priority
Payload Builders High
Non-Payload Builders High

Breaking Changes

Runtime / Configuration

  • Dropped the legacy parallel state-root runtime path; --engine.legacy-state-root is hidden and now only warns if passed, with the sparse trie task as the normal path and serial fallback retained (#26069).

SDK / State Root APIs

  • Refactored state-root strategy APIs to support custom out-of-tree state-root implementations (#26085).
  • Removed ParallelStateRoot; downstream users should migrate to the sparse trie task or the serial fallback path (#26121).
  • Renamed ParallelStateRootError to StateRootTaskError (#26132).
  • Removed ParallelSparseTrie; ArenaParallelSparseTrie is now the default sparse trie implementation used by engine sparse-trie paths (#25453).
  • Changed PayloadValidator::validate_block_post_execution_with_hashed_state to receive a lazy overlay-aware parent-state provider and return PostExecutionValidationError; custom implementations overriding this method must update their signatures (#26330).

Features

Performance

  • Added experimental revmc JIT support for Ethereum EVM execution, including --jit node flags and reth_jit debug controls (#23230).
  • Made JIT opt-in for library crates and fixed JIT CLI/helper handling (#25178, #25183, #25413).
  • Reduced transaction conversion latency by emitting recovered transactions in ordered windows instead of waiting on a large Rayon ordered iterator (#25783).
  • Avoided full block clones in FCU, RPC cache, and ExEx paths by storing and exposing Arc<RecoveredBlock> handles in Chain (#25645, #25647).
  • Optimized state-root and storage-history work with better update_leaves parallelism, parallel write_storage_history, and more aggressive sparse trie caching. (#24774, #25282, #25428).
  • Reduced BAL execution overhead by using unordered transaction iteration for BALs, buffering BAL execution cache metrics, and avoiding unnecessary hashed-account reads (#25411, #25366, #25369).
  • Offloaded metric rendering and added worker queue / provider metric improvements (#26180, #25649, #25481).
  • Routed raw transaction submission through PoolTransaction::recover_raw_transaction, allowing custom pool transaction types to recover directly from encoded bytes (#25238).

Networking & P2P

  • Added snap/2 support across negotiation, dedicated eth + snap/2 streams, SnapClient BAL APIs, snap message helpers, the snap client, and inbound snap/2 request routing (#25774, #25752, #25607, #25608, #26049, #26324).
  • Improved bootnode reachability by supporting NAT advertisement and dual-stack discv5 addresses, then running discv4 and discv5 on the same UDP port (#25757, #26089).
  • Optimized transaction propagation and devp2p decoding with cached full transaction encodings, lower allocation transaction list decodes, preallocated pooled hash metadata, and same-poll pending transaction propagation (#26012, #26164, #26145, #25087).
  • Reduced ECIES and P2PStream overhead by caching AES key schedules, reusing snappy buffers, batching flushes, raising the write flush boundary, and avoiding redundant zero-fill/copy work (#26346, #26347, #26349, #26348, #26120, #26119).

RPC

  • Added eth_sendRawTransactionSync timeout support matching EIP-7966-style timeout behavior (#25682).
  • Added engine_hasBlobs so consensus clients can check ordered blob availability without fetching blob/proof payloads (#25589).
  • Added debug_clearTxpool for geth-compatible testing and debugging workflows (#25588).
  • Added admin_banPeer and admin_unbanPeer methods (#25140).
  • Added the EthSubscriptions trait for logs and header streams (#22155).
  • Added testing RPC helpers for committing and building blocks (#25070, #25750).

Engine, Payload & Amsterdam

  • Added SSZ Engine API payload and forkchoice status containers, plus SSZ proxy wiring (#26133, #26271, #25422).
  • Validated Block Access Lists during flashbots_validateBuilderSubmissionV6 and stored validated payload BALs (#24297, #25268).
  • Added BAL-capable download client requirements (#25266).

CLI, ERA & Snapshots

  • Added ERE export and extended ERE import through stage sync (#25304, #25262).
  • Improved .era import handling by supporting ERA file imports, decoding execution blocks from consensus .era blocks, avoiding misreading consensus .era as era1, and accepting local filename variants (#25404, #25582, #25603, #26006).
  • Added import-era support for ERE .erae files and explicitly rejected unsupported .era export paths (#25122, #25576).
  • Supported file archives in modular snapshots and exposed SlotPreimages for snapshot importers (#26078, #25035).
  • Allowed overriding TraceArgs defaults and added node command helpers (#25736, #25273).

Pruning & Storage

  • Added row-budgeted dupsort pruning and used static-file transa...
Read more

Reth v2.3.0

Choose a tag to compare

@github-actions github-actions released this 10 Jun 11:24
9384bc5

image

Reth v2.3.0 includes several payload, engine, trie, and transaction-pool performance improvements, including parallel execution work, BAL prewarming, faster proof and trie paths, cheaper transaction-pool insertion, and reduced payload-building overhead. In our benchmark, throughput improved from ~1.4 to ~1.5 Ggas/s, an 8.1% increase.

It also fixes important correctness issues in eth_simulate, proof deserialization, chain-state overlay handling, RLPx buffering, BAL validation, and RocksDB/MDBX handling.

This release continues the Amsterdam / Block Access List rollout with expanded BAL validation, storage, networking, RPC, and payload-builder support. It also adds SSZ proxy coverage for Engine API methods, ERE file support, eth_pendingTransactions, debug account-state RPC endpoints, eth_baseFee, and snapshot overwrite support for reth download --force.

Action Required: SDK users with custom payload, transaction pool, or consensus integrations should review the breaking changes below. Node operators using default configurations do not need migration steps.

Backwards Compatibility

Important

In case you need to downgrade after running 2.3.x, please downgrade to v2.2.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.

Dependencies

Compatible versions:

revm: 40.0.3
alloy-*: 2.0.5
alloy core crates: 1.6.0
alloy-evm: 0.36.0
revm-inspectors: 0.40.1

Breaking Changes

SDK

  • Custom built payload types now convert directly into execution data, avoiding reconstruction from sealed blocks during local payload submission (#23928).
  • EthBuiltPayload now stores the recovered block instead of a sealed-only block, keeping recovered sender data available to downstream payload users (#24403).
  • TransactionPool::mark_invalid now takes an owned InvalidPoolTransactionError instead of a reference, allowing invalid transaction errors to cross thread boundaries cleanly (#24121).
  • Consensus opaque error handling uses a single Other(Arc<dyn Error + Send + Sync>) path with constructor and downcast helpers (#23669).
  • State hooks are now configured at the State<DB> level, ensuring everything committed to the database is propagated to the hook (#24654).
  • In-memory state trie overlay ownership moved into reth-chain-state behind StateTrieOverlayManager; provider/tree wiring resolves managed overlays instead of carrying lazy overlay handles through engine state (#24184).

RPC

  • Removed stale geth-style debug_ profiling endpoints that only returned no-op responses, along with the unimplemented debug_executePayload trait surface (#24284).

Features

Engine & Payload

  • Expanded Block Access List support across payload building, reorg head creation, payload bodies, payload ranges, and block RLP payloads (#24128, #24147, #24153, #24177).
  • Added SSZ proxy support for Engine API capabilities, identity, forkchoiceUpdated, and blob methods (#23936, #24887, #24906).
  • Passed execution data directly through the debug consensus client provider path and added block access list payload conversion for RPC-backed debug providers (#23969, #23989).
  • Added target gas limit payload attributes and cached parent block info for payload jobs (#24502, #24671).
  • Made payload-builder state pre-caching from canonical notifications optional via BasicPayloadJobGeneratorConfig, enabled by default (#24670).

RPC

  • Added eth_pendingTransactions, eth_baseFee, debug account-state endpoints, and builder submission v6 validation (#24286, #24050, #24296, #24170).
  • Added eth_simulate state-root support and improved BAL handling in RPC state caching (#24564, #24037, #24079).
  • Made eth_getProof compatible with geth-style zero hashes for non-existent accounts (#24360).
  • Added support for Eth capabilities per execution-apis#755 (#24298).

P2P & Networking

  • Added eth/72, cell request/response handling, shared cell custody, and optional BAL fetching for block ranges (#24012, #24041, #24129, #24364, #23779).
  • Added outbound peer rotation to avoid slot saturation (#24776).
  • Added TransactionPool::retain_contains as the inverse of retain_unknown, retaining only hashes already present in the pool (#24482).

Storage, CLI & Tooling

Performance

  • Added parallel execution support and BAL prewarming improvements (#23924, #25003).
  • Improved trie, proof, cursor, and state-root hot paths (#24301, #24354, #24432, #24442).
  • Reduced transaction-pool overhead with specialized same-origin batch insertion and preallocated propagation/reorg structures (#25037, #24554, #24555).

Bug Fixes

RPC, Trie & Simulation

  • Accepted B256::ZERO as a non-existent-account marker when deserializing EIP-1186 proofs from geth-compatible sources (#24359).
  • Fixed eth_simulate gas defaults, fee defaults, block hash exposure, fork handling, precompile self-moves, blocking IO guards, maxUsedGas reporting, and parent beacon block root handling (#24386, #24387, #24388, #24503, #24567, #24705, #24724, #23983, #24652).

Engine, Chain State & Networking

  • Fixed chain-state overlay cache deadlock and deferred trie data publication (#24875, #24995).
  • Fixed BAL validation, persistence, gas admission, and payload range behavior (#24107, #24122, #24084, #24087).
  • Bounded RLPx mux outbound buffering fairly and fixed several peer/BAL request validation path...
Read more

Reth v2.2.0

Choose a tag to compare

@github-actions github-actions released this 30 Apr 08:06
88505c7

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](https://github.com/paradigmxyz/reth/releases/download/v2.2.0/reth-v2.2.0-x86_64-apple-darw...
Read more

Reth v2.1.0

Choose a tag to compare

@github-actions github-actions released this 20 Apr 16:01
d58c6e3

image

Important

alloy-evm bump fixes an issue where gas refunds issued by custom precompiles were not accounted for. If your network was setting gas_refunded field to a non-zero value for any precompile, its behaviour might change.

Storage v2 Migration

This release includes a reth db migrate-v2 command that can be used to migrate from Storage v1 to Storage v2 without a full resync. For Ethereum Mainnet, Reth team provides new snapshots, other chains based on Reth SDK can use the new CLI for migrating to new storage format.

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.

Breaking Changes

SDK

  • Bumped revm to v38 with EIP-8037 state gas support (#23191)
  • Bumped alloy to 2.0.0 (#23407)
  • Decoupled CachedStateMetrics from SavedCache (#23552)
  • WorkerPool is now lazy by default (#23627)
  • Support modifying next_available_nonce_for (#23409)

Dependencies

Compatible versions:

revm: 38.0.0
alloy-*: 2.0.0
alloy-evm: 0.33.0
revm-inspectors: 0.39.0

Highlights

Bug Fixes

  • Use sync=true for RocksDB WriteOptions to prevent database corruption on ungraceful shutdown. (#23603)

Performance

  • Parallel segmented snapshot downloads (#23028)

Storage

  • Added reth db migrate-v2 for v1→v2 storage migration (#23422)

RPC

  • Support transactionReceipts subscription in eth_subscribe #23485

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.1.0-x86_64-unknown-linux-gnu.tar.gz PGP Signature
aarch64 reth-v2.1.0-aarch64-unknown-linux-gnu.tar.gz PGP Signature
x86_64 reth-v2.1.0-x86_64-apple-darwin.tar.gz PGP Signature
aarch64 reth-v2.1.0-aarch64-apple-darwin.tar.gz PGP Signature
Docker paradigmxyz/reth -

Full Changelog: v2.0.0...v2.1.0

Reth v2.0.0

Choose a tag to compare

@github-actions github-actions released this 08 Apr 16:53
eb4c15e

Dark (Banner)

Read our Blog Post

Reth 2.0 is a major release that makes Storage V2 the default for all new nodes, introduces the SparseTrieCacheTask for dramatically faster state root computation, and delivers across-the-board performance improvements to the engine, RPC, and P2P layers. This release also removes the deprecated reth-primitives crate and removes RocksDB feature gates (RocksDB is now always available).

Storage v2

Storage v2 is now the default for new nodes (#22890). Existing storage v1 nodes are unaffected and will continue to work.

For v2 snapshots, check out our renovated portal https://snapshots.reth.rs/.

We recommend downloading the snapshots with the --resumable flag, this will be enabled by default in the next release.

Note

Support for storage v1 nodes will be removed in a future version. An exact deprecation date will be communicated separately, all users are strongly encouraged to switch to storage v2.

Important

If you rely on out-of-process database access concurrently with a running reth node (e.g. out of process block builders), with storage v2 holding a long read transaction might result in persistence stall if a reorg happens at the same time. In combination with engine backpressure this might cause the node to stall if the external reader holds the read transaction for too long.

Backwards Compatibility

  • If you start a new node with storage v2, you will not be able to use it with storage v1, and vice versa.
  • Reth 2.0 includes engine backpressure. This is a safeguard that prevents unbounded growth of in-memory blocks buffer in cases when persistence is not able to keep up with the chain. When the gap between canonical tip and the last persisted block exceeds --engine.persistence-backpressure-threshold (default: 16), no new payloads are executed until persistence advances. For SDK users, TreeConfig::with_persistence_backpressure_threshold provides the same functionality.
  • reth-primitives-traits crate was moved to a separate reth-core repo, along with other supporting crates. We kept the re-exports, so it should not affect the code that uses Reth as a library. If you depend on reth-primitives-traits directly, you need to switch to crates.io.
  • ExEx WAL encoding was changed from bincode to RLP for block serialization.

Dependencies

Compatible versions:

revm: 36.0.0
alloy-*: 1.8.2
alloy-evm: 0.30.0
revm-inspectors: 0.36.0

Update Priority

This table provides priorities for which classes of users should update particular components.

User Class Priority
Payload Builders High
Non-Payload Builders High

See Update Priorities for more information about this table.

Breaking Changes

SDK

  • Removed deprecated reth-primitives crate — use reth-ethereum-primitives instead (#23220)
  • Removed SerdeBincodeCompat trait, use RLP for block serialization (#23158)
  • Removed PayloadBuilderAttributes (#23202)
  • Removed TaskSpawner trait in favor of concrete Runtime (#22052)
  • Removed reth-engine-service crate (#22187)
  • Removed IntoRpcTx — integrated reth-rpc-traits directly (#23288)
  • Removed legacy proof code paths, simplified to V2-only (#22270)
  • Removed changeset count APIs from storage (#23310)
  • Replaced TryFrom*Response traits with unified RpcResponseConverter (#22320)
  • Replaced reth-primitives-traits with reth-core deps (#23186, #23210)
  • Used EthereumReceipt from alloy (#22254)
  • Removed OP features from engine-local and payload-primitives (#23255, #23253)

Storage

  • Storage V2 is the default for new nodes (#22890)
  • Slot preimage DB for plain changeset keys in V2 (#22379)

Features

Performance

  • SparseTrieCachTask: New background state root task which persists the trie across blocks (#21583)
  • ArenaParallelSparseTrie: Arena-based parallel sparse trie implementation (#22381)
  • Proof V2: Ground-up rewrite of merkle proof calculation used to populate data in the sparse trie. Supports partial proofs and cursor re-use (#19863, #20336)
  • Engine backpressure: persistence-aware backpressure for pipeline throughput (#23280, #23308)
  • Shared execution cache and sparse trie pipeline with payload builder (#23242, #23246)
  • Jemalloc override_allocator_on_supported_platforms enabled (#23214)
  • Adaptive multiproof chunk size based on block gas usage (#22233)
  • Rayon par_iter for tx prewarming with dedicated pool (#22521, #22108)
  • Lock-free for_each_ordered replaces channel+BTreeMap reorder (#22144)
  • Precompute tx root during payload validation (#22489)
  • Overlap block conversion with execution in payload validation (#21957)
  • Concurrent block+receipt fetching in eth_feeHistory (#22826)
  • Reduced redundant DB lookups for receipts (#22724)
  • Pool read-only MDBX transaction handles to avoid reader table mutex (#22631)
  • Size-based backpressure for session broadcast messages (#22849)
  • Increased default concurrent outbound dials to 30 (#22744)
  • Thread priority boosting for engine and sparse trie threads (#22541)
  • StoredNibblesSubKey packed from 65→33 bytes (#22158)
  • FastInstant (quanta) for metrics timing (#23265, #22211)

RPC

  • debug_intermediateRoots (#22754)
  • debug_traceBadBlock (#22719)
  • debug_verbosity / debug_vmodule (#21497)
  • eth_getStorageValues batch storage slot retrieval (#22186)
  • reth_getBlockExecutionOutcome (#22397)
  • reth_forkchoiceUpdated (#22536)
  • reth_newPayload accepts RLP-encoded blocks (#22533)
  • block_access_list_raw RPC (#23363)
  • BAL RPC methods (#23330)
  • Configurable minimum pruning distance (#23082)
  • CLI args exposed as Prometheus metric (#22896)

CLI

  • New reth-bb binary for multi-segment big block execution (#23140)
  • Modular snapshot downloads with interactive TUI and config generation (#22246)
  • reth db prune-checkpoints and reth db stage-checkpoints commands (#22288, #22579)
  • --storage.v2 works without explicit true/false (#23173)
  • --with-senders and --with-rocksdb niche presets (#22933)
  • Snapshots API at snapshots.reth.rs with --list and --channel flags (#22859)
  • File logging disabled by default for non-node commands (#21521)
  • Storage V2 support in db state --block historical queries (#22670)

P2P

  • ReceiptsClient trait and p2p receipt downloading (#22607)
  • Richer peer metadata persisted to peers file (#22557)
  • Dis...
Read more

Reth v1.11.3

Choose a tag to compare

@github-actions github-actions released this 12 Mar 13:32

image

Latest Release

Important

This release replaces v1.11.x, and users must upgrade to v1.11.3

  • fix(trie): panic in sparse trie proof workers

Update Steps

Nodes can be restarted using the new binary with no required update steps. Errors during payload validation may continue to be seen, but will not stall the node.

To fully fix errors such as those described in issue 22973, shut down the node and run:

reth db --datadir <datadir> repair-trie

This command will take up to 2 hours to complete for ethereum mainnet. Once complete, start reth node as normal.

Update Priority

This table provides priorities for which classes of users should update particular components.

User Class Priority
Payload Builders High
Non-Payload Builders High

All Changes

  • chore: release 1.11.3
  • fix(trie): Reset proof v2 calculator on error (#22781)
  • cherry-pick: fix don't produce both updates and removals for trie nodes (#22507)
  • cherry-pick: install rayon panic handler (37f5b3a)

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-v1.11.3-x86_64-unknown-linux-gnu.tar.gz PGP Signature
aarch64 reth-v1.11.3-aarch64-unknown-linux-gnu.tar.gz PGP Signature
x86_64 reth-v1.11.3-x86_64-apple-darwin.tar.gz PGP Signature
aarch64 reth-v1.11.3-aarch64-apple-darwin.tar.gz PGP Signature
Docker paradigmxyz/reth -