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

Proof generationProduces the zero-knowledge proof needed to spend. This runs on your own device, or on a dedicated service for constrained environments. Secrets do not leave your device.
Relayer networkIndependent operators who receive a completed proof and submit the on-chain transaction, so your wallet is never the signer. See Relayers.
IndexerTracks on-chain activity so clients can act against the current state of the pool.

Client side

What each part is trusted with

PartCan it move your funds?What it sees
On-chain programOnly what a valid proof authorisesPublic commitments and the destinations proofs authorise
Proof generation (on-device)No. It produces a proof, it does not sign a transferYour secrets, which never leave the device
RelayerNoA completed proof, and the destination and amount already bound into it
IndexerNoPublic on-chain state, plus encrypted notes it cannot read
Veilo, the companyNoNo identity data. None is collected

The failure mode is availability, not custody

Every off-chain component can be unavailable, wrong or hostile without putting funds at risk. The worst a relayer can do is decline to submit; the worst an indexer can do is serve stale state. Neither can spend, redirect or freeze. See Trust model.

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.