Core elements
Pool transition
1
Select private inputs
The transaction selects the private output or outputs it will spend and an
accepted pool root.
2
Build outputs and a witness
The transaction defines the new private outputs and builds the private
witness needed to prove the state transition.
3
Generate the proof
The prover produces a zero-knowledge proof and the public signals required
by the pool verifier.
4
Authorize the transaction
The wallet authorizes the blockchain invocation without publishing the
private witness.
5
Verify the transition
The pool checks authorization, the accepted root, unused nullifiers, and
the zero-knowledge proof.
6
Commit the new state
The pool records the nullifiers, adds the new commitments, updates its root,
and performs any required public deposit or withdrawal leg.
7
Emit encrypted audit data
The transaction emits encrypted audit output for the separate controlled
disclosure workflow.