Reth v1.0.7
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 toStaticFileProvider
(#11043) - chore: use alloy-chains is_ethereum (#11049)
- feat: make
NodeConfig
generic overChainSpec
(#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 concreteDatabaseProvider
(#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 defaultfill_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 inConfigureEvmEnv
(#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
to0.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 ofDB
oninit_genesis
(#10937) - fix(ci): use
taiki-e/install-action
instead forcargo-udeps
(#10938) - feat: use
DbProvider
onUnifiedStorageWriter
(#10933) - ci: dev udeps (#10855)
- trie: replace reth_primitives with alloy_primitives (#10931)
- refactor: make
reth-prune
independent of concreteDatabaseProvider
(#10921) - feat(engine): compare invalid block witness against a healthy node (#10844)
- feat(trie): integrate
TrieInput
intoParallelStateRoot
&AsyncStateRoot
(#10930) - feat(trie): expose multiproof via
StateProofProvider
(#10915) - feat(trie): integrate
TrieInput
intoStateProofProvider
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 setSequencerClient
(#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 fromStaticFileProviderRW
(#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 fromBlockchainTree::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 forEthApi
(#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 forEthApi
(#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
ondeny.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
toNippyJarChecker
(#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
andopt_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 forOpEthApi
(#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 |