|=[ HOW MUCH STEALTH DOES A STEALTH ADDRESS GET YOU? :: METHODOLOGY ]=

METHODOLOGY.

How every number in How Much Stealth Does a Stealth Address Get You? was produced: every stage of the analysis, what was measured, and the numbers behind each claim.

DATA · OCT 2021 → SEP 2026 · MAINNET + L2s

RE-INDEX EVERYTHING FROM GENESIS

All data is public: raw eth_getLogs re-indexes, public explorer APIs, the public ENS ReverseRecords contract, and public web endpoints. No private endpoints, no privileged access.

Stage 0 · Census.

Every protocol's event logs were pulled raw via JSON-RPC and decoded independently: Umbra 11,714 registrations + 24,992 announcements on mainnet plus 266,339 L2 announcement logs (266,321 unique stealth addresses); Fluidkey 83,020 module logs and 117,664 decoded fund movements; Cloaked 12,951 orchestrator intent logs with 550 of 573 multi-EOA spends fully decoded. Explorer APIs were used for labels only, never for measurements.

The mainnet essay is the small print

Umbra stealth payments per chain, genesis – Aug 2026 · 266k L2 announcements = 10.7× mainnet volume

025k50k75k100kPolygon102,549Arbitrum100,138Optimism58,048Ethereum mainnet24,988Base5,604
Announcement events re-indexed on all five chains. L2 withdrawal graphs censused and analysed: 73.3% of active L2 receivers are linkable, worse than mainnet on every chain.
The mainnet essay is the small print — Umbra stealth payments per chain, L2 volume at 10.7 times mainnet

REVERSE-RESOLVE THE REGISTRY

Stage 1 · Identity anchoring.

Every Umbra registrant address (~40k ENS reverse-resolutions) was checked for a public ENS name. Result: 37.0% of mainnet registrants registered from ENS-named wallets, and the May–July 2022 crisis cohort was 51.3% named against a 37% baseline.

Privacy panics in a crisis

Umbra stealth-key registrations on Ethereum mainnet, weekly, Oct 2021 – Aug 2026

0200400600617 in one week: UST → Celsius → 3AC contagionthat crisis cohort is 51.3% ENS-named, vs 37% baselineJan 2022Jan 2023Jan 2024Jan 2025Jan 2026Aug 2026
11,714 registration events re-indexed from the StealthKeyRegistry. Shaded band: May–July 2022 contagion. Every spike is a scare, and the scared arrive with their named main wallets.
Privacy panics in a crisis — weekly Umbra registrations spiking during the May to July 2022 contagion

FOLLOW THE MONEY OUT

Stage 2 · Withdrawal graph (Umbra mainnet).

Full transaction histories for every mainnet stealth address via the public explorer API (25k+ addresses). Withdrawals were classified by destination: is it a registered key-holder? an active sender? the original sender itself?

HeuristicResultStatistical note
Withdrawal to registered key-holder8,932 stealth addresses (35.7% of all)destination is itself in the public StealthKeyRegistry
Withdrawal to active Umbra sender41.5% of all withdrawalsrecipient is a visible public actor
Self-payment loops391 users paid themselves174 from ENS-named wallets
Same-block sweeps1,102 stealth pairs~20 expected by chance → 55× lift over null
Destination clustering (union)48.3% of active stealth addresseslargest cluster: 131 addresses
ENS-named registrants4,286 / 11,578 (37.0%)reverse-resolved via public ReverseRecords contract
ENS-named payments21.3% of all paymentsnaming propagation from registrant set

WELD ADDRESSES INTO PEOPLE

Stage 3 · Clustering with null calibration.

Shared withdrawal destinations plus same-block sweeps were used to cluster stealth addresses into single-owner groups. Every heuristic was run against shuffled controls: 265 same-block withdrawal pairs observed against ~5 expected by chance (55× lift). Union result: 48.3% of active mainnet stealth addresses fall into clusters; the largest spans 131 addresses.

How much gets linked, per protocol

share of the population an observer can weld to a common owner or known wallet, public data only

0%20%40%60%Cloaked · Ethereumspenders linked at spend time61.1%Umbra · mainnet (active)of users who ever withdrew61.2%Umbra · mainnet (all)of all payments56.2%Fluidkey · Baseof observable Safes44.3%Cloaked · Basespenders linked at spend time40.1%
Umbra: 14,053 of 24,988 payments (61.2% of the 22,952 ever-withdrawn). Fluidkey: 12,697 of 28,681 observable Safes. Cloaked: 1,405/2,301 Ethereum and 856/2,135 Base spend EOAs in merge clusters.
How much gets linked, per protocol — share of the population an observer can weld to a common owner or known wallet

THE NUMBERS THEMSELVES TALK

Stage 4 · Amount fingerprints.
FingerprintFindingNull model
Exact wei repeats455 distinct values across 1,617 payments (6.9% of ETH payments)collision probability ≈ 2⁻⁶⁰; every repeat is a proven relationship
Fiat price-point families108 familiese.g. 70 payments in 0.00445–0.00455 ETH over 13 months = one merchant's revenue
Fluidkey dust suffixes.552850 family: 12 Safesbalances decrement in exact 9-USDC steps

THREE MOMENTS A SAFE GETS LINKED

Stage 5 · Fluidkey Safe welds.

Each edge type was computed independently, with protocol-internal counterparties (earn vaults, share burns) excluded: naively counted, those fake-link 91% of users. CEX hot wallets were identified by extreme nonce and fan-out (a 478,873-nonce wallet funding thousands of strangers proves nothing; a quiet 74-nonce wallet that seeded 836 Safes proves everything).

Three ways a Fluidkey Safe gets welded

Safes linked per edge type, out of 31,263 censused. The weld happens at birth, at the funder, and at the destination

03,0006,0009,00012,000Shared cash-out destination23.3% of active Safes6,293Shared personal-wallet funderCEX hot wallets excluded5,026Born together (atomic co-init)10.7% of the census3,335Union of all three44.3% of observable Safes12,697
Edge types overlap (one Safe can be linked all three ways), hence the union is smaller than the sum. Protocol-internal counterparties (earn vaults, share burns) excluded. Naively counted, they fake-link 91% of users.
Three ways a Fluidkey Safe gets welded — shared funder, atomic co-creation, shared cash-out destination
Weld typeSafes linkedShareNote
Shared cash-out destination6,29323.3% of activedecoded from 117,664 fund movements out of 27,013 active Safes
Shared personal-wallet funder5,026CEX hot wallets excluded by nonce/fan-out heuristic
Born together (atomic co-init)3,33510.7% of census1,224 transactions initialized multiple Safes atomically
Union of all three12,69744.3% of observableedge types overlap; union < sum

CONSOLIDATION IS A FEATURE, AND A CONFESSION

Stage 6 · Cloaked merge decoding.

573 multi-EOA spend transactions; 550 fully decoded from calldata, 100% coherent single-user consolidations. 40.1% of Base spenders and 61.1% of Ethereum spenders welded their accounts in the act of spending; one user merged 51 one-time addresses in a single transaction.

One click, one identity

largest single-user merge clusters: stealth EOAs welded together in shared EIP-7702 spends, top 10 per chain

010203040505143#13436#22823#32122#41820#51820#61715#71615#81515#91515#10BaseEthereum
Each bar is one person's cluster of one-time addresses, proven by co-spending. All 573 multi-EOA transactions; 550 fully decoded, 100% coherent single-user consolidations. Explore every edge in Exhibit A below.
One click, one identity — Cloaked merge clusters, one user welding 51 stealth EOAs in a single transaction

NAMING-LAYER ORACLES

Stage 7 · Username enumeration (Cloaked).
ChannelWhat leaksScale
CCIP gateway oraclename existence (address vs zero)dictionary probeable
username.clkd.id web appname existence (200 vs 404)faster oracle
Google indexusernames with no probing at allsite:clkd.id
Result69 registered usernames recoveredfrom ~9,000 probes; 0 of 105 CT influencer handles registered
Seed harvesting1,475 live receive addressesacross 59 known usernames; weekly re-check watchlist

THE STITCH

Stage 8 · Cross-protocol joins.

Every address set was intersected across protocols and across chains. The address layer is perfectly firewalled (zero overlaps); the wallet layer is not.

JoinResult
Umbra ∩ Fluidkey wallets8 addresses (3 ENS-named: ckxpress.eth, leo888.eth, zyrav21.eth)
Cloaked EOAs merged on Base AND Ethereum115
Cross-protocol address reuse0 across every address set held

WHAT DOESN'T LEAK

Stage 9 · Negative results.

Null results are published as credibility for the positive ones:

CheckedResult
Ephemeral-key reuse (Umbra)3 cases in 25,000 payments
Stealth-to-stealth payment chains≈ 0
Cryptographic-layer failuresnone in any system

EXTENDING THE WITHDRAWAL ANALYSIS TO 266K L2 ANNOUNCEMENTS

Stage 10 · L2 withdrawal graphs (complete).

The mainnet withdrawal analysis was extended to all four L2s. Method: (1) nonce prefilter via batched eth_getTransactionCount on dRPC, dropping addresses that never sent a transaction; (2) full transaction history pull for the survivors via Etherscan V2. A pure-RPC token-sweep scan was evaluated and rejected: dRPC kills selective log scans beyond ~10k-block ranges, making it slower than the pull it would replace.

ChainCensused paymentsUnique stealth addrsNonce = 0 (dropped)Nonce > 0 (pull list)Withdrawal txs pulled
Base5,6045,6041,637 (29.2%)3,967done
Optimism58,04858,0484,199 (7.2%)53,849done
Arbitrum100,138100,13811,587 (11.6%)88,551done
Polygon102,549102,53148,074 (46.9%)54,457done
Total266,339266,32165,497 dropped (24.6%)200,824all 4 chains

The welding heuristics (shared destinations, same-block sweeps, amount families) ran over all four L2 graphs: 73.3% of active L2 receivers are linkable (Arbitrum 76.0%, Base 77.4%, Optimism 69.8%, Polygon 72.2%), replacing the 2023 paper's 25.8–65.7% estimate with measured values.