Recent

↑ ↓ to move ↵ to open esc to close

On-Chain Privacy Protocols, Stealth Addresses & Non-KYC P2P Architecture

Cryptographic specification comparing Monero FCMP++, Zcash Orchard Halo 2, 0xbow EVM Privacy Pools, BIP-352 Silent Payments, ERC-5564 Stealth Addresses, and Tor P2P settlement.

On-Chain Privacy Protocols, Stealth Addresses & Non-KYC P2P Architecture
Empirical Lab Plate: On-Chain Privacy Protocols, Stealth Addresses & Non-KYC P2P Architecture
Key Findings & Executive Synthesis
On-chain privacy protocols vary fundamentally in anonymity-set topology and regulatory resilience. Heuristic mixing and small-ring decoys degrade under statistical timing and poisoned-output attacks, whereas full-chain zero-knowledge membership proofs such as Monero FCMP++ and Zcash Orchard Halo 2 conceal transaction graphs across millions of shielded commitments while stealth standards like BIP-352 eliminate static address reuse.

Taxonomy of On-Chain De-Anonymization vs Cryptographic Confidentiality

Public blockchains built on Bitcoin's unspent transaction output (UTXO) model or Ethereum's global account-balance state machine were engineered for public auditability, not financial confidentiality. Every transaction on a transparent ledger broadcasts three dimensions of metadata forever: the sender graph (which prior outputs or account state funded the transfer), the recipient identity (which public script or 0x address received custody), and the exact scalar value transferred.

Commercial blockchain-surveillance platforms (Chainalysis, Elliptic, TRM Labs, Arkham, and Crystal) fuse deterministic on-chain heuristics (Common-Input-Ownership CIOH, peel-chain change classification, cross-chain bridge timestamp correlation, and automated ERC-20 token-approval graphs) with off-chain KYC exchange records and default wallet JSON-RPC IP logs. Between 2024 and 2026, both regulatory pressures (culminating in the Samourai and Wasabi coordinator shutdowns alongside the Fifth Circuit's landmark Tornado Cash Van Loon statutory reversal) and cryptographic breakthroughs (Curve Trees, Halo 2 lookup arguments, Association Set ZK proofs, and BIP-352) split the on-chain privacy landscape into five distinct engineering paradigms.


Base-Layer Confidential Ledgers: Monero (FCMP++) vs Zcash (Orchard / Halo 2)

Protocols that enforce or natively integrate cryptographic confidentiality at Layer 1 avoid the gas overhead and liquidity fragmentation of smart-contract add-ons:

1. Monero (XMR): From CLSAG 16-Rings to FCMP++ (Full-Chain Membership Proofs)

Historically, Monero combined three primitives mandatory on every mainnet transaction: Stealth Addresses (one-time destination outputs concealing the receiver), RingCT Pedersen Commitments + Bulletproofs+ (concealing amounts while proving zero inflation), and CLSAG Ring Signatures (blending the real spent output with 15 decoy outputs sampled via a gamma age distribution). While mandatory default privacy prevented the "tiny shielded pool" trap, a 16-member ring carried a structural mathematical ceiling: an adversary who controlled surrounding outputs (EAE / Black Marble spam flooding during 2024 fee-spike stress tests) or exploited discrepancies between wallet decoy-selection distributions and real spend timing could probabilistically prune decoys.

FCMP++ (Full-Chain Membership Proofs + Spend Authorization & Linkability) replaces 16-decoy rings with a zero-knowledge membership proof over a Curve Tree constructed on an alternating cycle of custom prime-order elliptic curves (Selene and Helios, paired over Ed25519 fields):

  • Instead of choosing 15 decoys, the sender proves in zero knowledge (~2.1 KB proof size, batched verification in milliseconds) that their spent output leaf resides somewhere inside the entire global Monero Curve Tree (100,000,000+ historical outputs) while emitting an unlinkable key image (nullifier) to prevent double-spending.
  • Statistical decoy-age heuristics, 0-decoy chain-reaction eliminations, and spam-flood ring dilution are eliminated at the root because the anonymity set of every spend expands to the entire historical output set of the blockchain.
  • Combined with Dandelion++ network-layer transaction stem routing and Feather Wallet's native Tor .onion node transport, Monero provides mandatory default sender, receiver, amount, and IP-origin confidentiality without trusted setup ceremonies.

2. Zcash (ZEC): Orchard Shielded Pool, Halo 2 Recursive zk-SNARKs & Zashi

Zcash pioneered succinct zero-knowledge transaction privacy (zk-SNARKs), proving statement validity across the entire shielded note commitment tree (2^32 capacity per pool) rather than small decoy rings. Early Zcash generations (Sprout in 2016 and Sapling in 2018) suffered from two engineering liabilities: multi-party trusted setup ceremonies (where toxic-waste parameter collusion could theoretically forge undetected inflation inside the shielded pool) and optional transparent addresses (t-addr) that left > 85% of exchange and mobile wallet volume unshielded or vulnerable to t -> z -> t round-trip clustering (Quesnelle / Kappos academic attacks).

The Orchard shielded protocol (NU5 / NU6) paired with the Electric Coin Company's Zashi wallet resolved the cryptographic trust bottleneck:

  • Zero Trusted Setup (Halo 2 over the Pasta Curve Cycle Pallas/Vesta): Orchard utilizes polynomial commitment accumulation without pairings or toxic-waste ceremonies, alongside Plonkish custom gates and lookup tables (Sinsemilla collision-resistant hash commitments).
  • Unified Addresses (UA, ZIP-316) & Mandatory Wallet Shielding: Zashi and Keystone 3 Pro air-gapped QR workflows default to Unified Addresses that auto-shield incoming transparent funds (TEX / ZIP-320 separation for compliant exchange off-ramps) and hold balances inside the Orchard note pool (> 3.5M+ ZEC shielded milestone in 2025-2026), preparing the circuit architecture for Zcash Shielded Assets (ZSAs).
  • Remaining Trade-Off: Unlike Monero's 100% mandatory base-layer privacy, Zcash still retains transparent t-addr execution at consensus; users who immediately shield 10.0 ZEC from a KYC exchange and unshield 10.0 ZEC an hour later defeat Halo 2's mathematical perfection via value/timing intersection.

Programmable EVM ZK Privacy: 0xbow Privacy Pools vs Railgun 0zk vs Aztec Noir

Following the OFAC designation of immutable Tornado Cash pools in August 2022 and the Fifth Circuit's November 2024 ruling in Van Loon v. Department of the Treasury holding that immutable, ownerless smart contracts cannot constitute sanctionable "property" under IEEPA, EVM privacy engineering converged around compliant dissociative cryptography: enabling honest users to shield financial salaries, treasury operations, and DeFi liquidity from public wallet trackers while cryptographically dissociating from DPRK Lazarus exploit proceeds.

  1. 0xbow Privacy Pools (Association Set Providers / ASP): Co-authored academically by Vitalik Buterin, Jacob Illum, Matthias Nadler, Fabian Schar, and Ameen Soleimani and deployed on Ethereum mainnet and L2s by 0xbow, Privacy Pools decouple the Immutable State Merkle Tree (which holds all deposit commitments unconditionally so no censorship can freeze user capital) from dynamic Association Set Merkle Roots. At withdrawal, a user generates a dual Groth16/PLONK proof proving: (a) knowledge of a valid unspent deposit secret in the global state tree, and (b) membership of that deposit inside a curated ASP allowlist tree (or non-membership in a Lazarus/exploit blocklist tree), all without revealing which honest deposit is theirs. If an ASP turns malicious or shuts down, users retain sovereign exit rights using their own custom association set JSON!
  2. Railgun (0zk Shielded DeFi Balances & Private Proofs of Innocence): Rather than limiting privacy to fixed-denomination 0.1 / 1 / 10 ETH mixer notes, Railgun implements an arbitrary-denomination UTXO shielded balance system inside EVM smart contracts (0zk addresses), using Relayer networks (Broadcasters) and Adapt smart-contract modules so shielded vaults can execute Uniswap swaps or Lido staking without doxxing the user's underlying 0x wallet, enforced at ingress by client-side Private Proofs of Innocence (PPOI).
  3. Aztec Network (Hybrid Public/Private ZK Rollup & Noir DSL): Aztec moves beyond L1 smart-contract pools to a dedicated Layer-2 rollup featuring client-side private execution (PXE) written in Noir (an open-source Rust-like ZK domain-specific language). State transitions touching private notes execute locally on the user's device using Honk / UltraPlonk client provers; the rollup sequencer sees only state-diff commitments, nullifiers, and validity proofs, enabling programmable private smart contracts without revealing function arguments to L2 block builders.

Non-Interactive Stealth Addresses: Bitcoin BIP-352 Silent Payments vs Ethereum ERC-5564

Users publishing a static donation, salary, or merchant address on a website, GitHub profile, or ENS name suffer catastrophic retrospective and prospective surveillance: anyone paying you sees your historical net worth and every subsequent expense. Stealth address standards allow publishing one static reusable identifier while every incoming payment lands at a mathematically unlinkable one-time on-chain address.

BIP-352 Silent Payments ECDH Derivation vs Monero FCMP++ Full-Chain Curve Tree ProofSide-by-side cryptographic architecture comparing Bitcoin BIP-352 Silent Payments zero-bloat input-key ECDH stealth derivation with Monero FCMP++ Selene/Helios Curve Tree full-chain zero-knowledge membership proofs.BITCOIN BIP-352 SILENT PAYMENTS (RECEIVER STEALTH)1. Static Published sp1q... Address (Off-Chain)Scan PubKey (B_scan) + Spend PubKey (B_spend)2. Sender Input-Key ECDH Tweak (0 Extra Bytes!)e_secret = input_hash * a_sum * B_scanP_output = B_spend + H(e_secret || k)*G3. Standard Taproot Output bc1p... On-ChainZero OP_RETURN bloat; indistinguishable from P2TRMONERO FCMP++ CURVE TREES (SENDER + AMOUNT + GRAPH)1. Global Output Set (~100M+ Leaves)Pedersen Commitments (Output Key + Blinded Amt)2. Selene / Helios Alternating Curve-Tree ZK ProofReplaces 16-decoy CLSAG w/ Full-Chain Branch Proof+ Re-randomized Key Image L (Double-Spend Guard)3. Complete Graph & Value ConfidentialityImmune to poison-output flooding & decoy heuristics
Figure 1: Architectural contrast between Bitcoin BIP-352 Silent Payments (zero-footprint receiver unlinkability) and Monero FCMP++ Curve Trees (full-chain sender, receiver, and Pedersen amount confidentiality).
  • Bitcoin BIP-352 Silent Payments: Encodes two secp256k1 public keys (B_scan and B_spend) into a static sp1q... Bech32m string. Unlike BIP-47 (PayNym), which required broadcasting a separate on-chain OP_RETURN notification transaction (2x fee overhead + visible BIP-47 marker), BIP-352 computes an ECDH shared secret directly from the existing public keys of the sender's spent transaction inputs multiplied by B_scan. The resulting output on-chain is a completely ordinary P2TR (bc1p...) Taproot output indistinguishable from every other Taproot payment on Bitcoin. Separating b_scan (hot index scanner or BIP-352 compact tweak index server) from b_spend (cold hardware wallet) allows continuous scanning without exposing spending keys.
  • Ethereum ERC-5564 & ERC-6538 Stealth Meta-Address Registry: Because EVM accounts lack UTXO input public keys per transfer, ERC-5564 generates an ephemeral keypair per transaction and publishes the ephemeral public key R plus a 1-byte viewTag (ERC-5564 optimization reducing recipient elliptic-curve scanning overhead by ~85%) to a singleton Announcer contract (0x55649E01B5Df198D18D95b5cc5051630cfD45564). Critical EVM Gas Rule: Recipients sweeping tokens out of a stealth address must use an ERC-4337 gas paymaster, relayer, or shielded 0xbow/Railgun exit; never fund gas from a linked personal ENS wallet!

UTXO Heuristics Defense (PayJoin v2 / JoinMarket) & Tor Non-KYC P2P Settlement

Following the 2024 criminal prosecution of Samourai Wallet developers and zkSNACKs' shutdown of the centralized Wasabi WabiSabi coordinator, UTXO privacy tools shifted decisively away from single-server coordinators toward serverless, censorship-resistant peer-to-peer architectures:

  1. Async PayJoin v2 (BIP-77): Traditional BIP-78 PayJoin required the merchant or recipient to host an online HTTP/Tor web server during checkout. BIP-77 replaces live recipient servers with an Oblivious HTTP (OHTTP, RFC 9458) encrypted mailbox directory: sender and receiver exchange encrypted PSBT fragments asynchronously, co-signing a standard two-party Taproot transaction that actively falsifies the Common-Input-Ownership Heuristic (CIOH) relied upon by surveillance firms while leaving zero "CoinJoin equal-output" steganographic fingerprint on-chain!
  2. JoinMarket (Decentralized Maker/Taker Fidelity-Bond CoinJoin): Operates over IRC/Tor/onion message channels with zero central coordinator company; liquidity makers lock Bitcoin into timelocked Fidelity Bonds to resist Sybil snooping while earning market CoinJoin fees.
  3. Tor-Native Non-KYC P2P DEXs (Bisq v2, Haveno Reto, RoboSats, BasicSwap): Acquiring initial cryptocurrency via a centralized KYC exchange permanently binds your government passport scan, facial biometric liveness video, and physical residential address to your withdrawal UTXO, exposing you to corporate data breaches and $5 wrench physical targeting.
    • Bisq v2 (Bisq Easy + Multisig): Java Tor P2P network enabling reputation-backed small Bitcoin onboarding (Bisq Easy up to $600 with zero initial BTC security deposit hurdle) alongside 2-of-2 multisig desktop fiat/BTC escrow.
    • Haveno (RetoSwap): Forked from Bisq's battle-tested dispute-arbitration architecture and rebuilt natively on Monero (XMR) multisig over Tor, eliminating Bitcoin base-layer chain taint between P2P trades.
    • RoboSats: Ephemeral Tor .onion / Nostr Lightning P2P exchange using deterministic client-generated robot avatars (1-click zero-account identity per trade) and Lightning HTLC hold-invoices (under 5 minute settlement into self-custody).

Boltzmann UTXO Linkability Entropy & Post-Quantum Confidentiality Horizons

Evaluating on-chain privacy quantitatively requires measuring information-theoretic ambiguity rather than trusting qualitative marketing labels:

1. Computing Boltzmann Transaction Entropy (E = log2(N))

Developed by LaurentMT (OXT research), the Boltzmann linkability model enumerates the number of valid input-to-output value interpretations (N) admissible under conservation of satoshis (minus miner fee) for a given Bitcoin transaction. A standard 1-input, 2-output payment (1 payment + 1 change) admits only N = 1 valid mapping (Entropy E = log2(1) = 0 bits), leaving only a 50/50 heuristic guess as to which output is change (often reduced to 100% certainty if script types, nLockTime, or round-fiat denominations differ). By contrast, a 5x5 equal-output CoinJoin admits N = 1,496 valid sub-mappings (E = 10.55 bits of structural entropy), while a BIP-77 PayJoin injects a hidden receiver input so every external CIOH graph parser assigns 100% probability to a mathematically false ownership cluster.

2. Post-Quantum Confidentiality vs Soundness (Hiding vs Binding)

As evaluated in DT.gl's NIST Post-Quantum Cryptography (FIPS 203/204/205) Reference, a future cryptanalytically relevant quantum computer (CRQC) running Shor's algorithm impacts confidential blockchains asymmetrically depending on whether a commitment scheme is statistically hiding or computationally hiding:

  • Pedersen Commitments (C = v*H + r*G in Monero RingCT/FCMP++ and Zcash Orchard value commitments): Pedersen commitments are information-theoretically (unconditionally) hiding and computationally binding. Even an adversary with an infinitely powerful quantum computer cannot retroactively unblind historical Pedersen-committed amounts recorded on the blockchain today (Store-Now-Decrypt-Later immune for value privacy), because for every candidate value v' there exists a valid blinding scalar r' satisfying the exact same curve point C! However, once a CRQC exists live, breaking the discrete logarithm relationship between generators G and H would destroy binding soundness (allowing undetectable value inflation unless the protocol upgrades its commitment hash/lattice layer prior to CRQC arrival).
  • ECDH Stealth Keys (BIP-352, ERC-5564, Monero Subaddresses): Because one-time stealth outputs derive shared secrets via elliptic-curve Diffie-Hellman (secp256k1 or Ed25519) published on-chain as ephemeral keys R, an adversary storing historical blockchain state could retroactively link stealth recipients if B_scan is public. High-threat long-horizon vaults should rotate static sp1q / ERC-5564 meta-addresses periodically and avoid publishing B_scan alongside real-world legal identities until hybrid lattice stealth encapsulations (ML-KEM) standardize.

3. Operational Checklist for Cross-Layer P2P & Shielded Hygiene

  1. Isolate Acquisition from Public Identity: Onboard non-KYC liquidity over Tor via Haveno (XMR), RoboSats (Lightning), or Bisq v2 using dedicated fiat rails (SEPA Instant, Zelle, or postal money orders depending on jurisdiction) coordinated strictly over phone-number-free E2EE messengers (SimpleX Chat).
  2. Eliminate Timing & Exact-Value Intersection: When moving between transparent and shielded pools (Zcash Orchard or 0xbow Privacy Pools), never withdraw the exact deposited balance in a single burst; stagger exits across randomized multi-day intervals and non-correlating sub-denominations.
  3. Lock Toxic Change & Unsolicited Dust: In Sparrow Wallet or Feather Wallet, label every UTXO at creation time and permanently freeze (UTXO Freeze) non-private change outputs (toxic change) and 546-sat dusting attacks so automatic coin selection never merges them with clean PayJoin or Atomic Swap outputs.

Master Comparison of 2026 On-Chain Privacy & P2P Protocols

Protocol / SystemCryptographic PrimitiveAnonymity Set & ScopeTrusted Setup / Coordinator RiskSender / Receiver / Value HiddenPrimary Operational Pitfall
Monero (FCMP++)Selene/Helios Curve Trees + Pedersen + Stealth100M+ Global Outputs (Mandatory L1)None (Transparent math + P2P Dandelion++)Yes / Yes / YesCentralized exchange delistings; use Haveno or BTC-XMR atomic swaps
Zcash (Orchard)Halo 2 Recursive zk-SNARKs (Pasta curves)Entire Shielded Pool (3.5M+ ZEC)None (Halo 2 removed trusted setup)Yes / Yes / Yes (inside z-addr)Transparent t -> z -> t timing/amount round-trip correlation
0xbow Privacy PoolsGroth16/PLONK State + ASP Set ProofsPer-denomination EVM pool + ASP setImmutable pool contract; modular ASP rootYes / Yes / Fixed PoolWithdrawing without relayer or immediate full-balance sweep
Railgun (0zk)Groth16 Shielded UTXO + PPOIShielded EVM multi-token contract stateCeremony setup + Relayer fee marketYes / Yes / Yes (internal 0zk)High L1 gas cost (prefer Arbitrum/Polygon deployments) + unshield timing
BIP-352 Silent Paymentssecp256k1 Input-Key ECDH Taproot TweakIndistinguishable from all Bitcoin P2TRNone (Pure stateless client math)No / Yes / NoProtects receiver unlinkability only; co-spending outputs later leaks CIOH
ERC-5564 StealthEphemeral ECDH + 1-byte viewTag RegistryAll ERC-5564 Announcer contract usersImmutable singleton registry contractNo / Yes / NoFunding stealth address gas from your main public 0x/ENS wallet!
BIP-77 Async PayJoin v2PSBT Multi-Party Input Fusion + OHTTPSteganographic (looks like normal P2TR)Blind OHTTP relay (learns zero IP or tx plaintext)Breaks CIOH / Partial / ObfuscatedRequires recipient wallet support (Bull Bitcoin, Cake, Payjoin CLI)
BTC-XMR Atomic SwapsCross-curve DLEQ + Adaptor SignaturesTransitions UTXO into Monero global setNone (Trustless P2P timelock contracts)Breaks cross-chain link via XMR legBitcoin refund timelock expiry if Tor connection drops mid-swap

To audit how many bits of Boltzmann entropy your existing Bitcoin transaction structure retains, or whether a target recipient address exhibits vanity-profanity address-poisoning mutations, launch DT.gl's provably offline Wallet RPC Leak & UTXO Exposure Auditor.

Frequently Verified Technical Questions

Why did Monero transition from 16-member CLSAG ring signatures to FCMP++ Full-Chain Membership Proofs?

A 16-member ring signature hides the real spent output among only 15 decoys, leaving historical transactions vulnerable to statistical age-distribution heuristics, poisoned-output chain-reaction attacks, and adversarial decoy flooding. FCMP++ uses Curve Trees over the Selene and Helios elliptic-curve cycle to prove in zero knowledge that the spent output exists anywhere inside the entire 100-million-plus global Monero output set.

Primary Reference: Monero Research Lab FCMP++ Specification

How do 0xbow Privacy Pools differ cryptographically from legacy Tornado Cash pools?

Both protocols break linkability between deposit commitments and withdrawal nullifiers inside smart contract Merkle trees using zero-knowledge proofs. However, Privacy Pools allow a withdrawing user to publish a second zero-knowledge inclusion or exclusion proof against an Association Set Merkle root, mathematically proving their funds did not originate from hacked or sanctioned deposits without revealing which honest deposit is theirs.

Primary Reference: Privacy Pools Academic Specification

Why does BIP-352 Silent Payments avoid the blockchain bloat of BIP-47 Payment Codes?

BIP-47 required the sender to broadcast an on-chain OP_RETURN notification transaction to the recipient's notification address before transacting, increasing miner fees by roughly double and leaving a visible on-chain marker that a stealth channel was opened. BIP-352 computes a shared ECDH secret directly from the sender's existing transaction input public keys and the recipient's static scan key, leaving zero extra bytes or notification footprints.

Primary Reference: BIP-352 Specification

What is the biggest operational mistake users make with Ethereum ERC-5564 stealth addresses?

Funding or sweeping the fresh stealth address without an anonymized gas paymaster or relayer. If a user receives ERC-20 tokens at a brand-new stealth address and sends 0.005 ETH from their public ENS main wallet to pay gas for moving those tokens, on-chain heuristics immediately link the stealth address directly back to their public identity.

Primary Reference: ERC-5564 Security Considerations

Does CoinJoin or PayJoin conceal transaction amounts on Bitcoin?

Standard equal-output CoinJoin protocols standardize output denominations to obscure which input funded which output, while PayJoin breaks the Common-Input-Ownership Heuristic by combining sender and receiver inputs in one normal-looking Taproot transaction so external observers miscalculate the payment value. Neither hides raw satoshi values cryptographically like Pedersen commitments in Monero or zk-SNARK notes in Zcash.

Primary Reference: BIP-77 / BIP-78 PayJoin Specification

Cryptographic & Editorial Revision Ledger

Published: | Last Verified:

  • 2026-11-11: Updated Monero FCMP++ Selene/Helios curve-tree proof benchmarks, Zcash Zashi mandatory Orchard shielding telemetry, and 0xbow Association Set Provider EVM metrics.
  • 2026-09-04: Added BIP-77 Async PayJoin v2 serverless OHTTP relay analysis and Bisq v2 / Haveno Reto / RoboSats P2P OPSEC comparison.
  • 2026-07-02: Initial DT.gl publication of the On-Chain Privacy Protocols & Non-KYC P2P Engineering Guide.