Withdrawals

Withdrawals

Spending from ZeroK sends your funds to any wallet you choose, with no on chain link back to your deposit. The whole flow is non custodial. You generate the proof, you pick the recipient, and the smart contract verifies and executes the transfer.

How a payment works

When you pay, your device builds a zero knowledge proof using your note. The proof says, in effect, “I own valid funds in this vault”, without revealing which funds are yours. The on chain program checks the proof and releases the funds to your chosen recipient.

The proof shows you own a note without revealing which one, so the withdrawal carries no link back to the deposit that funded it. How much that hides you depends on how many notes share the pool, and it grows as the pool does. You stay in control the entire time.

Why a relayer submits it for you

To protect your privacy, a relayer submits the transaction on your behalf. This matters: if you had to pay gas from the recipient wallet, you would first have to fund it, and that funding transfer could create a visible trail back to you.

Instead the relayer covers the network cost, funded by a small protocol fee taken out of the amount you send. The app and the SDK both show you the exact figure before you confirm, so the amount you preview is the amount that arrives. You never need any SOL in the recipient wallet. If you are paying in USDC and the recipient has never held it before, the relayer also pays the rent to create their token account, so a wallet holding nothing at all can receive a stablecoin payment and still hold no SOL afterwards.

This is a privacy feature, not a custodial service. You build the proof locally, you choose the recipient, and the smart contract executes trustlessly. The protocol never holds your funds. It simply verifies your proof and releases them.

Step by step

1. Connect your wallet

Open the ZeroK app and connect the same wallet you deposited with. ZeroK scans the chain, decrypts your notes, and shows your private balance automatically. No uploads, no pasting, no setup.

2. Enter a recipient

Go to the Send tab and paste the Solana address that should receive the funds. For the strongest privacy, use a fresh wallet with no prior history.

The recipient wallet does not need to be connected. You only need the address, and it can be completely empty. The protocol covers all gas.

3. Send

Enter any amount up to your balance and confirm. Your device builds the proof in a few seconds, and the relayer settles it on chain. If your payment is larger than a single note, ZeroK pays it in a few quick pieces for you, automatically. You never have to manage that.

⚠️

Once spent, value cannot be spent again. This is what prevents double spending, and the smart contract enforces it.

Privacy tips

  • Use a fresh wallet. A new address with no history gives the strongest privacy.
  • Let the crowd grow before you spend, so more deposits sit between yours and your payment.
  • Do not reuse recipient addresses. Paying the same address twice links those payments to each other.
  • Avoid obvious timing, like spending the instant you deposit.

For the full picture of what is protected and what is not, see the Privacy model.