How Obscura compares
Privacy without the trade-offs
Obscura is engineered to close all three gaps at once — a global anonymity set, no trusted setup, and constant-size state — with a built-in post-quantum path. Here is how that stacks up against the field.
ObscuraStrengthWeakness / gap
| Feature | Obscura (OBX) | Monero | Zcash | Mimblewimble (Grin/Beam) | Bitcoin |
|---|---|---|---|---|---|
| Privacy model | Global anonymity set + zk-STARK shielded spend | Small ring signatures + RingCT | zk-SNARK shielded pool (global for shielded tx) | Confidential Transactions (Pedersen) | Transparent / pseudonymous |
| Anonymity set size | Global — the entire unspent-output set via a dynamic accumulator; grows with every new coin | Small fixed ring per tx (~16 decoys) | Global for shielded transactions | Weak / none (transaction-graph analysis possible) | None (addresses & amounts visible) |
| Sender unlinkability | Full cryptographic — zk-STARK membership proof + recipient-secret nullifier | Plausible deniability via rings (heuristic de-anonymization attacks exist) | Full in shielded pool | None (graph links survive) | None |
| Recipient privacy | Full — dual-key stealth addresses + recipient-secret nullifier | Full (stealth addresses) | Full in shielded pool | Minimal (no traditional addresses) | None (addresses visible on-chain) |
| Amount confidentiality | Full — Pedersen commitments or in-field STARK confidential amounts | Full (RingCT) | Full in shielded pool | Full (Pedersen confidential transactions) | None (amounts visible) |
| Trusted setup required | No — class-group accumulator of unknown order + transparent zk-STARK | No | Yes — original Sapling ceremony (later versions improved; historically required) | No | No |
| State size / scalability | Constant-size — dynamic accumulator + succinct STARK proofs + intrinsic PoR pruning | Growing (full chain + key images + rings) | Growing (Merkle tree for shielded pool) | Compact via Mimblewimble cut-through | Growing (full UTXO set) |
| Proof system / technology | Transparent zk-STARK (Goldilocks field, FRI, Poseidon) + BBF accumulator | Linkable ring signatures + Bulletproofs | zk-SNARKs (Groth16 / later) | Pedersen commitments + range proofs | ECDSA + SHA-256 (no privacy proofs) |
| Proof size & verify cost | Constant / succinct (~592 KB prove, ~12 ms verify) | Grows linearly with ring size | Constant & small | Small / compact | N/A (no privacy proofs) |
| Post-quantum path | Yes — built-in v2 migration (IWOTS+ hybrid signatures, ML-KEM-768 stealth, lattice commitments, Merkle accumulator); STARK already hash-based | No (primarily EC-DLP) | No (pairings + EC) | No (primarily EC-DLP + Pedersen) | No (ECDSA + SHA-256) |
| Consensus mechanism | Nakamoto PoW (RandomX — ASIC-resistant) + Proof-of-Retrieval | Nakamoto PoW (RandomX) | Nakamoto PoW (various algorithms) | Nakamoto PoW | Nakamoto PoW (SHA-256) |
| Block time | 120 seconds | ~120 seconds (target) | ~75 seconds (varies) | ~60 seconds (Grin) | ~10 minutes |
| Emission schedule | ~18.4M cap + perpetual 0.6 OBX/block tail (smooth decay) | Monero-style tail emission | 21M cap with founders' reward (declining) | Tail-emission model (Grin) | 21M hard cap with halvings → 0 subsidy |
| Chain compaction / pruning | Intrinsic — PoR + periodic snapshots + automatic body pruning | Full chain retained (pruning optional, not consensus-enforced) | Full chain retained | Strong built-in cut-through compaction | Full chain retained (optional pruning) |
| Cross-chain atomic swaps | Yes — trustless scriptless adaptor-signature swaps, live with Nano/XNO (no bridge, no custodian) | External / limited | Via wrapped tokens or bridges | Limited / external | Via HTLCs or external bridges / wrapped tokens |
| Private staking / yield | Yes — Confidential Vaults (private yield from a bounded incentive pool, no new supply) | No built-in (external services) | No built-in | No built-in | No built-in (PoS chains have it) |
| Implementation language | Pure Go (CGO-free) — single static binary + embedded desktop UI | C++ (multiple implementations) | C++ (multiple implementations) | Rust (Grin) / C++ (Beam) | C++ |
| Status (July 2026) | v1.1 whitepaper + running reference implementation | Live mainnet since 2014 | Live mainnet (shielded + transparent) | Live mainnets (Grin & Beam) | Live mainnet since 2009 |
| Key strength | Closes all three gaps at once — global anonymity set + no trusted setup + constant-size state + post-quantum path | Strong privacy, but a small/rationed anonymity set and chain bloat | Global shielded set, but historically required a trusted setup | Excellent compactness, but no cryptographic sender unlinkability | Baseline transparent money — no native privacy |
| Key weakness | Newer project (reference implementation shipping) | Small anonymity set + heuristic decoy selection enables de-anonymization | Trusted-setup risk (toxic waste) + larger proofs historically | Transaction-graph analysis possible despite confidential amounts | Completely transparent — full linkability & amounts visible |
flowchart TB subgraph WAL["WALLET · build and prove"] direction LR W1["Transparent
Pedersen + Schnorr"]:::wal W2["Confidential ZK
hidden amounts"]:::wal W3["Unlinkable
recipient-secret nullifier"]:::wal W4["zk-STARK anon spend
transparent · no trusted setup"]:::wal W5["Vault
private staking"]:::wal W6["Cross-chain swaps
XNO scriptless · BTC HTLC (disabled)"]:::wal W7["Post-quantum
ML-KEM-768 stealth"]:::wal end subgraph MEM["MEMPOOL · admit"] direction LR M1["Parallel proof verify"]:::wal M2["Value conservation"]:::wal M3["Shared nullifier set"]:::wal M4["Bounded · fee-priority"]:::wal end subgraph P2P["P2P MESH · censorship-resistant"] direction LR N1["Self-discovering
PEX + addr-me"]:::net N2["Eclipse-resistant
/16 group caps"]:::net N3["Tor · .onion
Dandelion++"]:::net N4["Seedless"]:::net end subgraph MIN["MINER · full node by protocol"] direction LR R1["Proof-of-Retrievability
k challenges on retained span"]:::min R2["Memory-hard PoW
epoch seed · LWMA"]:::min R3["Paced to block time"]:::min end subgraph VAL["VALIDATION · every node"] direction LR V1["PoW + difficulty + MTP"]:::min V2["PoR vs stored headers"]:::min V3["Per-tx proofs
STARK · PQ"]:::min V4["Conservation + nullifier"]:::min V5["Header roots match"]:::min end subgraph ST["STATE · constant-size, committed"] direction LR S1[("Class-group accumulator
all coins · constant-size")]:::sta S2[("Nullifier set")]:::sta S3[("Epoch-sharded
Poseidon tree")]:::sta S4[("PQ anonymity accumulator")]:::sta S5[("Vaults · swaps · incentive pool")]:::sta end HDR["HEADER · Acc·Null·CM·PQ·PoR roots
bound by PoW"]:::sta CH[("CANONICAL CHAIN")]:::sta PR["Pruning by design
3-tier · snapshot sync · miners too"]:::sta XC[("Cross-chain order book
OBX↔XNO (live) · OBX↔BTC (planned)")]:::net STOP(["✗ cannot mine"]):::stop WAL ==>|"signed tx + STARK proof"| MEM MEM ==>|"Dandelion++ gossip"| P2P P2P ==>|"select ≤ 1000 txs"| MIN MIN ==>|"mined block"| VAL VAL ==>|"apply · atomic · reorg-safe"| ST ST ==>|"5 roots + NumTxs"| HDR HDR ==> CH CH ==> PR S3 -.->|"recent CMRoot = spend anchor"| W2 S3 -.-> W3 S5 -.->|"confidential yield"| W5 W6 <--> XC W7 -.-> S4 CH -.->|"broadcast block"| P2P CH -.->|"fork-choice: most-work + hash tie-break + partition recovery"| CH PR -.->|"snapshot serves new nodes"| P2P R1 -.->|"can't prove retained span"| STOP classDef wal fill:#08313a,stroke:#00e6c3,color:#dffbf5; classDef net fill:#1e1640,stroke:#8b6cff,color:#ece7ff; classDef min fill:#3a1426,stroke:#ff7ad9,color:#ffe6f6; classDef sta fill:#3a2e0b,stroke:#ffc15e,color:#fff3dc; classDef stop fill:#2a0f12,stroke:#ff5a5a,color:#ffd9d9;
Solid arrows = a transaction's path · dotted = cross-links · zoom to read every box