From 4b81d7c84611554ddadb568149b41c3dba473e51 Mon Sep 17 00:00:00 2001
From: Vivek Arte
The transaction format for v6 transactions is described in ZIP 230 12.
+The transaction format for v6 transactions is described in ZIP 230 13.
The transaction digest algorithm defined in ZIP 244 14 is modified by the OrchardZSA protocol to add a new branch for issuance information, along with modifications within the orchard_digest to account for the inclusion of the Asset Base. The details of these changes are described in this section, and highlighted using the [UPDATED FOR ZSA] or [ADDED FOR ZSA] text label. We omit the details of the sections that do not change for the OrchardZSA protocol.
The fee mechanism for the upgrades proposed in this ZIP will follow the mechanism described in ZIP 317 for the OrchardZSA protocol upgrade, and are described in ZIP 230 13.
+The fee mechanism for the upgrades proposed in this ZIP will follow the mechanism described in ZIP 317 for the OrchardZSA protocol upgrade, and are described in ZIP 227 12.
In order to have backward compatibility with the ZEC notes, we have designed the circuit to support both ZEC and OrchardZSA notes. As we specify above, there are three main reasons we can do this:
@@ -709,19 +709,19 @@| 12 | -ZIP 230: Version 6 Transaction Format | +ZIP 227: Issuance of Zcash Shielded Assets: OrchardZSA Fee Calculation |
|---|
| 13 | -ZIP 230: Version 6 Transaction Format: OrchardZSA Fee Calculation | +ZIP 230: Version 6 Transaction Format |
|---|
It is necessary to ensure that the balance of any issued Custom Asset never becomes negative within a shielded pool, along the lines of ZIP 209 8. However, unlike for the shielded ZEC pools, there is no individual transaction field that directly corresponds to both the issued and burnt amounts for a given Asset. Therefore, we require that all nodes maintain a record of the current amount in circulation for every issued Custom Asset, and update this record based on the issuance and burn transactions processed. This allows for efficient detection of balance violations for any Asset, in which scenario we specify a consensus rule to reject the transaction or block.
+It is necessary to ensure that the balance of any issued Custom Asset never becomes negative within a shielded pool, along the lines of ZIP 209 8. However, unlike for the shielded ZEC pools, there is no individual transaction field that directly corresponds to both the issued and burnt amounts for a given Asset. Therefore, we require that all nodes maintain a record of the current amount in circulation for every issued Custom Asset, and update this record based on the issuance and burn transactions processed. This allows for efficient detection of balance violations for any Asset, in which case we specify a consensus rule to reject the transaction or block.
We limit the total issuance of any Asset to a maximum of \(\mathsf{MAX\_ISSUE}\!\) . This is a practical limit that also allows an issuer to issue the complete supply of an Asset in a single transaction.
diff --git a/zips/zip-0226.rst b/zips/zip-0226.rst index df572af60..e8fb30dd6 100644 --- a/zips/zip-0226.rst +++ b/zips/zip-0226.rst @@ -560,7 +560,7 @@ Other Considerations Transaction Fees ---------------- -The fee mechanism for the upgrades proposed in this ZIP will follow the mechanism described in ZIP 317 for the OrchardZSA protocol upgrade, and are described in ZIP 230 [#zip-0230-orchardzsa-fee-calculation]_. +The fee mechanism for the upgrades proposed in this ZIP will follow the mechanism described in ZIP 317 for the OrchardZSA protocol upgrade, and are described in ZIP 227 [#zip-0227-orchardzsa-fee-calculation]_. Backward Compatibility ---------------------- @@ -603,8 +603,8 @@ References .. [#zip-0227-txiddigest] `ZIP 227: Issuance of Zcash Shielded Assets: TxId Digest - IssuanceAn issuance action, IssueAction, is the instance of issuing a specific Custom Asset, and contains the following fields:
assetDescSize: the size of the Asset description, a number between
- \(0\)
- and
+ assetDescSize: the size of the Asset description, a non-zero number that is at most
\(512\!\)
.asset_desc: the Asset description, a byte string of up to 512 bytes as defined in the Specification: Asset Identifier, Asset Digest, and Asset Base section.where \(\mathsf{GroupHash}^\mathbb{P}\) - is defined as in 30.
+ is defined as in 31.The relations between the Asset Identifier, Asset Digest, and Asset Base are shown in the following diagram:
@@ -400,32 +400,25 @@

We define a function \(\mathsf{DeriveIssuedRho} : \mathbb{F}_{q_{\mathbb{P}}} \times \{0 .. 2^{32} - 1\} \times \{0 .. 2^{32} - 1\} \to \mathbb{F}_{q_{\mathbb{P}}}\) - as follows:
-where
-where + \(\mathsf{ToBase}^{\mathsf{Orchard}}\) + is defined in §4.2.3 of the protocol specification 27, and + \(\mathsf{PRF}^{\mathsf{expand}}\) + is defined in §5.4.2 of the protocol specification 30.
The \(\text{ρ}\) field of an Issue Note is computed as
where \(\mathsf{nf}_{1,1}\) - is the nullifier of the first Note in the first Action of the OrchardZSA Bundle of the transaction, + is the nullifier of the first Note in the first Action in the first Action Group of the OrchardZSA Bundle of the transaction, \(\mathsf{index_{Action}}\) - is the index of the Issuance Action in the Issuance Bundle, and + is the zero-based index of the Issuance Action in the Issuance Bundle, and \(\mathsf{index_{Note}}\) - is the index of the Issue Note in the Issuance Action.
+ is the zero-based index of the Issue Note in the Issuance Action. +NOTE: This implicitly requires that there always is an Action Group in the OrchardZSA bundle of the transaction. This is enforced by the sixth consensus rule in the Specification: Consensus Rule Changes section.

The issuer program performs the following operations:
@@ -497,7 +490,7 @@ \((\mathsf{d}, \mathsf{pk}_{\mathsf{d}})\) is set to the default diversified payment address (i.e. the diversified payment address with diversifier index \(0\!\) - ) derived from the all-zero Orchard spending key using the algorithm specified in §4.2.3 of the protocol specification 27. This corresponds to a 43 byteu8 array with the following entries:
+ ) derived from the all-zero Orchard spending key using the algorithm specified in §4.2.3 of the protocol specification 27. This corresponds to a 43 byte u8 array with the following entries:
[
204, 54, 96, 25, 89, 33, 59, 107, 12, 219, 150, 167, 92, 23, 195, 166, 104, 169, 127, 13, 106,
140, 92, 225, 100, 165, 24, 234, 155, 169, 165, 14, 167, 81, 145, 253, 134, 27, 15, 241, 14,
@@ -581,12 +574,13 @@
Specification: Consensus Rule Changes 
For every transaction:
+ - The
nActionGroupsOrchard field MUST have a value of either 0 or 1 and the nAGExpiryHeight field MUST have a value of 0.
- The output issuance state of the transaction MUST be initialized to be the same as the input issuance state,
\(\mathsf{issued\_assets}_{\mathsf{OUT}} = \mathsf{issued\_assets}_{\mathsf{IN}}\!\)
.
- The
\(\mathsf{assetBurn}\)
- set MUST satisfy the consensus rules specified in ZIP 226 12.
+ set MUST satisfy the consensus rules specified in ZIP 226 12.
- It MUST be the case that for all
\((\mathsf{AssetBase}, \mathsf{v}) \in \mathsf{assetBurn}\!\)
,
@@ -600,10 +594,10 @@
.
- Let
\(\mathsf{SigHash}\)
- be the SIGHASH transaction hash of this transaction, as defined in §4.10 of the protocol specification 28 with the modifications described in ZIP 226 13, using
+ be the SIGHASH transaction hash of this transaction, as defined in §4.10 of the protocol specification 28 with the modifications described in ZIP 226 13, using
\(\mathsf{SIGHASH\_ALL}\!\)
.
- - If the transaction contains an Issuance Bundle, it MUST also contain at least one OrchardZSA Action.
+ - If the transaction contains an Issuance Bundle, it MUST also contain at least one OrchardZSA Action Group.
- The issuance authorization signature,
\(\mathsf{issueAuthSig}\!\)
, MUST be a valid
@@ -620,11 +614,6 @@
- It MUST be the case that
\(0 < \mathtt{assetDescSize} \leq 512\!\)
.
- - It MUST be the case that
- \(\mathsf{asset\_desc}\)
- is a string of length
- \(\mathtt{assetDescSize}\)
- bytes.
- Every Issue Note in
IssueAction MUST be a valid encoding of the
\(\mathsf{Note^{Issue}}\)
type, and MUST encode the same
@@ -677,7 +666,7 @@
.
- The node MUST compute the note commitment,
\(\mathsf{cm}_{\mathsf{i,j}}\!\)
- , as defined in the Note Structure and Commitment section of ZIP 226 11.
+ , as defined in the Note Structure and Commitment section of ZIP 226 11.
- If
@@ -690,7 +679,6 @@
- If all the consensus rules are satisfied, the node MUST add the note commitments,
\(\mathsf{cm}_{\mathsf{i,j}}\ \forall\ \mathsf{i} \in \{1..\mathtt{nIssueActions}\},\ \mathsf{j} \in \{1..\mathtt{nNotes}\}\!\)
, to the Merkle tree of note commitments.
- - (Replay Protection) If an issue bundle is present, the fees MUST be greater than zero.
It is necessary to ensure that the balance of any issued Custom Asset never becomes negative within a shielded pool, along the lines of ZIP 209 8. However, unlike for the shielded ZEC pools, there is no individual transaction field that directly corresponds to both the issued and burnt amounts for a given Asset. Therefore, we require that all nodes maintain a record of the current amount in circulation for every issued Custom Asset, and update this record based on the issuance and burn transactions processed. This allows for efficient detection of balance violations for any Asset, in which case we specify a consensus rule to reject the transaction or block.
+It is necessary to ensure that the balance of any issued Custom Asset never becomes negative within a shielded pool, along the lines of ZIP 209 8. However, unlike for the shielded ZEC pools, there is no individual transaction field that directly corresponds to both the issued and burnt amounts for a given Asset. Therefore, we require that all nodes maintain a record of the current amount in circulation for every issued Custom Asset, and update this record based on the issuance and burn transactions processed. This allows for efficient detection of balance violations for any Asset, in which case we specify a consensus rule to reject the transaction or block.
We limit the total issuance of any Asset to a maximum of \(\mathsf{MAX\_ISSUE}\!\) . This is a practical limit that also allows an issuer to issue the complete supply of an Asset in a single transaction.
@@ -727,7 +715,7 @@This section details the construction of the subtree of hashes in the transaction digest that corresponds to issuance transaction data. Details of the overall changes to the transaction digest due to the OrchardZSA protocol can be found in ZIP 226 13. As in ZIP 244 19, the digests are all personalized BLAKE2b-256 hashes, and in cases where no elements are available for hashing, a personalized hash of the empty byte array is used.
+This section details the construction of the subtree of hashes in the transaction digest that corresponds to issuance transaction data. Details of the overall changes to the transaction digest due to the OrchardZSA protocol can be found in ZIP 226 13. As in ZIP 244 19, the digests are all personalized BLAKE2b-256 hashes, and in cases where no elements are available for hashing, a personalized hash of the empty byte array is used.
A new issuance transaction digest algorithm is defined that constructs the subtree of the transaction digest tree of hashes for the issuance portion of a transaction. Each branch of the subtree will correspond to a specific subset of issuance transaction data. The overall structure of the hash is as follows; each name referenced here will be described in detail below:
issuance_digest
├── issue_actions_digest
@@ -796,7 +784,7 @@
In case the transaction has no Issue Notes, ''issue_notes_digest'' is:
BLAKE2b-256("ZTxIdIAcNoteHash", [])
T.5a.i.1: recipient 
- This is the raw encoding of an Orchard shielded payment address as defined in the protocol specification 31.
+ This is the raw encoding of an Orchard shielded payment address as defined in the protocol specification 32.
T.5a.i.2: value 
Note value encoded as little-endian 8-byte representation of 64-bit unsigned integer (e.g. u64 in Rust) raw value.
@@ -830,7 +818,7 @@
The per-input transaction digest algorithm to generate the signature digest in ZIP 244 20 is modified so that a signature digest is produced for each transparent input, each Sapling input, each Orchard action, and additionally for each Issuance Action. For Issuance Actions, this algorithm has the exact same output as the transaction digest algorithm, thus the txid may be signed directly.
+The per-input transaction digest algorithm to generate the signature digest in ZIP 244 20 is modified so that a signature digest is produced for each transparent input, each Sapling input, each Orchard action, and additionally for each Issuance Action. For Issuance Actions, this algorithm has the exact same output as the transaction digest algorithm, thus the txid may be signed directly.
The overall structure of the hash is as follows. We highlight the changes for the OrchardZSA protocol via the [ADDED FOR ZSA] text label, and we omit the descriptions of the sections that do not change for the OrchardZSA protocol:
signature_digest ├── header_digest @@ -845,14 +833,14 @@ S.3: sapling_digest (32-byte hash output) S.4: orchard_digest (32-byte hash output) S.5: issuance_digest (32-byte hash output) [ADDED FOR ZSA]-
The personalization field remains the same as in ZIP 244 19.
+The personalization field remains the same as in ZIP 244 19.
Identical to that specified for the transaction identifier.
In addition to the parameters defined in the Fee calculation section of ZIP 317 21, the OrchardZSA protocol upgrade defines the following additional parameters:
+In addition to the parameters defined in the Fee calculation section of ZIP 317 21, the OrchardZSA protocol upgrade defines the following additional parameters:
The other inputs to this formula are taken from transaction fields defined in the Zcash protocol specification 32 and the global state. They are defined in the Fee calculation section of ZIP 317 21. Note that +
The other inputs to this formula are taken from transaction fields defined in the Zcash protocol specification 33 and the global state. They are defined in the Fee calculation section of ZIP 317 21. Note that \(nOrchardActions\!\) , that is used in the computation of \(logical\_actions\!\) @@ -947,7 +935,7 @@
Wallets need to communicate the names of the Assets in a non-confusing way to users, since the byte representation of the Asset Identifier would be hard to read for an end user. Possible solutions are provided in the Specification: Asset Identifier, Asset Digest, and Asset Base section.
+Wallets need to communicate the names of the Assets in a non-confusing way to users, since the byte representation of the Asset Identifier would be hard to read for an end user. Possible solutions are provided in the Specification: Asset Identifier, Asset Digest, and Asset Base section. Wallets also need to
The design of this protocol does not currently allow for rotation of the issuance validating key that would allow for replacing the key of a specific Asset. In case of compromise, the following actions are recommended:
@@ -962,7 +950,7 @@For bridging purposes, the secure method of off-boarding Assets is to burn an Asset with the burning mechanism in ZIP 226 10. Users should be aware of issuers that demand the Assets be sent to a specific address on the Zcash chain to be redeemed elsewhere, as this may not reflect the real reserve value of the specific Wrapped Asset.
+For bridging purposes, the secure method of off-boarding Assets is to burn an Asset with the burning mechanism in ZIP 226 10. Users should be aware of issuers that demand the Assets be sent to a specific address on the Zcash chain to be redeemed elsewhere, as this may not reflect the real reserve value of the specific Wrapped Asset.
The fee mechanism described in this ZIP will follow the mechanism described in ZIP 317, and is described in ZIP 230 18.
+The fee mechanism described in this ZIP will follow the mechanism described in ZIP 317, and is described in ZIP 230 18.
| 30 | +Zcash Protocol Specification, Version 2024.5.1 [NU6]. Section 5.4.2: Pseudo Random Functions | +
|---|
| 31 | Zcash Protocol Specification, Version 2024.5.1 [NU6]. Section 5.4.9.8: Group Hash into Pallas and Vesta |
|---|
| 31 | +32 | Zcash Protocol Specification, Version 2024.5.1 [NU6]. Section 5.6.4.2: Orchard Raw Payment Addresses |
|---|
| 32 | +33 | Zcash Protocol Specification, Version 2024.5.1 [NU6]. Section 7.1: Transaction Encoding and Consensus | varies |
nActionGroupsOrchard |
compactSize |
- The number of Action Group descriptions in vActionGroupsOrchard. This MUST have a value of either 0 or 1. |
+ The number of Action Group descriptions in vActionGroupsOrchard. |
|---|---|---|---|---|---|
varies |
@@ -440,7 +440,7 @@
4 |
nAGExpiryHeight |
uint32 |
- A block height (in the future) after which the Actions of the Action Group become invalid and should be rejected by consensus. This MUST have a value of 0. |
+ A block height (in the future) after which the Actions of the Action Group become invalid and should be rejected by consensus. |
64 * nActionsOrchard |
diff --git a/zips/zip-0227.rst b/zips/zip-0227.rst
index 85b5ea648..fce930216 100644
--- a/zips/zip-0227.rst
+++ b/zips/zip-0227.rst
@@ -293,21 +293,20 @@ The detailed encoding of the issuance bundle as a part of the V6 transaction for
Computation of ρ
----------------
-We define a function $\mathsf{DeriveIssuedRho} : \mathbb{F}_{q_{\mathbb{P}}} \times \{0 .. 2^{32} - 1\} \times \{0 .. 2^{32} - 1\} \to \mathbb{F}_{q_{\mathbb{P}}}$ as follows:
+We define a function $\mathsf{DeriveIssuedRho} : \mathbb{F}_{q_{\mathbb{P}}} \times \{0 .. 2^{32} - 1\} \times \{0 .. 2^{32} - 1\} \to \mathbb{F}_{q_{\mathbb{P}}}$ for Issue Notes in the OrchardZSA Protocol as follows:
-.. math:: \mathsf{DeriveIssuedRho}(\mathsf{nf}, \mathsf{i_{A}}, \mathsf{i_{N}}) := \mathsf{ToBase}^{\mathsf{Rho}}(\mathsf{PRF}^{\mathsf{Rho}}(\mathsf{I2LEOSP}_{256}(\mathsf{nf}), [\mathtt{0x84}] \| \mathsf{I2LEOSP}_{32}(\mathsf{i_{A}}) \| \mathsf{I2LEOSP}_{32}(\mathsf{i_{N}}))),
+.. math:: \mathsf{DeriveIssuedRho}(\mathsf{nf}, \mathsf{i_{A}}, \mathsf{i_{N}}) := \mathsf{ToBase}^{\mathsf{Orchard}}(\mathsf{PRF}^{\mathsf{expand}}(\mathsf{I2LEOSP}_{256}(\mathsf{nf}), [\mathtt{0x84}] \| \mathsf{I2LEOSP}_{32}(\mathsf{i_{A}}) \| \mathsf{I2LEOSP}_{32}(\mathsf{i_{N}}))),
-where
-
-- $\mathsf{ToBase}^{\mathsf{Rho}} : \mathbb{B}^{512} \to \mathbb{F}_{q_{\mathbb{P}}}$ is defined as $\mathsf{ToBase}^{\mathsf{Rho}}(x) := \mathsf{LEOS2IP}_{512}(x) \mod q_{\mathbb{P}}$
-- $\mathsf{PRF}^{\mathsf{Rho}} : \mathbb{B}^{256} \times \mathbb{B}^{\mathbb{Y}^{[\mathbb{N}]}} \to \mathbb{B}^{512}$ is defined as $\mathsf{PRF}^{\mathsf{Rho}}(\mathsf{k},t) := \textsf{BLAKE2b-512}(\mathtt{"ZSA\_IssueNoteRho"}, \mathsf{k} \| t)$
+where $\mathsf{ToBase}^{\mathsf{Orchard}}$ is defined in §4.2.3 of the protocol specification [#protocol-orchardkeycomponents]_, and $\mathsf{PRF}^{\mathsf{expand}}$ is defined in §5.4.2 of the protocol specification [#protocol-concreteprfs]_.
The $\text{ρ}$ field of an Issue Note is computed as
.. math:: \text{ρ} := \mathsf{DeriveIssuedRho}(\mathsf{nf}_{1,1}, \mathsf{index_{Action}}, \mathsf{index_{Note}}),
-where $\mathsf{nf}_{1,1}$ is the nullifier of the first Note in the first Action of the OrchardZSA Bundle of the transaction, $\mathsf{index_{Action}}$ is the index of the Issuance Action in the Issuance Bundle, and $\mathsf{index_{Note}}$ is the index of the Issue Note in the Issuance Action.
+where $\mathsf{nf}_{1,1}$ is the nullifier of the first Note in the first Action in the first Action Group of the OrchardZSA Bundle of the transaction, $\mathsf{index_{Action}}$ is the zero-based index of the Issuance Action in the Issuance Bundle, and $\mathsf{index_{Note}}$ is the zero-based index of the Issue Note in the Issuance Action.
+**NOTE:** This implicitly requires that there always is an Action Group in the OrchardZSA bundle of the transaction.
+This is enforced by the sixth consensus rule in the `Specification: Consensus Rule Changes`_ section.
Issuance Protocol
-----------------
@@ -391,6 +390,7 @@ Specification: Consensus Rule Changes
For every transaction:
+- The ``nActionGroupsOrchard`` field MUST have a value of either ``0`` or ``1`` and the ``nAGExpiryHeight`` field MUST have a value of ``0``.
- The output issuance state of the transaction MUST be initialized to be the same as the input issuance state, $\mathsf{issued\_assets}_{\mathsf{OUT}} = \mathsf{issued\_assets}_{\mathsf{IN}}$.
- The $\mathsf{assetBurn}$ set MUST satisfy the consensus rules specified in ZIP 226 [#zip-0226-assetburn]_.
- It MUST be the case that for all $(\mathsf{AssetBase}, \mathsf{v}) \in \mathsf{assetBurn}$, $\mathsf{issued\_assets}_{\mathsf{OUT}}(\mathsf{AssetBase}).\mathsf{balance} \geq \mathsf{v}$. The node then MUST update $\mathsf{issued\_assets}_{\mathsf{OUT}}(\mathsf{AssetBase})$ prior to processing the issuance bundle in the following manner. For every $(\mathsf{AssetBase}, \mathsf{v}) \in \mathsf{AssetBurn}$, $\mathsf{issued\_assets}_{\mathsf{OUT}}(\mathsf{AssetBase}).\mathsf{balance} = \mathsf{issued\_assets}_{\mathsf{OUT}}(\mathsf{AssetBase}).\mathsf{balance} - \mathsf{v}$.
@@ -693,6 +693,7 @@ Displaying Asset Identifier information to users
------------------------------------------------
Wallets need to communicate the names of the Assets in a non-confusing way to users, since the byte representation of the Asset Identifier would be hard to read for an end user. Possible solutions are provided in the `Specification: Asset Identifier, Asset Digest, and Asset Base`_ section.
+Wallets also need to
Issuance Key Compromise
-----------------------
@@ -769,6 +770,7 @@ References
.. [#protocol-orchardkeycomponents] `Zcash Protocol Specification, Version 2024.5.1 [NU6]. Section 4.2.3: Orchard Key Components
| 9 | +ZIP 227: Issuance of Zcash Shielded Assets: Addition to the Note Commitment Tree | +
|---|
| 10 | ZIP 227: Issuance of Zcash Shielded Assets: TxId Digest - Issuance |
|---|
| 10 | +11 | ZIP 227: Issuance of Zcash Shielded Assets: Signature Digest |
|---|
| 11 | +12 | ZIP 227: Issuance of Zcash Shielded Assets: Authorizing Data Commitment |
|---|
| 12 | +13 | ZIP 227: Issuance of Zcash Shielded Assets: OrchardZSA Fee Calculation |
|---|
| 13 | +14 | ZIP 230: Version 6 Transaction Format |
|---|
| 14 | +15 | ZIP 244: Transaction Identifier Non-Malleability |
|---|
| 15 | +16 | ZIP 244: Transaction Identifier Non-Malleability: Authorizing Data Commitment |
|---|
| 16 | +17 | ZIP 307: Light Client Protocol for Payment Detection |
|---|
| 17 | +18 | Zcash Protocol Specification, Version 2024.5.1 [NU6]. Section 3.2: Notes |
|---|
| 18 | +19 | Zcash Protocol Specification, Version 2024.5.1 [NU6]. Section 3.7: Action Transfers and their Descriptions |
|---|
| 19 | +20 | Zcash Protocol Specification, Version 2024.5.1 [NU6]. Section 4.1.8: Commitment |
|---|
| 20 | +21 | Zcash Protocol Specification, Version 2024.5.1 [NU6]. Section 4.8.3: Dummy Notes (Orchard) |
|---|
| 21 | +22 | Zcash Protocol Specification, Version 2024.5.1 [NU6]. Section 4.14: Balance and Binding Signature (Orchard) |
|---|
| 22 | +23 | Zcash Protocol Specification, Version 2024.5.1 [NU6]. Section 4.16: Computing ρ values and Nullifiers |
|---|
| 23 | +24 | Zcash Protocol Specification, Version 2024.5.1 [NU6]. Section 4.18.4: Action Statement (Orchard) |
|---|
| 24 | +25 | Zcash Protocol Specification, Version 2024.5.1 [NU6]. Section 5.1: Integers, Bit Sequences, and Endianness |
|---|
| 25 | +26 | Zcash Protocol Specification, Version 2024.5.1 [NU6]. Section 5.3: Constants |
|---|
| 26 | +27 | Zcash Protocol Specification, Version 2024.5.1 [NU6]. Section 5.4.1.9: Sinsemilla hash function |
|---|
| 27 | +28 | Zcash Protocol Specification, Version 2024.5.1 [NU6]. Section 5.4.8.3: Homomorphic Pedersen commitments (Sapling and Orchard) |
|---|
| 28 | +29 | Zcash Protocol Specification, Version 2024.5.1 [NU6]. Section 5.4.8.4: Sinsemilla commitments |
|---|
| 29 | +30 | Zcash Protocol Specification, Version 2024.5.1 [NU6]. Section 5.4.9.6: Pallas and Vesta |
|---|
| 30 | +31 | Zcash Protocol Specification, Version 2024.5.1 [NU6]. Section 5.5: Encodings of Note Plaintexts and Memo Fields |
|---|
| 31 | +32 | Zcash Protocol Specification, Version 2024.5.1 [NU6]. Section 7.5: Action Description Encoding and Consensus |
|---|
| 32 | +33 | User-Defined Assets and Wrapped Assets |
|---|
| 33 | +34 | Comment on Generalized Value Commitments |
|---|
| 34 | +35 | Modifications to the Orchard circuit for the OrchardZSA Protocol |
|---|