github paradigmxyz/reth v1.3.0
Reth v1.3.0

latest release: v1.3.1
one day ago

image

Summary

Pectra

This release contains fixes for all known pectra issues.

Performance

This release enables the new State Root Task for OP-Reth users by default.

It significantly improves the average engine_newPayload call latencies for Base Mainnet, and helps to alleviate the spikes caused by certain transactions that use a lot of storage (for example XEN contracts).

image

For more technical details on how the new design works, see https://github.com/paradigmxyz/reth/blob/main/crates/engine/tree/docs/root.md.

OP Stack

This release contains preparations for the upcoming Isthmus hardfork:

Reth SDK

In 1.3.0 #[cfg(feature = “optimism”)] feature flags on primitives types were removed. Most OP stack crates still required an optimism feature to be compiled, and were incompatible with ethereum crates that depended on revm because revm also used feature flags to support the OP stack. These are now removed in revm 20.0.0 .

This release includes the transition to the new revm API and introduced a new abstraction layer for interacting with EVM in alloy-evm for both ethereum and the OP stack. alloy-evm is no-std compatible and fully built on top of alloy and revm types. It contains all implementations that are required to execute a block, e.g. BlockExecutor with support for all system transactions (EIP-2935, EIP-4788, EIP-7002, EIP-7251).

alloy-evm is intended to be zk friendly and should provide the ethereum and OP stack STF out of the box. This is only the initial rollout, more incremental changes and additional features are expected.

This release fully transitioned to revm 20.0.0 and uses alloy-evm.

Developers that currently work with a modified EVM implementation can take a look at the custom evm/precompiles example . Users are encouraged to report limitations and suggestions for documentation.

EVM API

With this release, ConfigureEvmEnv and BlockExecutionStrategyFactory traits are merged into a single ConfigureEvm trait which provides access to both EVM and BlockExecutor (previously BlockExecutionStrategy). For detailed overview of the abstraction, see ConfigureEvm docs.

Block builders are also encouraged to migrate to the new BlockBuilder API that is available on the ConfigureEvm trait. With 1.3.0 release, ConfigureEvm stores a BlockAssember that defines how a block header should be built. BlockBuilder can be used by payload builders to reduce their responsibilities to only choosing transactions to apply in the block.

This approach has been applied to both Ethereum and Optimism payload builders which can be used as a reference.

Compatible alloy-* version with this release is 0.12.5

Components

  • Simplified Payload builder setup: #14700

Upcoming features

Upcoming releases will focus on unifying the remaining transaction types between reth and alloy #14961 in addition to improved ergonomics

Ress

This release contains native support for ress RLPx subprotocol for stateless nodes. The subprotocol is disabled by default and can be enabled by passing --ress.enable CLI argument. See protocol documentation for more info: https://github.com/paradigmxyz/reth/tree/main/crates/ress/protocol

Update Priority

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

User Class Priority
Payload Builders low
Non-Payload Builders low
Tesnet operators high

See Update Priorities for more information about this table.

All Changes

  • fix: use clang v10 (#15000)
  • chore: add workflow for building binaries (#14999)
  • Revert "meta: downgrade ubuntu for windows" (#14998)
  • deps: downgrade cc to 1.2.15 (#14996)
  • meta: downgrade ubuntu for windows (#14995)
  • meta: bump ubuntu for release (#14994)
  • meta: bump rust version for reproducible build (#14991)
  • meta: install cross from main for release (#14992)
  • Chore: move tree config from engine-tree to engine-primitives (#14890)
  • chore: bump version 1.3.0 (#14986)
  • chore: blanket implementation for OpPooledTx (#14990)
  • chore: bump revm (#14988)
  • docs(ress): fix witness format (#14984)
  • chore: add ress code owner (#14985)
  • chore: bump alloy-trie (#14983)
  • use cross main in docker-git and docker instead of taiki-e action (#14978)
  • Bump vergen to 9.0 #14904 (#14940)
  • feat(optimism): enable state root task by default (#14977)
  • chore: bump alloy 0.12.5 (#14976)
  • feat: integrate ress (#14959)
  • chore: add From<BlockExecutionError> for PayloadBuilderError (#14973)
  • chore: rm reth-prmitives from ethereum crates (#14972)
  • chore: rm reth-prmitives from stages (#14970)
  • chore: rm reth-prmitives from e2eutils (#14971)
  • chore: add sparse trie logs with time elapsed (#14967)
  • chore: remove reth-primitives dep db crates (#14968)
  • chore: rm reth-prmitives from rpc compat (#14965)
  • chore: rm reth-prmitives from rpc builder (#14966)
  • chore: bump revm (#14954)
  • Update metrics.md (#14813)
  • chore: rm reth-prmitives from rpc (#14957)
  • chore: remove reth-primitives dep from eth api (#14958)
  • chore: Use cargo-chef to build the hivetests docker image (#14884)
  • chore: reorder trait impl fns (#14956)
  • fix: call validate_execution_requests from validate_version_specific_fields for ethereum engine validator (#14932)
  • test: complete mine block test in e2e testsuite (#14849)
  • chore: feature propagation (#14951)
  • chore: bump revm (#14947)
  • fix(docker-nightly) use cross main (#14948)
  • chore: remove commented SparseTrieEvent (#14946)
  • ci: allow unmaintained humantime (#14950)
  • chore(SessionManager): send message without &mut self requirement (#14949)
  • chore: rm rpc conversion types (#14942)
  • chore: bump alloy-chains (#14944)
  • chore: use B256 Display for state root test assertion (#14943)
  • Parse L1 block values in Interop fork (#14869)
  • chore: enable revm portable by default for op-reth (#14937)
  • chore: simplify rpc tx conversion (#14736)
  • Add other variant on Block import err (#14938)
  • chore: simplify NodePrimitives bounds (#14936)
  • feat(ress): limit active connections (#14928)
  • add nightly builds (#14934)
  • chore: enable revm portable feature by default for binaries (#14931)
  • fix: exex head ahead of host (#14001)
  • feat: implement compact for alloy ethereum transaction (#14908)
  • feat/emit better payload events (#14923)
  • fix: disable not only if requested (#14927)
  • feat(op, txpool): introduce OpPooledTx trait (#14926)
  • fix: clear tree state on unwind (#14866)
  • feat: add bincode support to opreceipt (#14872)
  • chore: remove reth-primitives dep from commands (#14919)
  • chore: remove reth-primitives dep from chain-state (#14914)
  • refactor: unify EVM traits (#14920)
  • feat: implement InMemorySize for TxEnvelope and OpTxEnvelope #14913 (#14922)
  • chore: remove reth-primitives dep from op rpc (#14915)
  • chore: bump alloy-evm (#14917)
  • chore: remove reth-primitives dep from consensus-common (#14912)
  • chore: remove reth-primitives dep from evm (#14911)
  • chore: Add 0x prefix and use macro if possible (#14907)
  • docs: correct activation note (#14910)
  • chore: add FactoryTx for getting tx associated types (#14909)
  • chore: replace withencoded with alloy's (#14905)
  • chore(ci): Remove redundant licenses from allow list (#14903)
  • replace reth-primitives deps in txpool with reth-primitives-traits (#14306)
  • fix: generate-jwt.sh dir with whitespace (#14896)
  • changed block_with_senders() to recovered_block() (#14894)
  • chore: impl encodable for tx (#14893)
  • feat(trie): update sparse trie storage roots independently (#14874)
  • chore: bump alloy 0.12 (#14891)
  • chore: update advisories (#14889)
  • feat: don't include operator fee params in receipts when both zero (#14880)
  • perf(tree): chunk multiproofs (#14800)
  • chore(deps): Bump op-alloy (#14882)
  • changed sealed_block_with_senders_range() into recovered_block_range() (#14876)
  • fix(l2-withdrawals-root): isthmus header custom genesis (#14875)
  • feat: add helper for eth body conversion (#14864)
  • chore: add 0x prefix to b256! and address! calls (#14871)
  • modified get_sealed_block_with_senders() to get_recovered_block_with_senders() (#14865)
  • chore(primitives-traits): remove duplicate IntoIterator bounds in generics (#14861)
  • chore: remove StateRoot variant from BlockValidationError (#14858)
  • chore: bump alloy-evm and revm (#14855)
  • refactor: prepare BlockExecutionError for move to alloy-evm (#14857)
  • Added 0x prefix to transaction hash test values (#14854)
  • chore: auto_impl TrieCursorFactory for reference (#14856)
  • feat: add validate known account to optimism rpc (#14851)
  • feat: integrate alloy-hardforks (#14853)
  • feat: configuration of the tokio runtime (#14837)
  • fix(mev_simBundle): log at trace rather than info level (#14852)
  • test: partially tx response for tx fetcher (#14817)
  • invoke on_unsupported_by_peer of ConnectionHandler (#14411)
  • fix(rpc) enforce limit on reward percentiles (#14847)
  • fix(l2-withdrawals-root): Fix genesis hash for custom op chain (#14845)
  • chore: bump version 1.2.2 (#14846)
  • fix(eth_callBundle): Fix ethSentToCoinbase calculation (#14816)
  • refactor: use tokio to fetch storage proofs (#14838)
  • Added 0x prefix (#14843)
  • fix(l2-withdrawals-root): Compute op devnet genesis hash from genesis header (#14839)
  • fix: filter by deposit signature hash (#14841)
  • refactor: prepare EthereumHardforks for move to alloy-evm (#14835)
  • feat(tree): multiproof manager metrics (#14819)
  • Fix: Increase gas limit in chain config (#14830)
  • refactor: remove Primitives AT from BlockExecutionStrategy (#14833)
  • fix: apply eip2935 for op (#14832)
  • fix: correctly configure extraData for Ethereum blocks (#14831)
  • feat: BlockAssember + BlockBuilder (#14808)
  • chore(hive): run devp2p/eth tests (#14826)
  • fix: filter for more events when watching StaticFileProvider directory (#14827)
  • feat: e2e testsuite actions (#14773)
  • fix: use txpool.lifetime in pool maintainer correctly (#14823)
  • fix: only check for best block number (#14822)
  • feat(net): ress subprotocol (#14687)
  • chore: ignore ethereum-tests in local codespell check (#14815)
  • chore: ignore flaky bsc p2p test (#14818)
  • Added engine_getBlobV1 metrics in grafana dashboard (#14732)
  • refactor: move isthmus helpers to reth-optimism-consensus (#14811)
  • fix: correctly prune HeaderNumbers (#14812)
  • fix: no-std for storage-api (#14810)
  • docs: typos (#14806)
  • feat: ConfigureEvm::NextBlockEnvCtx (#14801)
  • Feat: add a discv4 test to verify the bootnode event behaviour (#14787)
  • fix(tree): use only in-memory blocks when constructing trie input (#14729)
  • feat(reth-ipc): add request_timeout to client builder (#14788)
  • chore: misc tree (#14797)
  • Fixed grammatical errors, typos, and spelling mistakes (#14796)
  • chore: allow result too large (#14795)
  • refactor LaunchContext::with function. (#14792)
  • chore: use interop timestamp (#14782)
  • chore(deps): weekly cargo update (#14785)
  • feat: Feature gate traits inside storage-api that still depend on db-api (#14647)
  • chore(ci): unpin op-geth for kurtosis-op (#14781)
  • chore(sdk): Use EthApiBuilder instead of FnOnce trait (#14442)
  • Add dedicated Optimism Storage impl (#14654)
  • Add pools evicted transactions metrics (#13946)
  • fix broken link (#14768)
  • refactor(tree): remove root.rs (#14778)
  • Stateful overridable handshake (#14567)
  • chore(sdk): clean up op engine caps (#14775)
  • chore(payload): Move ExecutionPayloadValidator into reth-ethereum-payload-builder (#14751)
  • feat: add rlp support for snap message types (#14718)
  • feat(isthmus): Integrate OpExecutionPayloadValidator (#14207)
  • test(tree): move state root task test to payload processor (#14772)
  • remove Option on is_paris_activated call (#14771)
  • User receipt Serdebincodecompat for chain type serde (#14669)
  • fix incorrect async func LaunchContextWith::with_resolved_peers; (#14769)
  • fix: sepolia paris block (#14766)
  • chore: use block fn directly (#14765)
  • fix(tree): state root task duration (#14763)
  • Modified op-reth to always use all OP bootnodes when none are explicitly provided #14603 (#14619)
  • fix: no-std for op crates (#14762)
  • feat(trie): utility methods for getting difference for MultiProofTargets (#14761)
  • chore(deps): Use async closure in bin crates (#14725)
  • chore: fix examples lint not running in ci (#14760)
  • chore(tree): remove old insert_block_inner method (#14754)
  • chore(deps): Bump msrv (#14724)
  • chore(tree): report prewarm metrics (#14759)
  • chore: small NodeBuilder simplification (#14755)
  • chore: simplify provider builder setup (#14756)
  • feat: DebugNodeLauncher (#14738)
  • refactor: introduce payload processor (#14589)
  • feat: add helper conversion from revm Account (#14750)
  • fix(grafana): use correct datasource in variables (#14752)
  • feat: pending block support in BlockExecutionStrategyFactory (#14730)
  • chore(trie): convert MultiProofTargets into unit struct (#14748)
  • refactor: extract api trait methods into metered methods (#14740)
  • feat(trie): HashedPostState::multi_proof_targets (#14747)
  • feat(grafana): human-readable job variable selector (#14719)
  • refactor(e2e): do not use EngineApiClient (#14739)
  • chore(deps): avoid duplicate crates (#14681)
  • feat(op): add builder methods for tx conditional and pool overrides (#14741)
  • feat: allow to transfer Executor accross threads (#14728)
  • feat(reth-bench): generic transactions for send-payload commands (#14721)
  • chore(storage): cleanup consistent view revert state checks (#14734)
  • feat(engine): Op engine capabilities (#14733)
  • feat: Avoid propagating transactions with conditionals, closes #14706 (#14722)
  • fix: correctly set txtype for eth_call (#14727)
  • feat: allow applying overrides for non-CacheDB databases (#14713)
  • feat(tree): state root task multiproof metrics (#14534)
  • fix: fix log key format for target_block_number argument (#14699)
  • chore: always set mint in deposit tx receipt (#14716)
  • feat: extract insert_state to ProviderCaches (#14714)
  • Add Clonable Error Handling to ProviderError Enum (#14712)
  • Added 0x prefix to all hex, macros and b256 (#14711)
  • refactor: introduce BasicPayloadServiceBuilder (#14700)
  • Refactor Session Management and Improve Documentation (#14707)
  • refactor(engine-api): change payload fn arg with ExecutionPayload (#14673)
  • correction / fix comments (#14573)
  • chore: fixed duplicate phrase issue in block description (#14698)
  • feat(l2-withdrawals): Verify l2 withdrawals root in PayloadValidator (#14636)
  • remove needlessness async block and await op (#14694)
  • chore: use rx over tx for receiver name (#14693)
  • feat: add helper for RecoveredBlock::clone_transactions_recovered (#14689)
  • feat: re-introduce debug.reorg logic (#14676)
  • refactor: implement BlockExecutionStrategyFactory directly on EvmConfig (#14675)
  • Implement ExecutionPayload for OpExecutionData (#14682)
  • Disable default features for tracing #14526 (#14530)
  • chore(sdk): Complete adapters for NodePrimitives ATs (#14672)
  • feat(storage): log revert state outcome in consistent view (#14684)
  • chore(ci): remove batcher extra param from kurtosis op network config (#14679)
  • refactor: merge signed tx traits (#14622)
  • chore(hive): fix eest limit filtering (#14671)
  • fix: dead link txn_manager.rs (#14670)
  • Add RLP encoding/decoding for RawCapabilityMessage (#14638) (#14661)
  • Make PayloadOrAttributes generic over ExecutionData (#14666)
  • feat(op-pool-tx): add new field to store encoded 2718 bytes (#14665)
  • chore(deps): weekly cargo update (#14663)
  • Removed unused BlockBatchRecord type (#14659)
  • feat(trie): parallel proof metrics (#14633)
  • feat: Add withdrawals support to debug build-block command (#14493)
  • Correcting Verb Form in Headers Downloader and Stage Documentation (#14641)
  • chore: rm clone for bincodecompat receipt (#14628)
  • Relax EngineApi ExecutionData bounds (#14648)
  • chore: allow new advisory (#14650)
  • Extracted TransactionsManagerConfig creation as a standalone function (#14645)
  • chore: add required rand feature for test (#14644)
  • Feat: Introduce db_models crate into storage-api crate and update imports (#14640)
  • feat(trie): add sparse trie Display impl (#14544)
  • Changed "match" to "if let some" to fix build errors (#14637)
  • feat: integrate TxEnv conversions (#14630)
  • feat(root): metrics and logs for state root config (#14631)
  • feat(engine): allow to override has_enough_parallelism (#14608)
  • Remove unused Senderrecovery variant (#14629)
  • Return RecoveredBlock in ensure_well_formed_payload (#14625)
  • perf(trie): optimize in memory cursor (#14600)
  • add metrics for engine_getBlobsV1 (#14621)
  • feat(l2-withdrawals): Define OpExecutionPayloadValidator (#14591)
  • fix: conditional check (#14616)
  • feat: re-use BlockExecutionStrategy in payload building (#14609)
  • chore: pre alloc on send raw (#14611)
  • fix: handle Deposit in TryFrom<AnyRpcTransaction> (#14614)
  • chore(tree): replace LRU with FIFO for block tracking (#14587)
  • feat(l2-withdrawals): Move l2 withdrawals root computation into reth-optimism-storage (#14610)
  • chore: remove outdated log (#14612)
  • chore(payload): Custom PayloadError variant (#14607)
  • test(db): complete DatabaseProviderFactory impl for MockEthProvider (#14605)
  • chore: remove 'static bound from ConfigureEvmEnv (#14606)
  • feat: expose InvalidTxError in BlockExecutionError (#14597)
  • chore(docs): Fix docs (#14602)
  • perf(tree): insert account cache only when not present (#14599)
  • refactor: use BlockExecutorProvider in InvalidBlockWitnessHook (#14594)
  • feat(tree): increase state root task thread pool size (#14455)
  • chore: fix codspeed build (#14588)
  • peers.add_and_connect(): try to connect even if the peer has been added (#14581)
  • integration test of network state change (#14575)
  • feat: BlockExecutionStrategy::execute_transaction API (#14586)
  • chore(deps): Bump op-alloy (#14585)
  • refactor: BlockExecutionStrategy API (#14480)
  • Add interop hardfork in all relevant places. (#14582)
  • chore(deps): bump breaking deps (#14570)
  • chore(deps): Bump op-alloy (#14579)
  • refactor: simplify SystemCaller API (#14578)
  • feat(l2-withdrawals): Decompose ExecutionPayloadValidator::ensure_well_formed_payload (#14566)
  • chore(hive): rename expected eest failures (#14577)
  • chore: bump revm (#14568)
  • chore: handle all revm errors (#14574)
  • feat(reth-bench): substract block fetch waiting time from benchmark duration (#14299)
  • chore: make return for debug_codeByHash optional (#14572)
  • chore(chainspec): use MAINNET_PRUNE_DELETE_LIMIT in MAINNET (#14569)
  • chore(chainspec): remove MAINNET usage from ChainSpec::default (#14565)
  • feat(op): isthmus genesis header (#14560)
  • fix: add clear tx l1 cost back (#14564)
  • feat: no_std for reth-evm (#14561)
  • chore: bump alloy-evm (#14559)
  • fix(root): spawn state root task only if host has enough parallelism (#14555)
  • chore: phase out reth-primitives from optimism consensus (#14548)
  • chore: remove needless clippy lint (#14550)
  • Add Alias and update usage for emvenv (#14547)
  • chore: remove optimism feature (#14545)
  • chore(db): move mod tables to db-api (#14540)
  • feat: alloy-evm and new revm integration (#14021)
  • chore(db): remove generic from iter_static_files (#14542)
  • feat(op, txpool, metrics): add metric for removed conditional txs (#14541)
  • chore(storage-api): reduce dependence on reth-db (#14539)
  • chore: fix warning in examples (#14537)
  • fix: make genesis header for op (#14538)
  • feat(debug-client): improve RPC BlockProvider implementation (#14536)
  • chore: allow missing total difficulty when loading node head (#14533)
  • extending engine capabilities (#14528)
  • feat: use PROMETHEUS_URL env var for Grafana in Docker Compose (#14531)
  • chore(hive): update name of expected failure eip7702_set_code_tx (#14532)
  • feat(rpc): Implement debug_codeByHash. (#14524)
  • chore(optimism/chainspec): Remove redundant crate prefixes. (#14525)
  • docs: update broken link run-a-node.md (#14521)
  • chore: relax bounds on RPC types (#14529)
  • chore(docs): add book/cli to workspace exclusions (#14527)
  • chore(deps): weekly cargo update (#14522)
  • Removed weird ProviderError variants (#14518)
  • fix: use correct table types on drop (#14519)
  • feat: Extend Maybeconditional with helper fn (#14511)
  • refactor: replace into bound with standalone function (#14512)
  • feat: use SealedHeader in ChainSpec (#14514)
  • feat: reexport reth-trie with trie feature (#14513)
  • feat(op, txpool): add additional update routine for conditionals (#14497)
  • feat(l2-withdrawals): consensus rules (#14308)
  • chore: add Uniswap Labs bootnodes (#14507)
  • Add serde-bincode-compat for receipt (#14399)
  • fix(mev): Fix issues in mev_simBundle. (#14502)
  • chore(deps): Replace derive_more::Error with thiserror::Error (#14501)
  • feat(evm, root): pass state change source to state hook (#14494)
  • perf: do not fetch proofs for selfdestructed accounts (#14486)
  • chore(trie): small cleanups (#14496)
  • chore(root): state root task and sparse trie task logs (#14495)
  • feat(trie): add DecodedAccountProof and DecodedMultiProof (#14425)
  • refactor(trie): struct for passing hash and tree masks in sparse trie (#14468)
  • fix(isthmus): include storage updates in l2 withdrawals root computation (#14307)
  • feat: Make db-models no-std (#14459)
  • chore: rm reth_primitives from rpc_testing_util (#14488)
  • feat(grafana): add proof panels to trie dashboard (#14484)
  • chore: disable storage-api default features (#14474)
  • chore: add elided lifetime to impl Iterator (#14481)
  • fix: handle tree event on new payload (#14475)
  • feat(reth-bench): send-payload CLI (#14472)
  • Disable default features for optimism crates in workspace manifest (#14467)
  • test(stages): download 15MB test file instead of 500MB (#14476)
  • fix static file derive (#14473)
  • Revert "Disable default features for reth-storage-api in workspace manifest" (#14471)
  • Disable default features for reth-storage-api in workspace manifest (#14466)
  • feat: drop ExEx WAL on reth db drop (#11855)
  • Simplified the sequencer forwarding RPC calls (#14386)
  • [Feature]: Add Opstack superchain registry support for genesis files (#14260)
  • refactor: remove PostExecutionInput (#14464)
  • chore: phase out reth-primitives from storage-api (#14462)
  • chore: no_std for reth-execution-types (#14465)
  • Upstream ExecutionData to alloy (#14188)
  • chore: rm comment about hardfork (#14463)
  • fix typo (#14461)
  • chore: fix (#14456)
  • fix: add lifetime (#14460)
  • feat(mev): Enable mev_ namespace. (#14457)

Binaries

See pre-built binaries documentation.

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

System Architecture Binary PGP Signature
x86_64 reth-v1.3.0-x86_64-unknown-linux-gnu.tar.gz PGP Signature
aarch64 reth-v1.3.0-aarch64-unknown-linux-gnu.tar.gz PGP Signature
x86_64 reth-v1.3.0-x86_64-pc-windows-gnu.tar.gz PGP Signature
x86_64 reth-v1.3.0-x86_64-apple-darwin.tar.gz PGP Signature
aarch64 reth-v1.3.0-aarch64-apple-darwin.tar.gz PGP Signature
System Option - Resource
Docker paradigmxyz/reth
Docker (Reproducible) paradigmxyz/reth-reproducible

Don't miss a new reth release

NewReleases is sending notifications on new releases.