The Two Invisible Leaks Destroying Self-Custody Privacy
Self-custody users routinely invest hundreds of dollars in hardware signing silicon while forfeiting 100% of their financial privacy across two unmonitored layers: pre-transaction network RPC telemetry and post-transaction on-chain value heuristics. Even worse, following the April 2024 takedown of the OXT and kycp.org (KnowYourCoinPrivacy) infrastructure, Bitcoin engineers and self-custody practitioners lost the primary public calculator for auditing Boltzmann UTXO partition entropy before broadcasting transactions.
This offline three-module workbench restores deterministic UTXO combinatorics alongside empirical multi-account JSON-RPC leak modeling (sourced directly from DT.gl's Self-Custody & Wallet Silicon Matrix) and vanity address-poisoning byte diffing, all operating under Content-Security-Policy: connect-src 'none' so zero wallet addresses, transaction amounts, or IP correlations are ever transmitted over the internet.
Module 1: Multi-Account HD Wallet JSON-RPC Correlation Mechanics
Under BIP-32 and BIP-44, a single master seed deterministically derives sequential accounts (m/44'/60'/0'/0/0, /1, /2, ... on EVM; m/84'/0'/0', /1', ... on Bitcoin Native SegWit). Users commonly compartmentalize identities across these indices: Account #0 holds a public ENS name or receives withdrawals from a KYC centralized exchange, whereas Account #1 and Account #2 are treated as "private" cold savings or governance vaults that never transact directly with Account #0 on-chain.
On-chain isolation is completely negated at the transport layer when a wallet coordinator batches state queries over a shared clearnet session:
- HTTP/2 Connection & TLS
JA4Coalescing: Upon unlocking the vault, browser wallets (MetaMask,Rabby,Phantom) and companion apps (Ledger Live) open a persistent TLS 1.3 connection toInfura,Alchemy,DeBank Cloud, or vendor proxy APIs. Even if individual JSON-RPCeth_getBalancecalls are sent in separate frames rather than a single JSON array, HTTP/2 stream multiplexing binds every address query to the exact same source IP, TCP ephemeral port, and TLSJA4client-hello fingerprint within a50 mswindow. - Auxiliary Metadata Beacons: Simultaneously, unhardened wallets fetch token USD prices by contract list, resolve reverse ENS records, and auto-load NFT
tokenURIimages from attacker-controlled HTTP servers, allowing anyone who airdrops a single tracking NFT intoAccount #2to harvest the holder's residential IP address the moment they open their "Collectibles" tab. - Electrum ScriptHash Indexing on Bitcoin: Standard Electrum servers index the blockchain by
SHA256(scriptPubKey). When a desktop or mobile Bitcoin wallet connects to a public Electrum server without Tor stream isolation and subscribes toblockchain.scripthash.subscribeacross 20 receive and 20 change addresses simultaneously, that public server learns the wallet's complete UTXO cluster instantly.
Module 2: Mathematical Formulation of UTXO Boltzmann Entropy
Chain surveillance suites (Chainalysis Reactor, TRM Labs, Elliptic) rely on two foundational UTXO clustering assumptions introduced in Meiklejohn et al. and formalized in LaurentMT's Boltzmann framework: the Common-Input-Ownership Heuristic (CIOH) and Subset-Sum Change Identification.
Consider a Bitcoin transaction T consuming m inputs I = [i_1, i_2, ..., i_m] and creating n outputs O = [o_1, o_2, ..., o_n] with miner fee F = sum(I) - sum(O) >= 0. Rather than assuming a single entity controlled every input, the Boltzmann partition solver asks: How many distinct ways (N) can (I, O) be decomposed into k >= 1 independent, value-conserving atomic sub-transactions (I_1, O_1), ..., (I_k, O_k)?
A candidate partition P = [(I_1, O_1), ..., (I_k, O_k)] is valid if and only if three invariants hold simultaneously:
- Disjoint Exhaustive Coverage: The union across
r = 1..kofI_requalsIand the union ofO_requalsO, whereI_randI_sare strictly disjoint (I_r intersect I_s = empty),O_randO_sare strictly disjoint for allr != s, and every subsetI_randO_ris non-empty. - Per-Component Value Conservation: Every sub-transaction pays a non-negative share of the miner fee without creating satoshis out of thin air (
0 <= sum(I_r) - sum(O_r) <= F), summing across allkcomponents to the exact total miner feeF. - Atomicity (Irreducibility): No component
(I_r, O_r)can be split further into two valid value-conserving sub-components without double-counting coarser aggregations of an already-counted independent transfer.
From the total count of valid interpretations N, our offline solver derives four quantitative metrics:
- Boltzmann Entropy in Bits: Computed as
E_bits = log2(N)alongside natural entropyE_nats = ln(N). A naive 1-input, 2-output payment (1,000,000 sats -> 150,000 sats + 848,500 sats) admits onlyN = 1valid interpretation, yieldingE = 0.000 bitsand exposing deterministic value flow. By contrast, a 4-participant equal-output Whirlpool CoinJoin (4 x 1,000,000 sats) admitsN = 4! = 24valid bijections, yieldingE = log2(24) = 4.585 bits(3.178 nats). - Deterministic Link Probability Matrix
P(i_a -> o_b): Across allNvalid partitions, letL(a, b)denote the number of valid interpretations in which inputi_aand outputo_bbelong to the same sub-transaction component. The link probability isP(i_a -> o_b) = L(a, b) / N. Any cell whereP(i_a -> o_b) = 1.00(100%) represents a deterministic link that chain-analysis algorithms assign with mathematical certainty. - Structural Wallet Efficiency (
eta): Compares realized entropyE_bitsagainst the intrinsic maximum entropyE_maxachievable by an optimal equal-denomination construction of identical input and output cardinality (eta = E_bits / E_max), revealing how much privacy was left on the table by unequal change outputs.
Comparative Privacy & Entropy Benchmarks Across Transaction Topologies
| Transaction Archetype | Typical (Inputs, Outputs) | Valid Interpretations (N) | Boltzmann Entropy (E_bits) | Link Probability P(i -> o) | Primary Remaining Heuristic Leak |
|---|---|---|---|---|---|
| Naive Single-Input Peel Payment | (1 in, 2 out) unequal | 1 | 0.000 bits | 100% deterministic | Change identified via script-type mismatch (P2WPKH vs P2TR) or round payment amount |
Multi-Input Consolidation (CIOH) | (4 in, 1 out) | 1 | 0.000 bits | 100% deterministic | Permanently merges 4 previously unlinked UTXO clusters under Common-Input-Ownership |
| BIP-78 / BIP-77 PayJoin (Steganographic) | (2 in, 2 out) unequal | 1 to 3 | 0.000 - 1.585 bits | Breaks CIOH assumption! | Looks like standard 2-in-2-out spend while invalidating Chainalysis CIOH clustering |
| STONEWALL Simulated 2-Party Spend | (4 in, 4 out) (2 equal outs) | 2 to 4 | 1.000 - 2.000 bits | 50% ambiguity on payment | Single-user decoy structure; higher vByte miner fee footprint |
| 3x3 Equal-Output CoinJoin | (3 in, 3+2 out) | 6 (3!) | 2.585 bits | 33.3% across mixed outputs | Unmixed toxic change (Out#3, Out#4) if consolidated post-mix! |
| 5x5 Whirlpool ZeroLink Pool | (5 in, 5 out) exact equal | 120 (5!) | 6.907 bits | 20.0% uniform matrix | Coordinator observation unless blinded + Tor circuit isolated; post-mix UTXO merging |
Monero FCMP++ Curve-Tree Tx (Ref) | (1-2 in, 2 out) shielded | > 100,000,000 | > 26.57 bits | < 10^-8 global set | Off-chain network IP / timing only (see On-Chain Privacy Protocols) |
Module 3: Defeating GPU Vanity Address Poisoning & Unicode Homographs
Over $120 million in retail and institutional treasury funds have been lost to zero-value and counterfeit-token address poisoning across Ethereum, Arbitrum, Tron, and Bitcoin. Unlike smart-contract exploits, address poisoning requires zero vulnerability in wallet cryptography; it exploits human visual scanning shortcuts encouraged by modern UI design.
Because block explorers, wallet extensions, and multisig dashboards routinely abbreviate 42-character hexadecimal EVM addresses into 0x1234...abcd (showing only the leading 4 to 6 hex characters and trailing 4 to 6 hex characters), attackers run massive GPU clusters (profanity2 / custom OpenCL keccak256 kernels) to pre-compute billions of keypairs. Matching k hexadecimal nibbles (4k bits) across prefix and suffix combined requires 2^(4k) expected secp256k1 scalar additions:
- 8 Total Matched Hex Chars (
4prefix +4suffix =32 bits): Roughly4.29 billionhashes, solvable on a single consumer RTX 4090 GPU in under 0.4 seconds. - 12 Total Matched Hex Chars (
6prefix +6suffix =48 bits): Roughly2.81 x 10^14hashes, solvable on a modest 8-GPU rig in under 4 minutes. - 16 Total Matched Hex Chars (
8prefix +8suffix =64 bits): Reserved for high-value institutional whale targets (>$10Mfrequent counterparties), achievable via rented GPU fleets within hours.
Once the attacker generates a lookalike keypair matching a target whale's frequent treasury counterparty, an automated mempool bot watches for legitimate outbound USDT/USDC transfers from the victim. Within seconds of confirmation, the bot calls transferFrom(victim, vanity_poison_address, 0) (on tokens permitting zero-value transferFrom without allowance) or emits a Transfer event from a counterfeit ERC-20 contract with an identical USDC ticker symbol. The next time an operator opens their wallet's "Recent Activity" list and copies the top address without checking characters 10 through 34, funds are wired irreversibly to the attacker.
Hardened Network & Node Isolation Playbooks by Ecosystem
Eliminating wallet RPC correlation does not require abandoning modern hardware signers or multi-chain interfaces; it requires severing the link between your derived address graph, your residential IP / TLS JA4 session, and centralized API aggregators. Below are the deterministic isolation configurations benchmarked in our lab:
1. Bitcoin Self-Custody: Sparrow Wallet + Local Node or Tor Stream Isolation
On Bitcoin, pairing Sparrow Wallet with an air-gapped hardware signer (Coldcard Q, Trezor Safe 7, Keystone 3 Pro, or Blockstream Jade Plus) achieves an A+ RPC isolation grade when backed by one of three node topologies:
- Local Sovereign Full Node (
Bitcoin Core+ElectrsorFulcrum): Sparrow connects over local loopback (127.0.0.1:50001) or an authenticated LAN tunnel to your own indexed full node, which syncs blocks over the Bitcoin P2P network (ideally withonlynet=onionor Tor/I2P peer diversity enabled inbitcoin.conf). Zero third-party servers ever observe yourscriptHashsubscriptions or extended public key (xpub/zpub) balances. - Tor SOCKS5 Proxy with Circuit Isolation: When traveling without access to a home node, configure Sparrow to connect exclusively to
.onionElectrum endpoints via a local Tor daemon (127.0.0.1:9050). Critically, never query two separate privacy-compartmentalized wallets during the same unrotated Tor circuit window, and broadcast raw signedPSBTv2(BIP-370) hex over an isolated circuit distinct from balance-checking sessions. - BIP-352 Silent Payments & Subaddress Hygiene: For public donation or merchant endpoints where publishing a static address is unavoidable, BIP-352 Silent Payments derives unique one-time Taproot (
P2TR) on-chain outputs viasecp256k1Diffie-Hellman key exchange (P = B_spend + hash(a * B_scan) * G) using the sender's input keys, leaving zero static address reuse orOP_RETURNnotification markers on the public ledger.
2. EVM & Multi-Chain Wallets: Pre-Import Custom RPCs & Private Mempool Relays
On Ethereum and Layer-2 rollups (Arbitrum, Optimism, Base), account-model state forces lighter clients to query external RPC nodes unless running a local execution + consensus client (Reth / Nethermind + Lighthouse or Helios light-client verification). To minimize off-chain correlation when using browser or desktop coordinators:
- Provision Clean Browser Profiles Per Identity: Never store a KYC/ENS-linked account (
Account #0) and an unlinked pseudonymous vault (Account #1) inside the same browser extension instance. Isolate each identity in a separate Mullvad Browser or LibreWolf container profile routed through distinct VPN/Tor exit circuits. - Disable Auxiliary Auto-Fetchers Before Wallet Import: Prior to importing any watch-only address or hardware account, disable automatic token discovery, third-party price feeds, phishing-URL cloud telemetry, and NFT media gateway preloading (
IPFS/HTTPtokenURIauto-fetch). - Broadcast Through Private Mempool Relays (
MEV Blocker/Flashbots Protect): Standardeth_sendRawTransactionbroadcasts gossip your signed transaction across the public P2P mempool, exposing you to both generalized front-running/sandwich bots and passive mempool spy nodes logging first-seen IP timestamps. Routing outbound transactions over Tor to a no-log private builder relay shields swap parameters until block inclusion while preventing P2P gossip triangulation.
Hardened Counterparty Verification Workflow
- Ban History Copy-Pasting: Never source a recipient address from on-chain transaction history or wallet activity feeds. Maintain signed, out-of-band address books verified via hardware display or PGP/Signal safety numbers.
- Audit All 42 Characters in Tab 3: Paste both your authoritative runbook address and the clipboard/invoice address into Tab 3 (
Vanity Address-Poisoning Diff) above. The auditor highlights every mismatched middle nibble in crimson (is-danger), verifies EIP-55 mixed-case Keccak-256 checksum casing, and scans for injected zero-width spaces (U+200B), Bidi overrides (U+202E), and Cyrillic homographs (also covered deeply in our Metadata & Unicode MCP Sanitizer). - Freeze Toxic Dust UTXOs on Bitcoin: When tiny
546-satdust UTXOs arrive at an existing Bitcoin address, immediately mark them Frozen / Do Not Spend in Sparrow Wallet so automated coin selection never merges them with your main vault viaCIOH. Pair this practice with proper physical entropy generation in our Offline Seed & Multisig Quorum Lab.
Frequently Verified Technical Questions
How does unlocking a browser wallet link separate Ethereum accounts before any transaction is sent?
Primary Reference: Ethereum JSON-RPC Specification
What does Bitcoin Boltzmann entropy measure that simple input-output counts miss?
Primary Reference: Bitcoin Wiki Privacy & CoinJoin Analysis
How do zero-value ERC-20 transfers enable vanity address-poisoning attacks?
Primary Reference: Ethereum ERC-20 Token Standard
Why should UTXO entropy calculations run locally instead of querying a public block explorer?
Primary Reference: BIP-174 Partially Signed Bitcoin Transactions
Published: | Last Verified:
-
2026-11-11: Initial V1 zero-telemetry release uniting empirical wallet RPC leak grading, LaurentMT Boltzmann UTXO partition combinatorics, and EIP-55 middle-byte diffing.