Skip to content

deps: update reth from main (2026-07-21)#6746

Merged
klkvr merged 28 commits into
mainfrom
reth-auto-bump
Jul 21, 2026
Merged

deps: update reth from main (2026-07-21)#6746
klkvr merged 28 commits into
mainfrom
reth-auto-bump

Conversation

@decofe

@decofe decofe commented Jul 8, 2026

Copy link
Copy Markdown
Member

Automated nightly update of reth dependencies from paradigmxyz/reth main branch.

Upstream reth changes

1bf2384...01d3400

🔗 Amp thread: https://ampcode.com/threads/T-019f82db-9b08-71f2-9518-e78daad00565
Engine

  • Added SSZ containers for payloads, forkchoice status, proxy communication, and REST-SSZ blob body witnesses (#26133, #26271, #26335, #26328).
  • Improved sparse-trie proof handling with stalled-proof errors and diagnostics, correct prune retention, preserved anchors, and reduced cursor overlays (#26325, #26327, #26332, #26422, #25952).
  • Extended post-execution hooks with parent state and header context, passing state updates by value (#26330, #26420, #26398).
  • Made state-root update stream ownership explicit and exposed the payload state-root receiver (#26329, #26431).
  • Added configurable development finality depth (#26451).

Trie

  • Simplified state-root execution by removing ParallelStateRoot, renaming its error type, and refactoring strategy selection and defaults (#26121, #26132, #26085, #26355, #26358).
  • Fixed sparse-trie correctness and concurrency issues involving late hints, branch-child pruning, and exact-subtrie proof target grouping (#26356, #26376, #26357).
  • Simplified trie internals by consolidating lazy data, splitting multiproof logic, removing changed-path tracking, and eliding empty new accounts from hashed state (#26139, #26353, #26403, #26367).
  • Improved tracing and span propagation for parallel sparse-trie work and pruning (#26273, #26331).

Network

  • Added a Snap client, inbound snap/2 serving, real account/storage range responses, and initial end-to-end coverage (#26049, #26324, #26339, #26368).
  • Reduced ECIES allocation and copying, cached AES key schedules, and raised the write flush boundary to 64 KiB (#26120, #26119, #26346, #26348).
  • Reduced session and stream overhead through static ping/pong encoding, less idle polling, timer change tracking, batched flushing, and reusable Snappy buffers (#26122, #26123, #26124, #26125, #26349, #26347).
  • Optimized pooled transaction recovery and preallocated pooled hash metadata decoding (#26304, #26145).
  • Fixed discovery advertisement and peer management: advertise the bound RLPx port, share one UDP port across discv4/discv5, publish fork ENR data for custom chains, and reset reputation after admin unban (#26265, #26089, #26449, #26334).

RPC

  • Added the EthSubscriptions trait for log and header streams (#22155).
  • Improved testing RPC behavior by accepting positional block parameters and rejecting invalid block transactions by default (#25750, #26372).
  • Aligned BAL lookup errors with the specification and added a BAL debug method (#26441, #26438).

Pruning & Storage

  • Added row-budgeted dupsort pruning and optimized pruning with static-file transaction hash ranges (#26287, #26312).
  • Corrected receipts static-file sizing to derive it from prune distance (#26108).
  • Removed the unused prune database crate (#26391).

Transaction Pool

  • Reduced validator allocations, forwarded same-origin validation batches, specialized small discard lookups, and deduplicated blob fallback reads (#26343, #26341, #26345, #26255).

Wire & Metrics Performance

  • Preallocated Ethereum wire transaction-list decoding (#26164).
  • Moved metric rendering off the main execution path (#26180).

Download & Import

  • Added file-archive support for modular snapshots and exposed snapshot environment access (#26078, #25285).
  • Rejected incomplete blocks encountered at end-of-file during import (#26363).

Builder & Stages

  • Refactored builder resource ownership around leases and paused JIT execution while constructing payloads (#26427, #26429).
  • Added a partial-persistence finish checkpoint for stages (#26447).

Migrations

🔗 Amp thread: https://ampcode.com/threads/T-019f82dc-2079-7249-9940-8e00022f9c94

  • Bumped all Reth git dependencies from 1bf2384 to 01d3400.
  • Added handling for the new IncomingEthRequest::GetSnap variant by dropping its response sender because the P2P proxy does not support snap sync.
  • Implemented the newly required EthSubscriptions helper trait for TempoEthApi.
  • Renamed payload-builder trie_handle usage to state_root_handle and migrated state hooks to the consuming take_state_hook() API.
  • Migrated hashed-state retrieval to try_take_hashed_state_rx(), preserving the new shared Arc<HashedPostState> representation and cloning only when fallback root computation requires ownership.
  • Removed changed_paths from payload state-root handling and BuiltPayloadExecutedBlock construction because the updated Reth payload API no longer exposes that field.

GitHub Workflow

@decofe decofe added the A-dependencies Related to dependency updates label Jul 8, 2026
@decofe

decofe commented Jul 8, 2026

Copy link
Copy Markdown
Member Author

derek bench preset=tip20

@decofe

decofe commented Jul 8, 2026

Copy link
Copy Markdown
Member Author

cc @decofe

⚪ Benchmark complete: No Difference View job

⚪ Bench Comparison: No Difference

Refs: merge-base vs reth-auto-bump
Criteria: 95% run-bootstrap CI must clear floor; cells show delta (+/-CI/floor).

Configuration

  • Derek command: derek bench mode=e2e preset=tip20 duration=90 bloat=100 token-count=4 tps=50000 accounts=1000 max-concurrent-requests=500 baseline=merge-base feature=reth-auto-bump baseline-hardfork="" feature-hardfork="" gas-limit=5000000000 run-pairs=3 run-side=comparison otlp=true metrics=false no-cache=false force-bloat=false
  • Bloat: 100000 MiB
  • Token count: 4
  • Preset: tip20
  • Target TPS: 50000
  • Duration: 90s
  • Run pairs: 3
  • Baseline blocks: 511
  • Feature blocks: 511

Tempo Metrics

Metric Baseline Feature Delta
TPS Mean 22132 22081 -0.23% ⚪ (+/-0.24/floor 0.55)
Gas Throughput [Mgas/s] 1120.7 1118.1 -0.23% ⚪ (+/-0.24/floor 0.50)
Block Time Mean [ms] 515.2 515.7 +0.10% ⚪ (+/-0.82/floor 0.40)
Block Time P50 [ms] 510.0 514.0 +0.78% ⚪ (+/-0.75/floor 0.70)
Block Time P90 [ms] 574.0 577.0 +0.52% ⚪ (+/-2.09/floor 0.70)
Block Time P99 [ms] 630.0 632.0 +0.32% ⚪ (+/-3.60/floor 1.60)

Builder

Metric Baseline Feature Delta
Gas Throughput [Mgas/s] 2109.5 2090.2 -0.92% ⚪ (+/-0.68/floor 0.95)
P50 [ms] 274.6 277.1 +0.91% ⚪ (+/-0.90/floor 0.45)
P90 [ms] 314.9 314.1 -0.25% ⚪ (+/-1.56/floor 0.90)
P99 [ms] 347.0 346.6 -0.12% ⚪ (+/-4.96/floor 1.25)
Builder details
Metric Baseline Feature Delta
Finish P50 [ms] 5.7 5.7 +0.00%
Finish P90 [ms] 20.7 21.0 +1.45%
Finish P99 [ms] 35.5 38.0 +7.04%
Pool Fetch P50 [ms] 7.3 6.9 -5.48%
Pool Fetch P90 [ms] 17.2 16.5 -4.07%
Pool Fetch P99 [ms] 23.0 21.1 -8.26%
Included Tx Exec P50 [ms] - -
Included Tx Exec P90 [ms] - -
Included Tx Exec P99 [ms] - -
Invalid Tx Exec P50 [ms] - -
Invalid Tx Exec P90 [ms] - -
Invalid Tx Exec P99 [ms] - -
Invalid Tx Attempts P50 0.0 0.0 0.00%
Invalid Tx Attempts P90 0.0 0.0 0.00%
Invalid Tx Attempts P99 0.0 0.0 0.00%
Reverted Txs 0 0 0.00%
Invalid Tx Skips 463 0 -100.00%
Nonce Too Low Skips 0 0 0.00%
Serialized Block Size P50 [KiB] 2772.9 2751.7 -0.76%
Serialized Block Size P90 [KiB] 3346.2 3314.9 -0.94%
Serialized Block Size P99 [KiB] 3586.2 3620.5 +0.96%
Serialized Block Size / Tx P50 [B/tx] 249.2 249.2 +0.00%
Serialized Block Size / Tx P90 [B/tx] 249.2 249.2 +0.00%
Serialized Block Size / Tx P99 [B/tx] 249.3 249.3 +0.00%
Fill Overhead P50 [ms] - -
Fill Overhead P90 [ms] - -
Fill Overhead P99 [ms] - -
Fill Idle P50 [ms] 67.0 74.0 +10.45%
Fill Idle P90 [ms] 157.0 154.0 -1.91%
Fill Idle P99 [ms] 212.0 211.0 -0.47%

Validator

Metric Baseline Feature Delta
Gas Throughput [Mgas/s] 3103.7 3119.2 +0.50% ⚪ (+/-0.19/floor 0.65)
P50 [ms] 185.8 182.0 -2.05% ⚪ (+/-1.70/floor 1.55)
P90 [ms] 239.4 237.9 -0.63% ⚪ (+/-2.81/floor 1.55)
P99 [ms] 276.5 279.3 +1.01% ⚪ (+/-1.67/floor 2.05)

Observability

@decofe decofe changed the title deps: update reth from main (2026-07-08) deps: update reth from main (2026-07-09) Jul 9, 2026
@decofe

decofe commented Jul 9, 2026

Copy link
Copy Markdown
Member Author

cyclops audit fast

@decofe

decofe commented Jul 9, 2026

Copy link
Copy Markdown
Member Author

cc @decofe

Cyclops audit event published. View workflow run

Config: config: default, iterations: 1, hours: default

@tempoxyz-bot tempoxyz-bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

👁️ Cyclops Review — No actionable findings.

Reviewer Callouts
  • EthSubscriptions default behavior (crates/node/src/rpc/mod.rs:50, crates/node/src/rpc/mod.rs:477): The empty implementation relies on upstream reth subscription defaults. A human should confirm those defaults continue to serialize Tempo's custom transaction envelope and receipt fields through the same converter paths used by non-subscription RPC methods.
  • Future snap request handling (bin/tempo/src/p2p_proxy.rs:476-478): Tempo currently does not appear to advertise snap support, so the new GetSnap arm is an exhaustiveness handler. If a future change enables snap, re-check whether dropping the response sender is the intended unsupported-request signal, or prefer an explicit unsupported response to avoid peer-scoring or disconnect surprises.
  • Out-of-repo reth delta (Cargo.toml, Cargo.lock): The primary behavioral risk in this PR is the upstream reth revision bump (39cf643dbb2757). For higher assurance, review the upstream diff for consensus, EVM, networking, and RPC behavior that Tempo depends on but does not directly modify here.
  • Build verification environment: One worker attempted cargo check -p tempo-node --all-features, but the environment was missing libclang, causing reth-mdbx-sys bindgen to fail before source-level checking completed. Treat this as environmental and rely on CI or a properly provisioned local build for compile confirmation.

@decofe decofe changed the title deps: update reth from main (2026-07-09) deps: update reth from main (2026-07-10) Jul 10, 2026
@decofe

decofe commented Jul 10, 2026

Copy link
Copy Markdown
Member Author

cyclops audit fast

@decofe

decofe commented Jul 10, 2026

Copy link
Copy Markdown
Member Author

cc @decofe

Cyclops audit event published. View workflow run

Config: config: default, iterations: 1, hours: default

@tempoxyz-bot tempoxyz-bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

👁️ Cyclops Review — No actionable findings.

Reviewer Callouts
  • Dependency delta (Cargo.toml:146, Cargo.lock): The reth revision bump changes a broad transitive dependency set. Given the previously tracked vulnerable-transitive-dependency concern (SIGP-TMPO2-41), run a fresh cargo audit/cargo deny pass against the resolved e58078e lockfile.
  • State-root task scheduling (crates/payload/builder/src/lib.rs:1047): The pre-existing handle.state_root() path waits for the BAL/sparse-trie task. A saturated blocking pool could delay hook drop and completion until the job deadline or cancellation; this is not introduced by this PR, but the scheduling/cancellation behavior merits human confirmation.

@decofe

decofe commented Jul 10, 2026

Copy link
Copy Markdown
Member Author

cyclops audit note="Review every upstream reth commit included in the revision diff."

@decofe

decofe commented Jul 10, 2026

Copy link
Copy Markdown
Member Author

cc @decofe

Cyclops audit event published. View workflow run

Config: config: default, iterations: default, hours: default, note: Review every upstream reth commit included in the revision diff.

@tempoxyz-bot tempoxyz-bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

👁️ Cyclops Review

This reth upgrade is generally integrated correctly, but one low-severity defense-in-depth issue remains in the optional BAL payload path; see the inline comment. No directly exploitable consensus issue was identified.

Reviewer Callouts
  • BAL deployment scope: This path is gated by the optional, non-default bal feature. Confirm whether production or mainnet builds enable it; if they do, preserve reth's panic/finalization semantics before relying on the sparse-trie task's fail-closed behavior.

@decofe decofe changed the title deps: update reth from main (2026-07-10) deps: update reth from main (2026-07-11) Jul 11, 2026
@decofe

decofe commented Jul 11, 2026

Copy link
Copy Markdown
Member Author

cyclops audit note="Review every upstream reth commit included in the revision diff."

@decofe

decofe commented Jul 11, 2026

Copy link
Copy Markdown
Member Author

cc @decofe

Cyclops audit event published. View workflow run

Config: config: default, iterations: default, hours: default, note: Review every upstream reth commit included in the revision diff.

@tempoxyz-bot tempoxyz-bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

👁️ Cyclops Review — No actionable findings.

The Reth dependency migration and its state-root, RPC subscription, and P2P proxy adaptations were traced through their upstream implementations without identifying a security or correctness regression.

Reviewer Callouts
  • One-shot state-root hook lifecycle (crates/payload/builder/src/lib.rs:541-560, crates/payload/builder/src/lib.rs:1012-1047, crates/payload/builder/src/lib.rs:1375-1402): Future changes must preserve unique ownership and drain all execution/BAL updates before dropping the hook on a non-panicking path.
  • Snap deployment intent (bin/tempo/src/p2p_proxy.rs:297-323, bin/tempo/src/p2p_proxy.rs:476-478): The proxy keeps Snap disabled and declines GetSnap; if another full-node configuration enables the new upstream snap/2 support, confirm its serving policy and response/I/O limits.

@decofe decofe changed the title deps: update reth from main (2026-07-11) deps: update reth from main (2026-07-12) Jul 12, 2026
@decofe

decofe commented Jul 12, 2026

Copy link
Copy Markdown
Member Author

cyclops audit note="Review every upstream reth commit included in the revision diff."

@decofe

decofe commented Jul 12, 2026

Copy link
Copy Markdown
Member Author

cc @decofe

Cyclops audit event published. View workflow run

Config: config: default, iterations: default, hours: default, note: Review every upstream reth commit included in the revision diff.

@decofe decofe changed the title deps: update reth from main (2026-07-20) deps: update reth from main (2026-07-21) Jul 21, 2026
@decofe

decofe commented Jul 21, 2026

Copy link
Copy Markdown
Member Author

cyclops audit note="Review every upstream reth commit included in the revision diff."

@decofe

decofe commented Jul 21, 2026

Copy link
Copy Markdown
Member Author

cc @decofe

Cyclops audit event published. View workflow run

Config: config: default, iterations: default, hours: default, note: Review every upstream reth commit included in the revision diff.

@tempoxyz-bot

tempoxyz-bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

👁️ Cyclops Security Review

98bf217

🧭 Verifying · mode=normal · workers 3/3 done (0 left) · verify pending 1 · ending soon

Worker Engine Latest Status Status
pr-6746-w1 claude-opus-4-8 ✅ Iteration 3 · Audit Done
pr-6746-w2 gpt-5.5 ✅ Iteration 3 · Audit Done
pr-6746-w3 gpt-5.6-sol ⏰ Iteration 3 · Audit Done

Findings

# Finding Severity Status
1 Regenesis static-file rewrite has a crash-atomicity gap Low Iteration 1 · Audit
⚙️ Controls
  • 🚀 Keep only 1 remaining iteration per worker after the current work finishes.
  • 👀 Keep only 2 remaining iterations per worker after the current work finishes.
  • ❤️ Let only worker 1 continue; other workers skip queued iterations.
  • 😄 Let only worker 2 continue; other workers skip queued iterations.
  • 🎉 End faster by skipping queued iterations and moving toward consolidation.
  • 😕 Stop active workers/verifiers now and start consolidation immediately.

📜 23 events

🔍 pr-6746-w1 iter 1/3 [audit-general.md]
🔍 pr-6746-w2 iter 1/3 [audit-focused.md]
🔍 pr-6746-w3 iter 1/3 [audit-invariants.md]
pr-6746-w1 iter 1 — clear
🔍 pr-6746-w1 iter 2/3 [audit-focused.md]
pr-6746-w1 iter 2 — clear
🔍 pr-6746-w1 iter 3/3 [audit-invariants.md]
pr-6746-w1 iter 3 — clear
🏁 pr-6746-w1 done
🛡️ pr-6746-w2 iter 1 — defense-in-depth
🚨 Finding: Regenesis static-file rewrite has a crash-atomicity gap (Low)
🔍 pr-6746-w2 iter 2/3 [audit-ripple.md]
pr-6746-w3 iter 1 — timeout
🔍 pr-6746-w3 iter 2/3 [audit-focused.md]
pr-6746-w2 iter 2 — clear
🔍 pr-6746-w2 iter 3/3 [audit-invariants.md]
pr-6746-w2 iter 3 — clear
🏁 pr-6746-w2 done
pr-6746-w3 iter 2 — clear
🔍 pr-6746-w3 iter 3/3 [audit-ripple.md]
pr-6746-w3 iter 3 — timeout
⚠️ Worker 3 completed partially (1 usable, 2 failed); continuing with available reports
🏁 pr-6746-w3 done

@klkvr

klkvr commented Jul 21, 2026

Copy link
Copy Markdown
Member

derek bench

@decofe

decofe commented Jul 21, 2026

Copy link
Copy Markdown
Member Author

cc @klkvr

⚠️ Benchmark complete: Mixed Results View job

⚠️ Bench Comparison: Mixed Results

Refs: 9dd308c vs reth-auto-bump
Criteria: 95% run-bootstrap CI must clear floor; cells show delta (+/-CI/floor).

Configuration

  • Derek command: derek bench mode=e2e preset=default duration=90 bloat=100 token-count=4 tps=50000 accounts=1000 max-concurrent-requests=500 baseline=9dd308cbb24a1fc1a78c8f6f9e19a851b4bcff2c feature=reth-auto-bump baseline-hardfork="" feature-hardfork="" gas-limit=1000000000000 run-pairs=3 run-side=comparison otlp=true metrics=false no-cache=false force-bloat=false general-gas-limit=1000000000000
  • Bloat: 100000 MiB
  • Token count: 4
  • Preset: default
  • Target TPS: 50000
  • Duration: 90s
  • Run pairs: 3
  • Baseline blocks: 514
  • Feature blocks: 512

Tempo Metrics

Metric Baseline Feature Delta
TPS Mean 20411 21134 +3.54% ✅ (+/-0.35/floor 0.55)
Gas Throughput [Mgas/s] 1033.6 1070.2 +3.54% ✅ (+/-0.35/floor 0.50)
Block Time Mean [ms] 511.8 514.0 +0.43% ⚪ (+/-0.98/floor 0.40)
Block Time P50 [ms] 510.0 514.0 +0.78% ⚪ (+/-0.49/floor 0.70)
Block Time P90 [ms] 568.0 570.0 +0.35% ⚪ (+/-1.76/floor 0.70)
Block Time P99 [ms] 619.0 625.0 +0.97% ⚪ (+/-2.83/floor 1.60)

Builder

Metric Baseline Feature Delta
Gas Throughput [Mgas/s] 1978.5 1990.4 +0.60% ⚪ (+/-1.78/floor 0.95)
P50 [ms] 271.1 280.3 +3.39% ❌ (+/-2.08/floor 0.45)
P90 [ms] 313.1 316.1 +0.96% ⚪ (+/-1.35/floor 0.90)
P99 [ms] 352.0 357.6 +1.59% ⚪ (+/-2.84/floor 1.25)
Builder details
Metric Baseline Feature Delta
Finish P50 [ms] 6.6 6.8 +3.03%
Finish P90 [ms] 22.6 21.4 -5.31%
Finish P99 [ms] 35.4 30.5 -13.84%
Pool Fetch P50 [ms] 7.9 7.8 -1.27%
Pool Fetch P90 [ms] 17.4 18.0 +3.45%
Pool Fetch P99 [ms] 23.0 23.3 +1.30%
Stop Reason — Build Budget 508 507 -0.20%
Serialized Block Size P50 [KiB] 2505.6 2620.6 +4.59%
Serialized Block Size P90 [KiB] 3084.6 3200.6 +3.76%
Serialized Block Size P99 [KiB] 3534.2 3506.5 -0.78%
Serialized Block Size / Tx P50 [B/tx] 249.2 249.2 +0.00%
Serialized Block Size / Tx P90 [B/tx] 249.2 249.2 +0.00%
Serialized Block Size / Tx P99 [B/tx] 249.3 249.3 +0.00%
Fill Idle P50 [ms] 66.0 74.0 +12.12%
Fill Idle P90 [ms] 152.0 154.0 +1.32%
Fill Idle P99 [ms] 222.0 236.0 +6.31%

Validator

Metric Baseline Feature Delta
Gas Throughput [Mgas/s] 2813.4 2990.3 +6.29% ✅ (+/-0.40/floor 0.65)
P50 [ms] 186.1 182.3 -2.04% ⚪ (+/-1.31/floor 1.55)
P90 [ms] 243.0 234.0 -3.70% ✅ (+/-1.78/floor 1.55)
P99 [ms] 285.8 273.7 -4.23% ✅ (+/-0.83/floor 2.05)

Observability

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-dependencies Related to dependency updates

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants