Skip to content

chore(txpool): add sanity tests for blob fee bit handling#18258

Merged
mattsse merged 6 commits intomainfrom
feat/txpool-blob-fee-sanity-checks
Sep 5, 2025
Merged

chore(txpool): add sanity tests for blob fee bit handling#18258
mattsse merged 6 commits intomainfrom
feat/txpool-blob-fee-sanity-checks

Conversation

@yongkangc
Copy link
Member

@yongkangc yongkangc commented Sep 4, 2025

Summary

Adds targeted sanity check tests to prevent regression of the critical bug from PR #18215 where non-EIP4844 transactions got stuck in BaseFee pool due to incorrect ENOUGH_BLOB_FEE_CAP_BLOCK bit removal.

Background

PR #18215 exposed a bug as non-4844 txns had their the ENOUGH_BLOB_FEE_CAP_BLOCK bit removed from all transactions and ended up in the base fee pool. PR #18218 reverted the change but lacked regression tests.

Added Tests

1. test_non_4844_blob_fee_bit_invariant

Verifies the core invariant: non-EIP4844 transactions always have ENOUGH_BLOB_FEE_CAP_BLOCK bit set and reach Pending pool.

2. test_blob_fee_enforcement_only_applies_to_eip4844

Tests that blob fee enforcement only affects EIP-4844 transactions:

  • EIP-4844 transactions: blob fee bit removed when blob fee insufficient → Blob pool
  • Non-4844 transactions: blob fee bit always remains true → Pending pool

3. test_basefee_decrease_preserves_non_4844_blob_fee_bit

Critical test that reproduces the exact PR #18215 bug scenario:

  • Non-4844 transaction starts in BaseFee pool (high basefee)
  • Retains ENOUGH_BLOB_FEE_CAP_BLOCK bit even in BaseFee pool
  • When basefee decreases, gets promoted to Pending pool
  • Critical: ENOUGH_BLOB_FEE_CAP_BLOCK bit must be preserved during promotion

This test would have caught the original bug where the blob fee bit was incorrectly removed during basefee enforcement.

Core Rule Enforced

Only EIP-4844 transactions should have conditional blob fee bit logic. Non-4844 transactions must always have ENOUGH_BLOB_FEE_CAP_BLOCK = true.

These targeted tests prevent the critical bug from PR #18215 from reoccurring and ensure regular Ethereum transactions always work properly in Reth's transaction pool.

Building on PR #18218, this commit adds critical sanity check tests to prevent
regression of the bug where non-EIP4844 transactions incorrectly had their
ENOUGH_BLOB_FEE_CAP_BLOCK bit removed, causing them to get stuck in BaseFee
pool instead of reaching Pending pool.

## Added Tests

1. **test_non_4844_always_has_blob_fee_bit**: Verifies that non-EIP4844
   transactions (Legacy, EIP-2930, EIP-1559) always have the ENOUGH_BLOB_FEE_CAP_BLOCK
   bit set, regardless of other conditions.

2. **test_non_4844_reaches_pending_not_basefee**: Ensures non-EIP4844 transactions
   can reach the Pending pool and don't get stuck in BaseFee pool when fees are adequate.

3. **test_guard_blob_fee_bit_logic_for_non_4844**: Tests the critical guarding pattern
   where only EIP-4844 transactions should have conditional blob fee bit logic,
   while non-4844 transactions should always have the bit set to true.

4. **test_blob_fee_bit_invariant_during_basefee_changes**: Verifies the blob fee
   bit invariant is maintained for non-4844 transactions during basefee changes
   and subpool transitions.

## Core Rule Enforced
Only EIP-4844 transactions should have conditional blob fee bit logic.
Non-4844 transactions should always have ENOUGH_BLOB_FEE_CAP_BLOCK = true.

These tests prevent the critical bug from PR #18215 from reoccurring and ensure
regular Ethereum transactions always work properly in Reth's transaction pool.
@yongkangc yongkangc self-assigned this Sep 4, 2025
@yongkangc yongkangc changed the title perf(txpool): add comprehensive sanity checks for blob fee bit handling chore(txpool): add comprehensive sanity checks for blob fee bit handling Sep 4, 2025
These files were accidentally included and are not related to the
txpool blob fee bit sanity check tests.
- Consolidated 4 verbose tests into 2 concise, targeted tests
- test_non_4844_blob_fee_bit_invariant: Tests core invariant
- test_blob_fee_bit_guarding_4844_vs_non_4844: Tests guarding logic
- Reduced test code by ~150 lines while maintaining full coverage
- All transaction pool tests still pass (195/195)
Adds test_basefee_decrease_preserves_non_4844_blob_fee_bit which specifically
tests the exact scenario from PR #18215 bug:

- Non-4844 transaction initially in BaseFee pool (high basefee)
- Retains ENOUGH_BLOB_FEE_CAP_BLOCK bit even in BaseFee pool
- After basefee decrease, gets promoted to Pending pool
- Critical: ENOUGH_BLOB_FEE_CAP_BLOCK bit must be preserved during promotion
- Also gains ENOUGH_FEE_CAP_BLOCK bit appropriately

This test would have caught the PR #18215 bug where blob fee bit was
incorrectly removed from non-4844 transactions during basefee enforcement,
causing them to get stuck in BaseFee pool instead of being promoted.
- Renamed test_blob_fee_bit_guarding_4844_vs_non_4844 to
  test_blob_fee_enforcement_only_applies_to_eip4844
- Updated comments to be clearer about what the test validates
- 'Guarding' was ambiguous - new name clearly describes that blob fee
  enforcement should only affect EIP-4844 transactions, not regular ones
@yongkangc yongkangc marked this pull request as ready for review September 4, 2025 02:01
@yongkangc yongkangc requested a review from mattsse as a code owner September 4, 2025 02:01
@yongkangc yongkangc moved this from Backlog to In Progress in Reth Tracker Sep 4, 2025
@yongkangc yongkangc added A-tx-pool Related to the transaction mempool C-test A change that impacts how or what we test labels Sep 4, 2025
@yongkangc yongkangc changed the title chore(txpool): add comprehensive sanity checks for blob fee bit handling chore(txpool): add sanity tests for blob fee bit handling Sep 4, 2025
Copy link
Collaborator

@mattsse mattsse left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sweet

@mattsse mattsse added this pull request to the merge queue Sep 5, 2025
Merged via the queue into main with commit 254860f Sep 5, 2025
45 checks passed
@mattsse mattsse deleted the feat/txpool-blob-fee-sanity-checks branch September 5, 2025 10:17
@github-project-automation github-project-automation bot moved this from In Progress to Done in Reth Tracker Sep 5, 2025
@jenpaff jenpaff moved this from Done to Completed in Reth Tracker Sep 9, 2025
Soubhik-10 added a commit to Rimeeeeee/reth that referenced this pull request Sep 13, 2025
* feat: optionally disable balance check for `EthTransactionValidator` (paradigmxyz#18086)

* feat(optimism): Launch `FlashBlockService` when websocket URL is provided in `OpEthApi` (paradigmxyz#18077)

* feat: add NoopNetwork example (paradigmxyz#18093)

* feat: add helper for provider with wallet (paradigmxyz#18085)

* feat(optimism): Add `flashblocks_url` as part of rollup args of the `op-reth` CLI (paradigmxyz#18094)

* perf(engine): only fetch headers instead of full blocks for tree tasks (paradigmxyz#18088)

* feat(optimism): Implement conversion of `ExecutionPayloadBaseV1` into `OpNextBlockEnvAttributes` (paradigmxyz#18097)

* feat(optimism): Remove builder of next block environment from `FlashBlockService` (paradigmxyz#18100)

* refactor: make transaction validator functions reusable (paradigmxyz#17929)

Co-authored-by: Arsenii Kulikov <klkvrr@gmail.com>

* feat: add module manipulation methods and RPC server arg helpers (paradigmxyz#18084)

* chore(reth-optimism-cli): use OpTypedTransaction::eip2718_encode (paradigmxyz#18105)

* ci: remove expected failures (paradigmxyz#18099)

* feat: add EIP-7934 block size check to validateBuilderSubmissionV5 (paradigmxyz#18111)

* chore: include err in log (paradigmxyz#18119)

* fix(optimism): Prevent old pending flashblock from being returned from `pending_flashblock` (paradigmxyz#18103)

* chore: make `caller_gas_allowance` an RPC trait method (paradigmxyz#18101)

* fix(optimism): Fix endless poll on the FlashBlockService (paradigmxyz#18120)

* chore: add prewarm traces (paradigmxyz#18117)

* refactor(eth-wire): remove EthVersion::total_messages in favor of EthMessageID::max (paradigmxyz#17999)

* fix(engine): Prevent instant miner from creating empty blocks (paradigmxyz#18108)

Signed-off-by: 7suyash7 <suyashnyn1@gmail.com>

* perf(engine): only clone headers instead of full blocks for tree tasks (paradigmxyz#18116)

* fix(optimism): Verify that flashblocks are not old according to canon state (paradigmxyz#18123)

* fix: import should count on the delta (paradigmxyz#17819)

Signed-off-by: tmel <tmel0103@gmail.com>
Signed-off-by: tmelhao <tmel0103@gmail.com>
Co-authored-by: tmel <tmel0103@gmail.com>

* feat: Forward transactions to a specified endpoint (paradigmxyz#17444)

Co-authored-by: Arsenii Kulikov <klkvrr@gmail.com>

* feat(net): implement support of subprotocols (paradigmxyz#18080)

Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>

* fix(optimism): Fail if latest and base flashblock parent are different (paradigmxyz#18132)

Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>

* fix(txpool): ensure fee changes are updated (paradigmxyz#18137)

* refactor: merge `EthTransactionValidator` and `EthTransactionValidatorInner` (paradigmxyz#18129)

* docs(op): op chains don't require deposit contracts, so as dev chain (paradigmxyz#17988)

Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>

* feat: generalize impl EngineValidatorAddOn for OpAddOns (paradigmxyz#18141)

* perf(engine): pre-allocate Vec capacity in payload processor (paradigmxyz#18148)

* perf(engine): pre-allocate channel handles in prewarm task (paradigmxyz#18147)

* chore(reth-optimism-storage): small refactor code (paradigmxyz#18104)

* fix(trie): Fix call to update_account in witness (paradigmxyz#18154)

* feat(optimism): add FlashblocksRx getter (paradigmxyz#18155)

* perf(reth-invalid-block-hooks): use Reverts::eq reduce clone (paradigmxyz#18159)

* perf(optimism): Pass noop provider to skip state root calculations for flashblocks (paradigmxyz#18161)

* chore: Add 0x prefix and use macro (paradigmxyz#18156)

* fix(optimism): find fb attrs in base fb (paradigmxyz#18164)

* chore(deps): bump actions/upload-pages-artifact from 3 to 4 (paradigmxyz#18076)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* perf: optimize single-element collection creation (paradigmxyz#18168)

* ci: Fix .PHONY declaration for install-reth-bench target in Makefile (paradigmxyz#18152)

* fix: correct logical error in delete_outside_range error message (paradigmxyz#18031)

* refactor: remove unnecessary PathBuf clone in CLI help generator (paradigmxyz#18172)

* chore: simplify dev signed tx conversions (paradigmxyz#18171)

* chore(deps): weekly `cargo update` (paradigmxyz#18174)

Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>

* perf(stages): optimize unwind operation by fetching headers instead full blocks (paradigmxyz#18139)

* chore: avoid using hashmap hashers directly (paradigmxyz#18176)

* feat: enhance engine tree metrics (paradigmxyz#18000)

* perf(txpool): eliminate allocations in basefee enforcement (paradigmxyz#18162)

* perf(optimism): use cached db in `FlashblockService` (paradigmxyz#18125)

Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>

* refactor(optimism): Extract responsibility to connect to a flashblock websocket stream (paradigmxyz#18158)

* test ci on main

* feat(examples): added txpoolExt_clearTxpool to existing example (paradigmxyz#18175)

* fix: Pass prefix set from init_from_state_dump into compute_state_root (paradigmxyz#18185)

* test(optimism): Cover successful decoding of websocket messages in `WsFlashBlockStream` (paradigmxyz#18163)

* test(optimism): Cover the failure case of decoding a non-binary message in `WsFlashBlockStream` (paradigmxyz#18166)

* test(optimism): Cover the case of stream returning errors in `WsFlashBlockStream` (paradigmxyz#18167)

* test(optimism): Cover the case of repeatedly failing to connect to websocket in `WsFlashBlockStream` (paradigmxyz#18169)

* dprint

* fixes

* fixes

* fix: struct serialization to match actual fields (paradigmxyz#18189)

* test(optimism): Test that streaming flashblocks from remote source is successful (paradigmxyz#18170)

* fixes

* fixes

* fixes

* resort

* fixes

* chore: simplify flashblocks poll logic (paradigmxyz#18194)

Co-authored-by: julio4 <30329843+julio4@users.noreply.github.com>
Co-authored-by: Roman Hodulák <roman.hodulak@polyglot-software.com>

* fixes

* chore: impl ExecutorTx for withtxenv (paradigmxyz#18202)

* perf: prepare flashblock txs (paradigmxyz#18201)

Co-authored-by: Arsenii Kulikov <klkvrr@gmail.com>

* fixes

* local tar

* try fork

* try fork

* fix: spawn flashblocks service as blocking (paradigmxyz#18214)

* fixes

* revert: "perf(txpool): eliminate allocations in basefee enforcement" (paradigmxyz#18215)

* fix: incorrect blob fee comparison (paradigmxyz#18216)

* fixes

* add an extra check

* add an extra check

* fix(optimism): Prevent repeated executions of current flashblock sequence (paradigmxyz#18224)

* fixes

* try fix

* added another check

* added another check

* test(optimism): Test that sequence stops before a gap (paradigmxyz#18228)

* feat(optimism): Warn if `FlashBlockService` has stopped (paradigmxyz#18227)

* chore: safe None check (paradigmxyz#18225)

* chore: improve flashblock logs (paradigmxyz#18232)

* fix(download): use updated merkle base URL (paradigmxyz#18236)

* fixes

* fixes

* chore(engine): add better logs and spans for execution (paradigmxyz#18240)

* chore(trie): use instrument instead of manual span (paradigmxyz#18239)

* fix: filter zero storage values when computing withdrawals root in genesis header (paradigmxyz#18213)

* enable by default

* perf(reth-optimism-flashblocks): rm redundant clone (paradigmxyz#18196)

* perf(txpool): eliminate allocations in basefee enforcement (paradigmxyz#18218)

Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>

* fixes

* docs: update urls in docs (paradigmxyz#18245)

* feat(optimism): Respond to ping messages with pong in `WsFlashBlockStream` (paradigmxyz#18212)

* removed one check is_some

* with new release

* test(optimism): Test that `WsFlashBlockStream` pongs a ping (paradigmxyz#18217)

* fixes

* fixes

* chore: downgrade debug to trace  for peer reputation logs (paradigmxyz#18250)

* feat: added amsterdam to hardforks

* use alloy config

* chore: unify engine downloader targets (paradigmxyz#18248)

* fix(optimism): Compare parent hash and latest hash to invalidate cached flashblock (paradigmxyz#18238)

* feat(optimism): Decode text messages in `WsFlashBlockStream` (paradigmxyz#18257)

* chore: remove redundant payload trait bounds (paradigmxyz#18262)

* hivd

* feat(optimism): Respond to close messages in `WsFlashBlockStream` (paradigmxyz#18256)

* fix(optimism): Reconnect if ws stream ends in `WsFlashBlockStream` (paradigmxyz#18226)

* test(optimism): Test that UTF-8 encoded messages are received in `WsFlashBlockStream` (paradigmxyz#18269)

* chore: log prune settings on unwind (paradigmxyz#18270)

* feat:db

* new tarball

* new tarball

* chore: extract `validate_against_parent_gas_limit` into separate fn (paradigmxyz#18277)

* perf: rm redundant collect (paradigmxyz#18281)

* fixes

* fixes

* 100

* rerun

* rerun

* rerun

* tracing

* perf: build local pending block without updates (paradigmxyz#18271)

* perf(db): do not heap-allocate the stage key per query (paradigmxyz#18284)

* chore(txpool): add sanity tests for blob fee bit handling (paradigmxyz#18258)

* fix: check prune checkpoints for unwind target limit (paradigmxyz#18263)

* perf: optimize send raw batching (paradigmxyz#18280)

* perf: specialize single batch request (paradigmxyz#18289)

* chore: delist unused deps with `cargo-machete` (paradigmxyz#18259)

* test(optimism): Test that close message is responded to in `WsFlashBlockStream` (paradigmxyz#18268)

* tracing

* fixes

* perf: specialize validate_transactions_with_origin for task validator (paradigmxyz#18288)

* feat(metrics): add `TxPoolValidatorMetrics` to track inflight validation jobs (paradigmxyz#18295)

* fixes

* fixes

* feat(gpo): add default fee price argument (paradigmxyz#18297)

Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>

* fixes

* feat: introduce setting for delegated txs slots (paradigmxyz#18298)

* feat: expose `EvmEnv` to `caller_gas_allowance` (paradigmxyz#18302)

* perf: specialize len 1 (paradigmxyz#18307)

* trace

* chore: fix various typos in comments and documentation (paradigmxyz#18296)

* perf(e2e-test-utils): optimize block checking by fetching header instead of full block (paradigmxyz#18254)

Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>

* feat: introduce maybe_pending method to StateProviderFactory (paradigmxyz#18260)

Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>

* chore: clippy happy (paradigmxyz#18310)

* more trace

* feat(download): support zst archives in reth download (paradigmxyz#18237)

Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>

* with new types

* rerun

* rerun

* rerun

* chore: introduce validationtask with capacity (paradigmxyz#18291)

* chore(deps): weekly `cargo update` (paradigmxyz#18312)

Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>

* fix(rpc): error code `eth_sendRawTransactionSync` timeout (paradigmxyz#18252)

Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>

* fixes

* fixe

* fixes

* fixes

* chore(trie): dont warn on blinded node reveals (paradigmxyz#18317)

* refactor(optimism): Extract pending block building responsibility out of `FlashBlockService` (paradigmxyz#18247)

Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>

* rerun

* refactor: change PendingPool and PendingTransaction visibility to pub (paradigmxyz#18267)

* refactor(engine): persistence logic (paradigmxyz#18318)

* feat(optimism): flashblock completed sequences (paradigmxyz#18272)

* fix

* feat(trie): Add helper sub-command (paradigmxyz#18301)

* ci: pin Rust to 1.88 when building for Windows in Cross (paradigmxyz#18320)

* docs(reth-bench): fix markdown (paradigmxyz#18322)

* fix(bench): fix deadlock in test data generation (paradigmxyz#18321)

* fix(stateless): verify_execution_witness doc for pre-state mismatch (paradigmxyz#18319)

* fix: DB benches (paradigmxyz#18314)

* chore: bump version 1.7.0 (paradigmxyz#18323)

* chore: bump docs version 1.7.0 (paradigmxyz#18326)

* docs: update public dashboards (paradigmxyz#18331)

* chore(trie): use read-only db handle during repair-trie dry-runs (paradigmxyz#18328)

* chore(deps): bump actions/setup-go from 5 to 6 (paradigmxyz#18332)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump actions/github-script from 7 to 8 (paradigmxyz#18334)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): bump actions/stale from 9 to 10 (paradigmxyz#18335)

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* feat: cache latest built payload (paradigmxyz#18324)

* perf(merkle-stage): only fetch checkpoint in the branch that needs it (paradigmxyz#18339)

* fix: properly compute genesis hash (paradigmxyz#18300)

* feat(op-reth/flashblocks): subscribe to the flashblock sequences produced (paradigmxyz#18276)

Co-authored-by: julio4 <30329843+julio4@users.noreply.github.com>
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>

* perf(reth-engine-local): use VecDeque reduce removal operations (paradigmxyz#18198)

* fix(ci): pin teku image to fix kurtosis-op build (paradigmxyz#18345)

* fix(stages): implement entities checkpoint update in merkle stage unwind (paradigmxyz#18131)

* rerurn

* perf: use debug_assert for parked pool lookup (paradigmxyz#17712)

Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>

* refactor(revm): (paradigmxyz#18150) use hardfork activation helpers (paradigmxyz#18349)

Co-authored-by: Waiting-Chai <1753609696@qq.com>

* feat(stateless): Run EEST tests in stateless block validator & bug fixes (paradigmxyz#18140)

Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>

* feat: support customizable RPC namespace parsers (paradigmxyz#18160)

Co-authored-by: Federico Gimenez <federico.gimenez@gmail.com>

* fix(prune): TransactionLookup pruning issues with pre-merge expiry (paradigmxyz#18348)

* feat(op-sdk): custom precompiles (paradigmxyz#18350)

* fix: fix search in vocs doc (paradigmxyz#18354)

* merge

* fix

* fix: add is_osaka check before erroring in default_ethereum_payload (paradigmxyz#18355)

* perf: optimize canonical_hashes_range with Vec::with_capacity pre-allocation + benchmark (paradigmxyz#18072)

Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>

* feat: add some ethapi builder fns (paradigmxyz#18358)

* fix(docs): include .vocs to retain search-index (paradigmxyz#18363)

* feat(engine): check header validity after invalid transaction (paradigmxyz#18356)

* fix(engine): avoid block fetching inconsistencies for checks during reorgs (paradigmxyz#18368)

* feat: bump hive eest tests (paradigmxyz#18013)

* fix: check payload id (paradigmxyz#18370)

* perf(trie): Use ParallelSparseTrie (if enabled) for storage tries (paradigmxyz#17959)

* fixes

* refactor!: more type-safety in cli (paradigmxyz#18375)

* feat: add helper aliases for node adapters (paradigmxyz#18366)

* fix: relax nonce gap rule if configured (paradigmxyz#18385)

* fix(docs): disable jekyll which removes the search-index (paradigmxyz#18388)

* fix(docs): mv search-index to dist from .vocs (paradigmxyz#18390)

* fix: map EIP-7623 gas floor errors to expected exception type for test compatibility (paradigmxyz#18389)

* feat: replace PendingBlockAndReceipts tuple with dedicated struct (paradigmxyz#18395)

* fix: still use real chain id for no-op network (paradigmxyz#18382)

* chore: use decode_2718_exact for recover raw txs (paradigmxyz#18381)

* chore: fixed broken link in history-expiry.mdx (paradigmxyz#18400)

* fix(e2e): persist accepted header in CheckPayloadAccepted and align timestamp (paradigmxyz#18275)

Co-authored-by: Federico Gimenez <federico.gimenez@gmail.com>
Co-authored-by: Federico Gimenez <fgimenez@users.noreply.github.com>

* chore: update e2e-test-utils code owners (paradigmxyz#18397)

* perf(db): reuse MDBX DBIs for the same tx (paradigmxyz#18292)

* feat(txpool): break down queued transaction states into specific reasons (paradigmxyz#18106)

Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>

* fix: dont update canon chain to ancestor for opstack (paradigmxyz#18410)

* feat(observability): add phase-level observablity to newPayload processing  (paradigmxyz#18308)

Co-authored-by: YK <chiayongkang@hotmail.com>
Co-authored-by: Dan Cline <6798349+Rjected@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* perf: downsize mempool tx priority from `U256` to `u128` (paradigmxyz#18413)

* chore(storage): remove unused `primed_dbis` (paradigmxyz#18415)

* feat: fn recovered_tx to indexedTx (paradigmxyz#18421)

* feat: add helper to PendingBlockAndReceipts (paradigmxyz#18423)

* refactor and cleanup

* fmt

* fixes

* clippy

* clippy

---------

Signed-off-by: 7suyash7 <suyashnyn1@gmail.com>
Signed-off-by: tmel <tmel0103@gmail.com>
Signed-off-by: tmelhao <tmel0103@gmail.com>
Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Ignacio Hagopian <jsign.uy@gmail.com>
Co-authored-by: 0xKitsune <77890308+0xKitsune@users.noreply.github.com>
Co-authored-by: Roman Hodulák <roman.hodulak@polyglot-software.com>
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
Co-authored-by: Hai | RISE <150876604+hai-rise@users.noreply.github.com>
Co-authored-by: Dharm Singh <153282211+dharmvr1@users.noreply.github.com>
Co-authored-by: Arsenii Kulikov <klkvrr@gmail.com>
Co-authored-by: nk_ysg <nk_ysg@163.com>
Co-authored-by: leniram159 <leniram159@gmail.com>
Co-authored-by: Andrea Simeoni <andreasimeoni84@gmail.com>
Co-authored-by: Matus Kysel <MatusKysel@users.noreply.github.com>
Co-authored-by: Suyash Nayan <89125422+7suyash7@users.noreply.github.com>
Co-authored-by: Haotian <303518297@qq.com>
Co-authored-by: tmel <tmel0103@gmail.com>
Co-authored-by: Louis Brown <48462338+louisbrown0212@users.noreply.github.com>
Co-authored-by: Max Bytefield <schoentgenaa@gmail.com>
Co-authored-by: Eric Woolsey <ewoolsey@ualberta.ca>
Co-authored-by: YK <chiayongkang@hotmail.com>
Co-authored-by: Brian Picciano <me@mediocregopher.com>
Co-authored-by: Jonas Bostoen <jonasbostoen@fastmail.com>
Co-authored-by: quantix9 <quantix9@proton.me>
Co-authored-by: Julio <30329843+julio4@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: pepes <155114519+dennsikl@users.noreply.github.com>
Co-authored-by: James Niken <155266991+dizer-ti@users.noreply.github.com>
Co-authored-by: VolodymyrBg <aqdrgg19@gmail.com>
Co-authored-by: David Klank <155117116+davidjsonn@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
Co-authored-by: smileclown2024 <167074920+smileclown2024@users.noreply.github.com>
Co-authored-by: DaniPopes <57450786+DaniPopes@users.noreply.github.com>
Co-authored-by: Fynn <zcheng1004@gmail.com>
Co-authored-by: Soubhik-10 <soubhiksmp2004@gmail.com>
Co-authored-by: TMOT <166535397+Timosdev99@users.noreply.github.com>
Co-authored-by: Brawn <nftdropped@gmail.com>
Co-authored-by: Dan Cline <6798349+Rjected@users.noreply.github.com>
Co-authored-by: Ivan Wang <wff19940326@gmail.com>
Co-authored-by: Mablr <59505383+mablr@users.noreply.github.com>
Co-authored-by: zhygis <5236121+Zygimantass@users.noreply.github.com>
Co-authored-by: Femi Bankole <llordbanks500@gmail.com>
Co-authored-by: Emilia Hane <elsaemiliaevahane@gmail.com>
Co-authored-by: kien-rise <157339831+kien-rise@users.noreply.github.com>
Co-authored-by: Alexey Shekhirin <5773434+shekhirin@users.noreply.github.com>
Co-authored-by: radik878 <radikpadik76@gmail.com>
Co-authored-by: theo <80177219+theochap@users.noreply.github.com>
Co-authored-by: Federico Gimenez <fgimenez@users.noreply.github.com>
Co-authored-by: かとり <SarahADavisA@gmail.com>
Co-authored-by: malik <aremumalik05@gmail.com>
Co-authored-by: Waiting-Chai <1753609696@qq.com>
Co-authored-by: Ignacio Hagopian <jsign.uy@gmail.com>
Co-authored-by: Federico Gimenez <federico.gimenez@gmail.com>
Co-authored-by: Léa Narzis <78718413+lean-apple@users.noreply.github.com>
Co-authored-by: Rez <rez@berachain.com>
Co-authored-by: Yash Atreya <44857776+yash-atreya@users.noreply.github.com>
Co-authored-by: Soubhik Singha Mahapatra <160333583+Soubhik-10@users.noreply.github.com>
Co-authored-by: stevencartavia <112043913+stevencartavia@users.noreply.github.com>
Co-authored-by: Cypher Pepe <125112044+cypherpepe@users.noreply.github.com>
Co-authored-by: Snezhkko <snezhkodaria38@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
shemnon added a commit to shemnon/reth that referenced this pull request Jan 20, 2026
* test(optimism): Test that sequence stops before a gap (paradigmxyz#18228)

* feat(optimism): Warn if `FlashBlockService` has stopped (paradigmxyz#18227)

* chore: safe None check (paradigmxyz#18225)

* chore: improve flashblock logs (paradigmxyz#18232)

* fix(download): use updated merkle base URL (paradigmxyz#18236)

* chore(engine): add better logs and spans for execution (paradigmxyz#18240)

* chore(trie): use instrument instead of manual span (paradigmxyz#18239)

* fix: filter zero storage values when computing withdrawals root in genesis header (paradigmxyz#18213)

* perf(reth-optimism-flashblocks): rm redundant clone (paradigmxyz#18196)

* perf(txpool): eliminate allocations in basefee enforcement (paradigmxyz#18218)

Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>

* docs: update urls in docs (paradigmxyz#18245)

* feat(optimism): Respond to ping messages with pong in `WsFlashBlockStream` (paradigmxyz#18212)

* test(optimism): Test that `WsFlashBlockStream` pongs a ping (paradigmxyz#18217)

* chore: downgrade debug to trace  for peer reputation logs (paradigmxyz#18250)

* chore: unify engine downloader targets (paradigmxyz#18248)

* fix(optimism): Compare parent hash and latest hash to invalidate cached flashblock (paradigmxyz#18238)

* feat(optimism): Decode text messages in `WsFlashBlockStream` (paradigmxyz#18257)

* chore: remove redundant payload trait bounds (paradigmxyz#18262)

* feat(optimism): Respond to close messages in `WsFlashBlockStream` (paradigmxyz#18256)

* fix(optimism): Reconnect if ws stream ends in `WsFlashBlockStream` (paradigmxyz#18226)

* test(optimism): Test that UTF-8 encoded messages are received in `WsFlashBlockStream` (paradigmxyz#18269)

* chore: log prune settings on unwind (paradigmxyz#18270)

* chore: extract `validate_against_parent_gas_limit` into separate fn (paradigmxyz#18277)

* perf: rm redundant collect (paradigmxyz#18281)

* perf: build local pending block without updates (paradigmxyz#18271)

* perf(db): do not heap-allocate the stage key per query (paradigmxyz#18284)

* chore(txpool): add sanity tests for blob fee bit handling (paradigmxyz#18258)

* fix: check prune checkpoints for unwind target limit (paradigmxyz#18263)

* perf: optimize send raw batching (paradigmxyz#18280)

* perf: specialize single batch request (paradigmxyz#18289)

* chore: delist unused deps with `cargo-machete` (paradigmxyz#18259)

* test(optimism): Test that close message is responded to in `WsFlashBlockStream` (paradigmxyz#18268)

* perf: specialize validate_transactions_with_origin for task validator (paradigmxyz#18288)

* feat(metrics): add `TxPoolValidatorMetrics` to track inflight validation jobs (paradigmxyz#18295)

* feat(gpo): add default fee price argument (paradigmxyz#18297)

Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>

* feat: introduce setting for delegated txs slots (paradigmxyz#18298)

* feat: expose `EvmEnv` to `caller_gas_allowance` (paradigmxyz#18302)

* perf: specialize len 1 (paradigmxyz#18307)

* chore: fix various typos in comments and documentation (paradigmxyz#18296)

* perf(e2e-test-utils): optimize block checking by fetching header instead of full block (paradigmxyz#18254)

Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>

* feat: introduce maybe_pending method to StateProviderFactory (paradigmxyz#18260)

Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>

* chore: clippy happy (paradigmxyz#18310)

* feat(download): support zst archives in reth download (paradigmxyz#18237)

Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>

* chore: introduce validationtask with capacity (paradigmxyz#18291)

* chore(deps): weekly `cargo update` (paradigmxyz#18312)

Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>

* fix(rpc): error code `eth_sendRawTransactionSync` timeout (paradigmxyz#18252)

Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>

* chore(trie): dont warn on blinded node reveals (paradigmxyz#18317)

* refactor(optimism): Extract pending block building responsibility out of `FlashBlockService` (paradigmxyz#18247)

Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>

* refactor: change PendingPool and PendingTransaction visibility to pub (paradigmxyz#18267)

* refactor(engine): persistence logic (paradigmxyz#18318)

* feat(optimism): flashblock completed sequences (paradigmxyz#18272)

* feat(trie): Add helper sub-command (paradigmxyz#18301)

* ci: pin Rust to 1.88 when building for Windows in Cross (paradigmxyz#18320)

* docs(reth-bench): fix markdown (paradigmxyz#18322)

* fix(bench): fix deadlock in test data generation (paradigmxyz#18321)

* fix(stateless): verify_execution_witness doc for pre-state mismatch (paradigmxyz#18319)

* fix: DB benches (paradigmxyz#18314)

* chore: bump version 1.7.0 (paradigmxyz#18323)

---------

Co-authored-by: Roman Hodulák <roman.hodulak@polyglot-software.com>
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
Co-authored-by: Dan Cline <6798349+Rjected@users.noreply.github.com>
Co-authored-by: Ivan Wang <wff19940326@gmail.com>
Co-authored-by: nk_ysg <nk_ysg@163.com>
Co-authored-by: YK <chiayongkang@hotmail.com>
Co-authored-by: quantix9 <quantix9@proton.me>
Co-authored-by: Hai | RISE <150876604+hai-rise@users.noreply.github.com>
Co-authored-by: Arsenii Kulikov <klkvrr@gmail.com>
Co-authored-by: Mablr <59505383+mablr@users.noreply.github.com>
Co-authored-by: zhygis <5236121+Zygimantass@users.noreply.github.com>
Co-authored-by: James Niken <155266991+dizer-ti@users.noreply.github.com>
Co-authored-by: Femi Bankole <llordbanks500@gmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-merge-queue <118344674+github-merge-queue@users.noreply.github.com>
Co-authored-by: Emilia Hane <elsaemiliaevahane@gmail.com>
Co-authored-by: Brian Picciano <me@mediocregopher.com>
Co-authored-by: kien-rise <157339831+kien-rise@users.noreply.github.com>
Co-authored-by: Alexey Shekhirin <5773434+shekhirin@users.noreply.github.com>
Co-authored-by: Julio <30329843+julio4@users.noreply.github.com>
Co-authored-by: radik878 <radikpadik76@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-tx-pool Related to the transaction mempool C-test A change that impacts how or what we test

Projects

Status: Completed

Development

Successfully merging this pull request may close these issues.

2 participants