Protocol fees
- Fixed fee floor:
0.005 SOL - Variable fee:
amount * 3 / 1000(0.3%) - Minimum deposit:
10_000_000lamports
gross = abs(publicAmount)fee = 5_000_000 + floor(gross * 3 / 1000)net = gross - fee
Proof and payload sizes
- Groth16 proof payload:
256bytes - Public inputs payload:
264bytes
root[32]publicAmount[8]extDataHash[32]mintAddress[32]nullifiers[64]commitments[64]chainNoteHash[32]
Relay request limits
From relay transact handlers:encrypted_notes: max 2 notes- total decoded
encrypted_notesbytes: max 1024
Program/runtime constants
- Merkle tree height:
32 - Root history ring:
100 - Swap flow uses two-phase state (
TransactSwap+ worker settlement)
Operational guidance
- Use
bigintfor amounts in SDK UTXO paths. - Prefer relay-backed commitment sync for stable proof inputs.
- For large account lists, use v0 transactions with ALT support.