Withdrawals

Withdrawals

Withdrawing from ZeroK sends your funds to a wallet of your choice — with no on-chain link to your original deposit. The entire process is non-custodial: you generate the proof, you choose the recipient, and the protocol’s smart contract verifies and executes the transfer.

How Withdrawal Works

When you withdraw, your browser generates a zero-knowledge proof using your note. This proof says: “I have a valid deposit in this pool” — without revealing which deposit is yours. The protocol’s on-chain smart contract verifies the proof and releases your funds to your chosen recipient wallet.

No one — not the protocol, not other users, not chain observers — can determine which deposit you’re withdrawing. You remain in full control throughout.

Why the Protocol Submits Your Transaction

To preserve your privacy, the protocol submits the withdrawal transaction on your behalf. This is essential because if you had to pay gas from your recipient wallet, you’d need to fund it first — and that funding transaction could create a traceable link back to you.

Instead, the protocol’s smart contract handles the on-chain transaction costs. A small 0.3% fee is deducted from your withdrawal amount to cover these network costs and sustain the protocol’s infrastructure. You never need SOL in your recipient wallet.

This is a privacy feature, not a custodial service. You generate the proof locally, you choose the recipient, and the smart contract executes trustlessly. The protocol never has custody of your funds — it simply verifies your proof and releases them.

Step-by-Step Withdrawal

1. Connect Your Wallet

Open the ZeroK app and connect the same wallet you used to deposit. ZeroK automatically scans the chain, decrypts your notes, and displays your private balance. No file uploads, no pasting, no setup.

2. Enter a Recipient Address

Navigate to the Withdraw tab and provide the Solana wallet address where you want to receive funds. For maximum privacy, use a fresh wallet that has no prior transaction history.

The recipient wallet does not need to be connected — you just need the public address. It can be completely empty. The protocol covers all gas fees.

3. Withdraw

Click Withdraw. Your browser generates a zero-knowledge proof locally in a few seconds. The proof is submitted through the protocol relay, which verifies it on-chain and releases your funds to the recipient. Your secrets never leave your device.

For larger withdrawals with multiple privacy units, ZeroK processes them in sequence with an optimized pipeline — each additional unit adds only a few seconds.

⚠️

Once withdrawn, a privacy unit is permanently spent. This is what prevents double-spending, and it is enforced by the smart contract.

Privacy Tips for Withdrawals

  • Use a fresh wallet — a new wallet with no transaction history provides the strongest privacy
  • Wait before withdrawing — let more deposits enter the pool to increase your anonymity set
  • Don’t reuse recipient addresses — using the same address for multiple withdrawals can link them together
  • Avoid timing patterns — don’t withdraw immediately after depositing

For a full breakdown of what protects your privacy and what doesn’t, see the Privacy Model.