ZEOS Actions (ZActions)
Analogous to EOSIO/Antelope actions ZEOS privacy actions (aka zactions) change the global state of the UTXO transaction model, specifically of the Commitment Tree, Commitment Tree Root Set and Nullifier Set. The only exceptions are MINTAT and BURNAT which are used to mint and burn authenticator tokens and only change the state of the third party smart contract they are associated with (see Private Deposits & Withdrawals for more details).
Tuple
Analogous to the EOSIO/Antelope action struct, a zaction struct is defined. The tuple contains the following elements:
- : The type of zaction to be executed (see Types below)
- : The public inputs of this zaction (see public inuts tuple under ZEOS Action Circuit)
- : A memo field used in BURN actions to set the memo for the resulting EOSIO/Antelope token transfer action
Based on this zaction tuple and in analogy to EOSIO/Antelope transactions, a ztransaction is defined as a sequence of zactions.
Types
Based on the constraint system of the ZEOS Orchard action circuit the following privacy actions (i.e. zactions) are defined:
- MINTFT: Mints a new UTXO representing a fungible asset.
- MINTNFT: Mints a new UTXO representing a non-fungible asset.
- MINTAT: Mints a new UTXO representing a permission.
- TRANSFERFT: Transfers a UTXO representing a fungible asset.
- TRANSFERNFT: Transfers a UTXO representing a non-fungible asset.
- BURNFT: Burns a UTXO representing a fungible asset.
- BURNFT2: Burns a UTXO representing a fungible asset with two different receivers.
- BURNNFT: Burns a UTXO representing a non-fungible asset.
- BURNAT: Burns a UTXO representing a permission.