Trust

Security

What's guaranteed by code, who can change what, and current status.

What the shield guarantees

GuaranteeWhy it holds
Nobody can take your deposit without your noteA withdrawal needs a proof only the note can produce.
A note can only be spent onceSpending it records its nullifier; a second use is refused.
Relayers can't redirect or overchargeThe destination and fee are part of the proof.
Withdrawals don't depend on a serverProofs are checked by the program itself, in the same transaction that pays out.
Your note stays on your deviceProofs are built in your browser.

Tokens themselves have the usual protections — supply fixed at launch, no freeze, liquidity locked on graduation. The basics lists them.

The setup ceremony

The shield's proofs rely on a key made once, in a setup. Whoever ran that setup alone could, if they kept a secret from it, forge withdrawals. The safe way is a multi-party ceremony: many people each add randomness, and the result is secure as long as any single one of them throws theirs away. The key can then be frozen on chain, so it can never be swapped for another.

A Groth16 setup has two phases. Ztonk's phase 1 is the public Perpetual Powers of Tau, with 80 independent contributors. Phase 2 is specific to our circuit: it has one contribution so far, sealed with a public random beacon (a Solana mainnet blockhash). The full transcript is in the repository and anyone can re-verify it.

Before real funds
One phase 2 contributor isn't enough — that contributor could in principle forge withdrawals. Mainnet needs several outside contributors, then the key frozen on chain. Until then the key stays unfrozen — size shield deposits accordingly.

What the admin key can do

CanCan't
Pause shield deposits and withdrawalsSpend, move or see which deposit is whose
Pause trading, launching or pool swapsChange anyone's balance or create tokens
Install the shield key, until it's frozenChange the key once it's frozen
Change fees for future tokens, within hard capsChange an existing token's fees or pricing
Limit who may trigger graduation (default: anyone)Unlock pool liquidity
A pause is a real power
It can't take anything, but it can stop funds moving for as long as it lasts. The admin key should be a multisig. Handing it over takes two steps — the new holder has to accept — so it can't be sent to a wrong address by mistake.

Current status

Status
ProgramsWritten and tested, including full end-to-end runs with real zero-knowledge proofs
DeploymentSolana mainnet (beta)
Independent auditNot done — internal review only
Setup ceremonyPublic phase 1 (80 contributors); phase 2 has one contributor so far
Admin keySingle owner wallet (offered by the deploy key, accepted on chain). Not yet a multisig