github paradigmxyz/reth v1.0.7
Reth v1.0.7

4 hours ago

image

Summary

This release contains performance improvements, new features, and bug fixes.

RPC now includes eth_simulateV1 (#10829), as well as many bug fixes:

  • fix: don't recurse on op rpc err conversion (#10860)
  • fix: improve nonce too low error (#10711)
  • fix: reject 7702 transactions with empty auth list (#10709)
  • feat: Include missing block id in error responses (#7416)

The new Engine API --engine.experimental mode has had some bug fixes:

  • fix: always acquire numbers lock first (#10842, #10843) - fixes a deadlock that some users were experiencing

Users should try the --engine.experimental mode on non-critical workloads, although ExEx usage is still discouraged. The --engine.experimental mode has also had some observability improvements:

  • fix(metrics): set sync metrics when blocks are added (#10799)
  • chore(tree): make tree trace targets consistent (#10731)

Block witnesses are now produced whenever a bad block is produced:

  • feat(engine, tree): witness invalid block hook (#10685)
  • feat(cli): enable witness invalid block hook by default (#10839)

Syncing optimism mainnet is now supported with minimal bootstrap (only requires bedrock state snapshot)

  • feat: allow syncing op-mainnet with only state and without importing blocks/receipts (#10850)

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.

All Changes

  • fix: rm more windows (#11050)
  • feat: add blocks_per_file field to StaticFileProvider (#11043)
  • chore: use alloy-chains is_ethereum (#11049)
  • feat: make NodeConfig generic over ChainSpec (#11039)
  • chore(engine): revert disabling parallel state root (#11047)
  • Revert "chore(op-payload-builder): Refactor optimism_payload into smaller, reusable functions" (#11041)
  • hash_keys bench: use HashSet::with_capacity (#11044)
  • Update OptimismPayloadBuilder field visibility (#11042)
  • feat: make DatabaseProvider generic over chainspec (#10978)
  • reth-stages: remove duplicate buf clear (#11035)
  • chain-state: replace primitive imports with alloy-eips (#11038)
  • feat: local engine (#10803)
  • test: 4844 testdata (#11033)
  • fix(engine): state retrieval for parallel root with persisted parent (#10966)
  • Update function visibility for cfg_and_block_env() (#11022)
  • fix(lint): lint warnings for db benchmark tools (#11011)
  • chore(payload): replace reth_primitives with alloy_primitives (#11030)
  • fix: only decode fields (#11031)
  • fix(lint): lint warnings trie tests (#11012)
  • fix(lint): lint warnings consensus test-utils (#11013)
  • fix(lint): lint warnings in reth-eth-wire (#11008)
  • fix(lint): lint warnings rpc builder (#11014)
  • fix(lint): warnings engine API (#11015)
  • fix(lint): warnings ef testing (#11016)
  • fix(lint): warnings network tests (#11017)
  • fix(lint): warnings rpc testing utils (#11018)
  • fix(lint): ethereum node tests (#11019)
  • fix(lint): op-reth tests (#11020)
  • feat: make reth-stages independent of concrete DatabaseProvider (#10934)
  • fix(lint): lint warnings for storage codecs fuzz (#11009)
  • docs: recorrect the sentry (#11028)
  • fix: update pool gas limit (#11025)
  • chore(engine): disable parallel state root (#11024)
  • net: replace reth-primitive imports (#11023)
  • chore(op-payload-builder): Refactor optimism_payload into smaller, reusable functions (#10904)
  • fix(lint): lint for derive Compat (#11005)
  • fix(lint): lint warnings for libmdbx benches (#11007)
  • (fix): lint warning IPC (#11006)
  • Handle non-default cargo target dir (#10775)
  • chore: remove windows cfg (#11002)
  • storage: replace reth-primitive imports with alloy-eips (#10992)
  • feat(cli): expose tree engine persistence configuration (#10999)
  • chore: move eip7251 impl (#11000)
  • chore: move eip7002 impl (#10998)
  • chore(reth-primitives): use COMPACT_EXTENDED_IDENTIFIER_FLAG (#10926)
  • feat: eth_simulateV1 support (#10829)
  • emv: add BlockHeader trait and default fill_block_env (#10993)
  • feat: allow syncing op-mainnet with only state and without importing blocks/receipts (#10850)
  • storage: replace reth-primitive imports (#10981)
  • chore: make error msg conform to normal usage (#10988)
  • feat: extend pool configuration (#10985)
  • cli: replace reth-primitive imports with alloy-eips (#10994)
  • chore: move eip4788 impl (#10977)
  • chore: change BlockAndProofV1 to use alloy_eips instead (#10969)
  • chore: release 1.0.7 (#10990)
  • chore: bump alloy (#10989)
  • chore: bump revm and inspectors (#10982)
  • chore: add display to FromEngine and other messages (#10986)
  • fix: also include reverts for op (#10979)
  • chore(e2e-test-utils): replace reth_primitives with alloy_primitives (#10980)
  • chore(chain-state): replace reth_primitives with alloy_primitives (#10975)
  • evm: use Header AT in ConfigureEvmEnv (#10968)
  • fix(trie): remove debug_assert for storage root (#10973)
  • docs: add geth reference for call fee check (#10970)
  • feat: move next block cfg and env to configureevm (#10962)
  • deps: bump alloy-trie to 0.5.3 (#10960)
  • perf(rpc): use only Revm cache for execution witness (#10454)
  • feat(cli): enable witness invalid block hook by default (#10839)
  • chore: early return EMPTY_ROOT_HASH (#10957)
  • chore: move eip2935 impl (#10954)
  • feat(exex): backfill on subscription with head (#10787)
  • chore: include network primitives in workspace (#10952)
  • execution: add transaction and header AT to ConfigureEvmEnv (#10754)
  • Move cfg_env and block_env configuration from PayloadBuilderAttributes into PayloadBuilder (#10510)
  • reafctor: improve tx count (#10889)
  • fix(cli) Allow Pruning CLI Args to take precedence over TOML configuration (#10774)
  • error: use derive-more Error for deriving error (#10841)
  • chore(reth-primitives): use derive_more::From when possible (#10917)
  • chore(primitives, ethereum-forks): replace std feature gate alloc imports (#10945)
  • blockchain-tree-api:replace reth_primitives with alloy_primitives (#10946)
  • fix(rpc): add fee/value and balance to insufficient funds RPC error (#10872)
  • chore(op): remove redundant op feature from reth-optimism-consensus (#10944)
  • chore(reth-ethereum-consensus): use const GAS_LIMIT_BOUND_DIVISOR (#10948)
  • chore(reth-primitives-traits): use EOF_BYTECODE_ID etc (#10949)
  • chore(reth-provider): use Vec::with_capacity (#10912)
  • feat(reth-evm-ethereum): use EVMError::map_db_err (#10916)
  • chore: use MIN_TRANSACTION_GAS replace magic number (#10910)
  • fix(exex): do not advance backfill range twice (#10942)
  • feat: use DBProvider instead of DB on init_genesis (#10937)
  • fix(ci): use taiki-e/install-action instead for cargo-udeps (#10938)
  • feat: use DbProvider on UnifiedStorageWriter (#10933)
  • ci: dev udeps (#10855)
  • trie: replace reth_primitives with alloy_primitives (#10931)
  • refactor: make reth-prune independent of concrete DatabaseProvider (#10921)
  • feat(engine): compare invalid block witness against a healthy node (#10844)
  • feat(trie): integrate TrieInput into ParallelStateRoot & AsyncStateRoot (#10930)
  • feat(trie): expose multiproof via StateProofProvider (#10915)
  • feat(trie): integrate TrieInput into StateProofProvider methods (#10929)
  • feat(trie): async root intermediate nodes (#10920)
  • feat(trie): TrieInput (#10918)
  • chore(deps): weekly cargo update (#10911)
  • chore: add is granite active at timestamp (#10908)
  • chore: update genesis to chain spec conversion (#10764)
  • chore(reth-execution-errors): use derive_more::From when possible (#10897)
  • chore: Some minor refactoring for cargo.toml (#10906)
  • chore: fix ci (#10903)
  • feat(evm-optimism): add OpBlockAccessListExecutor (#10895)
  • chore: remove an intermediate allocation in ExecutionOutcome (#10900)
  • fix: actually use RevmBytecode::new_raw_checked (#10899)
  • perf: improve genesis handling (#10878)
  • chore: separate trait for conversion into state provider (#10858)
  • Fix: Allow missing docs for test modules (#10893)
  • feat(evm-ethereum): add BlockAccessListExecutor (#10849)
  • feat: add support for wrapping the allocator with tracy (#10874)
  • chore: bump alloy 0.3.5 (#10891)
  • chore(op): Move imports in reth_optimism_rpc::sequencer to module prelude (#10886)
  • chore(op): Use tokio::sync::OnceCell to set SequencerClient (#10885)
  • cfg: replace std feature gate alloc imports with extern crate alloc (#10861)
  • dev: add send_and_resolve (#10847)
  • fix(cli): remove static file providers from cache on reth db stats (#10887)
  • chore(op): Clean up module reth_optimism_rpc::eth::sequencer (#10884)
  • chore: remove unnecessary segment argument from StaticFileProviderRW (#10882)
  • fix: don't validate requests in optimism (#10883)
  • fix(cli): ensure reth init-state doesn't end in an invalid state root (#10880)
  • fix(reth): bin/reth missing help msg of segment (#10873)
  • fix: use configured chainspec parser for commands (#10876)
  • docs: minor evm doc changes (#10867)
  • dev: test vectors seed (#10859)
  • fix: revert header error message change (#10866)
  • chore: remove useless non exhaustive (#10865)
  • fix: include reverts in execution outcome when building payload (#10837)
  • chore(grafana): display empty string if no cargo features are available (#10862)
  • perf(engine): parallel storage roots (#10666)
  • chore: alias of datadir.static-files and upate book cli (#10856)
  • fix: don't recurse on op rpc err conversion (#10860)
  • chore: remove prune_modes arg from BlockchainTree::new (#10857)
  • Add pub visibility modifiers to some op executer types (#10852)
  • meta: add etc/ CODEOWNERS (#10848)
  • feat(grafana): add stacked block processing latency graph (#10846)
  • fix(tree): avoid holding two locks simultaneously (#10843)
  • fix: drop mmap handles before modifying during handle_consistency (#10708)
  • fix: always acquire numbers lock first (#10842)
  • execution: make ConfigureEvm independent of chainspec argument (#10748)
  • fix(libmdbx): renew tx on timeout when dropping cursor (#10840)
  • fix(libmdbx): do not panic on timeout when closing cursor (#10838)
  • Move EthBlocks::block_receipts default impl to impl for EthApi (#10785)
  • fix: ensure that SendersRecoveryStage either recovers all senders or fails (#10810)
  • perf: use last key value (#10836)
  • rpc: replace reth-primitive imports with alloy-eips (#10834)
  • chore: lower persistence threshold (#10833)
  • chore: crates/consensus - Use derive_more::Error rather than impl std:error:Error (#10831)
  • feat(net): IP resolution in docker (#10681)
  • chore: missing features in optimsim crates (#10830)
  • chore(rpc): LoadReceipt::build_transaction_receipt default impl to impl for EthApi (#10786)
  • chore(op): define type reth_optimism_rpc::OpReceiptBuilder (#10781)
  • crates/optimism: fix optimism (#10820)
  • chore: Remove rethdb op-node build tag from book (#10819)
  • chore: Make block download metric include inflight block range requests (#10826)
  • ci: pin clippy until lints fixed (#10825)
  • fix: prevent panic during enr conversion (#10824)
  • refactor: reduce ProviderFactory usage (#10798)
  • dev: remove unused dev-deps (#10813)
  • rpc: replace reth-primitive imports (#10812)
  • chore: bump revm-inspectors (#10815)
  • Add client() getter to OpTransactionValidator (#10814)
  • chore: remove optimism feature from reth docs (#10809)
  • chore: unify empty payload building (#10807)
  • fix(metrics): set sync metrics when blocks are added (#10799)
  • chore: bump alloy 0.3.3 (#10806)
  • chore: fix typo in chainspec (#10805)
  • optimism: replace reth-primitive imports (#10800)
  • feat: support custom chainspec parser for op (#10804)
  • feat: expose ChainSpec metrics (#10737)
  • trie: add unit tests for TrieAccount (#10802)
  • fix(hive): remove expected failures after upstream hive fix (#10801)
  • chore: rm unused kzg settings fn (#10796)
  • chore(deps): bump peter-evans/create-pull-request from 6 to 7 (#10795)
  • node: replace reth-primitive imports (#10791)
  • blockchain-tree: replace reth-primitive imports (#10771)
  • chore(deps): weekly cargo update (#10773)
  • fix(reth-primitives-traits): removes todo (#10789)
  • chore: bump revm inspectors (#10790)
  • Implement engine_getBlobsV1 (#9723)
  • feat(db): move reth-storage-api::ClientVersion and StoredBlockWithdrawals to reth-db-models (#10763)
  • feat: remove constraint of concrete type AnyTransactionReceipt for EthApiTypes::NetworkType (#10693)
  • Remove receipts fn in BuiltPayload (#10772)
  • consensus: add unit tests for StorageInner (#10776)
  • chore: re-export reth-consensus (#10782)
  • consensus: replace reth-primitive imports (#10768)
  • clippy: add more lints (#10778)
  • cli: replace reth-primitive imports (#10777)
  • feat: Include missing block id in error responses (#7416)
  • feat: return executed block in eth payload builder (#10717)
  • transaction-pool: replace reth-primitive imports (#10766)
  • storage: clean up reth-primitives import (#10761)
  • testing: clean up reth-primitives import (#10760)
  • chore(reth-primitives): clean unused file (#10765)
  • chore: add rpgf json
  • trie: clean up reth-primitives imports (#10757)
  • Create CLI documentation with a Rust script (instead of Python) + style improvement (#10680)
  • feat: test channel for pausing persistence receiver (#10699)
  • chore(tree): propagate on_new_persisted_block error (#10733)
  • fix: unwind_to should be exclusive (#10738)
  • feat(exex): subscribe to notifications explicitly (#10573)
  • feat(engine, tree): witness invalid block hook (#10685)
  • Update layout doc (#10739)
  • chore: expose PruneConfig in CLI args (#10639)
  • chore(tree): propagate on_new_head error (#10734)
  • chore(tree): make tree trace targets consistent (#10731)
  • chore: EvmStateProvider doc improvements (#10735)
  • chore(op): type safety in computation of op tx metadata (#10619)
  • test(provider): Add unit tests for stateproviderfactory (#10697)
  • feat(tree): add block validation metrics (#10728)
  • test: add hardfork parsing test (#10724)
  • Remove load_trusted_setup_from_bytes (#10719)
  • chore: bump example dep (#10726)
  • chore: ignore proc-macro-error 1.0.4 advisory (#10727)
  • refactor: relax bound on NodeTypesWithDB (#10720)
  • fix: don't filter out hardforks (#10723)
  • ethereum-forks: add unit tests for ForkCondition (#10707)
  • rust: bump rust to 1.81 (#10721)
  • fix(tree): remove_blocks fixes, return hash and number in persistence task (#10678)
  • feat: add directory watcher to StaticFileProvider::read_only (#10701)
  • ForkCondition: some small refactors (#10712)
  • optimism: use op-alloy TxDeposit (#10667)
  • chore(engine): track elapsed on fork block added (#10710)
  • feat(engine): support --debug.etherscan on experimental engine (#10688)
  • feat: integrate NodeTypesWithDB (#10698)
  • fix: reject 7702 transactions with empty auth list (#10709)
  • fix: improve nonce too low error (#10711)
  • chore: moved optimism_receiptfn and its tests (#10520)
  • feat(tree): schedule block removal on disk reorgs (#10603)
  • chore: allow CC0-1.0 on deny.toml (#10706)
  • clippy: add collection_is_never_read clippy lint (#10703)
  • chore: relax txpool client trait bounds (#10705)
  • rpc: small refactor in TransactionSource impl (#10704)
  • fix: allow tx's from EIP-7702 delegated accounts (#10702)
  • fix: nippy jar error access is denied. os error 5 (#9747) (#10672)
  • chore: update grafana dashboard again (#10700)
  • feat(tree): make on_new_head and is_fork aware of disk (#10551)
  • chore: more adjustments to grafana (#10696)
  • feat: NodeTypesWithDB (#10683)
  • chore(reth-evm): no-default optional crate (#10694)
  • chore: update wasm crate (#10695)
  • primitives: simplify generate_valid_header logic (#10692)
  • chore: remove PerfectHasingFunction Filters (#10627)
  • Cargo update (#10690)
  • fix(op): parse l1 block info from l2 tx input (#10664)
  • refactor: move exec metrics into executor (#10426)
  • feat(tree): introduce executed_block_by_hash (#10553)
  • test (provider): receiptProvider impl of BlockchainProvider2 (#10651)
  • feat: impl StateReader for BlockchainProvider2 (#10618)
  • feat(engine): invalid block hooks crate (#10629)
  • blockchain-tree: add unit tests for BlockIndices (#10675)
  • net: rm unused import (#10676)
  • feat: add invalid block hook field to tree (#10432)
  • node: revise NodeTypes trait (#10665)
  • Update generic name in payload crate (#10669)
  • fix(discv5): return discv5 local node record (#10640)
  • chore(storage): remove unnecessary check empty vec (#10671)
  • feat(tree): cache trie updates for nonfinalized canonical blocks (#10579)
  • primitives: small refactor in gas_limit method (#10668)
  • eip7702: use alloy TxEip7702 (#10617)
  • fix: ensure receipts are written to storage during test setups (#10660)
  • fix(op-reth): --chain help message (#10661)
  • fix(provider): move consistency check methods from NippyJarWriter to NippyJarChecker (#10633)
  • docs: remove outdated comment in cursor::Walker (#10658)
  • Use ByteCode::new_raw_checked and propagate error (#10584)
  • chore: increase max proof window (#10654)
  • refactor: extract op-reth binary to separate crate (#10641)
  • fix(witness): storage proof target on blinded (#10657)
  • fix(witness): allow no storage multiproof (#10656)
  • test(trie): improve in-memory nodes fuzz tests (#10479)
  • chore: add debug log when new engine message (#10653)
  • fix: dont use prune mode full (#10652)
  • feat(rpc): add preimages to execution witness response (#10456)
  • fix(tree): replace debug_assert with relaxed removal logic (#10634)
  • chore(deps): bump op-alloy-rpc-types (#10646)
  • [#10645] docs(prune): replace prune parts by segments (#10647)
  • chore(deps): weekly cargo update (#10642)
  • fix: clippy (#10650)
  • docs(NodeBuilder): fix broken link (#10644)
  • eip4844: use alloy TxEip4844 (#10624)
  • eip2930: use alloy TxEip2930 (#10623)
  • chore: expose TransactionFetcher param in cli (#10635)
  • feat: migrate to alloy TxEip1559 (#10262)
  • Feat: Extend BuiltPayload type (#10583)
  • feat(rpc): dedup rpc getTxBySenderAndNonce (#10600)
  • feat: use alloy_network::Network::ReceiptResponse instead of AnyTransactionReceipt in RPC (#10621)
  • chore(op): rename file_codec_ovm_receipt.rs to receipt_file_codec.rs (#10622)
  • feat: use alloy_network::Network::BlockResponse instead of reth_rpc_types::Block in RPC (#10613)
  • docs: rm unused file (#10626)
  • feat: migrate to alloy TxLegacy (#9593)
  • feat(storage): add opt_sync_bytes and opt_sync_period options to MDBX (#10612)
  • chore: remove phf from static files (#10259)
  • feat(tree): make remove_before aware of the finalized hash (#10574)
  • feat: introduce ChainSpecParser generic in cli types (#10582)
  • fix(op): Clone impl for OpEthApi (#10611)
  • chore(reth-etl): use constant (#10614)

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.0.7-x86_64-unknown-linux-gnu.tar.gz PGP Signature
aarch64 reth-v1.0.7-aarch64-unknown-linux-gnu.tar.gz PGP Signature
x86_64 reth-v1.0.7-x86_64-pc-windows-gnu.tar.gz PGP Signature
x86_64 reth-v1.0.7-x86_64-apple-darwin.tar.gz PGP Signature
aarch64 reth-v1.0.7-aarch64-apple-darwin.tar.gz PGP Signature
System Option - Resource
Docker paradigmxyz/reth

Don't miss a new reth release

NewReleases is sending notifications on new releases.