Live on Stellar Mainnet

Private transfers,
Smarter compliance

Veil is a shielded wallet and private remittance protocol on Stellar. Send, receive, and transfer across borders with zero on-chain link between sender and recipient. Your shielded wallet manages everything — powered by Groth16 zero-knowledge proofs verified directly on Soroban.

V
Shielded Balance
1,250.00 XLM
+12.5%this month
Anonymity Set
2,847
Strong privacy
Pool Activity (7d)24 deposits
Recent Transactions
received
2m ago
+100.00 XLM
confirmed
sent
45m ago
-50.00 XLM
confirmed
remittance
1h ago
100 USD → 1,709 MXN
confirmed
received
3h ago
+100.00 XLM
confirmed

What is Veil?

On public blockchains, every transfer is visible — anyone can trace who sent what to whom. Veil breaks that link. When you deposit tokens into Veil, they enter a shielded pool. When someone withdraws, a zero-knowledge proof proves they have the right to withdraw without revealing which deposit is theirs. The result: complete sender–recipient unlinkability with built-in compliance. Timelocked viewing keys ensure that authorized auditors can verify transaction history after a configurable period — giving you privacy today and accountability when it matters.

0
Total deposits
0
Anonymity set size
8
Privacy pools
Depth 20
Merkle tree (1M+ slots)

How It Works

From receiving funds to sending privately across borders. No on-chain link between sender and recipient at any point.

Step 01

Open your shielded wallet

Set up your Veil wallet with a PIN. Connect your Freighter wallet and receive funds — tokens enter the shielded pool with a Poseidon commitment added to the on-chain Merkle tree. Your wallet auto-saves the secret note.

Step 02

Send privately

Enter a recipient address and amount. Your wallet auto-selects the right note, generates a Groth16 zero-knowledge proof entirely in the browser, and submits it on-chain — no manual note handling required.

Step 03

Send across borders

Choose a remittance corridor (USD→MXN, EUR→NGN, and more). Fiat on-ramps, shielded transfers through the Veil pool, and fiat off-ramps — all visualized in a real-time privacy pipeline.

Step 04

Stay compliant

Every transaction runs an automatic Privacy Pools compliance check. Timelocked viewing keys let authorized auditors verify activity after a configurable period — privacy today, accountability when it matters.

NEW

Private DEX Swaps

Deposit XLM, withdraw as USDC — or any supported token pair. The on-chain swap router changes the token type during withdrawal, adding a second layer of unlinkability on top of the ZK proof. Sender-recipient link broken and token type changed. Inspired by composable privacy on Starknet.

Try Private Swap
NEW

Private Cross-Border Remittance

Send money across borders with transfer amounts private throughout the pipeline. Fiat on-ramp, shielded transfer through the Veil pool, fiat off-ramp — Stellar's real payment rails, made confidential with zero-knowledge proofs.

Try Remittance

Why Veil?

Privacy without compromise. Real cryptography, real compliance tools, real on-chain verification.

Groth16 on Soroban

Zero-knowledge proofs verified on-chain using Stellar's native BN254 host functions — g1_add, g1_mul, and multi_pairing_check. No off-chain trust assumptions.

Poseidon Hashing

ZK-friendly Poseidon hash function over BN254 Fr for both the Circom circuits and the on-chain Merkle tree. Matching parameters ensure proof validity.

Relayer Network

Submit withdrawals through a relayer so the recipient doesn't need gas. Random delay queuing decorrelates timing between deposit and withdrawal.

Timelocked Viewing Keys

Generate viewing keys that unlock transaction details after a configurable period. Regulators or auditors can verify activity without breaking real-time privacy.

Encrypted On-chain Memos

Attach NaCl-encrypted notes to deposits, stored on-chain. Only the intended recipient can decrypt them — useful for payment references or messages.

Private DEX Swaps

Withdraw as a different token via an on-chain swap router. Deposit XLM, receive USDC — two layers of unlinkability: sender-recipient link AND token type are both broken.

Privacy Pools

Prove your funds are clean without revealing your identity. Based on Vitalik's Privacy Pools paper — compliance-ready privacy using subset membership proofs.

Client-side Proving

Proofs are generated entirely in the browser using snarkjs WASM. Your secret never leaves your device. No server, no trusted third party.

Privacy with Compliance

Most privacy protocols force a choice: hide everything or expose everything. Veil gives you both — private by default, auditable when required.

Timelocked Viewing Keys

Every deposit can generate a viewing key — a separate cryptographic key that unlocks transaction details only after a configurable timelock period expires. While the timelock is active, the transaction remains fully private. Once it expires, authorized holders can see sender, recipient, amount, and memo.

Real-time privacy preserved
Post-timelock auditability for regulators
User controls who gets the viewing key

Why This Matters

Regulators and institutions need auditability. Users need privacy. Without compliance tools, privacy protocols get banned or avoided by legitimate users. Veil's viewing key system means businesses can adopt shielded payments while still meeting KYC/AML obligations — making privacy sustainable, not just technically possible.

Institutional-grade audit trail
Compatible with KYC/AML requirements
Encrypted memos for payment references

Under the Hood

The complete 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 ───────▶ │
      │                               │                              │
   no link ◀────────────────────── zero knowledge ──────────────▶ funds

Tech 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 Guarantees

  • Sender–recipient unlinkability
  • Nullifier prevents double-spending
  • On-chain proof verification (no trust)
  • Anti-frontrun binding in circuit
  • Secrets never leave the browser

Privacy that plays by the rules

Your shielded wallet handles everything — receive, send, and remit across borders with zero-knowledge proofs and built-in compliance, all on Stellar.