Hold stablecoins.
Transfer & Swap privately.
The confidential wallet and DEX swap layer for Stellar. Transfer instantly or swap assets on-chain with zero public link between sender and receiver.
How It Works
Deposit into a shielded pool, send privately or swap assets — no public link between sender and receiver.
Fund your wallet
Create a wallet with a PIN. Deposit XLM or USDC into a fixed-denomination shielded pool. Your secret note is saved automatically.
Send privately
Enter a recipient and amount. Your wallet auto-selects the right note, generates a Groth16 ZK proof in the browser, and submits it on-chain.
Swap assets privately
Withdraw as a different token via the on-chain swap router. Deposit XLM and withdraw USDC — breaks transaction graphs while changing settlement assets.
Disclose selectively
Generate timelocked reveal keys for auditors. They can inspect transaction details after the timelock expires — but never spend your funds.
Built for Real Privacy
On-chain ZK proofs, client-side proving, and compliance-oriented disclosure.
Groth16 on Soroban
ZK proofs verified on-chain using Stellar's native BN254 host functions. No off-chain trust.
Poseidon Hashing
ZK-friendly hash over BN254 Fr for circuits and on-chain Merkle tree. Matching parameters ensure validity.
Relayer Network
Submit withdrawals through a relayer so recipients don't need gas. Random delays decorrelate timing.
Timelocked Reveal Keys
User-held keys that disclose transaction details after a configurable period. Can prove activity, can't spend funds.
Privacy Pools
Prove membership in an approved set without revealing which deposit is yours. Inspired by Vitalik's Privacy Pools paper.
Client-side Proving
Proofs are generated in the browser using snarkjs WASM. Your secret note never leaves your device.
Under the Hood
The privacy pipeline — from deposit commitment to zero-knowledge withdrawal.
Depositor Veil Pool (Soroban) Recipient
───────── ────────────────── ──────────
│ │ │
│── deposit(commitment) ───────▶│ │
│ [100 XLM + Poseidon hash] │ │
│ │◀── Merkle tree insert │
│ │ │
│── share secret note (QR) ────────────────────────────────▶ │
│ │ │
│ │◀── withdraw(proof) ──────── │
│ │ [Groth16 ZK proof] │
│ │ │
│ │── BN254 pairing verify ──▶ │
│ │── nullifier check ────────▶ │
│ │── transfer 100 XLM ───────▶ │
│ │ │
hidden link ◀────────────────── zero knowledge ──────────────▶ fundsTech Stack
- Circom 2.0 circuits + snarkjs (Groth16)
- BN254 curve with native Soroban host fns
- Poseidon hash (circomlib + on-chain)
- Incremental Merkle tree (depth 20)
- Client-side WASM proof generation
Security & Compliance
- No public sender-recipient link
- Nullifier prevents double-spending
- On-chain proof verification (no trust)
- Timelocked reveal keys for auditors
- Privacy Pools subset compliance
Hold dollars. Move privately.
Deposit stablecoins, send privately, or execute DEX swaps — all with selective disclosure for compliance.