-
Notifications
You must be signed in to change notification settings - Fork 1.9k
perf(reth-engine-local): use VecDeque reduce removal operations #18198
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
mattsse
approved these changes
Sep 9, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this makes sense and prevents shifting the entire vec
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 <[email protected]> * 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 <[email protected]> * 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 <[email protected]> Signed-off-by: tmelhao <[email protected]> Co-authored-by: tmel <[email protected]> * feat: Forward transactions to a specified endpoint (paradigmxyz#17444) Co-authored-by: Arsenii Kulikov <[email protected]> * feat(net): implement support of subprotocols (paradigmxyz#18080) Co-authored-by: Matthias Seitz <[email protected]> * fix(optimism): Fail if latest and base flashblock parent are different (paradigmxyz#18132) Co-authored-by: Matthias Seitz <[email protected]> * 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 <[email protected]> * 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] <[email protected]> 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 <[email protected]> * 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 <[email protected]> * 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 <[email protected]> Co-authored-by: Roman Hodulák <[email protected]> * fixes * chore: impl ExecutorTx for withtxenv (paradigmxyz#18202) * perf: prepare flashblock txs (paradigmxyz#18201) Co-authored-by: Arsenii Kulikov <[email protected]> * 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 <[email protected]> * 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 <[email protected]> * 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 <[email protected]> * feat: introduce maybe_pending method to StateProviderFactory (paradigmxyz#18260) Co-authored-by: Matthias Seitz <[email protected]> * chore: clippy happy (paradigmxyz#18310) * more trace * feat(download): support zst archives in reth download (paradigmxyz#18237) Co-authored-by: Matthias Seitz <[email protected]> * 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 <[email protected]> * fix(rpc): error code `eth_sendRawTransactionSync` timeout (paradigmxyz#18252) Co-authored-by: Matthias Seitz <[email protected]> * 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 <[email protected]> * 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] <[email protected]> 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] <[email protected]> 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] <[email protected]> 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 <[email protected]> Co-authored-by: Matthias Seitz <[email protected]> * 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 <[email protected]> * refactor(revm): (paradigmxyz#18150) use hardfork activation helpers (paradigmxyz#18349) Co-authored-by: Waiting-Chai <[email protected]> * feat(stateless): Run EEST tests in stateless block validator & bug fixes (paradigmxyz#18140) Signed-off-by: Ignacio Hagopian <[email protected]> Co-authored-by: Matthias Seitz <[email protected]> * feat: support customizable RPC namespace parsers (paradigmxyz#18160) Co-authored-by: Federico Gimenez <[email protected]> * 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 <[email protected]> * 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 <[email protected]> Co-authored-by: Federico Gimenez <[email protected]> * 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 <[email protected]> * 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 <[email protected]> Co-authored-by: Dan Cline <[email protected]> Co-authored-by: Copilot <[email protected]> * 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 <[email protected]> Signed-off-by: tmel <[email protected]> Signed-off-by: tmelhao <[email protected]> Signed-off-by: dependabot[bot] <[email protected]> Signed-off-by: Ignacio Hagopian <[email protected]> Co-authored-by: 0xKitsune <[email protected]> Co-authored-by: Roman Hodulák <[email protected]> Co-authored-by: Matthias Seitz <[email protected]> Co-authored-by: Hai | RISE <[email protected]> Co-authored-by: Dharm Singh <[email protected]> Co-authored-by: Arsenii Kulikov <[email protected]> Co-authored-by: nk_ysg <[email protected]> Co-authored-by: leniram159 <[email protected]> Co-authored-by: Andrea Simeoni <[email protected]> Co-authored-by: Matus Kysel <[email protected]> Co-authored-by: Suyash Nayan <[email protected]> Co-authored-by: Haotian <[email protected]> Co-authored-by: tmel <[email protected]> Co-authored-by: Louis Brown <[email protected]> Co-authored-by: Max Bytefield <[email protected]> Co-authored-by: Eric Woolsey <[email protected]> Co-authored-by: YK <[email protected]> Co-authored-by: Brian Picciano <[email protected]> Co-authored-by: Jonas Bostoen <[email protected]> Co-authored-by: quantix9 <[email protected]> Co-authored-by: Julio <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: pepes <[email protected]> Co-authored-by: James Niken <[email protected]> Co-authored-by: VolodymyrBg <[email protected]> Co-authored-by: David Klank <[email protected]> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: github-merge-queue <[email protected]> Co-authored-by: smileclown2024 <[email protected]> Co-authored-by: DaniPopes <[email protected]> Co-authored-by: Fynn <[email protected]> Co-authored-by: Soubhik-10 <[email protected]> Co-authored-by: TMOT <[email protected]> Co-authored-by: Brawn <[email protected]> Co-authored-by: Dan Cline <[email protected]> Co-authored-by: Ivan Wang <[email protected]> Co-authored-by: Mablr <[email protected]> Co-authored-by: zhygis <[email protected]> Co-authored-by: Femi Bankole <[email protected]> Co-authored-by: Emilia Hane <[email protected]> Co-authored-by: kien-rise <[email protected]> Co-authored-by: Alexey Shekhirin <[email protected]> Co-authored-by: radik878 <[email protected]> Co-authored-by: theo <[email protected]> Co-authored-by: Federico Gimenez <[email protected]> Co-authored-by: かとり <[email protected]> Co-authored-by: malik <[email protected]> Co-authored-by: Waiting-Chai <[email protected]> Co-authored-by: Ignacio Hagopian <[email protected]> Co-authored-by: Federico Gimenez <[email protected]> Co-authored-by: Léa Narzis <[email protected]> Co-authored-by: Rez <[email protected]> Co-authored-by: Yash Atreya <[email protected]> Co-authored-by: Soubhik Singha Mahapatra <[email protected]> Co-authored-by: stevencartavia <[email protected]> Co-authored-by: Cypher Pepe <[email protected]> Co-authored-by: Snezhkko <[email protected]> Co-authored-by: Copilot <[email protected]>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
use
VecDeque
can redudeself.last_block_hashes.split_off(self.last_block_hashes.len() - 64);
removal operations.