BURNAT
Burns an authenticator token. The zero knowledge proof required for this action is identical to the one of the MINTNFT action. The only difference is that it does not create a new leaf in the merkle tree. Instead it just proves knowledge of the spend authority of the address and of the secret randomness the authenticator token was minted with. This gives access to privately withdraw assets from a third party smart contract where they have been deposited using the authenticator token's note commitment value as an identifier.
Privacy Implications
No assets are being moved by this action.
Flow
The following steps specify the flow of BURNAT.
Step 0
The UTXO is an authenticator token representing a permission.
Step 1
Calculate the diversified transmission key of the ZEOS wallet address owning the permission (see section 5.4.1.6 of the Zcash Protocol Specification):
Step 2
Calculate the of (see UTXO Commitment):
Step 3
Set the private inputs of the arithmetic circuit:
Step 4
Set the public inputs of the arithmetic circuit:
Step 5
Generate a proof of knowledge of satisfying arguments so that
The pair is the zk-SNARK which attests to knowledge of private inputs without revealing them.
Step 6
Generate UTXO ciphertext of which is burned and therefore has the BURN flag set. This ciphertext is created only for the sender's wallet transaction history to detect burned UTXOs when scanning the ZEOS smart contract's state (see section 4.19.1 of the Zcash Protocol Specification).
Step 7
Execute the BURNAT action of the ZEOS smart contract. This action takes the following arguments:
- : The zero knowledge proof of satisfying arguments
- : The public inputs of the zero knowledge proof
- : The UTXO ciphertext which indicates the 'burned' permission
The ZEOS smart contract then performs the following checks:
- Is the zero knowledge proof valid?
- Is the NFT flag set ()?
Step 8
If , the ZEOS smart contract performs the following operations:
- Add ciphertext to the Transmitted UTXO Ciphertext List
If , cancel execution.