Skip to content

feat: parallelize recovery#20169

Merged
klkvr merged 6 commits intomainfrom
klkvr/parallel-recovery
Dec 8, 2025
Merged

feat: parallelize recovery#20169
klkvr merged 6 commits intomainfrom
klkvr/parallel-recovery

Conversation

@klkvr
Copy link
Copy Markdown
Member

@klkvr klkvr commented Dec 6, 2025

No description provided.

Copy link
Copy Markdown
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.

this makes a lot of sense and is way easier than what I previously attempted

smol suggestion and a doc nit

we might also want to take the avail cores into account here but unsure because rayon already handles the bridging based on available threads

@github-project-automation github-project-automation bot moved this from Backlog to In Progress in Reth Tracker Dec 6, 2025
@klkvr klkvr changed the title [wip] feat: parallelize recovery feat: parallelize recovery Dec 8, 2025
@klkvr klkvr marked this pull request as ready for review December 8, 2025 12:17
Copy link
Copy Markdown
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.

lgtm!

@klkvr klkvr enabled auto-merge December 8, 2025 12:51
@klkvr klkvr added this pull request to the merge queue Dec 8, 2025
Merged via the queue into main with commit e9cd7cc Dec 8, 2025
44 checks passed
@klkvr klkvr deleted the klkvr/parallel-recovery branch December 8, 2025 14:22
@github-project-automation github-project-automation bot moved this from In Progress to Done in Reth Tracker Dec 8, 2025
Zygimantass pushed a commit to tempoxyz/tempo that referenced this pull request Dec 8, 2025
Bumps Reth to include paradigmxyz/reth#20169 and
paradigmxyz/reth#20164

---------

Co-authored-by: Arsenii Kulikov <klkvrr@gmail.com>
yongkangc pushed a commit that referenced this pull request Dec 9, 2025
Co-authored-by: Alexey Shekhirin <5773434+shekhirin@users.noreply.github.com>
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
madisoncarter1234 added a commit to madisoncarter1234/base that referenced this pull request Dec 31, 2025
  Addresses base#282 - reduces sender recovery overhead during flashblock processing.

  ## Changes
  - Add rayon for parallel iteration over transactions
  - Batch ECDSA sender recovery upfront using par_iter()
  - Add sender_recovery_duration metric for observability
  - Preserve cache lookup behavior (check prev_pending_blocks first)
  - Maintain original error handling semantics

  ## Technical Approach
  Follows upstream reth pattern (paradigmxyz/reth#20169) - recover all
  senders in parallel before the sequential transaction processing loop.

  ## Testing
  All 10 existing flashblocks tests pass.

  ## Note
  Benchmarks not included as benchmark infrastructure was removed from main.
  The new sender_recovery_duration metric can be used for production measurement.
madisoncarter1234 added a commit to madisoncarter1234/base that referenced this pull request Jan 1, 2026
  Addresses base#282 - reduces sender recovery overhead during flashblock processing.

  ## Changes
  - Add rayon for parallel iteration over transactions
  - Batch ECDSA sender recovery upfront using par_iter()
  - Add sender_recovery_duration metric for observability
  - Preserve cache lookup behavior (check prev_pending_blocks first)
  - Maintain original error handling semantics

  ## Technical Approach
  Follows upstream reth pattern (paradigmxyz/reth#20169) - recover all
  senders in parallel before the sequential transaction processing loop.

  ## Testing
  All 10 existing flashblocks tests pass.

  ## Note
  Benchmarks not included as benchmark infrastructure was removed from main.
  The new sender_recovery_duration metric can be used for production measurement.
madisoncarter1234 added a commit to madisoncarter1234/base that referenced this pull request Jan 2, 2026
  Addresses base#282 - reduces sender recovery overhead during flashblock processing.

  ## Changes
  - Add rayon for parallel iteration over transactions
  - Batch ECDSA sender recovery upfront using par_iter()
  - Add sender_recovery_duration metric for observability
  - Preserve cache lookup behavior (check prev_pending_blocks first)
  - Maintain original error handling semantics

  ## Technical Approach
  Follows upstream reth pattern (paradigmxyz/reth#20169) - recover all
  senders in parallel before the sequential transaction processing loop.

  ## Testing
  All 10 existing flashblocks tests pass.

  ## Note
  Benchmarks not included as benchmark infrastructure was removed from main.
  The new sender_recovery_duration metric can be used for production measurement.
refcell pushed a commit to base/base that referenced this pull request Jan 7, 2026
* fix(ci): use dynamic registry namespace for Docker workflow

* feat(flashblocks): parallelize sender recovery

  Addresses #282 - reduces sender recovery overhead during flashblock processing.

  ## Changes
  - Add rayon for parallel iteration over transactions
  - Batch ECDSA sender recovery upfront using par_iter()
  - Add sender_recovery_duration metric for observability
  - Preserve cache lookup behavior (check prev_pending_blocks first)
  - Maintain original error handling semantics

  ## Technical Approach
  Follows upstream reth pattern (paradigmxyz/reth#20169) - recover all
  senders in parallel before the sequential transaction processing loop.

  ## Testing
  All 10 existing flashblocks tests pass.

  ## Note
  Benchmarks not included as benchmark infrastructure was removed from main.
  The new sender_recovery_duration metric can be used for production measurement.

* refactor(flashblocks): use tuples for parallel sender recovery

* bench(flashblocks): add sender recovery benchmark

* chore: format

* add sender_recovery bench with real Base blocks

---------

Co-authored-by: Haardik <haardik@haardik.dev>
theochap pushed a commit to ethereum-optimism/optimism that referenced this pull request Jan 22, 2026
Co-authored-by: Alexey Shekhirin <5773434+shekhirin@users.noreply.github.com>
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
theochap pushed a commit to ethereum-optimism/optimism that referenced this pull request Feb 11, 2026
Co-authored-by: Alexey Shekhirin <5773434+shekhirin@users.noreply.github.com>
Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
unbalancedparentheses pushed a commit to unbalancedparentheses/tempo that referenced this pull request Feb 23, 2026
Bumps Reth to include paradigmxyz/reth#20169 and
paradigmxyz/reth#20164

---------

Co-authored-by: Arsenii Kulikov <klkvrr@gmail.com>
haardikk21 added a commit to base/base that referenced this pull request Mar 17, 2026
* fix(ci): use dynamic registry namespace for Docker workflow

* feat(flashblocks): parallelize sender recovery

  Addresses #282 - reduces sender recovery overhead during flashblock processing.

  ## Changes
  - Add rayon for parallel iteration over transactions
  - Batch ECDSA sender recovery upfront using par_iter()
  - Add sender_recovery_duration metric for observability
  - Preserve cache lookup behavior (check prev_pending_blocks first)
  - Maintain original error handling semantics

  ## Technical Approach
  Follows upstream reth pattern (paradigmxyz/reth#20169) - recover all
  senders in parallel before the sequential transaction processing loop.

  ## Testing
  All 10 existing flashblocks tests pass.

  ## Note
  Benchmarks not included as benchmark infrastructure was removed from main.
  The new sender_recovery_duration metric can be used for production measurement.

* refactor(flashblocks): use tuples for parallel sender recovery

* bench(flashblocks): add sender recovery benchmark

* chore: format

* add sender_recovery bench with real Base blocks

---------

Co-authored-by: Haardik <haardik@haardik.dev>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

5 participants