Modifications

However, for the ZEOS Orchard Shielded Protocol, the Zcash Orchard action circuit needs to be slightly adapted. Firstly, because there are no transparent transactions and therefore no transparent value pool in ZEOS. Furthermore, there is not only one, but countless different value pools in ZEOS because of the token diversity in EOSIO/Antelope ecosystems. Finally, there are numerous different fungible tokens as well as NFTs, which have no value pool at all because of their uniqueness.

Therefore the following approach is chosen:

  1. is renamed to
  2. is renamed to
  3. the difference value is converted into a third UTXO
  4. the of then becomes a of

The previous equation of the Zcash Orchard action circuit thus becomes:

where refers to the value (FT) or ID (NFT) of a UTXO as defined in UTXO Tuple.

Interestingly, the above equation works for both fungible and non-fungible tokens: In case of fungible token transfers, represents the change that (normally) goes back into the sender's wallet. In case of NFT transfers, however, is necessarily zero, since an NFT cannot be split. But if equals zero, it follows from the above equation that which corresponds exactly to the desired NFT transfer from to .

In addition to above equations, the following conditions must hold:

The equality of all values enforces that either all UTXOs in the circuit must have the same token symbol (FT) or that the upper 64 bits of an ID must match (in case of NFT, but then must equal zero). The equality of all values enforces that all UTXOs in the circuit represent tokens issued by the same smart contract.

However, introducing and replacing the with a comes with the trade-off that value surpluses of multiple actions of the same transaction can no longer be balanced with each other, since a is no Pedersen commitment and therefore does not have homomorphic properties. This means that in the ZEOS Orchard Shielded Protocol every single action must be balanced out to zero surplus using , i.e. the inputs of an action () must equal the outputs of the same action ().