Core concepts
Architecture
One on-chain program, three off-chain services, and clients that hold every secret. What each part is trusted with matters more than how many there are.
On-chain
All on-chain logic runs inside a single program deployed on Solana. There are no external dependencies and no upgradeable proxy. The rules are enforced entirely by the program, and no administrator can move, freeze, or seize user funds.
The program is responsible for:
- Recording deposits.
- Verifying every proof before any funds move.
- Enforcing that no deposit can be spent twice.
- Releasing funds to the destination the proof authorises.
Pools are sized to hold very large anonymity sets, and new capacity is added automatically as they fill.
Off-chain
Client side
Wallets
Mobile app, browser extension and web app: deposit, withdraw, send, trade, browse.
Encrypted backup
Deposit secrets backed up in a form only you can decrypt.
Usernames
Human-readable handles for sending inside the pool.
On-device computation
Balances, history and performance are computed locally from your own notes.
What each part is trusted with
| Part | Can it move your funds? | What it sees |
|---|---|---|
| On-chain program | Only what a valid proof authorises | Public commitments and the destinations proofs authorise |
| Proof generation (on-device) | No. It produces a proof, it does not sign a transfer | Your secrets, which never leave the device |
| Relayer | No | A completed proof, and the destination and amount already bound into it |
| Indexer | No | Public on-chain state, plus encrypted notes it cannot read |
| Veilo, the company | No | No identity data. None is collected |
The failure mode is availability, not custody
If Veilo disappears
The program keeps running, and your secret remains sufficient to spend. There is no administrative path over pool funds to switch off, and no service whose absence locks your balance.
