UPP — Universal Private Pool

Universal Private Pool

Privacy layer for any ERC20 token — shared anonymity pool with SNARK and post-quantum STARK proofs, stealth addresses, and compliance-ready ASP verification.

UPP — Universal Private Pool

@permissionless-technologies/upp-sdk

UPP is a privacy pool for any ERC-20 token. It solves a practical problem for institutions and developers: on-chain activity is fully public by default, making it impossible to transact confidentially on Ethereum. UPP wraps deposits in a shared Merkle tree — shielded transfers are cryptographically private, while compliance proofs can be generated on demand for regulated workflows.

UPP is a general protocol, not a product. It doesn't enforce rules about which tokens are supported or who can participate — that's up to the integrating platform. Every new integration contributes to a shared anonymity set, making privacy stronger for all users of the pool.

npm install @permissionless-technologies/upp-sdk

Who Benefits

AudienceBenefit
UsersPrivate balances, private transfers, protection from front-running and MEV
InstitutionsCompliant private transactions via UPC, selective disclosure through viewing keys
Protocol developersDrop-in privacy for any ERC20 via SDK — no custom contracts needed
WalletsPrivacy as a built-in feature (shield button next to send)
DEXesPrivate swap orders that hide position size

What It Can Do

  • Multi-token privacy — All ERC20 tokens share one pool, one Merkle tree, one anonymity set. More users = more privacy for everyone.
  • Dual proof system — PLONK SNARKs over BLS12-381 for everyday transfers (~200K gas, 128-bit security, EIP-2537 precompiles), Circle STARKs for post-quantum secure vault (~20M gas). Both coexist.
  • Flexible operations — Shield, transfer, merge, split, withdraw.
  • Stealth addresses — Hash-based ownership (Poseidon, no BabyJubJub curve), bech32m encoded. Recipients don't need to publish their address.
  • Viewing keys — Per-transaction granular audit access. Share with auditors without compromising all transactions.
  • Ragequit — Original depositors can always withdraw to their own address, even if all ASPs refuse.
  • Merge-and-claim — Consolidate multiple received notes. Merger becomes the new compliance origin (bona fide purchaser).

What It Can't Do (By Design)

  • Cannot provide privacy for ETH directly (ERC20 wrapper needed)
  • Cannot hide the fact that you interacted with the pool (shielding/unshielding is visible on-chain)
  • Cannot guarantee privacy if the anonymity set is small (needs adoption)

Differentiators

FeatureUPPPrivacy PoolsRailgunTornado Cash
Multi-tokenSingle pool for all ERC20sPer-token poolsPer-tokenFixed denominations
ComplianceOn-chain ASP enforcementASP (similar)PPOI (weaker)None
Viewing keysPer-transactionNoLimitedNo
Merge notesYes (2-in-1)NoLimitedNo
Post-quantumSTARK vault optionNoNoNo
Fees0%0%0.5% round-trip0%
LicenseAGPL-3.0Apache 2.0UNLICENSEDGPL
SDK stackviem/wagmiN/Aethers.jsN/A

Quick Start

Reusable Primitives

The following UPP components can be used independently:

PrimitiveUse Case
Stealth address generationAny protocol needing recipient privacy
Note encryption/decryption (AES-GCM)Any confidential data exchange
LeanIMT Merkle treeAny Merkle membership proof
Poseidon hash wrapperAny ZK application
Circle STARK verifier (Solidity)Any Stwo-compatible prover

UPP depends on @permissionless-technologies/upc-sdk for the ASP compliance layer.

On this page