Snooper Overhead on newPayload

Networks:
Ethereum Mainnet
Time range:
Start 2026-01-26T00:00:00Z
End 2026-01-26T23:59:59Z
snooper engine-api new-payload latency 7870
Published January 27, 2026 at 12:00 PM UTC

Question

What is the serialization overhead of rpc-snooper on engine_newPayload calls, and is the overhead consistent across EL clients?

Background

The rpc-snooper is deployed on the 7870 mainnet reference nodes. It sits between the consensus layer (CL) and execution layer (EL), intercepting Engine API calls to capture timing data.

Snooper architecture: CL → rpc-snooper → EL, showing CL-observed duration vs EL-observed duration

Here we're looking at engine_newPayload — where the CL sends a new execution payload to the EL for validation. We already measured get_blobs overhead separately. Since newPayload involves heavier EL-side processing (block execution), the snooper's relative overhead should be smaller here.

Methodology

Since the 7870 nodes report to both tables, we can measure overhead on a per-slot basis by joining the CL-side and EL-side observations of the same newPayload call on the same block:

  • consensus_engine_api_new_payload — Duration as observed by the CL (CL → snooper → EL → snooper → CL)
  • execution_engine_new_payload — Duration as observed by the snooper (snooper → EL → snooper), filtered to source = 'ENGINE_SOURCE_SNOOPER'

For each matched block, overhead = CL duration - EL duration.

Investigation

When Comparing Across Clients

Per-client summary of the snooper overhead across ~67,800 matched slots on January 26.

View Query: snooper_newpayload_end_to_end
No Results
Loading...

P50 overhead is 4-5ms across all EL clients. Erigon's mean looks high (17.9ms) but that's 23 extreme outliers (up to 7.8s) out of 13,572 calls pulling it up. Its trimmed average is 5.1ms, same as everything else. The overhead is a fixed serialization cost — it doesn't depend on what the EL is doing.

Slower clients feel it less: Erigon at ~427ms avg only loses ~4% to the snooper, while Reth at ~54ms avg loses ~10%.

When Looking at the Distribution

How the serialization overhead is distributed across all newPayload calls.

View Query: snooper_newpayload_overhead_distribution
Loading...

~81% of all calls fall in the 2-10ms range. The 4-6ms bucket is the most common at ~34%. Less than 1% of calls exceed 20ms.

Takeaways

  • Median overhead is 4-5ms for engine_newPayload, regardless of EL client
  • It's a fixed serialization cost that doesn't scale with payload size or EL processing time
  • 81% of calls land in the 2-10ms range; less than 1% exceed 20ms
  • Erigon has rare extreme outliers that inflate its mean, but its P50 is the same as everyone else
  • Relative impact: ~4% on slow clients (Erigon) up to ~10% on fast clients (Reth)
  • Together with the get_blobs results, the snooper is fine for production on reference nodes