Note commitments & nullifiers
How Orchard's note construction is repurposed to commit to trades.
In Orchard, a note commits to a value and recipient; spending it reveals a nullifier that prevents double spends without linking back to the note. Occlusion keeps the construction and changes what is committed: the note value field carries a hash of the intent, and the nullifier marks that intent as consumed.
math · construction
cm = Commit_rcm( g_d, pk_d, H(intent), ρ, ψ )
nf = Extract( [ PRF_nk(ρ) + ψ mod q ] · G + cm )
// published at commit: cm
// published at settlement: nf, anchor, π
// never published: intent, rcm, nkWhat is provable
The settlement proof shows that nf corresponds to some commitment in the note tree at a recent anchor, that the executed transition satisfies the committed intent's constraints (assets, minOut, deadline), and that the nullifier has not appeared before. It does not reveal which commitment was spent.
