deps: update reth from main (2026-07-21)#6746
Conversation
|
derek bench preset=tip20 |
|
cc @decofe ⚪ Benchmark complete: No Difference View job ⚪ Bench Comparison: No DifferenceRefs: merge-base vs reth-auto-bump Configuration
Tempo Metrics
Builder
Builder details
Validator
Observability |
|
cyclops audit fast |
|
cc @decofe Cyclops audit event published. View workflow run Config: config: |
tempoxyz-bot
left a comment
There was a problem hiding this comment.
👁️ Cyclops Review — No actionable findings.
Reviewer Callouts
- ⚡
EthSubscriptionsdefault behavior (crates/node/src/rpc/mod.rs:50,crates/node/src/rpc/mod.rs:477): The empty implementation relies on upstreamrethsubscription 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 newGetSnaparm 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
rethdelta (Cargo.toml,Cargo.lock): The primary behavioral risk in this PR is the upstreamrethrevision bump (39cf643→dbb2757). 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 missinglibclang, causingreth-mdbx-sysbindgen to fail before source-level checking completed. Treat this as environmental and rely on CI or a properly provisioned local build for compile confirmation.
|
cyclops audit fast |
|
cc @decofe Cyclops audit event published. View workflow run Config: config: |
tempoxyz-bot
left a comment
There was a problem hiding this comment.
👁️ 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 freshcargo audit/cargo denypass against the resolvede58078elockfile. - ⚡ State-root task scheduling (
crates/payload/builder/src/lib.rs:1047): The pre-existinghandle.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.
|
cyclops audit note="Review every upstream reth commit included in the revision diff." |
|
cc @decofe Cyclops audit event published. View workflow run Config: config: |
tempoxyz-bot
left a comment
There was a problem hiding this comment.
👁️ 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
balfeature. 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.
|
cyclops audit note="Review every upstream reth commit included in the revision diff." |
|
cc @decofe Cyclops audit event published. View workflow run Config: config: |
tempoxyz-bot
left a comment
There was a problem hiding this comment.
👁️ 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 declinesGetSnap; if another full-node configuration enables the new upstreamsnap/2support, confirm its serving policy and response/I/O limits.
|
cyclops audit note="Review every upstream reth commit included in the revision diff." |
|
cc @decofe Cyclops audit event published. View workflow run Config: config: |
|
cyclops audit note="Review every upstream reth commit included in the revision diff." |
|
cc @decofe Cyclops audit event published. View workflow run Config: config: |
👁️ Cyclops Security Review
🧭 Verifying · mode=
Findings
⚙️ Controls
📜 23 events🔍 |
|
derek bench |
|
cc @klkvr
|
| 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) |
Automated nightly update of reth dependencies from
paradigmxyz/rethmain branch.Upstream reth changes
1bf2384...01d3400🔗 Amp thread: https://ampcode.com/threads/T-019f82db-9b08-71f2-9518-e78daad00565
Engine
Trie
ParallelStateRoot, renaming its error type, and refactoring strategy selection and defaults (#26121, #26132, #26085, #26355, #26358).Network
snap/2serving, real account/storage range responses, and initial end-to-end coverage (#26049, #26324, #26339, #26368).RPC
EthSubscriptionstrait for log and header streams (#22155).Pruning & Storage
Transaction Pool
Wire & Metrics Performance
Download & Import
Builder & Stages
Migrations
🔗 Amp thread: https://ampcode.com/threads/T-019f82dc-2079-7249-9940-8e00022f9c94
1bf2384to01d3400.IncomingEthRequest::GetSnapvariant by dropping its response sender because the P2P proxy does not support snap sync.EthSubscriptionshelper trait forTempoEthApi.trie_handleusage tostate_root_handleand migrated state hooks to the consumingtake_state_hook()API.try_take_hashed_state_rx(), preserving the new sharedArc<HashedPostState>representation and cloning only when fallback root computation requires ownership.changed_pathsfrom payload state-root handling andBuiltPayloadExecutedBlockconstruction because the updated Reth payload API no longer exposes that field.GitHub Workflow