Validator AnonymityThe P2P network still has a privacy issueYann Vonlanthen · Ethereum Foundation
Who runs which validator?runs a validator???????????On chainvalidator 93?On the network203.0.113.7
Why does anonymity matter?slot n−1slot nslot n+1V7V7 runs hereDoSoffline+ MEV+ votesOur 2024 talk:“The proposer of slot n+1 could snipe the rewards of the proposer of slot n.”“Finality might be impacted.”
64 subnetssubnet 37subnet 62subnet 5My vote is for subnet 55Every validator votes once per epoch, every 6.4 minutes64 subnets: each node forwards only 2 of themOne hop into the right subnet, then gossipDo we give up privacy for lower network load?
Listening to everythingour nodeI am in all subnets!a peer?131413141313141475761V93V93V93V93Its two subnets: 13 and 14And now and then: 7, 57, 61 …Outside its two subnets, it only sends its own validator’s votes
One peer, one eveningEvery messagefrom one peerThe band: itstwo subnetsRed: onevalidatoronce per epoch,any subnetFour of them.All on this peer.Our measurement, 6 May 2024 · Heimbach, Vonlanthen, Villacis, Kiffer, Wattenhofer, USENIX Security 2025
4 nodes, 3 daysFrankfurtSeoulVirginiaZurich161,057validators located · more than 15 % of allEF bug bountyMay 2024 · Heimbach, Vonlanthen, Villacis, Kiffer, Wattenhofer, USENIX Security 2025
Few machines19,390validators on one machinea large staking poolFew clouds~90 %of located validatorsrun in the cloudAmazon alone: 19 %A few hundred machinescould stall finality.
2024An attacker couldsnipe a proposer’s rewardsstall finality2026With numbersKnockBlock: +44.5 % MEVStakeBleed: ~300 ETH in 2 hDoumanidis & Apostolaki, PrincetonFinancial Cryptography 2026
Find, hijack, exploitRouting Attacks in Ethereum PoS · Doumanidis & Apostolaki · FC 20261FindEvery validator,to its IP prefix2HijackSteal the routeto that prefix3ExploitStakeBleedKnockBlock
The host speaks firstTheir SuperNode times every vote that is pushed to it eagerly0 s1 s2 s3 s4 sslot starttime after slot start, for one validator’s votethe host: first, epoch after epochSchematic · Doumanidis & Apostolaki, FC 2026, §4.1
From a seed to everyoneSeedconsecutive IDsshare a prefix(50 % of validators)Cleansame deposit keysame hosting ASfor trainingLearntiming classifier91 % accurateMap1,063,660validators, to4,600 prefixesData: Nov 2024 to Jan 2025 · Doumanidis & Apostolaki, FC 2026, §4.2
From 15 % to everyone2024 · our subnet trick161,057IP addresses · blind to nodes in all 64 subnets2026 · timing1,063,660IP prefixes · classifier 91 % accurateJoining all 64 subnets no longer hides you.Where both studies overlap with high confidence, they agree on 70 % · Doumanidis & Apostolaki, FC 2026
Validators live in few places4,600 prefixes host all validators29prefixes holda third of allvalidatorsThree hosting networks hold more than half · OVH alone ~27 %
Hijacking a routerest of EthereumASAS203.0.113.0/23hosting providerattackerI have 203.0.113.0/24The most specific route winsTraffic flows to the attacker, who drops it40.85 % of Ethereum nodes: no proper RPKI protectionUndoing a hijack: 2 to 3 hours, by hand
StakeBleed01 h2 hhijack 30 prefixesMore than 1/3 of the stake is cut offinactivity leak, no finalityafter 4 epochs, 26 min287 ETH in 2 hours110.6 ETHpenalties, cut off61.8 ETHmissed rewards, cut off114.8 ETHeveryone else35 % of stake cut off40 % of the loss hits validatorsthat were never cut offDoumanidis & Apostolaki, FC 2026, §3.2 and §6 · 1,063,660 validators · even without a leak, 20 % cut off for 2 h costs 214 ETH
KnockBlockslot n−1slot nslot n+1V7Schedule known 12.8 min ahead< 2 minone prefix hijacked, for one slot+44.5 % MEVon average, in the block after a missed slotPays off from 4 validators.2024: could · 2026: +44.5 %Doumanidis & Apostolaki, FC 2026, §3.3 and §7 · break-even assumes ~$2,500 a year to run an AS
Since 2024new leakNodes advertise their stakeFulu, Dec 2025: ENR field cgc, stake / 32 ETHcgc4no validatorscgc8some stakecgc64~2,048 ETHin stateProposers fixed 2 epochs aheadFulu: lookahead in the state (EIP-7917) · Whisk: stagnantunchangedStill 2 of 64 subnets per nodeThe subnet trick still worksconsensus-specs: fulu/validator.md, fulu/p2p-interface.md (cgc), phase0/p2p-interface.md (SUBNETS_PER_NODE) · EIP-7917 Final, EIP-7441 Stagnant
Our 2024 questionDo we give upprivacy for lowernetwork load?Better trade-offsRemove the signalSpend the bandwidth dividendHide in your own subnet (DC)Vote through a throwaway relayKeep roles secretMake isolation hard
Noise doesn’t hide youTheir mapping model93 %+ random delays, 50 to 500 ms90 to 92 %No eager push, no out-of-subnet votes38 %Remove the signal. Noise is cheap to filter out.Doumanidis & Apostolaki, FC 2026, §8
Spend the bandwidth dividendInbound MiB per hour, one mainnet node2 subnetsdefault609control 35 %votes 57 %all 64opt-in flag5,6019.2×to join all 64 subnetsall 64compressed3,041Stream compression:−46 %Beats the subnet trick.Not timing.Nashatyrev, “Snappy with a memory”, ethresear.ch, Sep 2026 · Teku on mainnet, ~45 peers · compression: 1 MiB history
Hide in your own subnetToday13 · 14my node13147my validator’s voteStands outDC proposal13 · 14my node131413my validator’s voteLooks like relayingValidators keep their committee and subnet. Cost: +1.90 Mbit/s per subnet, vs 0.55 todayHides from the subnet trick, not from timingdc-networking: properties.md (anonymity enhancing), staggered-committees/analysis/network.md §4 · model: 1M validators, kappa = 7
Never fill a committee aloneContiguous indices: one operator fills the committeeone aggregate,first from one peerMapped in one observation: exact and free32 to 93 %of an operator’s validatorsin committees it fills aloneStrided or era-shuffled: every committee mixedSame schedule, at most one reshuffle a daydc-networking: staggered-committees/analysis/network.md · deposit batches of 1,000 to 10,000 validators
Hide each message?SPREAD, per message1001502000 %25 %50 %mean latency, msattacker accuracyGossipSub: 38 %30 %, and faster than GossipSubDandelion-level: 11 %But votes repeat every epoch010210 %50 %100 %epochs of the same validator voting99 % after 21 epochs20 % per voteWorth it for one-shot messages: blocks, inclusion lists. Not for votes.SPREAD, ethresear.ch 25343, Jul 2026: simulation, 10 % curious nodes · right: 5 % curious nodes, 20 % per vote, from a reply in that thread
Vote through a throwaway relayMake finding the sender worthlessgossip and subnetsprivate linkmy nodekeys and stake stay hererelaycheap, disposablefound: the relaystill hiddenDoSrelaynew relay, fresh IP128 aggregatorspoint to point, no gossipAll your votes leave through a cheap relayDeanonymize it: you find the relay, not the nodeDoS it: you miss a vote, then spawn a new oneVotes can skip gossip: straight to 128 aggregators, Wonderboom-styleClose to the paper’s temporary proxy nodes (Doumanidis & Apostolaki §8) · Wonderboom, arXiv 2602.06655 · dc-networking open question P4
Throwaway relays: the catchThe node still leaksSince Fulu its ENR showsits stake (cgc): StakeBleedcan still find its prefix.Relays are re-foundA new relay’s first votesmap it again. Each respawncosts missed votes.Proposals need moreA known relay can be DoSedin your slot: use a fresh one.Builder API calls leak too.Aggregators exposedDirect sending needs known,reachable aggregators, and128 copies of every vote.Who gets in?Fresh relays have no peerscore: floods are cheap.Needs PoV or per-vote checks.Trust and cloudsA shared relay sees, and candrop, your votes. Cheap relayscrowd into a few clouds.“Partial protection is no protection.”ethresear.ch 21050, Nov 2024, on Builder API registrations
Keep roles secretslot 1V7?slot 2V93?slot 3V12?slot 4V4?slot 5V55?slot 6V31?Public schedule: the KnockBlock target listWhisk (SSLE): stagnant. Fulu made the lookahead public stateFresh validator keys every day: SSLE almost for freeDC: secret duties via VRF, +96 B per voteEIP-7441 (Stagnant), EIP-7917 (Final) · Buterin, “The Extremely Lean Chain”, ethresear.ch, Jul 2026 · dc-networking network.md §4
Make isolation hardSign your routes (RPKI)Spread across providersDetect a hijack, move automaticallyOperators can do this today.40.85 %of Ethereum nodes lack properRPKI protectionOVH alone: ~27 % of validatorsThree ASes: more than halfDoumanidis & Apostolaki, FC 2026, §3.1, §5, §8
Anonymity is asecurity property.Protocol: stop leaking signalsDC: own subnet, never aloneOperators: sign routes, spread outThanks!@yannvonHeimbach, Vonlanthen, Villacis, Kiffer,Wattenhofer · USENIX Security 2025Doumanidis & Apostolaki · FC 2026
AppendixFor Q&A
Which peers we could readdeanonymizedno validatorsall 64 subnetsunclearFrankfurt47 %44 %9 %Seoul44 %44 %12 %Virginia59 %33 %7 %Zurich58 %33 %7 %Overall52 %38 %9 %Peers with long connections (> 32 epochs), 4,372 in total · Heimbach et al., USENIX Security 2025
Our heuristic: v runs on p ifC1At least 90 % of the expected non-backbone votes of v arrive from peer pC2p is not subscribed to all 64 subnetsC3We receive at least every tenth vote we expect for v from pC4v’s vote count from p is one standard deviation above p’s mean per validatorConservative on purpose: we only label peers we saw long and well enough.Heimbach, Vonlanthen, Villacis, Kiffer, Wattenhofer, USENIX Security 2025, §4
Validators per machine27 %of peers host a single validator> 50 %host at most 411 %host more than 100709per machine on average, five largest pools19,390on a single machineOperators split validators in round numbers: 100, 250, 300, 350, 400, 500, 1,000
StakeBleed, in numbers11,072 Gweiaverage reward per validator per epoch, without attack4 epochscut off before the inactivity leak starts, ~26 min287 ETH35 % cut off for 2 h: 110.6 penalties + 61.8 missed + 114.8 others214 ETH20 % cut off for 2 h, no leak> 125 ETHper epoch lost by the connected validators during a leak~3 weeksof leak until a 32 ETH validator is ejected at 16 ETHDoumanidis & Apostolaki, FC 2026, §3.2, §6 · validator set of 1,063,660
KnockBlock, in numbers12.8 minproposer schedule known in advance (2 epochs)< 90 sfor a BGP announcement to take effect+44.5 %MEV on average after a missed slot+453.6 %proposer reward at most, from the extra votes0.19 ETHextra per validator per year> 3validators to cover ~$2,500 a year for an ASDoumanidis & Apostolaki, FC 2026, §3.3, §7
SuperNode, in numbersEager onlykeeps votes pushed directly, not ones fetched after IHAVEOut-of-subnetour 2024 signal, used as an extra feature41 huntil 60 % of peers are done (disconnect once all validators seen)20×fewer resources than fixed-length connections91 %classifier accuracy on held-out data70 %agreement with our 2024 mapping, high-confidence overlapDoumanidis & Apostolaki, FC 2026, §4 · data Nov 2024 to Jan 2025
Where validators sit, late 20244,600prefixes host all 1,063,660 validators60 %in 100 prefixes37,000validators in the largest prefix> 80 %in 20 ASes, out of 1,057 used37 %of validators in the US (31 % of nodes)~90 %of stake in 12 countriesData Nov 2024 to Jan 2025 · Doumanidis & Apostolaki, FC 2026, §5
Which fix blunts which attackSubnet trickTimingStakeBleedKnockBlockAll 64 subnetsOwn subnet (DC)No single-operator committees (DC)No eager push, no out-of-subnetPer-message anonymity (SPREAD)Throwaway vote relaySecret roles (SSLE, VRF, daily keys)RPKI, diversity, failoverMy reading of the sources on the previous slides; filled = blunts it, empty = does not