Releases: paradigmxyz/reth
Reth v1.2.0
Pectra
This release is Pectra ready and includes timestamps for the upcoming Holesky and Sepolia hardforks.
Network | Timestamp |
---|---|
Holesky | Feb 24 2025 21:55:12 GMT |
Sepolia | Mar 05 2025 07:29:36 GMT |
--engine.legacy
deprecation
As announced in v1.1.5, this release fully removes support for the --engine.legacy
option.
Users that rely on the legacy behaviour where blocks are immediately flushed to disk should run with --engine.persistence-threshold 0
and --engine.memory-block-buffer-target 0
to restore that behaviour.
Gas Limit increase
Default suggested gas limit is now 36M: #13318
Performance
This release includes a new State Root Task and Sparse Trie data structure that improve the state root computation performance, and it’s enabled by default for all users.
It reduces the engine_newPayload
call latencies by up to 50%. The average 99th percentile response time has been reduced from 120ms to 80ms. This work is part of ongoing improvements that will be rolled out in upcoming releases.
For more technical details on how the new design works, see https://github.com/paradigmxyz/reth/blob/main/crates/engine/tree/docs/root.md.
We’re going to be implementing more optimizations & testing, and then roll this out on OP Stack L2s for all OP-Reth users by default as well.
OP Stack
- This release contains some preparations for the upcoming Isthmus hardfork, but is not yet Isthmus ready.
- Includes support for forwarding
sendRawTransactionConditional
to the sequencer.
Reth as a library
This release introduces new top level meta crates for easier Reth dependency management:
reth_ethereum
re-exports various commonly used Ethereum and Reth specific types, such as primitives, node components, RPC…reth_op
re-exports various commonly used Optimism and Reth specific types, such as primitives, node components, RPC…
Primitives
This contains several breaking API changes surrounding primitive types.
- Compatible
alloy-*
version is 0.11.1 - This release finalises the separation of Etheruem and Optimism specific primitive types (
Block
,Transaction
,Receipt
). - The core abstraction is now defined by the
Block
trait inreth-primitives-traits
. The Ethereum types are now included inreth-ethereum-primitives
and optimism types inreth-optimism-primitives
- This release stabilises the primitive abstraction and introduces:
SealedHeader<Header>
: supports lazy block hashingSealedBlock<Block>
: contains theSealedHeader
andBlockBody
RecoveredBlock<Block>
:SealedBlock
with all recovered transaction senders.
Conversions are now embedded into the trait abstraction, such as:
Block::try_into_recovered
returnsRecoveredBlock<Block>
Block::seal
returnsSealedBlock<Block>
SignedTransaction::try_recover
returnsRecovered<SignedTransaction>
All internals can only be accessed via functions, so block.body.transactions
now becomes block.body().transactions()
.
The Block
, BlockBody
and SignedTransaction
trait were extended with additional helper functions, such as:
BlockBody::transaction_count
BlockBody::encoded_2718_transactions_iter
This introduces a new container type for the ExecutedBlock
:ExecutedBlockWithTrieUpdates
which includes the ExecutedBlock
and the trie updates of the block.
Deprecated
This release marks various primitives types as deprecated:
BlockWithSenders
which is nowRecoveredBlock<Block>
SealedBlockWithSenders
which is also justRecoveredBlock<Block>
RecoveredTx
is now justRecovered
Deprecated types will be removed in upcoming releases.
Components
This release contains breaking changes for configuring a custom payload builder: #14276, for migration see also: #14320
The PayloadServiceBuilder
setup now consists of two steps, allowing to reuse the default generator.
ExEx migration reference: paradigmxyz/reth-exex-examples#36
Upcoming features
- Upcoming releases will rollout a transition to alloy-rs/evm in combination with a migration to new the new revm implementation. This will allow more flexibility for things like custom evm modifications.
- Combined with that fully RISC-V compatible implementations of the OP-Stack and Etheruem block execution implementations are in progress.
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
- fix(ci): docker release (#14458)
- chore(ci): update hive expected failures (#14454)
- chore: release v1.2.0 (#14438)
- feat: add Block::seal (#14451)
- chore: remove
BatchExecutor
(#14453) - fix(trie): reveal blinded sparse trie when calculating root (#14449)
- feat: add Consensus to
ExecutionStage
(#14447) - feat(grafana): add block validation overhead graph (#14431)
- fix(grafana): use correct datasource for all metrics (#14432)
- feat(op, cli): add cli option to enable tx conditional (#14421)
- chore: export cli from reth ethereum (#14444)
- docs(tree): state root task (#14400)
- feat(optimism): disable state root task by default (#14446)
- chore: use shorter map names (#14445)
- Increase default gas limit from 30M to 36M (#13318)
- chore: export exex (#14443)
- refactor: Add more low-level methods to
Executor
(#14440) - chore: bump alloy 0.11.1 (#14439)
- feat: add MaybeSerdeBincodeCompat to SignedTx (#14433)
- feat: Return root result without blocking due to sparse trie Drop (#14333)
- chore: use reth-ethereum in example (#14409)
- feat(l2-withdrawals): Define
OpEngineApiBuilder
(#14426) - chore: phase out reth-primitives from op-evm (#14428)
- Fix branch (#14416)
- chore: rm unused err variant (#14427)
- fix: use alloc::vec::Vec (#14423)
- feat: impl serde for OpPrimitives (#14422)
- feat: append tx conditional to pooled tx (#14403)
- feat(l2-withdrawals): Define
OpEngineApi
(#14414) - feat: add alloy-compat for op prims (#14406)
- docs: Complete missing stage descriptions in stages.md (#14415)
- chore(tree): expect message on state root handle unwrap (#14419)
- fix(tree): state root task finished log (#14418)
- perf: only fetch parent if not latest (#14412)
- feat: add DecodedStorageProof and DecodedStorageMultiProof (#14391)
- fix: use generic table types (#14413)
- fix(ci): changes in kurtosis-op network config latest optimism package (#14402)
- chore: add root_with_updates method to sparse trie (#14393)
- chore: bump revm 19.5 (#14408)
- fix(validation-rpc): validate against parent, not latest (#14405)
- feat(bin, engine): make state root task default (#14371)
- feat(engine): use Hash Builder as a fallback to the Sparse Trie on newPayload (#14387)
- feat: add reth-op crate (#14401)
- Decode raw conditional correctly (#14397)
- Add helper trait (#14394)
- chore: remove unused arbitrary dep from optimism-primitives (#14392)
- chore: rm unused dependencies from optimism crates (#14396)
- fix: bytecode override (#14390)
- feat: Add cli arg for pool lifetime (#14273)
- Introduce StatusEth69 for
eth/69
status messages (#14292) - feat: add cross-block cache size cli arg (#14305)
- chore: correct the comments (#14339)
- feat(op, txpool): impl send_raw_tx_cond endpoint (#14311)
- chore: re-export rpc types (#14381)
- chore: abstract
OpPayloadBuilder
overChainSpec
(#14374) - feat(l2-withdrawals): Use
OpExecutionPayloadV4
for new payload v4 (#14379) - Added from<alloy_rpc_types_eth::Transaction> for TransactionSigned (#14350)
- fix(trie): do not reveal same node twice in sparse trie (#14370)
- feat: add operator fee params on RPC L1BlockInfo (#14269)
- feat: add reth-eth meta crate (#14361)
- feat(l2-withdrawals): Declare
OpEngineApiServer
andOpEngineApiClient
(#14359) - chore: remove code snippets from stages.md (#14367)
- feat(engine): invalid block event (#14365)
- feat(tree): enter tracing span for each storage trie in state root task (#14363)
- feat: avoid zstd dependency in reth-evm, reth-evm-ethereum and reth-optimism-evm (#14356)
- chore: rm reth-primitives from eth payload (#14357)
- Fix: Correct functionality of
get_queued_transactions_by_sender
andget_pending_transactions_by_sender
(#14353) - feat:
EngineApiBuilder
(#14354) - prague: testnet timestamps (#14270)
- add debug_chainConfig endpoint (#14346)
- added BeaconConsensusEngineHandle to RpcHandle (#14348)
- added helper error enums for L1BlockInfoError (#14326)
- refactor: move
ValidationApi
setup toEthereumAddOns
(#14342) - added EventSender to FullNode type (#14268)
- chore(ci): pin op-node image for kurtosis-op (#14343)
- chore(deps): weekly
cargo update
(#14340) - feat(engine): emit events with executed blocks (#14341)
- test: add a test for devnet failure (#14288)
- chore: make stages types no-std (#14334)
- fix: update --rpc-cache.headers name (#14336)
- feat: add other helpers for ProviderError (#14325)
- chore: add codec and serde features to prune types (#14327)
- chore: typos (#14330)
- chore: add serde feature to stages types (#14329)
- chore: silence unused warnings (#14328)
- feat: Ad...
Reth v1.1.5
Summary
Important
Legacy engine implementation has been made non-default in v1.1.1.
--engine.legacy
flag and legacy engine support is dropped for op-reth in this release and will be removed for reth in the next release.
This release contains performance improvements and bug fixes.
- fix(simulate_v1): fill transactions sequentually (#13532)
- fix: only skip last tx commit in eth_simulate (#13528)
- pref: use batch tx validation in eth validator (#13490)
- feat(rpc): remove total difficulty (#13303)
- fix(builder): desired block gas limit (#13351)
- fix: call bundle recursion (#13425)
OP-Reth
- includes mainnet holocene fork timestamps that goes live Jan 9th (#13419)
Reth as a library
This contains several breaking API changes surrounding primitive types.
- Compatible
alloy-*
version is0.9.2
- Make
block
field private (#13628); migration: replace field access.body
with.body()
- Several primitive types have been unified with alloy's
- Improved
no-std/riscv
support, more WIP - Total difficulty has been removed from all APIs; removed
EvmEnvProvider
trait (#13503) - Make block <-> payload conversions generic over transaction (#13389)
ExEx migration reference: paradigmxyz/reth-exex-examples#35
Next release focuses on finalizing the transition from feature gated Transaction types (eth, op) to dedicated network types followed by cleanup, ergonomic improvements, docs and examples.
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 |
Op-Reth | high |
See Update Priorities for more information about this table.
All Changes
- chore: release 1.1.5 (#13700)
- chore: relax tryfrom impl (#13691)
- chore: rm usage of PooledTransactionsElementEcRecovered alias (#13690)
- chore: disable reth-primitives std default feature (#13687)
- Revert "feat(no-std): enable
no_std
support for op consensus rules" (#13689) - chore: no-std consensus common (#13686)
- feat(no-std): enable
no_std
support for op consensus rules (#13684) - chore: move signedtx ext trait (#13677)
- chore: move accesslist tests (#13680)
- fix(tree): do not reveal nodes twice in sparse trie (#13674)
- chore: remove optimism feature from execution-types tests (#13676)
- chore: rm uneccessary serde mod (#13681)
- chore: remove duplicated compact consts (#13679)
- chore: use secp fns directly (#13675)
- feat(primitives): re-export alloy Recovered (#13670)
- chore(root): log multiproof calculation (#13673)
- chore: bump revm 19.2 (#13667)
- chore: remove unused
WithdrawalsProvider::latest_withdrawal
(#13671) - refactor: Remove standalone from_recovered functions and make part of TransactionCompat trait (#13653)
- chore(consensus): Cut down on reth-primitives::TransactionSigned usage (#13659)
- feat: rename reth_primitives::RecoveredTx functions to match alloy::Recovered (#13663)
- ci: prettify hive/parse.py (#13668)
- chore(trie): parallel storage proof should not error on closed recv (#13448)
- feat: Implement "Add BlockBody::transaction_count helper function" (#13660)
- chore(deps): weekly
cargo update
(#13657) - chore: mark op chainspec riscv (#13654)
- chore: replace trie-common dep with alloy-trie (#13652)
- docs(ci): remove moved deny workflow (#13645)
- integrate EIP-7840 in chainspec (#13605)
- chore: use generics for RecoveredTx (#13650)
- chore: use HashMap::from_iter (#13649)
- feat: remove PartialEq+Eq from ProviderError and all others affected (#13592)
- fix: no_std case hashmap imports (#13617)
- feat: add helper iter for tx hashes (#13638)
- chore: rm another payload conversion fn (#13637)
- test: move tests out of reth-primitives (#13636)
- chore: rm unused recovery fns (#13634)
- chore: rm some direct header access (#13633)
- feat: merge BlockBodyTxExt trait into BlockBody (#13613)
- chore: use alloy TransactionMeta (#13632)
- chore: use alloy-eip2124 code (#13629)
- chore: make block field private (#13628)
- chore: use more payload conversion fns (#13625)
- chore: remove redundant payload fn (#13624)
- chore: bump alloy 0.9.2 (#13623)
- chore: update license to 2025 (#13616)
- chore: use native conversions for payload to block (#13608)
- fix: implement
StateCommitmentProvider
forBlockchainProvider
(#13620) - chore: lower file client bad message log verbosity (#13619)
- feat: handle Isthmus in revm_spec_by_timestamp_after_bedrock() (#13607)
- feat: use alloy block types (#13518)
- chore(bench): more determinism (#13603)
- chore(deps): bump alloy-trie 0.7.8 (#13604)
- chore: bump alloy 0.9.1 (#13602)
- chore: add ChainSpec::from_genesis (#13601)
- feat(metrics): Add cumulative transaction counters to improve observability (#12273)
- feat(bench): make benchmark inputs deterministic using fixed seed (#13586)
- feat: update revm 19 alloy 09 (#13594)
- fix: net/nat retain https scheme for external (#13507)
- fix(storage): update proptest configuration for deterministic bench runs (#13580)
- chore: correct typo docs (#13557)
- feat(tx-pool): make benchmark inputs deterministic (#13570)
- feat(engine): make benchmark inputs deterministic (#13536)
- chore: include typename in assert (#13595)
- chore: use correct assert message (#13591)
- chore: simplify transaction to call request conversion (#13574)
- chore: move payload builder types to standalone mod (#13593)
- chore: use correct error message (#13587)
- chore(deps): weekly
cargo update
(#13589) - chore: replace match with let else (#13585)
- chore: disable chainspec default features (#13583)
- chore: add no-std support for eth-wire-types (#13577)
- chore: update WASM build exclusion list (#13576)
- chore(db): relax consistent view provider bound (#13566)
- chore: rm unused dep and add required (#13569)
- fix: use correct vars (#13567)
- feat: integrate
OpPrimitives
(#13556) - fix(pool): oversized data error (#13565)
- fix(pool): max init code error (#13564)
- feat(net): make benchmark inputs deterministic (#13563)
- chore: simplify revm specId mapping (#13553)
- feat: use new engine in e2e tests for OP (#13558)
- feat: generic data primitives block builder test framework (#13522)
- chore: make clippy happy (#13561)
- perf: query bytecodes with
&B256
to avoid copying code hash (#13559) - chore(version) Remove const_format dependency (#13504)
- perf: query accounts with
&Address
to avoid copying address (#13554) - fix: typo in thread name (#13555)
- fix: debug client etherscan (#13542)
- chore: deduplicate FillTxEnv traits (#13551)
- chore: make
EthStorage
generic over transaction (#13549) - feat: impl compression traits for op primitives (#13550)
- refactor: avoid using NoopTransactionPool in OP payload builder (#13547)
- feat: introduce
OpPooledTransaction
(#13548) - feat: add more impls for OpTransactionSigned (#13546)
- chore: relax cli bounds (#13543)
- fix: Compact impl for OpTypedTransaction (#13544)
- feat: add L2EthApiExt trait (#13539)
- chore: relax
EngineNodeLauncher
bounds (#13540) - Add drop aware sender new type (fixes #13242) (#13495)
- chore: make
NodeEvent
generic overNodePrimitives
(#13534) - refactor: integrate BuiltPayload::Primitives (#13484)
- feat: add missing from impls (#13527)
- chore: move
EventSender
out ofBeaconConsensusEngineHandle
(#13533) - fix(
simulate_v1
): fill transactions sequentually (#13532) - chore(bench): fix non deterministic bench IDs (#13530)
- chore: reuse build_import_pipeline for OP (#13529)
- fix: only skip last tx commit (#13528)
- feat: use batch tx validation in eth validator (#13490)
- chore: expose execution error of debug_cmd/merkle.rs (#13515)
- Fix typo in the command example in the comments Update main.rs (#13524)
- feat: make
ReceiptFileClient
generic over receipt (#13523) - chore: rm evmenvprovider trait (#13503)
- chore: replace root fns with alloys (#13501)
- chore(bench): codspeed name workaround (#13519)
- chore: mark chainspec as riscv compatible (#13517)
- chore: disable default std serde_json feature (#13513)
- chore: disable op- default features (#13511)
- chore: remove unused rand (#13512)
- chore: use imported b256 types (#13509)
- ci: mark trie-common as risc compatible (#13510)
- chore: correct typos docs (#13505)
- docs: update https external link (#13508)
- chore: disable itertools default features (#13500)
- chore: bump alloy-trie and nybbles (#13502)
- docs: use ots_ prefix (#13498)
- fix: reth-trie no_std case hashmap (#13497)
- chore: use NoopConsensus in CLI unwind (#13487)
- update links in crates/static-file/static-file/README.md (#13462)
- feat: relax eth_callBundle bounds (#13485)
- chore: relax
build_receipt
(#13486) - chore(deps): weekly
cargo update
(#13494) - fix...
Reth v1.1.4
Summary
This release contains only one fix relevant to op-reth which allows the miner_
API that is now required by op-batcher as CLI argument:
- fix: fromstr impl for miner variant (#13289)
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 |
OP-Reth | high |
See Update Priorities for more information about this table.
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
System | Architecture | Binary | PGP Signature |
---|---|---|---|
x86_64 | reth-v1.1.4-x86_64-unknown-linux-gnu.tar.gz | PGP Signature | |
aarch64 | reth-v1.1.4-aarch64-unknown-linux-gnu.tar.gz | PGP Signature | |
x86_64 | reth-v1.1.4-x86_64-pc-windows-gnu.tar.gz | PGP Signature | |
x86_64 | reth-v1.1.4-x86_64-apple-darwin.tar.gz | PGP Signature | |
aarch64 | reth-v1.1.4-aarch64-apple-darwin.tar.gz | PGP Signature | |
System | Option | - | Resource |
Docker | paradigmxyz/reth |
Full Changelog: v1.1.3...v1.1.4
Reth v1.1.3
Summary
This release contains performance improvements and bug fixes.
- fix: run prometheus metrics upkeep manually (#12664)
- fix: always truncate static files (#12765)
- perf(AllTransactions-iter): do not clone all transactions by default (#13187)
- perf: call increment once (#13193)
- perf(txpool): remove more clones (#13189)
- chore: remove some excessive allocs in hot path (#13176)
- fix: push exex job front of queue (#13177)
OP-Reth
- feat: install op miner endpoint (#13147)
- fix: do not delegate is_optimism check for Ethereum ChainSpec (#12650)
- fix: use correct timestamp for op receipt (#12716)
- Check holocene activation based on the parent's timestamp (#13060)
Dev
This contains several breaking API changes and introduces a primitive trait abstraction (NodePrimitives
) in several components.
For migrating exex's please take a look at the examples repository https://github.com/paradigmxyz/reth-exex-examples
Expect more simplifications and improved ergonomics in upcoming releases
This table provides priorities for which classes of users should update particular components.
User Class | Priority |
---|---|
Payload Builders | low |
Non-Payload Builders | low |
OP-Reth | medium |
See Update Priorities for more information about this table.
All Changes
- fix: bounds for BundleApi (#13267)
- chore: release 1.1.3 (#13262)
- chore: use trait fn for blob gas (#13261)
- feat: make bodies downloader generic over header (#13259)
- feat: relax bounds for
EngineApiTreeHandler
(#13257) - feat(engine): add error logging in
state_hook
(#13252) - feat: remove default types from headers stage (#13258)
- chore: pass primiitves generic to
EngineApiTreeHandler
fields (#13256) - chore: use
BlockWithParent
forStageError
(#13198) - chore: relax
ProviderFactory
setup (#13254) - feat: extract zstd compressors (#13250)
- feat(rpc): relax
VaidationApi
andEngineApi
(#13241) - Return a propoer error code for txpool is full error (#13245)
- chore: add blob_versioned_hashes_iter to block body (#13246)
- perf(engine): add StateRootTask bench (#13212)
- perf(trie): use entry API in sparse trie (#13240)
- feat: relax bounds for
eth_simulateV1
(#13232) - chore: relax more consensus functions (#13236)
- fix(trie): retain updates only for sparse branch nodes in the prefix set (#13234)
- chore: rename HighestStaticFiles::min (#13235)
- fix(trie): reveal extension child in sparse trie when updating a leaf (#13183)
- ci: move deny to lint (#13230)
- chore: use BlockHeader trait (#13224)
- chore: add default impls for withdrawals and ommers root (#13229)
- fix: deny advisory RUSTSEC-2024-0421 (#13227)
- feat(db): make init_db function accepts a TableSet (#13222)
- feat: bound NetworkPrimitives types by proper traits (#13196)
- chore(engine): simplify StateRootTask creation and hook management (#13213)
- test: add tracing test (#13221)
- chore(deps): weekly
cargo update
(#13216) - chore: feature gate reth-codecs in trie-common (#13215)
- chore: flip tx conversion impl (#13208)
- chore: make reth-network-peers risc compatible (#13210)
- chore(engine): refactor code to transform EvmState into HashedPostState (#13207)
- chore: move calculate tx root to blockbody trait (#13209)
- chore: make zip_blocks generic over header (#13199)
- Add placeholder
OpHardfork::Isthmus
(#13112) - feat: relax bounds for
EthPubSub
(#13203) - perf(txpool): remove more clones (#13189)
- chore: fix
cargo check -p reth-stages --tests
(#13200) - chore: remove unused trie-common alloy-serde dep (#13201)
- refactor: simplify and relax some RPC bounds (#13202)
- feat: make BlockResponse generic over header (#13195)
- perf: call increment once (#13193)
- refactor(prune-types/prune): move PruneLimiter to
reth-prune
(#13182) - perf: more
FxHashMap
s forSenderId
key (#13188) - perf(
AllTransactions
-iter): do not clone all transactions by default (#13187) - fix: don't use reserved word None in bug template (#13192)
- chore: rm validate delegate (#13190)
- chore: disable url default features (#13191)
- feat: unify ReceiptWithBloom from Alloy (#13088)
- chore: introduce ethereum-primitives crate (#13185)
- chore: rm unused evm provider fn (#13184)
- feat(db): initialize db with tables (#13130)
- chore: use slice arg for tx decoding (#13181)
- fix(trie): delete self destructed accounts from sparse trie (#13168)
- chore: remove some excessive allocs in hot path (#13176)
- feat(
DbTx
): addget_by_encoded_key
(#13171) - perf(tx-pool): reuse write lock to insert txs batch (#12806)
- chore: use leaner NoopProvider in network (#13178)
- feat: EthApi traits abstraction (#13170)
- fix: push job front of queue (#13177)
- perf: profile TransactionsManager::poll hash fetching (#12975)
- chore: Code Simplification and Optimization (#12840)
- fix: throw error if genesis header found on static files, but empty db (#13157)
- feat(trie): use branch node hash masks in sparse trie (#13135)
- feat: re-export used deps from reth-codecs (#13167)
- chore: make reth codec support optional (#13166)
- fix: txpool tests (#13172)
- chore(engine): add StateHookSender constructor (#13162)
- feat: use network tx for
Pool::Pooled
(#13159) - Allow replacement txs with exactly price bump (#13161)
- chore: add typed2718 to txtype (#13076)
- feat: Add ratelimiting to OpWitness API (#12998)
- fix(engine): wait for all state updates before returning state root task result (#13156)
- chore: add reference to the troubleshooting page on
mdbx::Error::Access
(#13151) - feat: Support sending raw capability messages (#13028)
- perf(trie): avoid (de)allocating an extra prefix set (#13020)
- feat: make RPC cache generic over primitives (#13146)
- feat: impl compact for alloy txtype (#13152)
- chore: reuse alloy proof fns (#13091)
- chore: bump alloy 073 (#13150)
- feat: install op miner endpoint (#13147)
- docs: add docker and error code 13 to troubleshooting chapter (#13133)
- chore: bump pprof (#13148)
- Bump
op-alloy
(#13142) - feat: wire network primitives to remaining components (#13143)
- feat: add OpBuilder config (#13132)
- feat(trie): collect branch node hash masks when calculating a proof (#13129)
- chore: add typed receipt for Receipt (#13140)
- refactor: split
NetworkEventListenerProvider
(#12972) - chore: add container question to bug template (#13134)
- fix(witness): collect witness using sparse trie (#13072)
- fix(op): add missing op consensus validation check (#13122)
- Extend revm spec tests for holocene (#13111)
- Fix typos in documentation (#13094)
- perf: avoid cloning bytecode when converting revm's
&AccountInfo
to reth'sAccount
(#13126) - feat: make
PoolInner
functionspub
(#13124) - refactor(sdk): complete generic impl for
PersistenceService
overN::Primitives
(#13044) - chore(ci): fix hive patch (#13123)
- chore: remove
TransactionSignedNoHash
(#13120) - refactor: pending block construction (#13109)
- chore: bound most NetworkBuilder methods by NetworkPrimitives generic (#13119)
- chore: relax rpc bounds (#13100)
- chore: propagate network primitives generic to EthStream usages (#13117)
- feat: use generic CapabilityMessage everywhere (#13116)
- feat: make TransactionsManager Future impl generic over NetworkPrimitives (#13115)
- chore: remove redundant enum (#13113)
- feat: make
import_transactions
use network generics (#13110) - feat: Add
Transaction
AT toConfigureEvm
(#13106) - Introduce
HashedPostStateProvider
(#12607) - chore(trie): make Debug impl work for any provider (#13107)
- chore: propagate network primitives to
on_command
,on_network_event
(#13084) - feat: make InvalidBlockHook generic over NodePrimitives (#13105)
- perf(validate-tx-pool): fast non-allocating
is_local
(#13096) - feat(custom-tables): don't record metrics for custom tables (#13104)
- chore: move sparse errors to
reth-execution-errors
(#13101) - introduce tableset and impl for tables enum (#12617)
- fix(trie): do not persist root branch nodes in sparse trie (#13071)
- feat: impl noop miner api endpoint (#13102)
- fix(trie): short circuit leaf removal if missing (#12988)
- perf(engine): do not clone proof targets (#13061)
- feat: add miner rpc bindings (#13099)
- chore(trie): exclude blinded providers from
Debug
impl (#13098) - chore(evm): migrate execution errors back to
thiserror
(#13097) - feat: add Op DA config (#13095)
- feat: impl more noop functions (#13029)
- chore: fix unused warning (#13090)
- fix(engine): get_proof_targets only add fetched accounts if they have new storage (#13015)
- feat: Use
PrimitiveSignature
instead ofSignature
(#13087) - feat: use primitive transaction as
PoolTransaction::Consensus
(#13086) - feat(trie): proof blinded providers (#13085)
- chore(sdk): define
OpTransactionSigned
(#11433) - refactor: rename
TransactionSignedEcRecovered
toRecoveredTx
(#13074) - chore: flatten reth-primitives dep (#13082)
- chore: make
has_eip4844
generic overSignedTransaction
(#13083) - chore: disable nybbles default feature (#13081)
- feat(trie):
SparseStateTrie::new
(#13068) - chore: set event logs from
StaticFileProducer
andPruner
todebug
(#13080) - f...
Reth v1.1.2
Summary
This release contains performance improvements and bug fixes.
- feat(payload) : optimize new payload job by fetching only header hash instead of block (#12343)
- feat: mev_simBundle (#12218)
- fix: pending transaction ordering (#12382)
OP-Reth
This release is holocene hardfork ready
- fix: consume all payload variants (#12520)
- feat(spec): Holocene activation time for {OP/Base} Sepolia (#12453)
- feat: add payload witness fn (#12579)
- feat: restructure op builder (#12229)
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 |
OP-reth | critical |
See Update Priorities for more information about this table.
All Changes
- chore: bump version 1.1.2 (#12651)
- chore(sdk): make
Chain
generic over data primitives (#12635) - docs: small fix in HARDFORK-CHECKLIST.md (#12646)
- chore(sdk): limit
FillTxEnv
to super trait ofFullSignedTx
(#12614) - Typo Update private-testnet.md (#12633)
- Run kurtosis e2e test 2x/day (#12641)
- fix(discv5): warning discv5 config socket override (#12636)
- chore(witness): simplify wiped storage retrieval (#12637)
- feat(trie): turn TrieWitness methods into public functions (#12510)
- fix: correctly prune transactions during on-disk reorgs (#12630)
- feat(engine): introduce sync implementation of StateRootTask (#12378)
- feat(trie): add extend method to MultiProof (#12467)
- chore(deps): weekly
cargo update
(#12611) - chore(sdk): Define
MaybeSerde
(#12577) - test(tx-pool): add more unit tests for pending pool (#12603)
- test(tx-pool): add more unit tests for blob pool (#12605)
- Fix Minor Documentation Errors (#12601)
- Typo Update profiling.md (#12631)
- Fix grammatical error in lib.rs (#12632)
- test: add tests for base l1 blockinfo (#12609)
- chore: use keccak256 from alloy (#12628)
- chore: refactor
MockTransaction
(#12627) - chore(sdk): Add InMemorySize as super trait (#12615)
- feat: add EthereumEthApiTypes (#12618)
- feat: add TokioTaskExecutor::boxed (#12619)
- fix: add additional op checks for chain specific check (#12623)
- feat: install op debug exeuction witness (#12622)
- fix(deps): Fix dev-deps for
reth-primitives
(#12612) - feat: add merge_if_module_configured (#12608)
- chore(sdk): Add blanket impls for refs to prim traits (#12613)
- feat: fix WASM build for crates dependent on reth-payload-primitives (#12610)
- feat: split reth-payload-primitives (#12600)
- chore(cli): unify trait bounds (#12604)
- rm more generics when useless (#12595)
- chore: remove revm-primitives re-export (#12599)
- chore: move triewriter trait (#12598)
- chore: move hashing writer trait (#12597)
- test(tx-pool): add more unit tests for parked pool (#12591)
- chore(sdk): Remove duplicate trait
BlockHeader
(#12584) - chore: make clippy happy (#12594)
- chore(sdk): add NetworkPrimitives for NetworkManager (#12530)
- Fix grammar in MDBX documentation (#12580)
- rm generics when useless (#12581)
- chore(util): Add reth payload util (#12590)
- feat: add contains fns to transport rpc modules (#12593)
- feat: add op debug witness api (#12583)
- feat: add tx_number consistency check to StaticFileProviderRW (#12570)
- feat: add payload witness fn (#12579)
- feat: add helpers to obtain the execution witness for a payload (#12573)
- feat: implement Compact for OpTxType (#12537)
- chore(sdk): improve usability
TxType
trait (#12548) - fix: remove redundant check in bodies stage (#12569)
- ci: exclude more crates for op tests (#12568)
- feat: introduce debug witness api (#12567)
- feat: make
StaticFileProvider
generic overNodePrimitives
(#12565) - chore: extract witness recorder helper type (#12566)
- engine-primitives: make engine-tree independent of beacon-consensus crate (#12560)
- net: use
BlockWithParent
inSyncTarget::Gap
(#12514) - fmt(primitives): group pub use transaction (#12561)
- primitives: rm alloy
HOLESKY_GENESIS_HASH
reexport (#12562) - primitive-traits: simplify
SealedHeader::default
(#12563) - fix(rpc): remove reference to preimage bool in debug_executionWitness (#12559)
- refactor: don't reference
StaticFileProvider
instatic_file::Segment
(#12558) - refactor: use
DBProvider
inLatestStateProvider
(#12557) - feat: impl block for sealedblock (#12555)
- refactor: use
DBProvider
inHistoricalStateProvider
(#12556) - chore: move gas_spent_by_transactions to traits (#12541)
- chore: use crates directly in eth-wire (#12554)
- chore: remove constants reexport (#12549)
- chore: replace reth-chainspec dep with alloy chains (#12550)
- chore(sdk): make
BlockBatchRecord
generic over receipt (#12449) - chore(sdk): Add trait bound
Compact
on<T as FullTransaction>::Type
(#12534) - chore: rm reth testing utils dep from reth-primitives-traits (#12542)
- chore: add missing debugs for pool types (#12546)
- feat: relax
BodyStage
bounds (#12539) - Documentation Improvements: Grammar Corrections and Clarity Enhancements (#12545)
- feat: move body writing to
BlockWriter
trait (#12538) - introduce standalone estimate gas type (#12344)
- feat: display warning for op-mainnet launch without pre-Bedrock state (#11765)
- tx-pool: add
PoolUpdateKind
forCanonicalStateUpdate
(#12525) - fix: typos in documentation files (#12528)
- tx-pool: rm useless allow deprecated (#12526)
- feat: add simple kurtosis test for OP stack (#12506)
- fix: consume all payload variants (#12520)
- chore: simplify import path (#12523)
- chore(utils): Util function for headers request (#12501)
- primitives: rm alloy
Header
reexport (#12515) - chore: rm cfg imports (#12518)
- chore(sdk): improve usability tx primitive traits (#12437)
- primitives: use
SealedHeader::seal
(#12507) - chore: remove unused trait bound for evmenv (#12505)
- chore(dep): bump alloy-trie (#12511)
- chore: reorder validation items (#12503)
- feat: add support for
eth_signTransaction
(#12500) - chore: use let some notation (#12494)
- chore: only issue single header request (#12496)
- chore: rm unused error variants (#12499)
- chore: add SealedHeader::seal (#12497)
- chore: rm unhinged attributes ordering (#12498)
- chore: rm direct reth-provider dep (#12492)
- Move CanonChainTracker to storage-api (#12491)
- chore: import static file types directly (#12490)
- chore: bump alloy 064 (#12488)
- primitives: rm alloy
Withdrawal
reexport (#12487) - chore: introduce tuple type for pruned info (#12484)
- fix: deposit tx gasPrice must be 0 (#12486)
- feat(rpc): add compression to JSON-RPC (#12352)
- chore: Move
StatsReader
trait to storage-api and reexport it from old provider crate (#12485) - chore: Update Holocene timestamp for Sepolia (#12479)
- chore: move standalone types to types crate (#12483)
- feat: make more network components generic over primitives (#12481)
- chore: Move
HistoryWriter
trait tostorage-api
and reexport it from oldprovider
crate (#12480) - chore: add DUPSORT trait const (#12477)
- chore: only fetch deposit info for deposit tx (#12474)
- feat: add ovm
BlockFileCodec
(#12247) - feat: make downloaders and clients generic over block parts (#12469)
- chore(deps): Update op-alloy to 0.6.4 in manifest (#12472)
- chore(deps): bump alloy to 0.6.3 (#12468)
- make PayloadStore operate on PayloadBuilder (#12460)
- chore: remove unessarcy clone (#12463)
- test(trie): add ParallelProof unit test (#12413)
- chore(sdk): add
NodePrimitives::TxType
(#12332) - chore(sdk): Add
InMemorySize
as super trait of data primitive traits (#12465) - chore(sdk): make
ExecutionOutcome
generic over receipt (#12448) - use result for
TransactionCompact::fill
. (#12170) - chore: move trie functions to alloy (#12438)
- chore: move
(Full)NodePrimitives
toreth-primitive-traits
(#12461) - feat(op): define OpTxType (#12443)
- chore: remove unnecessary clone (#12455)
- chore(reth_primitives): Use trait for
size
methods in primitive types (#12201) - feat: make Consensus trait generic over block parts (#12451)
- chore(sdk): define new
BlockHeader
trait (#12452) - feat(spec): Holocene activation time for {OP/Base} Sepolia (#12453)
- chore(sdk): make
Receipts
generic over receipt (#12447) - [refactor] move
new_payload_v4
into EngineAPI (#12445) - chore(sdk): impl
Receipt
forreth_primitives::Receipt
(#12446) - [refactor] move
new_payload_v3
into EngineAPI (#12442) - chore: move
new_payload_v1
into type EngineAPI (#12430) - chore: move
new_payload_v2
into type EngineAPI (#12431) - chore(sdk): define helper trait
FullNodePrimitives
(#12331) - Move payload_attributes function to trait (#12427)
- renamed OptimismHardforks to OpHardforks (#12441)
- chore(trie): rename reth-trie-parallel modules (#12444)
- feat:
NetworkPrimitives
(#12435) - chore: fix deny (#12439)
- chore(sdk): impl
SignedTransaction
forTransactionSigned
(#12187) - chore(deps): weekly
cargo update
(#12433) - chore(sdk): auto trait bounds
NodePrimitives
(#12398) - refactor: remove trait bound on
TxType
(#12379) - chore: add PayloadBuilder to RpcNodeCore (#12428)
- chore: add Sync to PayloadBuilder (#12425)
- primitives: rm alloy
Withdrawals
reexport (#12421) - chore: restrict payload builder error type (#12423)
- chore(sdk): payload builder AT on
NodeComponents
andFullNodeComponents
(#11529) - chore(sdk): Add
NodePrimitives::Transaction
andNodePrimitives::SignedTx
(#12330) - chore: rm unused file (#12420)
- primitiv...
Reth v1.1.1
Summary
This release contains performance improvements and bug fixes. The new, default engine implementation is now recommended for all users.
- fix(engine): run pruner after saving blocks (#11927)
Important
Users may experience a longer startup time on the initial restart due to this fix
- fix: estimateGas edge case (#11764)
- fix: always poll new pool imports (#11675)
- fix(rpc/trace): return empty if after >= traces (#11715)
- fix: always accept transactions with current nonce (#11931)
- fix(rpc): apply beacon root contract call in debug_traceTransaction (#11845)
Op-Reth
With this release, op-reth is now also defaulting to the new engine API implementation introduced in https://github.com/paradigmxyz/reth/releases/tag/v1.1.0
- chore: switch op to new engine (#12329)
Important
Applications which access the database externally, and require the database to be at the head of the chain, should use --engine.legacy
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
- primitives: rm alloy
BlobTransactionValidationError
reexport (#12311) - chore: 1.1.1 (#12334)
- primitives: rm more alloy block reexports (#12308)
- chore: limit initial status size (#12324)
- chore: switch op to new engine (#12329)
- renamed OptimismEngineValidator to OpEngineValidator (#12312)
- primitives: rm alloy
Signature
reexport (#12313) - primitives: rm alloy
BlockNumHash
reexport (#12304) - feat(engine): add StateRootTask skeleton (#12305)
- primitives: rm alloy
BlockId
reexport (#12303) - primitives: rm alloy
BlockHashOrNumber
reexport (#12302) - primitives: rm alloy
Withdrawal
reexport (#12296) - primitives: rm useless
OP_
constants (#12298) - chore: Move FillTxEnv::fill_tx_env into SignedTransaction trait and implement in TransactionSigned (#12186)
- docs: add debug.etherscan in the book (#12293)
- Refactor: use fully-qualified paths in Compact derives(Deon Branch) (#12279)
- feat: add more decimals to database growth (#12288)
- renamed OptimismEngineTypes to OpEngineTypes (#12285)
- chore(deps): weekly
cargo update
(#12289) - renamed OptimismEvmConfig to OpEvmConfig (#12284)
- feat: remove AnyNetwork usage (#12280)
- renamed OptimismPayloadTypes to OpPayloadTypes (#12281)
- feat: add
CachedReads::extend
(#12277) - chore: make some fields owned (#12274)
- chore(ci): unpin kurtosis (#12272)
- renamed OptimismBeaconConsensus to OpBeaconConsensus (#12271)
- renamed OptimismGenesisInfo to OpGenesisInfo (#12270)
- Use Arc in SystemCaller (#12268)
- fix: clippy lints (#12269)
- feat: flashbots_validateBuilderSubmissionV4 (#12243)
- renamed OptimismConsensusBuilder to OpConsensusBuilder (#12265)
- test: make cargo t compile in db-models (#12263)
- test: make cargo t compile in codecs (#12261)
- renamed OptimismExecutorBuilder to OpExecutorBuilder (#12258)
- fix: check hashed state for loading
TriePrefixSets::destroyed_accounts
(#12235) - feat: add asref impls (#12257)
- chore: use deref directly (#12256)
- renamed OptimismNetworkBuilder to OpNetworkBuilder (#12255)
- chore: simplify cached db usage (#12242)
- test(chain-state): add unit tests for
CanonStateNotification
(#12110) - refactor: move
payload/builder/src/database.rs
torevm/src/cached.rs
(#12252) - feature: transaction's input truncate function (#12236)
- Remove redundant
SignedTransaction::Signature
(#12185) - feat: track buffered outgoing messages (#12220)
- db-api: opt StorageShardedKey encode, decode (#12143)
- chore: apply same member order (#12253)
- txpool: added a helper to filter pending txns by predicate (#12204)
- rpc: add
rename
method inTransportRpcModules
(#12239) - revm: add
Database
Either
helper type (#12240) - refactor(revm): simplify
Database
impl forStateProviderDatabase
(#12241) - chore: clippy happy (#12248)
- renamed OptimismPoolBuilder to OpPoolBuilder (#12246)
- replace DisplayHardforks with Box (#12219)
- feat:
flashbots_validateBuilderSubmissionV3
(#12168) - renamed OptimismPayloadBuilder to OpPayloadBuilder (#12234)
- chore(book): fix engine api typo (#12231)
- chore(ci): pin kurtosis to working version (#12225)
- renamed OptimismBuiltPayload to OpBuiltPayload (#12227)
- chore: simplify SystemCaller setup (#12223)
- fix(trie): move to sibling on invalid tree mask (#12193)
- Apply beacon system call to trace_block (#12030)
- chore: rm deprecated txpool fn (#12198)
- renamed OptimismPayloadBuilderAttributes to OpPayloadBuilderAttributes (#12213)
- feat: add rlp support for
EthVersion
(#12221) - docs: add context truncated input (#12207)
- Reth primitives traits tx type (#11720)
- test: add test case for BestTransactions (#12209)
- feat: add missing is active at timestamp fns (#12206)
- chore: rename v1 type (#12205)
- Wrap sidecar in arcs (#11554)
- feat: add is_ethereum trait fn (#12197)
- feat(eth69): support for ETH69 (#12158)
- feat: Eip1559 params in extradata (#11887)
- tx-pool: fix
ExceedsGasLimit
error message order (#12191) - fix(ecies): bound initial header body size (#12172)
- chore(meta): update SECURITY.md (#12190)
- feat: introduce StateCommitment type (#11842)
- feat(discv4): neighbors packet logging (#12042)
- feat: transaction trait (#11877)
- test(prune): add unit tests for
ReceiptsLogPruneConfig
(#11916) - feat(provider): use
NodeTypes
onDatabaseProvider
instead (#12166) - chore: remove generate sidecar fn (#12167)
- feat: Introduce trait for OpTransaction (#11745)
- Revert "Revert "feat: add geometry to database args"" (#12165)
- feat(storage): pass changesets to unwind methods (#7879)
- Revert "feat: add geometry to database args" (#12164)
- consensus: add unit tests for
ForkchoiceStateTracker
andForkchoiceStateHash
(#12077) - feat: add geometry to database args (#11828)
- chore(ci): try to read all vectors on
compact-codec
before exiting in error (#12160) - storage:
into_iter
withself
by value (#12115) - feat: without-evm cli option in reth (#12134)
- chore(provider): remove unused
BlockExecutionReader
trait (#12156) - refactor: change
PayloadConfig
to use parent header instead of parent block (#12159) - fix(ecies): ecies typo (#12155)
- feat: rate limit incoming ips (#12153)
- test: use port0 in tests (#12154)
- fix: use net::discv5 for reth's discv5 tracing target namespace (reverts #12045) (#12151)
- dev: track invalid transactions by sender in pool (#12138)
- chore: remove one unwrap (#12152)
- fix: restrict concurrent incoming connections (#12150)
- fix(op): fix payload id calculation (#11730)
- chore(rpc): remove redundant
LoadState::cache
(#12147) - chore(rpc): remove redundant
LoadTransaction::cache
(#12148) - chore(rpc): add super trait
RpcNodeCoreExt
toLoadReceipt
(#12149) - chore(rpc): remove redundant
LoadFee::cache
(#12146) - chore(rpc): relax
FullNodeComponents
trait bound onOpEthApi
toRpcNodeCore
(#12142) - chore(rpc): inline trait methods of
RpcNodeCore
impl (#12144) - chore(rpc): define trait
RpcNodeCoreExt
and replaceLoadBlock::cache
(#12141) - test(trie): use proptest to generate random values (#12140)
- chore: add version to PayloadBuilderAttributes::try_new (#12137)
- perf(trie): reduce allocations in sparse trie rlp node calculation (#12092)
- refactor: replace receipt envelope encoded with trait (#11742)
- chore(deps): weekly
cargo update
(#12108) - perf(trie): cache prefix set lookups in sparse trie (#12088)
- refactor(chainspec): refac and improved doc for
last_block_fork_before_merge_or_timestamp
(#12114) - chain-spec: use alloy
MAINNET_DEPOSIT_CONTRACT_ADDRESS
constant (#12113) - feat: add a wrapper for
BestTransactions
prioritizing given senders (#12123) - fix(ci): remove renaming from
compact-codec
(#12133) - feat: add
pending|queued
txs pool helpers (#12128) - feat: Add version to
BeaconEngineMessage
FCU (#12089) - perf(trie): collect only changed sparse nodes at a depth (#12093)
- bench(trie):
RevealedSparseTrie::update_rlp_node_level
(#12046) - chore(rpc): remove redundant
EthTransactions::provider
(#12121) - chore(rpc): remove redundant
LoadFee::provider
(#12122) - fix(ci): remove import path from type names on
compact-codec
(#12125) - fix(trie): sparse trie walk should be done in a sorted manner (#12087)
- chain-state: fix typo (#12112)
- refactor: rm re-exports of alloy eip 4844 constants (#12120)
- docs: small fix in payload doc (#12116)
- TransactionsHandle propagation commands should not adhere to caching (#12079)
- chore(rpc): remove redundant
Trace::evm_config
(#12102) - chore(rpc): remove redundant
EthBlocks::provider
(#12109) - chore(rpc): remove redundant trait bounds in eth api (#12105)
- chore(rpc): remove redundant trait method
LoadBlock::provider
(#12100) - refactor(storage): small refactor (#12106)
- refactor(tx-pool): small refactor (#12107)
- chore(rpc): Add super trait
RpcNodeCore
toLoadPendingBlock
(#12098) - chore(rpc): simplify trait bounds on
EthApiSpec
impl (#12101) - chore: only check for better payload if tx_pool (#12097)
- chore(op): simplify blob fields in newly built block header (#12035)
- Remove trait method
Call::evm_config
(#...
Reth v1.1.0
Summary
Reth Engine 2.0
This release enables the new performant engine architecture for ethereum chains by default. This was previously opt-in, as the --engine.experimental
flag.
Important
Nodes which do not want to use the new engine MUST now add --engine.legacy
to their cli flags to preserve the old engine behavior.
Using --engine.legacy
is recommended for stakers / payload builders, as the previous architecture has been tested in production for a longer period of time. Validators that update to 1.1.0
without changing any command line flags will not be using the previous architecture, hence the recommendation to add the --engine.legacy
flag.
The new engine is not enabled for op-reth
by default, and must still be enabled using the --engine.experimental
flag. We encourage op-reth users to use this flag.
Important
Applications which access the database externally, and require the database to be at the head of the chain, should use --engine.legacy
Engine 2.0 overview
The previous engine architecture required that the node database be always at the head of the chain. This requirement made it simple to reason about the database, but required that the node's engine_forkchoiceUpdated
API synchronously commit to the database, which caused high latency for the API. Removing this requirement required a rewrite of the node's consensus handling logic.
This new engine architecture yields great performance improvement when syncing near the tip of the chain. Here is the engine_forkchoiceUpdated
latency with the old engine:
And here is the engine_forkchoiceUpdated
latency with the new engine:
ExEx breaking changes and improvements
The ExExNotifications::recv
and ExExNotifications::poll_recv
are now removed.
ExExNotifications::with_head
is introduced - this method allows exex notifications to work properly with the new engine, and requires users to specify a head block. This head block determines where the exex notifications will start from.
Engine 2.0 improvements
There have been some performance improvements and bug fixes for the new engine architecture since 1.0.8:
op-reth related enhancements and fixes
We have fixed some issues for op-reth instances running with --engine.experimental
:
- feat: store safe block num as well (#11648)
- fix: persist finalized block (#11623)
- fix: always handle payload building for opstack (#11629)
There are also various fixes not related to the new engine architecture:
- fix: set system tx correctly (#11601)
- fix(op-reth): add jemalloc feature to optimism-cli for version (#11543)
Observability improvements
New metrics have been added, and the dashboard has been improved:
- feat(evm, trie): more metrics (#11613)
- Add metrics for failed deliveries to Grafana dashboard (#11481)
- fix(grafana): remove rate function from panel "Transactions by Type in Pool" (#11542)
- grafana: add metrics of all transactions in pool by type (#11515)
RPC improvements
- fix: use original bytes for codes (#11593)
- chore(rpc): remove include_preimage param on debug_execution_witness (#11466)
- fix(rpc-eth-types): incorrect error msg(; -> :) (#11503)
- fix(provider): fix sub overflow on
tx_range
queries for empty blocks (#11568) - chore: enforce window (#11540)
- perf(rpc): optimistically retrieve block if near the tip on
eth_getLogs
(#11582)
Update Priority
This table provides priorities for which classes of users should update particular components.
User Class | Priority |
---|---|
Payload Builders | Low priority |
Non-Payload Builders | Medium priority |
See Update Priorities for more information about this table.
All Changes
- feat: store safe block num as well (#11648)
- chore: preempt single block downloading (#11647)
- fix: don't unwrap missing requests (#11646)
- chore(rpc): don't recover sender if we have it (#11645)
- feat(bin): make experimental engine default (#11612)
- chore: release 1.1.0 (#11640)
- feat(ci): move book clippy and tests to matrix (#11618)
- feat(exex): commit only notifications with unfinalized blocks to WAL (#11638)
- feat(ci): add Kurtosis workflow (#11615)
- docs: clarify op-mainnet --debug.tip (#11634)
- Broadcast external IP from NAT in enode record (#10274)
- Remove duplicate EngineTypes comment (#11624)
- feat(trie): noop hashed cursors (#11627)
- chore(trie): make initialization of in-memory trie cursors
pub
(#11628) - fix: always handle payload building for opstack (#11629)
- feat(evm, trie): more metrics (#11613)
- fix: actually commit (#11626)
- chore(ci): disable hive discord alerts (#11625)
- chore(metrics): remove redundant
starting metrics
log (#11621) - fix: persist finalized block (#11623)
- test: add sanity test for local txs args (#11620)
- chore: bump op-alloy (#11617)
- fix(witness): destroyed slots as proof targets (#11596)
- fix: 7702 gas fields (#11614)
- chore(rpc): use
block_hash
asBlockId
oneth_callMany
(#11595) - perf(rpc): optimistically retrieve block if near the tip on
eth_getLogs
(#11582) - fix(net): add concurrency param from config to
TransactionFetcherInfo
(#11600) - fix(grafana): set instance variable from
reth_info
metric (#11607) - feat: add helper function to provde the tx manager config (#11608)
- feat: add tx propagation mode (#11594)
- fix(trie): prefix set extension (#11605)
- fix: set system tx correctly (#11601)
- fix: set deposit gasprice correctly (#11603)
- fix(net): max inflight tx reqs default (#11602)
- fix: active inflight count (#11598)
- perf(rpc): use
Arc<BlockWithSenders
onfull_block_cache
(#11585) - fix: use original bytes for codes (#11593)
- fix: simplify reorg handling (#11592)
- docs: delete missing part path (#11590)
- feat: add mul support for SubPoolLimit (#11591)
- chore: also derive arb for test (#11588)
- chore(rpc): use
block_hash
instead on fetchingdebug_trace_block
block (#11587) - chore(ci): remove expected failures related to checksummed addresses (#11589)
- chore: bump alloy primitives 0 8 7 (#11586)
- chore(providers): test race condition on all
BlockchainProvider2
macro tests (#11574) - fix: in-memory trie updates pruning (#11580)
- fix(exex): exhaust backfill job when using a stream (#11578)
- feat: impl
Encodable2718
andDecodable2718
forPooledTransactionsElement
(#11482) - chore: rm bad cap function (#11562)
- chore: replace some revm deps (#11579)
- chore: rm unused optimism feature from engine api (#11577)
- feat: adding a new method to network config builder (#11569)
- chore(provider): add more test coverage on
BlockchainProvider
non-range queries (#11564) - fix(provider): fix sub overflow on
tx_range
queries for empty blocks (#11568) - chore: relax trait bound for
EthTransactions
(#11571) - fix: actually configure the custom gas limit (#11565)
- docs(exex): include code for ExEx book from real files (#11545)
- Added InternalBlockExecutionError to execute.rs exports (#11525)
- chore: rm unused optimism feature from compat (#11560)
- feat(trie): expose storage proofs (#11550)
- chore: rm unused optimism feature (#11559)
- chore: chain manual serialisation implementation (#11538)
- Introduce Op PayloadTypes Impl (#11558)
- chore: rm redundant type hint (#11557)
- chore: move ethfiltererror (#11552)
- fix(grafana): remove rate function from panel "Transactions by Type in Pool" (#11542)
- fix(op-reth): add jemalloc feature to optimism-cli for version (#11543)
- Introduce Eth PayloadTypes Impl (#11519)
- Refactor get_payload_bodies_by_hash_with to be non-blocking (#11511)
- chore: enforce window (#11540)
- feat(exex): subscribe to notifications with head using
ExExContext
(#11500) - grafana: add metrics of all transactions in pool by type (#11515)
- chore: dont fail on ttd (#11539)
- fix: acquire permit first (#11537)
- ci: add
windows
cargo check (#11468) - feat: add get_highest_tx_by_sender to pools (#11514)
- chore: delete rpc-types (#11528)
- rpc: use
eth_api()
method (#11516) - fix(tree): make state methods work for historical blocks (#11265)
- feat(provider): add
test_race
toBlockchainProvider2
tests (#11523) - test: add unit tests for
PruneLimiter
(#11517) - chore(deps): weekly
cargo update
(#11518) - feat: expose Op node network_config helper (#11506)
- feat: add PoolBuilderConfigOverrides (#11507)
- fix: cap gas limit properly (#11505)
- chore: rm from genesis impl (#11509)
- chore(lint): fix
clippy::needles_lifetimes
(#11496) - chore: Remove duplicate EthereumChainSpecParser in favor of existing EthChainSpecParser (#11412)
- Add metrics for failed deliveries to Grafana dashboard (#11481)
- feat: rpc replace function created (#11501)
- Reexport optimism specific crates from
op-reth
(#11499) - fix(rpc-eth-types): incorrect error msg(; -> :) (#11503)
- chore(provider): add more test coverage on
BlockchainProvider::*by_block_range
queries (#11488) - chore(lint): fix lint storage (#11485)
- chore: rm deposit contract config for op (#11479)
- test: ensure default hash matches (#11486)
- chore(provider): add more test coverage on
BlockchainProvider::*by_tx_range
queries (#11480...
Reth v1.0.8
Summary
This release contains performance improvements and bug fixes:
- fix: enable js-tracer (#11087)
- fix: never ban trusted peers (#11254)
- fix: apply 4788 system call in tracing (#11417)
- fix: sequencer client must be arced (#11337)
The new Engine API --engine.experimental mode now has ExEx support and has had various stability improvements and bug fixes.
Users should try the --engine.experimental
mode.
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 |
Op-Reth | high |
See Update Priorities for more information about this table.
All Changes
- fix: windows build (#11465)
- Map
TransferKind::EofCreate
=>OperationType::OpEofCreate
(#11090) - chore(provider): clone after filtering on
sealed_headers_while
(#11459) - fix: use correct rpc errors (#11463)
- feat(grafana): ExEx WAL (#11461)
- fix: ensure the request's gas limit does not exceed the target gas limit (#11462)
- feat(rpc): Add codes in execution witness return (#11443)
- chore(provider): use
block_ref
instead onBlockState
(#11458) - chore: release 1.0.8 (#11457)
- feat: add metrics for failed deliveries (#11456)
- chore(provider): find
last_database_block_number
withBlockState
anchor instead (#11455) - chore(provider): use
get_in_memory_or_storage_by_block
onfn block_body_indices
(#11452) - chore(exex): adjust WAL gauge metric names (#11454)
- chore(provider): use
get_in_memory_or_storage
ontransactions_by_block_range
(#11453) - feat: impl payload attributes builder (#11336)
- fix(exex): limit the duration of a backfill job to 30 seconds (#11450)
- chore: replace
Compact
withbincode
onETL
usage ofSealedHeader
(#11442) - fix(exex): WAL size metric (#11448)
- primitives: remove optimism re-export in
reth-primitives
(#11438) - fix: env tempdir failure on WAL creation (#11446)
- docs: fix wrong method name (#11441)
- chore: make clippy happy (#11439)
- feat: add
get_in_memory_or_storage_by_tx_range
(#11414) - fix: reset pruned sender numbers on stage drop (#11150)
- feat(exex): commit notifications to WAL before sending to ExExes (#11354)
- Fix: Reorder all serde_bincode_compat module definitions (#11435)
- feat(exex): WAL metrics (#11431)
- chore(provider): dont recover sender from
BlockState
transaction ontransaction_sender
(#11424) - chore: remove temporary allow attribute (#11428)
- chore(sdk): define traits for primitives
Block
andBlockBody
(#11411) - chore(provider): rename to
get_in_memory_or_storage_by_block_range_while
(#11421) - fix(exex): do not finalize WAL with a block higher than finalized header (#11420)
- feat(chain-state): notify about new safe/finalized only if modified (#11383)
- fix: apply 4788 system call in tracing (#11417)
- feat(stages): fail Execution if post execute commit input isn't consumed (#11418)
- feat(trie): bincode compatibility for trie updates (#11409)
- chore: rm todos (#11400)
- fix(exex): check exex head against node head to determine canonical (#11410)
- fix(stages): call post execute/unwind commit hooks (#11413)
- dev: swap_remove (#11405)
- feat: add
get_in_memory_or_storage_by_block
toBlockchainProvider2
(#11384) - chore: rm crate reth-rpc-types (#11341)
- feat(net): Perform graceful network shutdown before dropping network in NetworkManager (#11404)
- chore: make clippy happy (#11408)
- chore: add metric and trace for already executed blocks (#11406)
- fix: fetch header by hash (#11407)
-
ci: pin clippy to working version (#11401)
- chore: rename default chainspec parser (#11398)
- chore(Makefile): separate features by spaces only (#11393)
- fix(engine):
is_fork
header traversal (#11368) - feat(primitives): bincode compatibility for EIP-7702 transaction (#11394)
- fix: add tracing features to op binary (#11395)
- fix(tree): use in-memory data first to query total difficulty (#11382)
- fix: use pending state if available (#11391)
- chore(db): simplify Compact for Vec (#11361)
- fix(provider): handle race on
fn transaction_id
(#11380) - chore: Remove redundant impl NetworkManager (#11390)
- chore(deps): bump some breaking deps (#11388)
- chore: limit tracing logs to debug by default (#11377)
- fix(exex): set next file ID when creating WAL storage (#11372)
- feat(trie): deserialize trie updates with serde as hex (#11369)
- perf(engine): avoid unnecessary arc clones on new head (#11381)
- feat: add ReputationChangeWeights::zero (#11375)
- test(engine): improve deep reorg test (#11378)
- chore: propagate std feature to alloy-trie (#11371)
- dev: block_with_senders on BlockState (#11363)
- fix(evm): propagate optimism and test features correctly (#11373)
- fix(provider): use
canonical_chain
on range lookups (#11332) - docs: misc in memory docs (#11365)
- chore: log num hash (#11364)
- ci(hive): update expected rpc-compat failures (#11367)
- feat(exex): use rmp-serde for WAL storage (#11353)
- fix: never ban trusted peers (#11254)
- chore(cli): Add warning for misconfigured HTTP API flags (#11360)
- fix(hooks): sort reverts in
BundleState
before comparison (#11358) - perf(db): use Into to encode StoredNibbles (#11350)
- feat(exex, primitives): serde bincode compatibility (#11331)
- fix(provider): replace
block_state_by_tx_id
withget_in_memory_or_storage_by_tx_id
(#11340) - feat: wire SystemCaller (#11321)
- fix(providers): collect BlockState before constructing DB provider (#11338)
- impl
Encodable2718
,Decodable2718
forTransactionSigned
(#11218) - fix: sequencer client must be arced (#11337)
- fix(libmdbx): Some options can only be set after
mdbx_env_open
(#11328) - chore: alloy 0.4 (#11334)
- deps: remove
reth-metrics-derive
formetrics-derive
(#11335) - feat(exex): finalize WAL below the given block (#11324)
- chore(builder): reorder revm
State
import (#11316) - feat: add SystemCaller helper type (#11068)
- fix(trie): witness empty root node (#10972)
- feat(exex): finalize WAL with the lowest finished height (#11323)
- primitives: rm more
alloy_primitives
reexports (#11325) - primitives: rm more
alloy_primitives
reexports (#11255) - use
core::error::Error
(#11317) - chore: update default payload builder logs (#11315)
- feat(exex): finalize WAL only when all ExExes are on the canonical chain (#11289)
- chore(deps): weekly
cargo update
(#11319) - Remove unused dependencies (#11320)
- chore: rm ToRpcError usage from engine crate (#11311)
- chore: use core::error (#11313)
- chore: relax trait bounds on transact fns (#11310)
- feat: mev_simBundle (#11252)
- feat: use
OpChainSpec
inOptimismNode
and its components (#11304) - fix: improve ecies error fatal variants (#11303)
- chore(op): unify crate name reth-optimism-* (#11223)
- chore(blockchain-tree): replace reth-primitives with alloy-eips (#11276)
- chore: remove generics from Decode and Decompress (#11295)
- perf(db): cache
ProcessUID::own
in memory (#11302) - chore(deps): bump tracy (#11305)
- test(rpc): filter test is taking too long (#11288)
- perf(trie): use unstable sort when sorting for computing roots (#11301)
- chore: rename param (#11287)
- chore(exex):move maximum ExExManager capacity to a constant (#11293)
- fix(reth-ipc): pass through extensions from request (#11300)
- chore(
rpc
): use alloy'sKeccak256
hasher instead of manually concatenating hash bytes (#11298) - perf(db): use encode_to in Scale implementations (#11297)
- perf: improve IntegerList API to avoid allocations (#11292)
- feat(trie): extract
StorageProof
(#11269) - feat(exex): send canonical notifications when head is provided (#11280)
- perf(db): use smallvec for mdbx table names (#11291)
- optimism: fix 'expecte' (#11290)
- chore(exex-eips): replace reth-primitives with alloy-eips (#11275)
- feat:
ExExEvent::FinishedHeight
takesBlockNumHash
instead (#11278) - perf: remove sidecar clone if no listeners (#11285)
- chore: add traces for blob sidecar ops (#11284)
- fix: make canonical_chain atomic and canonical (#11283)
- chore: use Arc over Box (#11281)
- docs: clarify block order (#11279)
- feat: canonical state for local engine (#11245)
- chore(trie): early return on empty state (#11271)
- feat(exex): WAL handle (#11266)
- feat(exex): add parent hash to WAL block cache, index by hashes (#11263)
- feat(exex): write notification files atomically (#11264)
- chore(exex): remove unneeded code (#11267)
- deps:
[email protected]
(#11260) - feat(tree): introduce reorg count metrics in new engine (#11226)
- primitives: rm more
alloy_primitives
reexports (#11250) - move op storage tests into new crate reth-optimism-storage (#11233)
- feat: tx and receipt compression utils for no-std config (#11112)
- fix(cli): fix
ImportReceiptsOp
(#11216) - chore: update revm and alloy primitives (#11235)
- chore:include payload id in trace (#11249)
- feat: make
NetworkConfigBuilder
independent of concreteChainSpec
(#11176) - primitives: rm more
alloy_primitives
reexports (#11222) - primitives: rm
H*
deprecated types (#11246) - chore(trie): replace ParallelStateRoot with AsyncStateRoot (#11213)
- refactor: extract optimism receipts hashing logic to
reth-optimism-consensus
(#11230) - ci: pin clippy to working version (#11237)
- chore(evm): replace reth-primitives with alloy (#11232)
- reth-codec: remove unused derives from alloy compat types (#11231)
- chore(t...
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...
Reth v1.0.6
Summary
This release contains performance optimizations, bugfixes, and new features.
It comes with the (still experimental) new EngineAPI implementation which is available as an opt-in via --engine.experimental
, drastically reducing the time it takes to handle the fork choice update message (<1ms). ExEx usage in this mode is currently discouraged.
Further performance improvements are underway before this becomes the default implementation of EngineAPI in upcoming versions.
The main bugfixes are:
- RPC
- Feat: exact gasUsed for eth_createAccessList (#10422)
- add
position
to callTracer (paradigmxyz/revm-inspectors#186) - fix(rpc/otterscan): set fullblock.tx_count with block's (#10421)
- feat(rpc): get_account (#10369)
- OP-Reth
New dev changes and features include:
- Dev
Breaking Changes
- removed CLI value for rpc module
eth_callBundle
which is now part ofeth
: (#10486)
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(op): empty receipts for block not counted by file client (#10581)
- fix: op fee fields (#10615)
- release: v1.0.6 (#10609)
- chore: bump op-alloy to latest (#10607)
- test:
TransactionsProvider
implementation ofBlockchainProvider2<DB>
(#10594) - tree: bump persistence threshold and memory buffer target (#10608)
- chore(deps): bump alloy (#10537)
- chore: re-export reth_chainspec in reth (#10604)
- chore(tree): make on_engine_message more concise (#10605)
- fix(hive): remove
eth_createAccessList
tests from expected failures (#10601) - chore(trie): clean up state root methods (#10598)
- Pending receipt (#10597)
- chore(trie):
StorageRootProvider
(#10592) - ethereum: add unit tests for consensus validation (#10578)
- chore(trie): remove plain state proof variant (#10593)
- refactor: split validate_block_pre_execution into hardfork specific functions (#10576)
- fix: pop consolidation requests in payload builder (#10591)
- feat(debug): engine reorg util depth (#10575)
- chore: bump discv5 (#7981)
- docs(book): update observability.md (#10587)
- fix(op): receipts import, fix chunked read of file with optional block data (#10577)
- chore(tree): make remove_before bound inclusive (#10559)
- chore: add tempfile to dev dep (#10569)
- refactor(provider): random_block and random_block_range functions (#10563)
- chore(op): Add
OpChainSpec
(#10516) - chore: sort lints (#10565)
- test:
BlockReader
implementation ofBlockchainProvider2<DB>
(#10557) - clippy: add
needless_for_each
clippy lint (#10555) - docs(reth-engine-tree): slightly improve inline docs (#10561)
- clippy: add
manual_is_variant_and
clippy lint (#10556) - chore: delay initial filter tick (#10564)
- feat: Properly bubble up
InsertBlockFatalError
(#10276) - fix(engine): memory overlay hashed storage root (#10543)
- remove transaction forwarder trait (#9678)
- chore(chainspec): move op stack chain specs to
reth-optimism-chainspec
(#10485) - chore: export
RethApiClient
trait (#10545) - feat(rpc): implement eth_getTransactionBySenderAndNonce (#10540)
- chore: remove usage of RichBlock (#10538)
- perf(engine): lazy load overlay trie state (#10541)
- dev(pool): trait object safe
BestTransactions
(#10478) - perf(trie): remove some clones (#10406)
- feat: use system call to update blockhashes (#10535)
- clippy: add
implicit_clone
clippy lint (#10529) - clippy: add
if_not_else
clippy lint (#10524) - Feat: exact gasUsed for eth_createAccessList (#10422)
- storage: add
test_block_body_indices
forblock_body_indices
(#10429) - clippy: add
unnested_or_patterns
clippy lint (#10526) - clippy: add
redundant_else
clippy lint (#10525) - chore: rm unused op rpc types (#10534)
- clippy: add
cloned_instead_of_copied
clippy lint (#10530) - feat: impl From alloy-consensus::TxType for reth_primitives::TxType (#10523)
- clippy: add
option_as_ref_cloned
clippy lint (#10528) - chore(reth-codec): remove unused code (#10531)
- chore(reth-codec): use constant (#10533)
- fix(trie): consider all intermediate nodes invalidated for wiped storage (#10476)
- chore: fix clippy (#10532)
- feat: add impl From BlockExecutionOutput for ExecutionOutcome (#10507)
- tx-pool: add
try_from_consensus
forPoolTransaction
(#10504) - chore(deps): weekly
cargo update
(#10506) - primitives: rm
IntoRecoveredTransaction
forTransactionSignedEcRecovered
(#10505) - fix:
transaction_by_hash_with_meta
implementation ofCanonicalInMemoryState
(#10501) - docs: fix git clone urls (#10490)
- fix: only set isSystemtx if true (#10496)
- refactor(rpc): Use TransactionInfo instead of individual fields (#10500)
- fix: set gas price for op deposit (#10495)
- tx-pool: rm into tx constraint for
PoolTransaction
(#10057) - feat(rpc): Add method removal functionality for RPC transports (#10497)
- refactor: mv
ChangedAccount
(#10472) - chore(txpool): rename the function of tx_by_sender_and_nonce (#10473)
- docs: fix broken link in review.md (#10480)
- chore: remove clippy::missing_debug_implementations (#10491)
- chore(cli): rename optimism args test (#10492)
- rpc: remove special module handling for
eth_callBundle
(#10486) - feat : add the ability to connect to a peer (#10028)
- Add emhane as code owner for optimism crates (#10488)
- Add emhane as code owner for
reth-chainspec
(#10487) - refactor: replace ForkChoiceStream type with generic stream type (#10458)
- fix(provider): check list size before calling
range.nth
(#10460) - fix(provider): fix subtract overflow on
block_state_by_tx_id
(#10467) - fix(exex): instrument
ExEx::launch
with the span (#10481) - Remove redundant
EthChainSpec::Hardfork
(#10470) - fix(trie): take earliest value in
HashedStorage::from_reverts
(#10475) - perf(rpc): avoid redundant tx decoding on witness generation (#10474)
- chore(trie): remove
PrefixSetMut::contains
(#10466) - fix(trie): collect revert state for historical storage root (#10465)
- refactor: use EIP TX_TYPE_ID (#10471)
- Add tests for withdrawals provider (#10428)
- chore(tree): remove BlockAttachment usage (#10453)
- feat(trie): hashed state from cache (#10455)
- docs(ci): expand introduction to CI workflows (#10291)
- fix: FetchFullBlockRangeFuture doesn't return on bad header (#10449)
- chore(rpc): config network specific transaction type in node builder (#10417)
- test:
BlockIdReader
implementation ofBlockchainProvider2<DB>
(#10362) - Test
CanonStateSubscriptions
forBlockchainProvider2
(#10361) - chore(net): expose max concurrent
GetPooledTransactions
reqs in cli (#10358) - feat:
ChainSpec
associated type (#10292) - test:
CanonChainTracker
implementation forBlockchainProvider2
(#10378) - feat: make js-feature non default (#10447)
- chore: no feature gated imports (#10440)
- Make js-feature non default (#10445)
- consensus: fix
build_header_template
output (#10444) - exex: add more robust tests for
finished_height
update (#10439) - consensus: refactor
build_header_template
(#10442) - fix(trie): filter out removed nodes on extend (#10433)
- evm: wider use of
RethEvmBuilder
(#9944) - fix: range update (#10424)
- chore: replace
RichBlock
byBlock
(#10399) - feat: add method in txpool for handling pending transactions (#10303)
- chore: Update granite mainnet time (#10430)
- fix link typo on
BlockState
(#10431) - test(provider):
RequestsProvider
ofBlockchainProvider2
(#10356) - chore: make
consensus/debug-client
helpers public (#10423) - test: add gh workflow to run hive tests with experimental flag (#10355)
- test(provider):
ChangeSetReader
ofBlockchainProvider2
(#10415) - fix(rpc): apply blockhashes update in witness RPC (#10419)
- fix(rpc/otterscan): set fullblock.tx_count with block's (#10421)
- test(trie): fuzz in-memory storage nodes (#10413)
- test: ReceiptProviderIdExt (#10420)
- fix: block_range (#10418)
- chore(lint): allow needless update for tests (#10414)
- fix(trie): skip cleared storage database lookup on
InMemoryStorageTrieCursor::next
(#10412) - fix(trie): clear all deleted storage nodes on extend (#10411)
- test:
BlockReader
implementation ofBlockchainProvider2<DB>
(#10370) - Use more appropriate names for forkchoice subscriptions (#10401)
- fix: getAccount (#10402)
- fix(trie): filter in-memory storage node on
seek_exact
(#10410) - chain...