Skip to content

Commit

Permalink
Clarification about protocol behaviour when enableZSAs is set to true. (
Browse files Browse the repository at this point in the history
#57)

This resolves zcash#846
  • Loading branch information
vivek-arte authored Aug 11, 2024
1 parent 92691d9 commit be9d90c
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 2 deletions.
6 changes: 5 additions & 1 deletion zip-0226.html
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,11 @@
computation defined in ZIP 227 <a id="footnote-reference-19" class="footnote_reference" href="#zip-0227">5</a>.</p>
<p>We include the ability to pause the ZSA functionality, via a
<span class="math">\(\mathsf{enableZSA}\)</span>
boolean flag. When this flag is set to false, it is not possible to perform transactions involving Custom Assets (the Action statement as modified for ZSAs will not be satisfied).</p>
boolean flag. When this flag is set to false, the proof will fail for any non-native Asset, making it impossible to perform transactions involving Custom Assets. When this flag is set to true, the circuit will allow transactions involving Custom Assets subject to the values of the
<span class="math">\(\mathsf{enableSpendsOrchard}\)</span>
and
<span class="math">\(\mathsf{enableOutputsOrchard}\)</span>
flags, similar to the vanilla Orchard setting.</p>
<p>Finally, in this ZIP we also describe the <em>burn</em> mechanism, which is a direct extension of the transfer mechanism. The burn process uses a similar mechanism to what is used in Orchard to unshield ZEC, by using the
<span class="math">\(\mathsf{valueBalance}\)</span>
of the Asset in question. Burning Assets is useful for many purposes, including bridging of Wrapped Assets and removing supply of Assets.</p>
Expand Down
4 changes: 3 additions & 1 deletion zip-0226.rst
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,9 @@ Because in a single transaction all value commitments are balanced, there must b

In order to ensure the security of the transfers, and as we will explain below, we are redefining input dummy notes [#protocol-orcharddummynotes]_ for Custom Assets, as we need to enforce that the :math:`\mathsf{AssetBase}` of the output note of that Split Action is the output of a valid :math:`\mathsf{ZSAValueBase}` computation defined in ZIP 227 [#zip-0227]_.

We include the ability to pause the ZSA functionality, via a :math:`\mathsf{enableZSA}` boolean flag. When this flag is set to false, it is not possible to perform transactions involving Custom Assets (the Action statement as modified for ZSAs will not be satisfied).
We include the ability to pause the ZSA functionality, via a :math:`\mathsf{enableZSA}` boolean flag.
When this flag is set to false, the proof will fail for any non-native Asset, making it impossible to perform transactions involving Custom Assets.
When this flag is set to true, the circuit will allow transactions involving Custom Assets subject to the values of the :math:`\mathsf{enableSpendsOrchard}` and :math:`\mathsf{enableOutputsOrchard}` flags, similar to the vanilla Orchard setting.

Finally, in this ZIP we also describe the *burn* mechanism, which is a direct extension of the transfer mechanism. The burn process uses a similar mechanism to what is used in Orchard to unshield ZEC, by using the :math:`\mathsf{valueBalance}` of the Asset in question. Burning Assets is useful for many purposes, including bridging of Wrapped Assets and removing supply of Assets.

Expand Down

0 comments on commit be9d90c

Please sign in to comment.