From ff385b89956f9f659990ff694e9adcb89498bc9f Mon Sep 17 00:00:00 2001
From: Vivek Arte As explained, the issuance protocol allows for a single issuance action to be sent to many receivers, by generating as many output notes as distinct recipients. Furthermore, every bundle can contain many issuance actions.Specification
![]()
The issuance master key is generated by choosing a bit sequence uniformly at random from \(\mathbb{B}^{\mathbb{Y}[32]}\) - , like the Orchard spending key 13. In + , like the Orchard spending key 14. In \(\mathsf{zcashd}\) - , this key is derived in a manner similar to the generation of the Orchard master key in ZIP 32 9, as detailed below:
+ , this key is derived in a manner similar to the generation of the Orchard master key in ZIP 32 10, as detailed below:The issuance authorizing key and issuance validating key are derived from the issuance master key in an analogous manner to the derivation of the Orchard spend authorizing key and Orchard spend validating key from the Orchard spending key 13, as described below.
+The issuance authorizing key and issuance validating key are derived from the issuance master key in an analogous manner to the derivation of the Orchard spend authorizing key and Orchard spend validating key from the Orchard spending key 14, as described below.
This allows the issuer to use the same wallet it usually uses to transfer Assets, while keeping a disconnect from the other keys. Specifically, this method is aligned with the requirements and motivation of ZIP 32 8. It provides further anonymity and the ability to delegate issuance of an Asset (or in the future, generate a multi-signature protocol) while the rest of the keys remain in the wallet safe.
+This allows the issuer to use the same wallet it usually uses to transfer Assets, while keeping a disconnect from the other keys. Specifically, this method is aligned with the requirements and motivation of ZIP 32 9. It provides further anonymity and the ability to delegate issuance of an Asset (or in the future, generate a multi-signature protocol) while the rest of the keys remain in the wallet safe.
The derivation of these keys are shown in the following diagram:
@@ -160,7 +160,7 @@
\(\mathsf{ZSAValueBase^{Orchard}}(\mathsf{asset\_digest}) := \mathsf{GroupHash}^\mathbb{P}(\texttt{"z.cash:OrchardZSA"}, \mathsf{asset\_digest})\)
where
\(\mathsf{GroupHash}^\mathbb{P}\)
- is defined as in 12.
+ is defined as in 13.
The relations between the Asset Identifier, Asset Digest, and Asset Base are shown in the following diagram:
@@ -250,7 +250,7 @@
\(\mathsf{isk}\)
, that validates the issuance .
- The issuance bundle is then added within the transaction format as a new bundle. That is, issuance requires the addition of the following information to the transaction format 16.
+The issuance bundle is then added within the transaction format as a new bundle. That is, issuance requires the addition of the following information to the transaction format 18.
| 7 | -ZIP 317: Proportional Fee Mechanism | +ZIP 244: Transaction Identifier Non-Malleability |
|---|
| 8 | +ZIP 317b: ZSA Extension Proportional Fee Mechanism | +
|---|
| 9 | ZIP 32: Shielded Hierarchical Deterministic Wallets |
|---|
| 9 | +10 | ZIP 32: Shielded Hierarchical Deterministic Wallets - Orchard master key generation |
|---|
| 10 | +11 | ZIP 316: Unified Addresses and Unified Viewing Keys |
|---|
| 11 | +12 | Zcash Protocol Specification, Version 2022.3.8. Section 3.1: Payment Addresses and Keys |
|---|
| 12 | +13 | Zcash Protocol Specification, Version 2022.3.8. Section 5.4.9.8: Group Hash into Pallas and Vesta |
|---|
| 13 | +14 | Zcash Protocol Specification, Version 2022.3.8. Section 4.2.3: Orchard Key Components |
|---|
| 14 | +15 | Zcash Protocol Specification, Version 2022.3.8. Section 4.15: Spend Authorization Signature (Sapling and Orchard) |
|---|
| 15 | +16 | Zcash Protocol Specification, Version 2022.3.8. Section 5.4.7.1: Spend Authorization Signature (Sapling and Orchard) |
|---|
| 17 | +Zcash Protocol Specification, Version 2022.3.8. Section 5.6.4.2: Orchard Raw Payment Addresses | +
|---|
| 16 | +18 | Zcash Protocol Specification, Version 2022.3.8. Section 7.1: Transaction Encoding and Consensus (Transaction Version 5) | A sequence of note descriptions within the issuance action | ||||
|---|---|---|---|---|---|---|---|
| 1 bit | -finalize |
- boolean | -The boolean that determines the finality of the issuance of that Asset | +1 byte | +flagsIssuance |
+ byte | +An 8-bit value with the finalize boolean value as the LSB, and the other bits set to 0. |
A new issuance transaction digest algorithm is defined that constructs the identifier for an issuance transaction. Each branch of the tree of hashes 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_txid_digest ├── issue_actions_digest -└── issuerVerificationKey+└── issuanceValidatingKey
In the specification below, nodes of the tree are presented in depth-first order.
A BLAKE2b-256 hash of the following values
diff --git a/zip-0227.rst b/zip-0227.rst index 3b2e40ccb..695bf0086 100644 --- a/zip-0227.rst +++ b/zip-0227.rst @@ -298,7 +298,7 @@ A new issuance transaction digest algorithm is defined that constructs the ident issuance_txid_digest ├── issue_actions_digest - └── issuerVerificationKey + └── issuanceValidatingKey In the specification below, nodes of the tree are presented in depth-first order.