Resources
Comparisons
How Permissionless Technologies SDKs compare to existing solutions — Privacy Pools, Railgun, Tornado Cash, and major stablecoins.
Comparisons
UPP vs Privacy Solutions
| Feature | UPP | Privacy Pools | Railgun | Tornado Cash |
|---|---|---|---|---|
| Multi-token support | Single pool for all ERC20s | Per-token pools | Per-token pools | Fixed denomination |
| Compliance system | On-chain ASP enforcement | ASP (similar model) | PPOI (off-chain, weaker) | None |
| Viewing keys | Per-transaction granular | No | Limited (full account) | No |
| Note merge | Yes (2-in-1) | No | Limited | No |
| Post-quantum option | Yes (STARK vault) | No | No | No |
| Ragequit | Yes (always exit) | Yes | No | N/A |
| Fee | 0% | 0% | 0.5% round-trip | 0% |
| SDK | viem/wagmi TypeScript | None | ethers.js | None |
| License | AGPL-3.0 | Apache 2.0 | UNLICENSED | GPL-3.0 |
| Trusted setup | Groth16 (SNARK mode) | Yes | Yes | Yes |
Key Differentiators vs Privacy Pools
Privacy Pools is the closest conceptual predecessor to UPP. Key differences:
- UPP ships an SDK — Privacy Pools is a protocol without developer tooling
- UPP has merge — consolidate notes and change origin (Privacy Pools doesn't support this)
- UPP has viewing keys — granular per-transaction audit access
- UPP has post-quantum mode — STARK vault for high-value storage
- UPP uses viem/wagmi — modern stack vs no SDK at all
Key Differentiators vs Railgun
- No 0.5% fee — UPP is free to use
- Unified pool — all ERC20s in one anonymity set vs fragmented per-token pools
- On-chain ASP compliance — Railgun's PPOI is off-chain and weaker
- Open source SDK — Railgun SDK is UNLICENSED
UPC vs Compliance Solutions
| Feature | UPC | Semaphore | WorldID | zkPass | PPOI (Railgun) |
|---|---|---|---|---|---|
| Proof system | PLONK/BLS12-381 | Groth16/BN254 | Groth16/BN254 | TLS oracles | Groth16/BN254 |
| Security | 128-bit | ~100-bit | ~100-bit | Oracle trust | ~100-bit |
| Trusted setup | Universal (once) | Per-circuit | Per-circuit | N/A | Per-circuit |
| Pluggable | Yes (IAttestationVerifier) | Yes (via adapter) | Yes (via adapter) | Yes (via adapter) | No |
| Custom criteria | Yes | Yes (groups) | No | No | No (OFAC only) |
| On-chain registry | AttestationHub | SemaphoreHub | WorldID Router | N/A | Off-chain |
| SDK | TypeScript/viem | JavaScript | JavaScript | SDK | None |
Why Not Just Use Semaphore?
Semaphore is excellent for anonymous group membership. UPC builds on the same concept but adds:
- 128-bit security via BLS12-381 (Semaphore uses BN254 at ~100-bit)
- Universal PLONK setup (no per-circuit ceremony for Semaphore-style circuits)
- IAttestationVerifier adapter — you can use Semaphore groups as one of many verifiers in the AttestationHub
- ASP business model — tooling for operating compliance services, not just membership groups
UPD vs Stablecoins
| Feature | UPD | USDC | USDT | DAI | FRAX |
|---|---|---|---|---|---|
| Can freeze balances | No | Yes | Yes | No* | No* |
| Admin keys | No | Yes | Yes | Yes | Yes |
| Collateral | stETH | USD fiat | USD fiat | Multi-asset | USDC + algorithmic |
| On-chain reserves | Yes (verifiable) | Attestation (off-chain) | Attestation (off-chain) | Yes | Partial |
| Privacy (native) | Yes (with UPP) | No | No | No | No |
| Yield option | sUPD (~8-10%) | USDC+ | No | DSR | sFRAX |
| Permissionless mint | Yes (any collateral) | KYB required | KYB required | CDP | Whitelist |
| Oracle dependency | Chainlink + Uniswap V3 | N/A | N/A | Chainlink | Chainlink |
*DAI has an Emergency Shutdown Module that can freeze the system; FRAX has a timelock admin.
Key Differentiator
UPD is the only major stablecoin that is censorship-resistant at the contract level. The "freeze account" function doesn't exist — not as a removed feature, but as something that was never implemented.
Combined with UPP, it's the first stablecoin where:
- Your balance is private (encrypted in the pool)
- Your transactions are private (ZK proofs)
- The token itself is censorship-resistant (no freeze function)
This combination — stablecoin + privacy + censorship resistance — doesn't exist elsewhere in DeFi.