Skip to content

perf(trie): skip DB seek on exact overlay hits#23559

Merged
mediocregopher merged 9 commits into
mainfrom
auto-opt/20260415-trie-overlay-exact
Apr 27, 2026
Merged

perf(trie): skip DB seek on exact overlay hits#23559
mediocregopher merged 9 commits into
mainfrom
auto-opt/20260415-trie-overlay-exact

Conversation

@mediocregopher
Copy link
Copy Markdown
Member

@mediocregopher mediocregopher commented Apr 15, 2026

When InMemoryTrieOverlayCursor::seek_exact is called, it was previously always moving the db cursor forward even if the request hit the in-memory overlay. If multiple sequential seek_exacts hit the in-memory overlay this results in useless db hits.

seek_exact is only used to query trie changesets during the deferred trie task, therefore this fix doesn't directly impact payload validation, but it does improve it by a non-trivial amount due to the reduction in db hits.

The fix required tracking whether the db cursor has ever been seeked separately from tracking whether the overall InMemoryTrieOverlayCursor has ever been seeked. Rather than adding yet another field onto the struct, an enum is introduced which tracks the state of the db cursor specifically.

@mediocregopher
Copy link
Copy Markdown
Member Author

derek bench blocks=500 slack=never

@decofe
Copy link
Copy Markdown
Member

decofe commented Apr 15, 2026

cc @mediocregopher

❌ Benchmark failed while unknown step. View logs

@mediocregopher
Copy link
Copy Markdown
Member Author

derek bench blocks=500 slack=never

@decofe
Copy link
Copy Markdown
Member

decofe commented Apr 15, 2026

cc @mediocregopher

✅ Benchmark complete! View job

Benchmark Results

⚠️ Feature is 1 commit behind main. Consider rebasing for accurate results.

Metric main auto-opt/20260415-trie-overlay-exact Change
Mean 29.56ms 29.02ms -1.82% ⚪ (±1.90%)
StdDev 17.39ms 15.10ms
P50 26.79ms 26.54ms -0.93% ⚪ (±2.31%)
P90 45.26ms 44.70ms -1.22% ⚪ (±3.60%)
P99 65.82ms 74.97ms +13.90% ⚪ (±46.77%)
Mgas/s 1051.87 1066.78 +1.42% ✅ (±1.06%)
Wall Clock 30.51s 29.97s -1.79% ⚪ (±1.90%)

500 blocks, 100 warmup

Wait Time Breakdown

Persistence Wait

Metric main auto-opt/20260415-trie-overlay-exact
Mean 28.56ms 29.65ms
P50 0.03ms 0.02ms
P95 266.01ms 268.13ms

Trie Cache Update Wait

Metric main auto-opt/20260415-trie-overlay-exact
Mean 0.46ms 0.42ms
P50 0.00ms 0.00ms
P95 2.07ms 1.94ms

Execution Cache Update Wait

Metric main auto-opt/20260415-trie-overlay-exact
Mean 0.00ms 0.00ms
P50 0.00ms 0.00ms
P95 0.00ms 0.00ms

Grafana Dashboard

Charts

Latency, Throughput & Diff

Latency, Throughput & Diff

Wait Time Breakdown

Wait Time Breakdown

Gas vs Latency

Gas vs Latency

Grafana Dashboard

View real-time metrics

@mediocregopher
Copy link
Copy Markdown
Member Author

derek bench blocks=2000 slack=on-win

@decofe
Copy link
Copy Markdown
Member

decofe commented Apr 15, 2026

cc @mediocregopher

✅ Benchmark complete! View job

Benchmark Results

⚠️ Feature is 1 commit behind main. Consider rebasing for accurate results.

Metric main auto-opt/20260415-trie-overlay-exact Change
Mean 30.84ms 30.34ms -1.63% ✅ (±0.99%)
StdDev 18.74ms 18.11ms
P50 27.56ms 27.20ms -1.29% ⚪ (±1.37%)
P90 48.90ms 48.09ms -1.67% ✅ (±1.58%)
P99 99.71ms 100.32ms +0.61% ⚪ (±8.25%)
Mgas/s 1018.31 1033.38 +1.48% ✅ (±0.57%)
Wall Clock 127.47s 125.36s -1.65% ✅ (±0.97%)

2000 blocks, 100 warmup

Wait Time Breakdown

Persistence Wait

Metric main auto-opt/20260415-trie-overlay-exact
Mean 33.64ms 32.61ms
P50 0.03ms 0.03ms
P95 308.99ms 288.74ms

Trie Cache Update Wait

Metric main auto-opt/20260415-trie-overlay-exact
Mean 0.54ms 0.52ms
P50 0.00ms 0.00ms
P95 2.50ms 2.61ms

Execution Cache Update Wait

Metric main auto-opt/20260415-trie-overlay-exact
Mean 0.00ms 0.00ms
P50 0.00ms 0.00ms
P95 0.00ms 0.00ms

Grafana Dashboard

Charts

Latency, Throughput & Diff

Latency, Throughput & Diff

Wait Time Breakdown

Wait Time Breakdown

Gas vs Latency

Gas vs Latency

Grafana Dashboard

View real-time metrics

@pepyakin
Copy link
Copy Markdown
Member

derek bench big_blocks=true blocks=500

@decofe
Copy link
Copy Markdown
Member

decofe commented Apr 16, 2026

Invalid bench command

Unknown argument(s): big_blocks

Usage: @decofe bench [blocks=N] [big-blocks[=true|false]] [bal=true|false|feature|baseline] [warmup=N] [baseline=REF] [feature=REF] [samply] [slack=always|on-win|on-error|never] [cores=N] [abba=true|false] [otlp=true|false] [wait-time=DURATION] [baseline-args="..."] [feature-args="..."]

@pepyakin
Copy link
Copy Markdown
Member

derek bench big-blocks=true blocks=500

@decofe
Copy link
Copy Markdown
Member

decofe commented Apr 16, 2026

cc @pepyakin

✅ Benchmark complete! View job

Benchmark Results

⚠️ Feature is 6 commits behind main. Consider rebasing for accurate results.

Metric main auto-opt/20260415-trie-overlay-exact Change
Mean 762.74ms 768.44ms +0.75% ⚪ (±1.17%)
StdDev 164.71ms 166.17ms
P50 726.57ms 729.62ms +0.42% ⚪ (±1.32%)
P90 974.51ms 971.40ms -0.32% ⚪ (±3.41%)
P99 1330.36ms 1332.35ms +0.15% ⚪ (±7.57%)
Mgas/s 1388.15 1379.10 -0.65% ⚪ (±0.97%)
Wall Clock 787.07s 793.19s +0.78% ⚪ (±1.34%)

500 big blocks, 20 warmup

Wait Time Breakdown

Persistence Wait

Metric main auto-opt/20260415-trie-overlay-exact
Mean 3.37ms 2.44ms
P50 0.06ms 0.06ms
P95 0.09ms 0.09ms

Trie Cache Update Wait

Metric main auto-opt/20260415-trie-overlay-exact
Mean 0.00ms 0.00ms
P50 0.00ms 0.00ms
P95 0.00ms 0.00ms

Execution Cache Update Wait

Metric main auto-opt/20260415-trie-overlay-exact
Mean 0.00ms 0.00ms
P50 0.00ms 0.00ms
P95 0.00ms 0.00ms

Grafana Dashboard

Charts

Latency, Throughput & Diff

Latency, Throughput & Diff

Wait Time Breakdown

Wait Time Breakdown

Gas vs Latency

Gas vs Latency

Grafana Dashboard

View real-time metrics

Co-Authored-By: Brian Picciano <933154+mediocregopher@users.noreply.github.com>
Comment thread crates/trie/trie/src/trie_cursor/in_memory.rs Outdated
Comment thread crates/trie/trie/src/trie_cursor/in_memory.rs Outdated
Comment thread crates/trie/trie/src/trie_cursor/in_memory.rs Outdated
Comment thread crates/trie/trie/src/trie_cursor/in_memory.rs
Comment thread crates/trie/trie/src/trie_cursor/in_memory.rs
Comment thread crates/trie/trie/src/trie_cursor/in_memory.rs Outdated
Co-Authored-By: Brian Picciano <933154+mediocregopher@users.noreply.github.com>
@mediocregopher mediocregopher changed the title [autoopt] 20260415-18-trie-overlay-exact perf(trie): skip DB seek on exact overlay hits Apr 16, 2026
@mediocregopher
Copy link
Copy Markdown
Member Author

derek bench blocks=1000

@decofe
Copy link
Copy Markdown
Member

decofe commented Apr 16, 2026

cc @mediocregopher

✅ Benchmark complete! View job

Benchmark Results

⚠️ Feature is 11 commits behind main. Consider rebasing for accurate results.

Metric main auto-opt/20260415-trie-overlay-exact Change
Mean 30.43ms 30.65ms +0.72% ⚪ (±1.83%)
StdDev 21.46ms 21.95ms
P50 26.48ms 26.67ms +0.71% ⚪ (±1.52%)
P90 44.91ms 45.98ms +2.39% ⚪ (±3.93%)
P99 136.33ms 126.55ms -7.18% ⚪ (±21.49%)
Mgas/s 1067.80 1060.46 -0.69% ⚪ (±0.89%)
Wall Clock 62.76s 63.22s +0.73% ⚪ (±1.78%)

1000 blocks, 200 warmup

Wait Time Breakdown

Persistence Wait

Metric main auto-opt/20260415-trie-overlay-exact
Mean 24.26ms 23.78ms
P50 0.03ms 0.03ms
P95 232.10ms 227.21ms

Trie Cache Update Wait

Metric main auto-opt/20260415-trie-overlay-exact
Mean 0.41ms 0.41ms
P50 0.00ms 0.00ms
P95 1.89ms 1.78ms

Execution Cache Update Wait

Metric main auto-opt/20260415-trie-overlay-exact
Mean 0.00ms 0.00ms
P50 0.00ms 0.00ms
P95 0.00ms 0.00ms

Grafana Dashboard

Charts

Latency, Throughput & Diff

Latency, Throughput & Diff

Wait Time Breakdown

Wait Time Breakdown

Gas vs Latency

Gas vs Latency

Grafana Dashboard

View real-time metrics

Co-Authored-By: Brian Picciano <933154+mediocregopher@users.noreply.github.com>
Co-Authored-By: Brian Picciano <933154+mediocregopher@users.noreply.github.com>
@mediocregopher
Copy link
Copy Markdown
Member Author

derek bench blocks=1000

@decofe
Copy link
Copy Markdown
Member

decofe commented Apr 16, 2026

cc @mediocregopher

✅ Benchmark complete! View job

Benchmark Results

⚠️ Feature is 11 commits behind main. Consider rebasing for accurate results.

Metric main auto-opt/20260415-trie-overlay-exact Change
Mean 29.80ms 29.91ms +0.37% ⚪ (±1.39%)
StdDev 19.84ms 20.87ms
P50 26.14ms 26.14ms -0.03% ⚪ (±1.36%)
P90 44.73ms 45.35ms +1.38% ⚪ (±4.27%)
P99 107.88ms 105.80ms -1.93% ⚪ (±18.02%)
Mgas/s 1079.87 1080.65 +0.07% ⚪ (±0.74%)
Wall Clock 61.45s 61.67s +0.36% ⚪ (±1.36%)

1000 blocks, 200 warmup

Wait Time Breakdown

Persistence Wait

Metric main auto-opt/20260415-trie-overlay-exact
Mean 24.09ms 24.16ms
P50 0.03ms 0.02ms
P95 233.56ms 222.10ms

Trie Cache Update Wait

Metric main auto-opt/20260415-trie-overlay-exact
Mean 0.36ms 0.37ms
P50 0.00ms 0.00ms
P95 1.64ms 1.67ms

Execution Cache Update Wait

Metric main auto-opt/20260415-trie-overlay-exact
Mean 0.00ms 0.00ms
P50 0.00ms 0.00ms
P95 0.00ms 0.00ms

Grafana Dashboard

Charts

Latency, Throughput & Diff

Latency, Throughput & Diff

Wait Time Breakdown

Wait Time Breakdown

Gas vs Latency

Gas vs Latency

Grafana Dashboard

View real-time metrics

Co-Authored-By: Brian Picciano <933154+mediocregopher@users.noreply.github.com>
@decofe
Copy link
Copy Markdown
Member

decofe commented Apr 16, 2026

cc @mediocregopher

✅ Benchmark complete! View job

Benchmark Results

Metric 0a9af7907f2d52f7183994a053104268c9cad7ef 620b12172015fdc75127af8af3bd97e244e2256a Change
Mean 56.67ms 57.33ms +1.17% ⚪ (±8.03%)
StdDev 82.89ms 83.12ms
P50 27.45ms 27.45ms -0.02% ⚪ (±1.88%)
P90 163.16ms 189.09ms +15.89% ⚪ (±34.00%)
P99 381.25ms 364.89ms -4.29% ⚪ (±7.11%)
Mgas/s 974.56 977.85 +0.34% ⚪ (±1.95%)
Wall Clock 115.23s 116.61s +1.20% ⚪ (±7.90%)
Persist Wait 26.68ms 27.40ms +2.70% ⚪ (±16.90%)

1000 blocks, 200 warmup

Wait Time Breakdown

Persistence Wait

Metric 0a9af7907f2d52f7183994a053104268c9cad7ef 620b12172015fdc75127af8af3bd97e244e2256a
Mean 26.68ms 27.40ms
P50 0.02ms 0.02ms
P95 251.00ms 258.57ms

Trie Cache Update Wait

Metric 0a9af7907f2d52f7183994a053104268c9cad7ef 620b12172015fdc75127af8af3bd97e244e2256a
Mean 0.47ms 0.41ms
P50 0.03ms 0.00ms
P95 2.02ms 1.84ms

Execution Cache Update Wait

Metric 0a9af7907f2d52f7183994a053104268c9cad7ef 620b12172015fdc75127af8af3bd97e244e2256a
Mean 0.00ms 0.00ms
P50 0.00ms 0.00ms
P95 0.00ms 0.00ms

Grafana Dashboard

Charts

Latency, Throughput & Diff

Latency, Throughput & Diff

Wait Time Breakdown

Wait Time Breakdown

Gas vs Latency

Gas vs Latency

Grafana Dashboard

View real-time metrics

Co-authored-by: Brian Picciano <933154+mediocregopher@users.noreply.github.com>
Amp-Thread-ID: https://ampcode.com/threads/T-019daf13-dab4-7338-8c66-e544e0aced37
Co-authored-by: Amp <amp@ampcode.com>
@decofe
Copy link
Copy Markdown
Member

decofe commented Apr 21, 2026

cc @mediocregopher

❌ Benchmark failed while unknown step. View logs

@decofe
Copy link
Copy Markdown
Member

decofe commented Apr 21, 2026

cc @mediocregopher

❌ Benchmark failed while unknown step. View logs

@decofe
Copy link
Copy Markdown
Member

decofe commented Apr 21, 2026

cc @mediocregopher

❌ Benchmark failed while unknown step. View logs

…e-overlay-exact

Co-Authored-By: Brian Picciano <933154+mediocregopher@users.noreply.github.com>
@decofe
Copy link
Copy Markdown
Member

decofe commented Apr 23, 2026

cc @mediocregopher

⚠️ Benchmark cancelled. View logs

@mediocregopher
Copy link
Copy Markdown
Member Author

derek bench blocks=2000

@decofe
Copy link
Copy Markdown
Member

decofe commented Apr 23, 2026

cc @mediocregopher

❌ Benchmark failed while running baseline benchmark (1/2). View logs

@mediocregopher
Copy link
Copy Markdown
Member Author

derek bench big-blocks blocks=500

@decofe
Copy link
Copy Markdown
Member

decofe commented Apr 23, 2026

cc @mediocregopher

❌ Benchmark failed while unknown step. View logs

@decofe
Copy link
Copy Markdown
Member

decofe commented Apr 23, 2026

cc @mediocregopher

✅ Benchmark complete! View job

Benchmark Results

Metric main auto-opt/20260415-trie-overlay-exact Change
Mean 821.51ms 820.45ms -0.13% ⚪ (±1.76%)
StdDev 266.60ms 275.70ms
P50 752.29ms 751.37ms -0.12% ⚪ (±2.01%)
P90 1077.18ms 1089.63ms +1.16% ⚪ (±4.56%)
P99 1765.61ms 1941.72ms +9.97% ⚪ (±17.24%)
Mgas/s 1319.88 1324.83 +0.38% ⚪ (±1.17%)
Wall Clock 849.74s 848.26s -0.17% ⚪ (±2.02%)
Persist Wait 25.93ms 23.62ms -8.91% ⚪ (±47.96%)

500 big blocks, 20 warmup

Wait Time Breakdown

Persistence Wait

Metric main auto-opt/20260415-trie-overlay-exact
Mean 25.93ms 23.62ms
P50 0.06ms 0.06ms
P95 0.09ms 0.09ms

Trie Cache Update Wait

Metric main auto-opt/20260415-trie-overlay-exact
Mean 0.27ms 0.02ms
P50 0.00ms 0.00ms
P95 0.00ms 0.00ms

Execution Cache Update Wait

Metric main auto-opt/20260415-trie-overlay-exact
Mean 0.00ms 0.00ms
P50 0.00ms 0.00ms
P95 0.00ms 0.00ms

Grafana Dashboard

Charts

Latency, Throughput & Diff

Latency, Throughput & Diff

Wait Time Breakdown

Wait Time Breakdown

Gas vs Latency

Gas vs Latency

Grafana Dashboard

View real-time metrics

@decofe
Copy link
Copy Markdown
Member

decofe commented Apr 23, 2026

cc @mediocregopher

⚠️ Benchmark cancelled. View logs

@mediocregopher
Copy link
Copy Markdown
Member Author

derek bench blocks=2000

@decofe
Copy link
Copy Markdown
Member

decofe commented Apr 23, 2026

cc @mediocregopher

❌ Benchmark failed while running baseline benchmark (1/2). View logs

@decofe
Copy link
Copy Markdown
Member

decofe commented Apr 23, 2026

cc @mediocregopher

❌ Benchmark failed while running baseline benchmark (1/2). View logs

@decofe
Copy link
Copy Markdown
Member

decofe commented Apr 23, 2026

cc @mediocregopher

❌ Benchmark failed while unknown step. View logs

@decofe
Copy link
Copy Markdown
Member

decofe commented Apr 23, 2026

cc @mediocregopher

✅ Benchmark complete! View job

Benchmark Results

Metric main auto-opt/20260415-trie-overlay-exact Change
Mean 28.71ms 28.54ms -0.62% ⚪ (±1.20%)
StdDev 18.74ms 18.09ms
P50 25.58ms 25.27ms -1.21% ✅ (±0.97%)
P90 43.60ms 43.23ms -0.86% ⚪ (±1.60%)
P99 93.58ms 93.09ms -0.52% ⚪ (±14.05%)
Mgas/s 1101.51 1108.03 +0.59% ✅ (±0.48%)
Wall Clock 118.74s 118.02s -0.61% ⚪ (±1.18%)
Persist Wait 33.72ms 34.61ms +2.65% ⚪ (±11.24%)

2000 blocks, 200 warmup

Wait Time Breakdown

Persistence Wait

Metric main auto-opt/20260415-trie-overlay-exact
Mean 33.72ms 34.61ms
P50 0.02ms 0.02ms
P95 293.06ms 312.78ms

Trie Cache Update Wait

Metric main auto-opt/20260415-trie-overlay-exact
Mean 0.55ms 0.52ms
P50 0.01ms 0.00ms
P95 2.48ms 2.34ms

Execution Cache Update Wait

Metric main auto-opt/20260415-trie-overlay-exact
Mean 0.00ms 0.00ms
P50 0.00ms 0.00ms
P95 0.00ms 0.00ms

Grafana Dashboard

Charts

Latency, Throughput & Diff

Latency, Throughput & Diff

Wait Time Breakdown

Wait Time Breakdown

Gas vs Latency

Gas vs Latency

Grafana Dashboard

View real-time metrics

Co-authored-by: Brian Picciano <933154+mediocregopher@users.noreply.github.com>
Amp-Thread-ID: https://ampcode.com/threads/T-019dba4e-0186-7501-9f17-bdf23d7d6ea6
Co-authored-by: Amp <amp@ampcode.com>
@decofe
Copy link
Copy Markdown
Member

decofe commented Apr 23, 2026

cc @mediocregopher

✅ Benchmark complete! View job

Benchmark Results

Metric main auto-opt/20260415-trie-overlay-exact Change
Mean 30.57ms 30.51ms -0.20% ⚪ (±1.34%)
StdDev 25.06ms 24.77ms
P50 24.44ms 24.57ms +0.52% ⚪ (±0.99%)
P90 49.31ms 49.45ms +0.29% ⚪ (±3.59%)
P99 146.98ms 146.14ms -0.58% ⚪ (±7.55%)
Mgas/s 1138.04 1139.82 +0.16% ⚪ (±0.60%)
Wall Clock 126.08s 125.89s -0.15% ⚪ (±1.31%)
Persist Wait 23.34ms 23.46ms +0.51% ⚪ (±13.50%)

2000 blocks, 200 warmup

Wait Time Breakdown

Persistence Wait

Metric main auto-opt/20260415-trie-overlay-exact
Mean 23.34ms 23.46ms
P50 0.02ms 0.02ms
P95 218.70ms 220.26ms

Trie Cache Update Wait

Metric main auto-opt/20260415-trie-overlay-exact
Mean 0.38ms 0.40ms
P50 0.02ms 0.00ms
P95 1.61ms 1.79ms

Execution Cache Update Wait

Metric main auto-opt/20260415-trie-overlay-exact
Mean 0.03ms 0.00ms
P50 0.00ms 0.00ms
P95 0.00ms 0.00ms

Grafana Dashboard

Charts

Latency, Throughput & Diff

Latency, Throughput & Diff

Wait Time Breakdown

Wait Time Breakdown

Gas vs Latency

Gas vs Latency

Grafana Dashboard

View real-time metrics

@mediocregopher mediocregopher self-assigned this Apr 23, 2026
@mediocregopher mediocregopher added C-perf A change motivated by improving speed, memory usage or disk footprint A-trie Related to Merkle Patricia Trie implementation labels Apr 23, 2026
@mediocregopher mediocregopher marked this pull request as ready for review April 23, 2026 14:29
@mediocregopher mediocregopher requested a review from pepyakin April 24, 2026 10:37
@github-project-automation github-project-automation Bot moved this from Backlog to In Progress in Reth Tracker Apr 24, 2026
@mediocregopher mediocregopher added this pull request to the merge queue Apr 27, 2026
Merged via the queue into main with commit 345fbbb Apr 27, 2026
39 checks passed
@mediocregopher mediocregopher deleted the auto-opt/20260415-trie-overlay-exact branch April 27, 2026 07:39
@github-project-automation github-project-automation Bot moved this from In Progress to Done in Reth Tracker Apr 27, 2026
umeeSthein pushed a commit to umeeSthein/tempo that referenced this pull request Apr 30, 2026
Automated nightly update of reth dependencies from `paradigmxyz/reth`
main branch.

## Upstream reth changes


[`7839f3d...73ec2c9`](paradigmxyz/reth@7839f3d...73ec2c9)

🔗 Amp thread:
https://ampcode.com/threads/T-019dd89b-f659-75eb-a3f2-3e769d63297f
**Engine**
- Spawn BAL hashed state before storage prefetch
([#23761](paradigmxyz/reth#23761)) and disable
BAL parallel execution by default
([#23764](paradigmxyz/reth#23764))
- Add CLI flag to disable BAL storage prefetch
([#23770](paradigmxyz/reth#23770))
- Log transient invalid header cache skips
([#23711](paradigmxyz/reth#23711))
- Add `DecodedBal` in `ExecutionEnv`
([#23675](paradigmxyz/reth#23675))

**RPC**
- Clean up eth state cache reorg entries
([#23683](paradigmxyz/reth#23683))
- Pass block timestamp to txn
([#23700](paradigmxyz/reth#23700))
- Include block numbers in `BlockRangeExceedsHead` error
([#23720](paradigmxyz/reth#23720))

**Network / P2P**
- Add Basic in-memory BAL store and BAL request to block access list
requests ([#23682](paradigmxyz/reth#23682),
[#23710](paradigmxyz/reth#23710))
- Enforce BAL response soft limit and apply count cap to handler
([#23725](paradigmxyz/reth#23725),
[#23754](paradigmxyz/reth#23754))
- Avoid RLP-decoding `NewBlock` payloads
([#23712](paradigmxyz/reth#23712)) and bound
memory footprint of p2p messages
([#23718](paradigmxyz/reth#23718))
- Memory-bound channel between network and tx manager
([#23802](paradigmxyz/reth#23802))
- Track unknown tx types in announcement metrics
([#23688](paradigmxyz/reth#23688))
- Retain active session buffer capacity
([#23702](paradigmxyz/reth#23702)) and respect
peer requirements for fetch followups
([#23706](paradigmxyz/reth#23706))
- Support binding discv5 and discv4 to the same port
([#23613](paradigmxyz/reth#23613)) and use Weak
reference in discv5 kbuckets bg task to release port on shutdown
([#23282](paradigmxyz/reth#23282))

**Trie**
- Skip DB seek on exact overlay hits
([#23559](paradigmxyz/reth#23559))
- Account for heap-allocated blinded hashes in `SparseNode::memory_size`
([#23726](paradigmxyz/reth#23726))

**DB / Storage**
- `reth db migrate-v2` for pruned nodes
([#23716](paradigmxyz/reth#23716))
- Pass `ExecutedBlocks` to `OverlayBuilder`, reduce reverts queried
([#23657](paradigmxyz/reth#23657))
- Add empty request check to storage values
([#23714](paradigmxyz/reth#23714))
- Derive `Eq` for `IntegerList`
([#23709](paradigmxyz/reth#23709)) and reorder
unix deps after strum
([#23697](paradigmxyz/reth#23697))

**Provider / EVM**
- Use overlay builders in historical state paths
([#23667](paradigmxyz/reth#23667))
- Return gas output from block builder
([#23744](paradigmxyz/reth#23744))
- Expose executor transaction result type
([#23759](paradigmxyz/reth#23759))

**Perf**
- Configurable rocksdb block cache size and re-use of mdbx provider in
re-execute ([#23701](paradigmxyz/reth#23701))
- Enable revm `p256-aws-lc-rs` feature
([#23721](paradigmxyz/reth#23721))
- Add platform-specific RUSTFLAGS to Dockerfile
([#23738](paradigmxyz/reth#23738))

**Bench**
- Add reorg mode to `new-payload-fcu`
([#23666](paradigmxyz/reth#23666))
- Enable `keccak-cache-global` in `reth-bb`
([#23723](paradigmxyz/reth#23723)) and fix
multi-executor support
([#23763](paradigmxyz/reth#23763))
- Dedupe merged BAL storage reads
([#23758](paradigmxyz/reth#23758))

**Re-execute**
- Verify reverts against changesets
([#23717](paradigmxyz/reth#23717))

**Payload**
- Track Amsterdam block gas in builders
([#23743](paradigmxyz/reth#23743))

**CLI**
- Use `TxTy`/`ReceiptTy` for static-file db get
([#23692](paradigmxyz/reth#23692)) and node
types in execution stage dump
([#23705](paradigmxyz/reth#23705))
- Preserve `trusted_nodes_only` from config when `--trusted-only` is
unset ([#23703](paradigmxyz/reth#23703))
- Avoid u64 underflow in `setup_without_evm` for genesis header
([#23728](paradigmxyz/reth#23728))

**Testing**
- Add BAL request e2e coverage
([#23727](paradigmxyz/reth#23727))
- Cover admin node info discv5 port
([#23781](paradigmxyz/reth#23781))

**Misc**
- Bump reth core to v0.3.1
([#23707](paradigmxyz/reth#23707)) and alloy-evm
to 0.33.3 ([#23778](paradigmxyz/reth#23778))
- Align ERA1 export with spec
([#23693](paradigmxyz/reth#23693))

## Migrations

🔗 Amp thread:
https://ampcode.com/threads/T-019dd89c-63d3-752f-ac22-7d4aef2ac3e3
- **Bumped reth git rev** from `7839f3d` to `73ec2c9` across all
`reth-*` workspace dependencies in
[Cargo.toml](file:///home/runner/work/tempo/tempo/Cargo.toml), and
bumped `reth-primitives-traits` from `0.3.0` to `0.3.1` and `alloy-evm`
from `0.33.0` to `0.34.0` to track upstream releases.
- **Switched p2p proxy transactions channel** from
`tokio::sync::mpsc::unbounded_channel` to
`reth_metrics::common::mpsc::memory_bounded_channel` with a 32 MiB
budget in
[bin/tempo/src/p2p_proxy.rs](file:///home/runner/work/tempo/tempo/bin/tempo/src/p2p_proxy.rs),
matching reth's new default `tx_channel_memory_limit_bytes` to prevent
unbounded memory growth; added `reth-metrics` to
[bin/tempo/Cargo.toml](file:///home/runner/work/tempo/tempo/bin/tempo/Cargo.toml).
- **Changed `BlockExecutor::commit_transaction` signature** in
[crates/evm/src/block.rs](file:///home/runner/work/tempo/tempo/crates/evm/src/block.rs)
from returning `Result<GasOutput, BlockExecutionError>` to returning
`GasOutput` directly (upstream removed the fallible return); replaced
the missing-tx error with an `expect`, and updated all tests to drop
`.unwrap()`.
- **Added `Send + 'static` bound to `TxResult` impl** for
`TempoTxResult<H>` to satisfy the new upstream trait bounds on
associated execution-result types.
- **Exposed `TempoBlockExecutor` and `TempoTxResult` as `pub`**
(previously `pub(crate)`) and re-exported them from
[crates/evm/src/lib.rs](file:///home/runner/work/tempo/tempo/crates/evm/src/lib.rs)
so they can be named in the new associated types.
- **Added associated types `TxExecutionResult` and `Executor` to
`BlockExecutorFactory` impl** for `TempoEvmConfig`, and changed
`create_executor` to return the concrete `Self::Executor<'a, DB, I>`
instead of `impl BlockExecutorFor<'a, Self, DB, I>`, tracking upstream's
move from RPIT to named associated types; dropped the now-unused
`BlockExecutorFor` import and the `'a` lifetime bounds on `DB`/`I`.
- **Implemented new `HeaderMut` methods** (`set_mix_hash`,
`set_extra_data`, `set_parent_beacon_block_root`) for `TempoHeader` in
[crates/primitives/src/reth_compat/header.rs](file:///home/runner/work/tempo/tempo/crates/primitives/src/reth_compat/header.rs)
to satisfy the expanded upstream trait, delegating to the inner Ethereum
header.

[GitHub
Workflow](https://github.com/tempoxyz/tempo/actions/runs/25101489247)

---------

Co-authored-by: Centaur AI <ai@centaur.local>
Co-authored-by: Amp <amp@ampcode.com>
Co-authored-by: klkvr <klkvrr@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-trie Related to Merkle Patricia Trie implementation C-perf A change motivated by improving speed, memory usage or disk footprint

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

3 participants