github paradigmxyz/reth v1.9.0
Reth v1.9.0

14 hours ago

image

This release includes the Fusaka hardfork schedule, memory bugfixes (especially for Base), flashblock enhancements for OP Stack, and SDK improvements for custom chain implementations.

This release also adds two new database tables which are expected to take up to an extra 30GB for mainnet. The addition of these tables allow for significant performance improvement and simplification of the engine code with respect to chain reorgs.

Fusaka

  • The Fusaka fork is scheduled to occur at 2025-12-03 21:49:11 UTC (1764798551).
  • Blob-Parameter-Only (BPO) forks are scheduled for:
    • BPO1 on 2025-12-09 (1765290071)
    • BPO2 on 2026-01-07 (1767747671)
  • For blob transactions, this release includes sidecar conversion support on RPC level (eth_sendRawTransaction) and during Fusaka activation for legacy blob sidecars. See https://blog.ethereum.org/2025/10/15/fusaka-blob-update for more information.
  • Default Ethereum mainnet gas limit is now 60M.
  • Enables eth69 by default for devp2p.

Backwards Compatibility

Important

In case you need to downgrade after running 1.9.x, please downgrade to 1.8.4

RPC

Bug Fixes

  • Fix excessive memory for cached tries (#19159)
  • Improve storage cache size tracking (#18879)
  • Fixed block fetching spawning blocking tasks unnecessarily, improving async performance (#19491)
  • Fixed min_block tracking in StaticFileProvider index updates (#19469)
  • Fixed beacon API sidecar using correct block metadata for reorged blobs (#19424)
  • Fixed highest_nonces update in PendingPool transaction removal (#19301)
  • Fixed prune checkpoint handling (#19407)
  • Fixed engine triggering live sync after backfill completes at finalized (#19390)
  • Fixed WS CORS being ignored when HTTP disabled (#18729)
  • Fixed Era pipeline checkpoint not being set correctly in certain cases (#19000, #19351)

Performance

  • Improved eth_sendRawTransaction sync for Optimism with flashblocks (#19462)
  • Used latest hash directly instead of fetching (#19486)
  • Optimized StorageChangeSets import in merkle stage dump (#18022)
  • Only chunk multiproof targets if needed (#19326)
  • Wrapped transactions with Arc to avoid deep cloning (#19350)
  • Removed pending queue from MultiproofManager (#19178)
  • Background initialization of proof workers (#19012)
  • Worker pooling for account proofs (#18901)
  • Worker pooling for storage in multiproof generation (#18887)
  • Cached storage proof root of missed leaves (#18750)
  • Optimized account cache updates to reduce duplicate lookups (#18825)

Features

  • Added broadcast channel for received flashblocks (#19459)
  • Scheduled Fusaka hardfork (#19455)
  • Added --rpc.evm-memory-limit flag (#19279)
  • Added pruning of transactions from static-files (#19241)
  • Added push gateway support for Prometheus metrics (#19243)
  • Allowed using SafeNoSync for MDBX (#18945)
  • Implemented eth_fillTransaction (#19199)
  • Enabled OTLP traces export via tracing-otlp CLI arg (#18242)
  • Added metrics for safe and finalized block heights (#18987)
  • Derived dev accounts from mnemonic in dev mode (#18299)
  • Implemented debug_dbGet RPC (#19369)
  • Added MDBX put-append for fast ordered puts (#18603)
  • Node import now supports importing gzip compressed files (#17877)

OP Stack

This release comes with Jovian hardfork support:

  • Mainnet Superchain at Tue 2 Dec 2025 16:00:01 UTC (1764691201)
  • Sepolia Superchain at Wed 19 Nov 2025 16:00:01 UTC (1763568001)

Improved flashblock support

  • Support for pending block tag in eth_getLogs for flashblocks (#19388)
  • eth_getLogs with the pending tag now supports logs from flashblocks: (#19388)

Features

  • Support for pending block tag in eth_getLogs for flashblocks (#19388)
  • Added FlashblocksListeners container and receipt helpers (#19446)
  • Implemented miner_setGasLimit RPC (#19247)
  • Added Jovian precompiles to op-reth (#19333)
  • Added Jovian timestamps to op-reth (#19290)
  • Added OP E2E mineblock test with Isthmus activated at genesis (#19305)
  • Updated receipts to transmit over RPC with Jovian compatible fields (#19368)
  • Fixed Jovian block validation (#19304)
  • Tracked DA footprint block limit and updated basefee calculation for Jovian (#19048)
  • Added optional state root calculation for flashblocks (#18721)
  • Custom FlashBlock decoder from bytes (#18770)
  • Additional pending flashblock data (#18776)
  • Flashblock service metrics (#18697)
  • Prefill cache on canonical tip updates for flashblocks (#18691)
  • Added RPC cache for latest block and receipts (#19483)

Bug Fixes

  • Fixed Jovian header validation, decoupled excess blob gas and blob gas used (#19338)
  • Removed dead OpL1BlockInfo.number field and writes (#19325)
  • Guarded follow-up inserts by payload_id to prevent mixed sequences (#19264)
  • Fixed no_std compatibility in reth-optimism-chainspec (#19271)
  • Added init-state support for op-reth chains that are not op-mainnet (#19116)
  • Forwarded pre-bedrock transaction RPC calls to historical endpoint (#18784)
  • Optimized Optimism deposit transaction prewarming (#18327)

SDK

Features

  • Made ChainSpec generic over header (#18856)
  • Made EVM and RPC conversions fallible (#18685)
  • Made ConfigureEngineEvm methods faillible (#18827)
  • Simplified EthApiSpec trait (#18674)
  • Made EthEvmConfig generic over chainspec (#16758)
  • Added support for custom transaction error types in EthApiError (#18844)
  • Supported custom transaction types in EthTransactionValidator (#18655)
  • Supported empty SUPPORTED_CHAINS for ChainSpecParser (#18679)
  • Added e2e builder API for configuring test node setups (#19146)
  • Unified Pipeline creation codepaths (#18955)
  • Made p2p networkId configurable (#19020)
  • Added beacon consensus handle to NodeClient for e2e testing (#18632)
  • Wrote headers and transactions only to static files (#18681)

Breaking SDK changes

  • Removed FullNodePrimitives (#19176)
    Can be migrated by replacing FullNodePrimitives with just NodePrimitives.
  • chore: add queued reason to event (#19476)
  • chore: replace CacheDB with State<DB> in RPC crate (#19330)
  • feat: make more EVM and RPC conversions fallible (#18685)
  • Made ConfigureEngineEvm methods faillible (#18827)

Dependencies

Compatible versions:

revm: 31.0.0
alloy-*: 1.1.0
op-alloy: 0.22.0
alloy-evm: 0.23.0
revm-inspectors: 0.32.0

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

See Update Priorities for more information about this table.

All Changes

  • chore: bump v1.9.0 (#19507)
  • chore: bump hardforks (#19506)
  • fix: dead link Sentry (#19505)
  • chore: bump version 1.8.4 (#19503)
  • chore: bump min ckzg (#19504)
  • fix: skip code check in get_transaction_by_sender_and_nonce (#19502)
  • chore: add custom hardforks example (#19391)
  • docs(banlist): document timeout update behavior on re-ban (#19497)
  • perf: improve ethsendrawsync for op with flashblock (#19462)
  • chore(op-reth/scr): update superchain-registry configs. Commit 9e3f71cee0e4e2acb4864cb00f5fbee3555d8e9f (#19495)
  • fix: spawn block fetching blocking (#19491)
  • fix: use cost when checking fee cap (#19493)
  • feat(reth-bench-compare): upstream from personal repo (#19488)
  • chore: Various cleanups after consistent DB view removal (#19489)
  • docs(trie): fix PrefixSetMut docs and freeze() comment (#19467)
  • feat: support pending block tag in eth_getLogs for flashblocks (#19388)
  • perf: use latest hash directly (#19486)
  • perf(rpc): use cache for latest block and receipts (#19483)
  • fix(net): remove capacity inflation from buffered blocks size calculation (#19481)
  • feat: add helper to disable discovery (#19478)
  • chore: add queued reason to event (#19476)
  • chore: add --miner.gaslimit alias (#19475)
  • chore: Remove unused jsonrpsee tracing import in exex subscription example (#19448)
  • chore(grafana): deduce label by aggregate metrics (#18550)
  • fix: update min_block on StaticFileProvider::update_index (#19469)
  • chore(node): compact duration formatting in stage progress logs (#18720)
  • chore: add js-tracer feature to bins (#19441)
  • chore: bump revm 31 (#19470)
  • fix(db): OverlayStateProviderFactory: default validation lower bound to 0 (#19468)
  • chore: use name const for cli name (#19466)
  • feat: schedule fusaka (#19455)
  • refactor(prune): derive EnumIter instead of explicit array of segments (#19465)
  • feat: add broadcast channel for received flashblocks (#19459)
  • feat(op-reth): add FlashblocksListeners container and receipt helpers (#19446)
  • fix: avoid unnecessary self.clone() in OpNetworkBuilder::network_config (#19451)
  • chore: add config_mut helpers (#19436)
  • chore(deps): weekly cargo update (#19443)
  • chore: OverlayStateProviderFactory: don't query for reverts unless necessary (#19412)
  • feat: support custom Download command defaults (#19437)
  • feat(tasks): distinguish blocking and non-blocking tasks in metrics (#18440)
  • revert: "feat: Add building and publishing of *.deb packages (#18615)" (#19011)
  • perf(cli): optimize StorageChangeSets import in merkle stage dump (#18022)
  • fix: Inline value match in SparseTrie::find_leaf to remove redundant wrapper (#19138)
  • chore(docker): remove apt-get upgrade to ensure reproducible and faster builds (#19080)
  • fix: rename variable in block_hash method from 'code' to 'hash' (#19269)
  • perf(tree): only chunk multiproof targets if needed (#19326)
  • perf: optimize SyncHeight event handling to avoid recursive calls (#19372)
  • fix(txpool): correct propagate field name in Debug output (#19278)
  • chore(codecs): replace todo with unimplemented in Compact derive (#19284)
  • fix(beacon-api-sidecar): use correct block metadata for reorged blobs (#19424)
  • perf: only chunk if more > 1 available (#19427)
  • feat(op-reth): implement miner_setGasLimit RPC (#19247)
  • feat(node): CLI argument for sync state idle when backfill is idle (#19429)
  • perf: bias towards proof results (#19426)
  • feat(reth-bench): Default --wait-time to 250ms (#19425)
  • fix(codecs): return remaining slice in EIP-1559 from_compact (#19413)
  • chore: add count field to trace (#19422)
  • fix: Properly set MerkleChangeSets checkpoint in stage's fast-path (#19421)
  • fix(compact): prevent bitflag overflow by using usize accumulator (#19408)
  • chore: update superchain reg to c9881d543174ff00b8f3a9ad3f31bf4630b9743b (#19418)
  • chore: add tracing features to node-core crate (#19415)
  • fix: highest_nonces update in PendingPool::remove_transaction (#19301)
  • feat: add --rpc.evm-memory-limit flag (#19279)
  • fix(engine): remove redundant parent_to_child cleanup in insert_executed (#19380)
  • feat: Output the block execution outputs after validating (reth-stateless) (#19360)
  • chore(net): avoid cloning GetBlockBodies request (#19404)
  • fix: accurate build features reporting in reth --version (#19124)
  • fix: Prune checkpoint fixes (#19407)
  • fix(engine): trigger live sync after backfill completes at finalized (#19390)
  • fix(cli): Metrics log when passed metrics port 0 (#19406)
  • perf: box ForkId in Peer struct to reduce size (#19402)
  • chore: bump discv5 (#19400)
  • chore: reuse gzip read buffer to avoid per-iteration allocation (#19398)
  • perf(codecs): avoid String allocation in proc macro type checking (#19354)
  • chore: fix unused warning (#19395)
  • chore: fix unused dep (#19397)
  • feat: display blob params alongside hardfork info (#19358)
  • chore(primitives-traits): gate test-only modules (#19393)
  • feat(jovian/rpc): update receipts to transmit over RPC with Jovian compatible fields (#19368)
  • docs: fix otlp flag in monioring docs (#19394)
  • docs: improve RESS protocol module documentation (#19370)
  • fix: remove PersistenceState from TreeCtx (#19356)
  • fix(engine): align compute_trie_input docs with actual persistence behavior (#19385)
  • feat(precompiles/jovian): add jovian precompiles to op-reth (#19333)
  • feat(rpc): implement debug_dbGet (#19369)
  • fix: add more context to expected hive failures (#19363)
  • feat(jovian/timestamps): add jovian timestamps to op-reth (#19290)
  • chore: Update nix flake (#19386)
  • fix(op-reth): use latest for runtime image (#19331)
  • fix: Don't always clone in-memory overlays in OverlayStateProviderFactory (#19383)
  • chore: bump 1.8.3 (#19379)
  • feat: add pruning of transactions from static-files (#19241)
  • fix(trie): use block hash in OverlayStateProviderFactory (#19353)
  • feat: impl a function to create new instance of TransactionEvents (#19375)
  • perf: wrap tx with Arc to avoid deep cloning (#19350)
  • refactor(trie): restructure proof task workers into structs (#19344)
  • fix(op-reth/consensus): fixes header validation for jovian. decouple excess blob gas and blob gas used (#19338)
  • feat: insert at timestamp (#19365)
  • feat(reth-optimism-node): Add OP E2E mineblock test with isthmus activated at genesis (#19305)
  • chore: add ChainHardforks::extend (#19332)
  • chore: dont write receipts to both storages on archive node (#19361)
  • chore: update docs for expected test failure (#19343)
  • fix(pipeline): ensure we dont pass an outdated target to header stage (#19351)
  • refactor(trie): reorder proof_task.rs for better code organization (#19342)
  • refactor: make DatabaseProof trait stateful (#18753)
  • fix(engine): Eliminates spurious warning logs in prewarm task (#19133)
  • chore(deps): bump actions/download-artifact from 5 to 6 (#19336)
  • chore(deps): bump actions/upload-artifact from 4 to 5 (#19335)
  • feat(metrics): improve multiproof worker metrics (#19337)
  • chore: update Grafana dashboard with split pending multiproof metrics (#19339)
  • chore: replace CacheDB with State<DB> in RPC crate (#19330)
  • fix: update section name in expected failures, add more concise comments (#19328)
  • chore(engine): Remove ConsistentDbView (#19188)
  • feat(metrics): add push gateway support for Prometheus metrics (#19243)
  • chore: remove trie capacity metrics (#19327)
  • docs: improve documentation for mock database and transactions (#19302)
  • feat(jovian/block-validation): fix block validation for jovian (#19304)
  • fix(trie): Rewrite InMemoryTrieOverlay (with proptests!) (#19277)
  • chore(trie): reduce sparse trie tracing (#19321)
  • chore: remove dead OpL1BlockInfo.number field and writes (#19325)
  • refactor(trie): Unify proof return types (#19311)
  • fix(prune): Add unused variants back to PruneSegment enum (#19318)
  • docs(eth-wire): update docs to reflect eth-wire-types, alloy_rlp, version-aware decoding, and RLPx multiplexing (#19319)
  • chore: use hex bytes type (#19317)
  • docs: populate modify-node section with node-custom-rpc implementation guide (#18672)
  • chore: remove redundant PhantomData from NodeHooks (#19316)
  • fix(trie): Fix trie_reverts not returning sorted nodes (#19280)
  • ci: pin Bun to v1.2.23 (#19315)
  • chore(net): upgrade some noisy spans to TRACE (#19312)
  • fix(engine): module doc to reflect schnellru::LruMap backend (#19296)
  • fix(fs): correct ReadLink error message and add missing read_link wra… (#19287)
  • chore(ethereum): remove redundant std::default::Default import (#19299)
  • refactor: add more Snap response types (#19303)
  • refactor(trie): rename queue_storage_proof to send_storage_proof (#19310)
  • chore(deps): weekly cargo update (#19300)
  • fix(node): classify connect_async failures as WebSocket and use Url parse error (#19286)
  • feat(tracing): set default OTLP log level to WARN (#19283)
  • chore(trie): do not create a parent span for proof worker handle (#19281)
  • fix(trie): correct comment in sparse_trie_reveal_node_1 test (#19193)
  • feat(trie): proof task tracing improvements (#19276)
  • fix: hive tests consume test suite (#19240)
  • perf: Eliminate spawn_blocking in multiproof manager (#19203)
  • fix(optimism): guard follow-up inserts by payload_id to prevent mixed sequences (#19264)
  • feat: allow using SafeNoSync for MDBX (#18945)
  • fix(engine): re-insert storage cache and use arc (#18879)
  • chore: add add_or_replace_if_module_configured method (#19266)
  • fix: no_std compatibility in reth-optimism-chainspec (#19271)
  • feat: eth_fillTransaction (#19199)
  • chore(net): remove unnecessary TODO (#19268)
  • chore: rm StaticFileReceipts pruner (#19265)
  • chore: remove db pruning of header/txs segments (#19260)
  • fix: return hashed peer key as id (#19245)
  • feat(otlp-tracing): enable to export traces with grpc export with tracing-otlp and tracing-otlp-protocol arg (#18985)
  • fix(engine): shrink tries after clearing (#19159)
  • fix(cli): prune CLI argument names (#19215)
  • docs: add usage examples and documentation to NoopConsensus (#19194)
  • refactor(static-file): remove unused segments (#19209)
  • chore: align env filter comment with configured directives (#19237)
  • fix: use known paris activation blocks in genesis parsing (#19258)
  • feat(prune): Add an empty reth-prune-db crate (#19232)
  • fix: use network id in p2p command (#19252)
  • docs: correct Payment tx type from 0x7E to 0x2A (#19255)
  • perf: rm pending queue from MultiproofManager (#19178)
  • fix(engine): payload processor tracing event targets (#19223)
  • feat(jovian): track da footprint block limit. Update basefee calculation (#19048)
  • chore: swap order for canon stream (#19242)
  • fix(node): remove unused ConsensusLayerHealthEvent variants (#19238)
  • revert: "fix(engine): flatten storage cache (#18880)" (#19235)
  • chore(e2e): relax bounds (#19231)
  • chore(storage): remove UnifiedStorageWriterError (#19210)
  • fix: rename consume-* test suite (#19230)
  • test(hive): Ignore new failures that are won't fix (#19218)
  • chore: add elapsed info log (#19211)
  • fix: incorrect RPC namespace reference (#19225)
  • chore: use retrylayer for benchmarkcontext (#19227)
  • fix(reth-bench): Lower block channel capacity and make it configurable (#19226)
  • feat: warning log when blocked on execution cache (#19222)
  • fix: OverlayStateProviderFactory: validating trie changeset range and revert target (#19207)
  • fix: captured impl trait lifetime (#19216)
  • chore: only alloc required capacity (#19217)
  • perf: check prewarm termination multiple times (#19214)
  • fix: small features fix (#19212)
  • refactor(prune): remove receipts log filter segment (#19184)
  • perf(net): convert Bytes to BytesMut to avoid reallocation (#19204)
  • chore: remove rkrasiuk from codeowners (#19206)
  • refactor: decouple max proof task concurrency from inflight proof limits (#19171)
  • feat(engine): improve payload validator tracing spans 2 (#19155)
  • docs: improve SealedBlockRecoveryError documentation (#19120)
  • feat: improve oversized data error message (#19190)
  • chore: fix misleading log message for body size check (#19173)
  • fix: add arrayvec to dev-dependencies in reth-trie-common (#19192)
  • test: add node record parse test (#19172)
  • chore: rm generic array dep from discv4 (#19140)
  • fix: drop support for total difficulty table (#16660)
  • fix: remove unnecessary trait bounds in extend_sorted_vec helper (#19154)
  • feat(e2e): add builder API for configuring test node setups (#19146)
  • chore: fix incorrect hex value in comment (0x2A instead of 0x7E) (#19181)
  • refactor(ipc): simplify RpcServiceCfg from enum to struct (#19180)
  • refactor: remove FullNodePrimitives (#19176)
  • fix(cli): prune config saving to file (#19174)
  • chore: remove total difficulty from HeaderProvider (#19151)
  • feat(storage): replace unreachable todo!() with explicit unreachable!() in compact derive (#19152)
  • perf: fix redundant Arc clone in file_client tests (#19170)
  • chore: rm high frequency otel-related debug logs (#19147)
  • fix: Revert "feat(engine): improve payload validator tracing spans (#18960)" (#19145)
  • perf: batch byte for serialization (#19096)
  • chore(config): clean up gas limit code (#19144)
  • fix: remove tautological assertions in validator tests (#19134)
  • fix(prune): Disable pruning limits (#19141)
  • Revert "refactor: unify Pipeline creation codepaths" (#19143)
  • chore: fix+update nix flake (#19142)
  • chore(trie): Add lifetime to cursors returned from Trie/HashedCursorFactorys (#19114)
  • fix: Add support for init-state for op-reth chains that are not op-mainnet… (#19116)
  • fix(e2e): gracefully wait for payload (#19137)
  • feat: add helper apply fns (#19122)
  • fix: Remove duplicate debug log in write_blocks_to_rlp (#19132)
  • chore(deps): weekly cargo update (#19126)
  • chore: remove redundant collect in debug trace (#19121)
  • fix(net): correct error messages for decrypt and header paths (#19039)
  • chore: fix clippy (#19118)
  • docs: fix wrong label for --color=auto (#19110)
  • feat(stateless): make UncompressedPublicKey serializable (#19115)
  • feat(cli): Reuse a single StaticFileProducer across file import chunks (#18964)
  • feat: add capacity metrics for tries (#19117)
  • feat(engine): improve payload validator tracing spans (#18960)
  • feat: convert pooled blobs transition (#19095)
  • fix: Deduplicate hashed storage preparation in MemoryOverlayStateProvider (#19087)
  • refactor: naming fix for multiproof dispatch (#19102)
  • feat: derive dev accounts from mnemonic in dev mode (#18299)
  • chore: add comment section for claude (#19108)
  • fix: add bundle and transaction context to call_many errors (#18127)
  • feat: convert blobs at RPC (#19084)
  • fix(cli): remove redundant EthChainSpec bound in run_with_components (#19106)
  • fix(sim): clamp bundle timeout to max instead of falling back to default (#18840)
  • fix: add revm-state to dev-dependencies of chain-state crate (#19044)
  • chore: lower ecies instrument calls to trace (#19004)
  • chore: exhaustive match for builtin tracer (#19105)
  • feat(cli): add method CliRunner::block_on (#19088)
  • fix(cli): Remove duplicit static file header and transaction append (#19103)
  • chore: init state touchups (#19066)
  • feat: add Pool::remove_transaction(hash) (#19098)
  • docs: fix duplicate method comments in ChainInfoTracker (#18929)
  • chore: clarify the wrong Length description (#19094)
  • fix: accurately track account and code weighs (#19091)
  • revert: "fix: Revert "chore: disable fee charge in env"" (#19073)
  • fix: support rlp hex in read_header_from_file (#19089)
  • fix(net): remove redundant remove of evicted hash in fetcher (#19083)
  • chore: remove unused rayon pool from WorkloadExecutor (#19065)
  • refactor: rename disable_caching_and_prewarming to disable_prewarming (#19072)
  • feat: Stateless validation function receives public keys corresponding to each transaction (#17841)
  • chore(fs-util): remove redundant tmp_path clone (#19003)
  • fix(discv5): get fork_id from Enr for all network stacks (#18988)
  • feat(trie): Merge trie changesets changes into main (#19068)
  • fix(net): Increment out_of_order_requests in BodiesDownloader on range reset (#19063)
  • chore: rename CLI argument --tracing-otlp-level to --tracing-otlp.filter (#19061)
  • refactor: revert Remove max_proof_task_concurrency as configurable variable" (#19062)
  • refactor: Remove max_proof_task_concurrency as configurable variable (#19009)
  • chore: defense for new SubscriptionKind item (#19054)
  • feat: use env filter for otlp, respect otel env var (#19050)
  • refactor(txpool): reuse cached gas_limit value (#19052)
  • feat: stricter bound (#19049)
  • fix(session): remove Clone derive from SessionCounter (#19051)
  • feat: bump revm (#18999)
  • chore(primitives-traits): relax SignerRecoverable bounds for Extended<B,T> (#19045)
  • chore: increase versioned hash index cache (#19038)
  • fix: correct Compact impl for Option (#19042)
  • fix: use header type generic for mask (#19037)
  • chore(ci): update expected failures (#19034)
  • perf: background init of workers (#19012)
  • feat(engine): deprecate TestPipelineBuilder::with_executor_results (#19017)
  • fix: respect cli blob size setting (#19024)
  • fix: unused warnings for tracing (#19025)
  • chore: bump alloy-core (#19026)
  • feat: add pending sequence as pub (#19022)
  • chore: remove unused Args struct from exex-subscription example (#19019)
  • feat(devp2p): make eth p2p networkId configurable (#19020)
  • chore(ci): bump hive eest to v5.3.0 (#19021)
  • chore: refactor loop in add_new_transactions (#19006)
  • chore(privitives-traits): remove unused serde derives and camelCase attribute (#19014)
  • feat: add metrics for safe and finalized block heights (#18987)
  • chore: bump book timeout (#19016)
  • ci: Add tests for Paris scenario in hive.yml (#19013)
  • fix: Set Era pipeline stage to last checkpoint when there is no target (#19000)
  • chore: replace poll_next_unpin loop with poll_recv_many (#18978)
  • refactor(engine): simplify InvalidBlockWitnessHook::on_invalid_block for better testability (#18696)
  • fix: required optimism primitives features in db-api (#19005)
  • refactor(trie): remove proof task manager (#18934)
  • refactor(storage): fix ChainStateKey enum variant name (#18992)
  • perf(tree): worker pooling for account proofs (#18901)
  • fix(engine): flatten storage cache (#18880)
  • refactor: unify Pipeline creation codepaths (#18955)
  • chore(evm): mark ExecuteOutput as unused and slated for removal (#18754)
  • fix(stateless): enforce BLOCKHASH ancestor header limit (#18920)
  • chore: remove unused imports in blockchain_provider (#18867)
  • fix(network): prevent metric leak in outgoing message queue on session teardown (#18847)
  • chore: bump otlp crates (#18984)
  • refactor: convert satisfy_base_fee_ids to use closure (#18979)
  • chore(optimism): remove unnecessary Debug bounds from header generics (#18989)
  • feat: allow otlp level to be configurable (#18981)
  • feat(cli): enable traces export via tracing-otlp cli arg (#18242)
  • perf(tests): remove redundant format! in ef-tests run_only (#18909)
  • chore(ci): update eest 7594 issue link in hive expected failures file (#18976)
  • chore(rpc): Remove redundant U256::from in suggested_priority_fee (#18969)
  • ci: remove reproducible build from release.yml (#18958)
  • fix: use max B256 for upper bound in empty-storage check (#18962)
  • fix: remove noisy stderr prints in ERA1 cleanup (EraClient::delete_outside_range) (#18895)
  • fix: misleading error message in db list: show actual table name (#18896)
  • fix(trie): Properly upsert into StoragesTrie in repair-trie (#18941)
  • perf(tree): add elapsed time to parallel state root completion log (#18959)
  • refactor(cli): use structured logging (tracing) in p2p command (#18957)
  • refactor: replace println! with structured logging in test_vectors (#18956)
  • chore(rpc): Moves SequencerMetrics into reth-optimism-rpc (#18921)
  • fix(payload): correct Debug label for PayloadTimestamp in PayloadServiceCommand (#18954)
  • fix(testsuite): Fix unused updates in e2e-test-utils (#18953)
  • fix(example): launch with debug capabilities (#18947)
  • fix(examples): change method to launch with debug capabilities (#18946)
  • refactor: remove needless collect() calls in trie tests (#18937)
  • chore(grafana): use precompile address as legend (#18913)
  • perf(tree): worker pooling for storage in multiproof generation (#18887)
  • feat: wait for new blocks when build is in progress (#18831)
  • chore: align node_config threshold constant (#18914)
  • docs: duplicate comment in Eip4844PoolTransactionError (#18858)
  • ci: cache hive simulator images to reduce prepare-hive job time (#18899)
  • refactor: replace collect().is_empty() with next().is_none() in tests (#18902)
  • feat(provider): add get_account_before_block to ChangesetReader (#18898)
  • refactor(engine): separate concerns in on_forkchoice_updated for better maintainability (#18661)
  • chore(node): simplify EngineApiExt bounds by removing redundant constraints (#18905)
  • fix(trie): Reveal extension child when extension is last remaining child of a branch (#18891)
  • chore: make clippy happy (#18900)
  • chore: relax ChainSpec impls (#18894)
  • refactor: eliminate redundant allocation in precompile cache example (#18886)
  • fix(era-utils): fix off-by-one for Excluded end bound in process_iter (#18731)
  • docs: yellowpaper sections in consensus implementation (#18881)
  • feat(storage): read headers and transactions only from static files (#18788)
  • feat: Use generic HeaderTy for reth db get static-file headers (#18870)
  • fix: streamline payload conversion in custom engine API (#18864)
  • docs(engine): fix outdated comment on TreeMetrics (#18855)
  • chore: update hive expected/ignored failures (#18863)
  • feat: make ChainSpec generic over header (#18856)
  • feat: Add building and publishing of *.deb packages (#18615)
  • feat: OverlayStateProvider (#18822)
  • chore(cli): remove unnecessary ProviderFactory clone in db_ro_exec! (#18845)
  • chore: relax trait bounds for EmptyBodyStorage in storage API (#18842)
  • chore: do not generate fuzz tests in Compact macro (#18849)
  • perf(multiproof): cache storage proof root of missed leaves (#18750)
  • feat(rpc): support custom transaction error types in EthApiError (#18844)
  • ci: cache zepter installation (#18843)
  • perf: optimize account cache updates to reduce duplicate lookups (#18825)
  • docs: apply spelling and grammar fixes (#18836)
  • feat(evm): Make ConfigureEngineEvm methods faillible (#18827)
  • perf: avoid hash copies (#18834)
  • feat(flashblocks): relax Sync bounds on Sink and connect futures (#18830)
  • feat: integrate EvmEnv helpers (#18817)
  • fix(ress): avoid panic on Missing trie updates in ress provider witness construction (#18796)
  • chore(node): remove no-op impl for LaunchContextWith WithComponents (#18821)
  • fix: track inemorysize more accurately (#18820)
  • fix: Add eth69 status validation (#18819)
  • chore: use exact size for account weight (#18816)
  • chore: use correct inflight metric (#18815)
  • feat(node): reduce the status logging (#18010)
  • refactor(engine): simplify validate_block_with_state (#18659)
  • feat(op-reth): add optional state root calc for flashblocks (#18721)
  • chore: update ETHEREUM_BLOCK_GAS_LIMIT (#18779)
  • feat: impl Debug for FnLauncher (#18807)
  • fix: poll the pinger timeout Sleep future (#18797)
  • fix(storage): clean up HeaderNumbers entries during block unwinds (#18790)
  • fix: Prevent u64 timestamp wrap-around in LocalMiner (#18791)
  • chore: bump alloy 1.0.37 (#18795)
  • chore: bump version to 1.8.2 (#18792)
  • fix: remove cancun check (#18787)
  • fix: remove the leading hash comparison from RecoveredBlock::PartialEq. (#18785)
  • fix(op-reth): forward pre-bedrock transaction RPC calls to historical endpoint (#18784)
  • feat(stateless): enable test runs to return execution witness (#18740)
  • fix(transaction-pool): Fix wrong assertion (#18778)
  • feat(op-reth): custom FlashBlock decoder from bytes (#18770)
  • feat(flashblocks): additional pending flashblock data (#18776)
  • refactor(engine): small nits - remove shallow abstraction for decoded_storage_proof (#18780)
  • refactor: remove redundant Setup::new() method (#18781)
  • feat(eth-wire): implement disconnect on Status message after handshake (#18773)
  • feat(storage): write headers and transactions only to static files (#18681)
  • fix: correct TxTypeCustom extended identifier decoding (#18769)
  • fix: prevent integer underflow in pipeline unwind target calculation (#18743)
  • fix(primitives-traits): use size_of::() for ommers capacity in BlockBody (#18764)
  • perf: optimize Optimism deposit transaction prewarming (#18327)
  • chore(engine): remove unnecessary ChainSpecProvider bound from invalid block witness hook (#18760)
  • chore(deps): weekly cargo update (#18757)
  • chore: remove doc_auto_cfg feature (#18758)
  • fix(rpc): fix eth_config impl (#18744)
  • docs: add note to launch on --dev mode (#18745)
  • test: add missing Drop trait tests for CancelOnDrop (#18749)
  • docs(ethereum): extend run with debug.rpc-consensus-url (#18747)
  • feat: keep track of most recently emitted range update and change int… (#18722)
  • chore(trie): demote verbose proof debug logs to TRACE (#18738)
  • fix(chain-state): remove redundant transaction clone in test utils (#18710)
  • fix(rpc-engine): don't fetch the pruned block (#18589)
  • feat(rpc): merge the header not found and resource not found (#18657)
  • feat: make more EVM and RPC conversions fallible (#18685)
  • feat(cli): configure multiproof chunking via arguments (#18736)
  • feat(downloaders): add file-client feature gate (#18707)
  • fix(rpc/engine): check osaka in getBlobsV1 (#18669)
  • fix: Apply WS CORS regardless of HTTP being enabled (#18729)
  • chore: Accept range in HashedPostState::from_reverts (#18728)
  • perf(multiproof): do not chunk more tasks when task queue is full (#18727)
  • fix: increase backoff timeout (#18733)
  • fix: Bearer token parsing vulnerability (#18712)
  • docs: add note about v5 (#18701)
  • perf: avoid redundant bytecode hash calculation in RPC provider (#18711)
  • chore: update spawn maintenance tasks vis (#18709)
  • perf(engine): reduce cloning on terminate caching (#18693)
  • chore: bump rust to edition 2024 (#18692)
  • fix(primitives-traits): delegate is_create for Extended::Other to fix create-detection (#18699)
  • chore(flashblocks): flasblock service metrics (#18697)
  • feat(net): added check for non zero latest_hash in BlockRangeUpdate (#18695)
  • feat(flashblocks): prefill cache on canonical tip updates (#18691)
  • fix(engine): remove redundant parent_to_child removal during eviction (#18648)
  • feat: node import support importing gzip compressed file (#17877)
  • fix(cli): replace unwrap with error propagation in merkle stage (#18656)
  • fix(engine): align sparse trie removal log target with engine::root::sparse (#18686)
  • chore(engine): remove unused EngineServiceError from engine service (#18666)
  • feat: support empty SUPPORTED_CHAINS for ChainSpecParser (#18679)
  • test: add unwind parse test (#18677)
  • docs: some fixes on discv4 docs (#18601)
  • feat(net): correct per-response size metric to avoid capacity/empty-block inflation (#18553)
  • chore: enable all Ethereum protocol versions instead of hardcoding (#18065)
  • feat(bootnode): Persists the discovery secret key (#18643)
  • refactor: simplify EthApiSpeс trait (#18674)
  • feat(db): add MDBX put-append for fast ordered puts (#18603)
  • fix: avoid panic in new-payload-fcu benchmark (#18602)
  • chore(revert): add tokio runtime with custom thread naming (#18670)
  • chore: update voc.config.to text to v1.8.1 (#18667)
  • docs(db): correct misleading test comments in post_state.rs (#18664)
  • docs: add comprehensive e2e test actions reference documentation (#18621)
  • chore: support custom transaction types in EthTransactionValidator (#18655)
  • docs: rm 8MB stack size comment in BlockingTaskPool (#18616)
  • fix(payload): reversed-order test for validate_execution_requests (#18593)
  • fix: Prevent potential underflow in static file header healing (#18628)
  • fix(engine): correct misleading test comments in cached_state.rs (#18652)
  • feat(e2e): add beacon consensus handle to NodeClient (#18632)
  • refactor(engine): simplify on_new_payload (#18613)

Binaries

See pre-built binaries documentation.

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

Reth

System Architecture Binary PGP Signature
x86_64 reth-v1.9.0-x86_64-unknown-linux-gnu.tar.gz PGP Signature
aarch64 reth-v1.9.0-aarch64-unknown-linux-gnu.tar.gz PGP Signature
x86_64 reth-v1.9.0-x86_64-pc-windows-gnu.tar.gz PGP Signature
x86_64 reth-v1.9.0-x86_64-apple-darwin.tar.gz PGP Signature
aarch64 reth-v1.9.0-aarch64-apple-darwin.tar.gz PGP Signature
Docker paradigmxyz/reth -

OP-Reth

System Architecture Binary PGP Signature
x86_64 op-reth-v1.9.0-x86_64-unknown-linux-gnu.tar.gz PGP Signature
aarch64 op-reth-v1.9.0-aarch64-unknown-linux-gnu.tar.gz PGP Signature
x86_64 op-reth-v1.9.0-x86_64-pc-windows-gnu.tar.gz PGP Signature
x86_64 op-reth-v1.9.0-x86_64-apple-darwin.tar.gz PGP Signature
aarch64 op-reth-v1.9.0-aarch64-apple-darwin.tar.gz PGP Signature
Docker paradigmxyz/op-reth -

What's Changed

New Contributors

Full Changelog: v1.8.1...v1.9.0

Don't miss a new reth release

NewReleases is sending notifications on new releases.