The privacy layer for Solana · multiple routes

Make your
transactions vanish.

Cadabra is the all-in-one privacy layer for Solana. Shield tokens into a zero-knowledge private balance, then send, trade and earn unseen. Swap across 120+ chains through multi-hop private routes and intent-based confidential swaps, all from one app. Your keys never leave your browser.

Notes in the pool
810
Spent nullifiers
214
Shieldable tokens
69
Swap chains
126
What the chain sees
root 021d3bd1…2755
  • Shield · public
    0 spent · 3 new notes · 3JJyBQ…CE2s
    0.0499 SOL
    29m ago
  • Private trade · sealed
    1 spent · 3 new notes · 396mbj…kumk
    2h ago
  • Shield · public
    0 spent · 3 new notes · Kb54Gz…hn7u
    0.1000 SOL
    2h ago
  • Private trade · sealed
    1 spent · 3 new notes · 2dkiML…xV1M
    2h ago
  • Shield · public
    0 spent · 3 new notes · 4CWwin…kGXV
    0.0897 SOL
    2h ago
  • Withdraw · public
    1 spent · 3 new notes · X5EP3F…SJkW
    0.0199 SOL
    3h ago
  • Withdraw · public
    1 spent · 3 new notes · 24Uq3L…MweV
    0.0100 SOL
    3h ago
Who is behind each line? The proof never says.Relayer online
cadabra · /app
Private routePrivacy swapTrack
From
SOL
Solana
2
≈ $335.20
To
USDC
Ethereum
334.18
Best of 3 routes
Review swap
One privacy layer, multiple routes

Everything private, in one place.

A shielded pool for your balance, plus two independent cross-chain routes. Pick the right tool for each move without leaving the app.

ZK Shield

A private balance on Solana

Drop any SPL or Token-2022 asset into sealed notes, then pay, swap and lend without leaving the pool. Your browser produces a Groth16 proof for every move; validators confirm it is correct yet learn nothing about the sender, the size or, with SOL fees, even the asset.

  • Groth16 over BN254
  • Poseidon Merkle tree, 2^26 leaves
  • Keys never leave your browser
Open ZK Shield
Private route

Multi-hop cross-chain private swaps

Leave Solana for 120+ networks over chained partner hops. Compare several live routes side by side, fund the winner with a single manual deposit, and skip sign-ups and wallet pop-ups entirely.

  • Several live routes per quote
  • Manual deposit, no signatures
  • Track every order live
Open Private route
Privacy swap

Intent-based confidential swaps

Exact-input swaps from Solana to Ethereum, Base, Arbitrum, Optimism, Polygon, BNB Chain, NEAR, Solana and native Zcash. Solvers compete to fill your intent, and execution runs in a private shard with restricted visibility.

  • Intent API · confidential execution
  • Solver network settles cross-chain
  • Solana refund address on every order
Open Privacy swap
How it works

Public in. Sealed inside. Private out.

Value enters through a public shield, lives as sealed notes, and leaves through a public exit or a confidential cross-chain swap. Everything in between is proven, not revealed.

  1. 01Public

    Your wallet

    Any Solana wallet stays your public entry and exit. Nothing else about you is needed.

  2. 02Enter

    Shield

    One wallet signature moves tokens behind the privacy wall. The note is sealed in your browser.

  3. 03Sealed

    Private balance

    Your balance is the set of notes only your viewing key can open and only your spending key can spend.

  4. 04Sealed

    Send · Trade · Earn

    Every action spends notes and creates new ones, each with a zero-knowledge proof. A relayer pays the network fee.

  5. 05Exit

    Withdraw / Swap out

    Exit to a fresh one-time address, or swap cross-chain with multi-hop routes and intent-based confidential swaps.

Notes

Each note commits to a token, an amount and its owner. Only your viewing key can open it, and only your spending key can spend it.

Proofs

Groth16 proofs built in your browser show the program that balances add up and that you own what you spend.

Relayers

A relayer submits your proof and pays the network fee. It cannot redirect funds, because the recipient and fee are bound into the proof.

Real ZK, not ZK marketing

It doesn’t just hide. It proves.

Plenty of crypto projects call encryption, relayers or mixers “ZK”. Those can give you privacy, but they aren’t zero-knowledge proofs. Cadabra’s privacy is built on a real zk-SNARK system, Groth16, with every proof verified on-chain.

System ANot a proof

Encryption

“I hid the transaction details so nobody can read them.”

Protects information, but proves nothing about whether the transaction is valid.

System BNot a proof

Relayer

“I sent it through another wallet so your address isn’t directly visible.”

A routing or anonymity technique. Useful, but it isn’t a proof.

System CThis is ZK

Zero-knowledge

“I can mathematically prove this transaction is authorized and valid without revealing the secret behind it.”

Cadabra uses all three. Only this one gives the cryptographic proof property.

The proof pipeline
  1. Private information
  2. ZK circuit
  3. Groth16 proof
  4. On-chain verifier
  5. Accept or reject

The chain never needs to know the secret. It only checks whether the proof is valid.

What is actually being proven

Every note commits to its token, amount and spending authority. Commitments live in a Poseidon Merkle tree. When you spend, your browser builds a proof that says:

  • I possess a valid note
  • I am authorized to spend it
  • The note exists in the committed state of the pool (Poseidon Merkle membership)
  • The resulting transaction obeys the protocol’s rules: amounts balance and fees are bound

The program checks the maths and moves on. The note owner and your wallet are never part of the public inputs: ownership is separated from public execution.

Nullifiers

Each spend publishes a nullifier. The chain can enforce “this balance hasn’t already been spent” without ever asking who owns it.

No magic

Real ZK doesn’t mean everything is invisible. Public entry and exit amounts, timing and network metadata can still create links. A ZK system is only as strong as its circuits, setup, contracts and key handling.

Technical documentation

How the engines work.

The protocol details behind ZK Shield, multi-hop private routes and intent-based confidential swaps.

A non-custodial shielded pool on Solana. It uses a UTXO model adapted for zero-knowledge: value lives as notes, the pool stores only commitments, and spending reveals an unlinkable nullifier.

Notes, commitments and nullifiers

Each note commits to a token (mint), an amount, its owner and a random blinding factor. Its public fingerprint, the commitment, is appended as a leaf to an on-chain Poseidon Merkle tree with 26 levels (67,108,864 leaves).

Spending a note publishes its nullifier, which the program records in a spent registry so the note can never be spent twice. The nullifier cannot be linked to the commitment it spends.

Recipients find payments by trial-decrypting every new note ciphertext with their viewing key, so not even the indexer learns which notes belong to whom.

The circuit

Transaction(26, 4, 3): up to 4 notes in and 3 notes out per proof. It is a Groth16 SNARK over BN254 with 13 public inputs, verified on-chain with Solana’s alt_bn128 syscalls.

The constraints enforce Merkle membership of every spent note, correct nullifier derivation, ownership through the spending key, and amount conservation: inputs + public amount = outputs + fees.

Proving and verifying keys come from a Powers-of-Tau trusted setup. The verifying key is hard-coded in the program, so verification is fully deterministic.

circuit  Transaction(levels = 26, nIns = 4, nOuts = 3)
curve    BN254 · Groth16 · 13 public inputs
hash     Poseidon (Merkle tree + commitments)
verify   alt_bn128 syscalls on Solana
assets   /circuits/transaction.wasm · transaction.zkey

Relayers are bound by the proof

A relayer broadcasts your proof and covers gas, so private actions never need a wallet signature. Destination, fee and swap terms are baked into the proof hash; tamper with any of them and verification simply fails.

Trades run in two steps (swap_prepare then swap_execute). Your proof locks the input in its own escrow, then the route runs. The program checks that the escrow paid out exactly the input and that the vault received at least your minimum, otherwise it refunds automatically.

Keys and recovery

Everything grows from a single random 32-byte seed. Your browser branches it into a spend key, a view key and an endless supply of single-use addresses, then locks the lot with your passphrase (PBKDF2 × 600k, AES-GCM) on this device only.

The recovery key, shown once, restores everything on any device. It is not derived from your wallet, so a wallet compromise never exposes your private balance, and vice versa.

InstructionPurpose
transactShield, private transfer or withdrawal with a Groth16 proof (≤4 in, ≤3 out)
swap_prepare · swap_execute · swap_refundTwo-step private trade or lending position through an allowlisted program
register_assetOpen a vault for a token (anyone; screened on-chain)
collect_feesSweep protocol fees to the treasury
set_* · accept_admin2-of-2 multisig governance: fees, caps, pause, allowlist. It can pause but never move funds
Privacy model

What the chain sees, and what it doesn’t.

ActionPublicStays private
ShieldYour wallet, the token and the amount enteringEverything you do afterwards
Private sendThat a transfer happened, the relayer fee, 1–4 notes spentSender, recipient, amount and, with private SOL, the token
Private tradeThe vault traded through an allowlisted routeWho traded and from which notes
WithdrawA one-time address receiving fundsWhich notes and which owner paid it
Cross-chain swapSolana deposit and the destination payoutSwap processing (NEAR confidential shard) and no wallet link
Don’t withdraw the exact amount you shielded to the same wallet right away.
Keep a little private SOL so transfers can hide their token.
Prefer tokens with a big crowd, and wait between shielding and withdrawing.
Cross-chain deposits are public on Solana; amounts and timing can link them.
Fees

Simple, enforced on-chain.

Fees apply when value crosses the privacy wall. Private sends have no protocol fee.

ActionProtocol feeNetwork / relayer
Shield0.3% on topNone (your wallet pays the network fee)
Private sendNoneNetwork fee + rent per note spent
Private trade / earn0.3% of the inputNetwork fee + rent
Withdraw0.3% of the amountNetwork fee + rent
Private route (multi-hop)Inside the live quoteSolana network fee for your deposit
Privacy swap (intents)0.40% partner fee, in the quoteNetwork costs per chain
FAQ

Questions, answered.

Cadabra

Abracadabra. It’s gone.

Create a wallet in your browser, shield a token, or start a cross-chain private swap. No sign-up.

Launch app