exec

This action executes a sequence of ZActions.

Parameters

Flow

The following steps specify the flow of 'exec'.

Step 0

The 'exec' action is always executed as an inline action of a step action which always follows the execution of a begin, where the proof bundle is verified which validates all subsequent zactions.

Step 1

Let loop through the sequence of zactions and check :

  • if MINTFT execute step 9 and step 10 of the corresponding action flow:

    • The zero knowledge proof is already verified by the begin action
    • Do the public inputs of this zaction represent the correct asset which is held in the asset buffer? I.e. are the following statements true:
    • Check if the NFT flag is unset ()?
    • The UTXO commitment is already added to the Commitment Tree by the begin action
    • The new root of the Commitment Tree is already added to the Commitment Tree Root Set by the begin action
    • The UTXO ciphertext is already added to the Transmitted UTXO Ciphertext List by the begin action
  • if MINTNFT execute step 9 and step 10 of the corresponding action flow:

    • The zero knowledge proof is already verified by the begin action
    • Do the public inputs of this zaction represent the correct asset which is held in the asset buffer? I.e. are the following statements true:
    • Check if the NFT flag is set ()?
    • The UTXO commitment is already added to the Commitment Tree by the begin action
    • The new root of the Commitment Tree is already added to the Commitment Tree Root Set by the begin action
    • The UTXO ciphertext is already added to the Transmitted UTXO Ciphertext List by the begin action
  • if MINTAT execute step 4 of the corresponding action flow:

  • if TRANSFERFT execute step 11 and step 12 of the corresponding action flow:

  • if TRANSFERNFT execute step 11 and step 12 of the corresponding action flow:

  • if BURNFT execute step 11 and step 12 of the corresponding action flow:

    • The zero knowledge proof is already verified by the begin action
    • Check if the NFT flag is unset ()?
    • Add to the Nullifier Set
    • The UTXO commitment is already added to the Commitment Tree by the begin action
    • The new root of the Commitment Tree is already added to the Commitment Tree Root Set by the begin action
    • The UTXO ciphertext is already added to the Transmitted UTXO Ciphertext List by the begin action
    • Continue to loop with and perform above steps to sum up all the amounts while:
      • equals BURNFT
      • remains the same (i.e. same token symbol)
      • remains the same (i.e. same token contract)
    • Transfer the sum of all amounts as one EOSIO/Antelope 'transfer' action of smart contract using as the memo into the EOSIO/Antelope account . The loop ensures that burning multiple UTXOs of the same currency is combined into one EOSIO/Antelope transfer action.
  • if BURNFT2 execute step 10 and step 11 of the corresponding action flow:

    • TODO: Not yet finalized.
  • if BURNNFT execute step 10 and step 11 of the corresponding action flow:

    • The zero knowledge proof is already verified by the begin action
    • Check if the NFT flag is set ()?
    • Add to the Nullifier Set
    • The UTXO ciphertext is already added to the Transmitted UTXO Ciphertext List by the begin action
    • Transfer the non-fungible asset (, , ) into the EOSIO/Antelope account .
  • if BURNAT execute step 7 and step 8 of the corresponding action flow: