paradigmxyz
reth
Blog
Docs
Changelog
Blog
Docs
Changelog
Overview
Branches
Benchmarks
Runs
Performance History
Latest Results
Merge branch 'main' into danipopes/rayon-ordered
danipopes/rayon-ordered
22 minutes ago
Merge branch 'main' into mattsse/parallel-cache-updates
mattsse/parallel-cache-updates
22 minutes ago
fix(snap-sync): advertise snap/1 capability and fix message routing The root cause of peers ignoring GetAccountRange requests was that snap/1 was never advertised in the Hello message. Without the snap capability in the handshake, peers don't know we support snap and silently drop messages in the snap ID range. Changes: - Add Protocol::snap_1() for snap/1 capability (8 message types) - Include snap/1 in default Hello message capabilities - Route unhandled satellite messages to primary (for snap messages that arrive via the multiplexer when no satellite handler exists) - Treat eth71+ message IDs (GetBlockAccessLists, BlockAccessLists) as raw capability messages on older versions instead of erroring, since those IDs overlap with snap in the multiplexed ID space Amp-Thread-ID: https://ampcode.com/threads/T-019c6340-6d8c-7362-9c45-dde842a8cf20 Co-authored-by: Amp <amp@ampcode.com>
georgios/snap-sync
43 minutes ago
fix(rpc): enforce timeout in debug trace methods The timeout field in GethDebugTracingOptions was accepted by the RPC API but silently dropped via .. destructuring in DebugInspector::new(). No enforcement mechanism existed at the RPC layer either, allowing long-running traces to hold semaphore permits indefinitely. Parse the Go-style duration string before entering the blocking closure and check an Instant deadline between per-transaction trace executions. Default to 5s when unspecified, matching Geth. Return ExecutionTimedOut on expiry (the error type existed but was unused). Affected methods: trace_block, debug_trace_transaction, debug_trace_call, debug_trace_call_at_tx_index, debug_trace_call_many.
0xMars42:fix-debug-trace-timeout
3 hours ago
fix(engine): prevent prewarming cache poisoning from MDBX snapshot divergence StateProviderBuilder.build() opens a fresh MDBX read transaction on every call. When the persistence thread commits between the execution build and the prewarm workers' builds, the workers see a newer snapshot and populate the shared ExecutionCache with stale data that execution then reads blindly. Pin the static file tip (hash + block number) on the first build() call and reject subsequent builds if persistence has advanced. This follows the same detection pattern as ConsistentDbView. Static files commit before MDBX, so the check is conservative: if static files haven't changed, MDBX hasn't advanced either. Also replace .expect() on the multiproof task's build() with graceful error handling — the sparse trie task already handles channel closure via timeout and sequential fallback. Closes #22159
0xMars42:fix-prewarming-cache-poisoning
3 hours ago
fix(engine): prevent prewarming cache poisoning from MDBX snapshot divergence StateProviderBuilder.build() opens a fresh MDBX read transaction on every call. When the persistence thread commits between the execution build and the prewarm workers' builds, the workers see a newer snapshot and populate the shared ExecutionCache with stale data that execution then reads blindly. Pin the static file tip (hash + block number) on the first build() call and reject subsequent builds if persistence has advanced. This follows the same detection pattern as ConsistentDbView. Static files commit before MDBX, so the check is conservative: if static files haven't changed, MDBX hasn't advanced either. Also replace .expect() on the multiproof task's build() with graceful error handling — the sparse trie task already handles channel closure via timeout and sequential fallback. Closes #22159 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
0xMars42:fix-prewarming-cache-poisoning
4 hours ago
fix(engine): prevent prewarming cache poisoning from MDBX snapshot divergence StateProviderBuilder.build() opens a fresh MDBX read transaction on every call. When the persistence thread commits between the execution build and the prewarm workers' builds, the workers see a newer snapshot and populate the shared ExecutionCache with stale data that execution then reads blindly. Pin the static file tip (hash + block number) on the first build() call and reject subsequent builds if persistence has advanced. This follows the same detection pattern as ConsistentDbView. Static files commit before MDBX, so the check is conservative: if static files haven't changed, MDBX hasn't advanced either. Also replace .expect() on the multiproof task's build() with graceful error handling — the sparse trie task already handles channel closure via timeout and sequential fallback. Closes #22159 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
0xMars42:fix-prewarming-cache-poisoning
4 hours ago
feat(snap-sync): add state root verification and auto pivot selection - Add state root verification phase: compute trie root from downloaded HashedAccounts/HashedStorages via DatabaseStateRoot, compare to pivot - Add StateRootVerification error variant - Auto-select pivot from best synced block when --debug.tip not provided - Fall back to --debug.tip if explicitly set Co-authored-by: Georgios <georgios@paradigm.xyz> Amp-Thread-ID: https://ampcode.com/threads/T-019c6223-1ccb-736b-aedc-b42a3c21a161 Co-authored-by: Amp <amp@ampcode.com>
georgios/snap-sync
6 hours ago
Active Branches
perf(engine): replace channel+BTreeMap reorder with lock-free for_each_ordered
last run
22 minutes ago
#22144
CodSpeed Performance Gauge
0%
perf(engine): parallelize account and storage cache updates in insert_state
last run
22 minutes ago
#22175
CodSpeed Performance Gauge
0%
feat: snap sync protocol implementation
last run
43 minutes ago
#22202
CodSpeed Performance Gauge
0%
© 2026 CodSpeed Technology
Home
Terms
Privacy
Docs