Action: Spend
The Spend action allows a user to spend a note, adding to the transactions-value balance. The action contains the following fields.
body— the body of the spend, containing the balance commitment, nullifier, and randomized verification keyauth_sig— the signature to be verified by the randomized verification keyproof— a zero-knowledge proof to verify that the supplied balance commitment, nullifier, verification key, and transactions anchor are valid
Spend::check_stateless verifies the spend auth signature and that the supplied proof matches the public inputs.
Spend::check_stateful checks that the nullifier has not been used before (also see ref↗).
Spend::execute will add the supplied note payload into the state commitment tree and emit an event.