VII.2.1 Constraint Encoding Philosophy
All protocol invariants are encoded as algebraic constraints over a finite field. There are no implicit assumptions and no “off-circuit” checks relied upon for safety. This includes:- Balance conservation
- Nullifier uniqueness
- Commitment membership
- Withdrawal bounds
VII.2.2 Membership Constraints
Merkle inclusion is enforced inside the circuit by recomputing the root from the supplied path:VII.2.3 Nullifier Correctness
Nullifiers are derived deterministically:- Each withdrawal index maps to exactly one nullifier
- The prover cannot fabricate a nullifier unrelated to the secret
- Reuse of an index is detectable on-chain
VII.2.4 Balance Conservation
The most critical constraint is balance conservation:VII.2.5 Non-Malleability and Binding
Commitments are binding by construction. Given:- Change the deposit amount
- Substitute a different secret
- Rebind the commitment to a new value
H is a required assumption.
VII.2.6 Soundness Guarantees
Under standard ZK-SNARK assumptions:- Forging a withdrawal without a valid deposit is infeasible
- Withdrawing more than deposited is infeasible
- Spending the same authorization twice is infeasible
VII.2.7 Failure Modes
The only failure modes are:- Invalid witness data
- Stale Merkle root
- Reused nullifier

