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, nk

What 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.