From 0c71bde61fcd53482b5078c6d6f2dc979a48bb83 Mon Sep 17 00:00:00 2001 From: Vivek Arte <46618816+vivek-arte@users.noreply.github.com> Date: Tue, 3 Feb 2026 16:30:29 +0530 Subject: [PATCH 1/4] defining the MAX_BURN_VALUE constant --- zips/zip-0226.rst | 9 ++++++++- zips/zip-0230.rst | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/zips/zip-0226.rst b/zips/zip-0226.rst index b2d3bf953..500567e3a 100644 --- a/zips/zip-0226.rst +++ b/zips/zip-0226.rst @@ -207,6 +207,7 @@ Note that the OrchardZSA Protocol does not allow for the burning of the Native A In the `OrchardZSA Transaction Structure`_, there is now an $\mathsf{assetBurn}$ set. For every Custom Asset (represented by its $\mathsf{AssetBase}$) that is burnt in the transaction, the sender adds to $\mathsf{assetBurn}$ the tuple $(\mathsf{AssetBase}, \mathsf{v})$, where $\mathsf{v}$ is the amount of the Custom Asset the sender wants to burn. +We define a constant $\mathsf{MAX\_BURN\_VALUE} := 2^{63} - 1$, which denotes the maximum amount of a given Custom Asset that can be burnt in a transaction. We denote by $L$ the cardinality of the $\mathsf{assetBurn}$ set in a transaction. As described in `Value Balance Verification`_, this provides the information for the validator of the transaction to compute the value commitment with the corresponding Asset Base. @@ -216,7 +217,7 @@ Additional Consensus Rules for the assetBurn set ```````````````````````````````````````````````` 1. It MUST be the case that for every $(\mathsf{AssetBase}, \mathsf{v}) \in \mathsf{assetBurn}, \mathsf{AssetBase} \neq \mathcal{V}^{\mathsf{Orchard}}$. That is, the Native Asset is not allowed to be burnt by this mechanism. -2. It MUST be that for every $(\mathsf{AssetBase}, \mathsf{v}) \in \mathsf{assetBurn}, \mathsf{v} \neq 0$. +2. It MUST be that for every $(\mathsf{AssetBase}, \mathsf{v}) \in \mathsf{assetBurn}, \mathsf{v} > 0$ and $\mathsf{v} \leq \mathsf{MAX\_BURN\_VALUE}$. 3. There MUST be no duplication of Custom Assets in the $\mathsf{assetBurn}$ set. That is, every $\mathsf{AssetBase}$ has at most one entry in $\mathsf{assetBurn}$. The other consensus rule changes for the OrchardZSA protocol are specified in ZIP 227 [#zip-0227-consensus]_. @@ -224,6 +225,12 @@ The other consensus rule changes for the OrchardZSA protocol are specified in ZI **Note:** The transparent protocol will not be changed with this ZIP to adapt to a multiple Asset structure. This means that unless future consensus rules changes do allow it, unshielding will not be possible for Custom Assets. +Rationale for MAX_BURN_VALUE +```````````````````````````` + +The maximum amount of any Custom Asset allowed to be burnt in a transaction is set to $2^{63} - 1$ in order to prevent it from being incompatible with other valueBalance fields, which are signed 64-bit integers. +It will also allow for compatibility with future asset-specific value balances in subsequent pools that support ZSAs via a turnstile. + Value Balance Verification -------------------------- diff --git a/zips/zip-0230.rst b/zips/zip-0230.rst index 42898b064..643716277 100644 --- a/zips/zip-0230.rst +++ b/zips/zip-0230.rst @@ -364,7 +364,7 @@ An OrchardZSA Asset Burn description is encoded in a transaction as an instance | | | |:math:`\mathsf{AssetBase^{Orchard}}\!`. | +-----------------------------+------------------------------+------------------------------------------------+---------------------------------------------------------------------+ | 8 |``valueBurn`` |``uint64`` |The amount being burnt. The value is checked by consensus to be | -| | | |non-zero. | +| | | |non-zero, and less than $\mathsf{MAX\_BURN\_VALUE}$. | +-----------------------------+------------------------------+------------------------------------------------+---------------------------------------------------------------------+ The encodings of each of these elements are defined in ZIP 226 [#zip-0226]_. From 7a6ee225f8fa3ae3308ef008efe251c5c3d86cd3 Mon Sep 17 00:00:00 2001 From: Vivek Arte <46618816+vivek-arte@users.noreply.github.com> Date: Tue, 3 Feb 2026 16:42:36 +0530 Subject: [PATCH 2/4] fixing table formatting issues --- zips/zip-0226.rst | 2 +- zips/zip-0230.rst | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/zips/zip-0226.rst b/zips/zip-0226.rst index 500567e3a..4c864fc4b 100644 --- a/zips/zip-0226.rst +++ b/zips/zip-0226.rst @@ -228,7 +228,7 @@ This means that unless future consensus rules changes do allow it, unshielding w Rationale for MAX_BURN_VALUE ```````````````````````````` -The maximum amount of any Custom Asset allowed to be burnt in a transaction is set to $2^{63} - 1$ in order to prevent it from being incompatible with other valueBalance fields, which are signed 64-bit integers. +The maximum amount of any Custom Asset allowed to be burnt in a transaction is set to $\mathsf{MAX\_BURN\_VALUE}$ in order to prevent it from being incompatible with other valueBalance fields, which are signed 64-bit integers. It will also allow for compatibility with future asset-specific value balances in subsequent pools that support ZSAs via a turnstile. Value Balance Verification diff --git a/zips/zip-0230.rst b/zips/zip-0230.rst index 643716277..66161d1aa 100644 --- a/zips/zip-0230.rst +++ b/zips/zip-0230.rst @@ -364,7 +364,8 @@ An OrchardZSA Asset Burn description is encoded in a transaction as an instance | | | |:math:`\mathsf{AssetBase^{Orchard}}\!`. | +-----------------------------+------------------------------+------------------------------------------------+---------------------------------------------------------------------+ | 8 |``valueBurn`` |``uint64`` |The amount being burnt. The value is checked by consensus to be | -| | | |non-zero, and less than $\mathsf{MAX\_BURN\_VALUE}$. | +| | | |non-zero, and less than :math:`\mathsf{MAX\_BURN\_VALUE}` | +| | | |[#zip-0226-burn-mechanism]_. | +-----------------------------+------------------------------+------------------------------------------------+---------------------------------------------------------------------+ The encodings of each of these elements are defined in ZIP 226 [#zip-0226]_. @@ -698,6 +699,7 @@ References .. [#zip-0225] `ZIP 225: Version 5 Transaction Format `_ .. [#zip-0225-transaction-format] `ZIP 225: Version 5 Transaction Format. Specification: Transaction Format `_ .. [#zip-0226] `ZIP 226: Transfer and Burn of Zcash Shielded Assets `_ +.. [#zip-0226-burn-mechanism] `ZIP 226: Transfer and Burn of Zcash Shielded Assets - Burn Mechanism `_ .. [#zip-0226-orchardzsa-transaction-structure] `ZIP 226: Transfer and Burn of Zcash Shielded Assets — OrchardZSA Transaction Structure `_ .. [#zip-0226-note-structure-and-commitment] `ZIP 226: Transfer and Burn of Zcash Shielded Assets — Note Structure and Commitment `_ .. [#zip-0227] `ZIP 227: Issuance of Zcash Shielded Assets `_ From 2c6381a73046dd96c5d1c1075e9b34ea33698af4 Mon Sep 17 00:00:00 2001 From: Vivek Arte <46618816+vivek-arte@users.noreply.github.com> Date: Tue, 3 Feb 2026 16:46:48 +0530 Subject: [PATCH 3/4] improving reference --- zips/zip-0230.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zips/zip-0230.rst b/zips/zip-0230.rst index 66161d1aa..6ded348d0 100644 --- a/zips/zip-0230.rst +++ b/zips/zip-0230.rst @@ -368,7 +368,7 @@ An OrchardZSA Asset Burn description is encoded in a transaction as an instance | | | |[#zip-0226-burn-mechanism]_. | +-----------------------------+------------------------------+------------------------------------------------+---------------------------------------------------------------------+ -The encodings of each of these elements are defined in ZIP 226 [#zip-0226]_. +The encodings of each of these elements are defined in ZIP 226 [#zip-0226-burn-mechanism]_. Transparent Sighash Information (``TransparentSighashInfo``) ------------------------------------------------------------ From 7fd5cf270aee7deb4a6edc8471dcd1751d76cc90 Mon Sep 17 00:00:00 2001 From: Vivek Arte <46618816+vivek-arte@users.noreply.github.com> Date: Thu, 5 Feb 2026 00:11:22 +0530 Subject: [PATCH 4/4] Update zips/zip-0226.rst based on review Co-authored-by: Daira-Emma Hopwood --- zips/zip-0226.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zips/zip-0226.rst b/zips/zip-0226.rst index 4c864fc4b..eefc2b27f 100644 --- a/zips/zip-0226.rst +++ b/zips/zip-0226.rst @@ -229,7 +229,7 @@ Rationale for MAX_BURN_VALUE ```````````````````````````` The maximum amount of any Custom Asset allowed to be burnt in a transaction is set to $\mathsf{MAX\_BURN\_VALUE}$ in order to prevent it from being incompatible with other valueBalance fields, which are signed 64-bit integers. -It will also allow for compatibility with future asset-specific value balances in subsequent pools that support ZSAs via a turnstile. +It will also allow for compatibility with future Custom-asset-specific value balances in subsequent pools that support transferring ZSAs from the Orchard pool via a turnstile. Value Balance Verification --------------------------