diff --git a/zip-0224.html b/zip-0224.html
index 86752203..d9946805 100644
--- a/zip-0224.html
+++ b/zip-0224.html
@@ -17,6 +17,9 @@ Owners: Daira Hopwood <daira@electriccoin.co>
Status: Draft
Category: Consensus
Discussions-To: <https://github.com/zcash/zips/issues/435>
+ The key word "MUST" in this document is to be interpreted as described in RFC 2119. 1 This document proposes the Orchard shielded protocol, which defines a new shielded pool with spending keys and payment addresses that are amenable to future scalability improvements. TBD The Orchard protocol is specified as an update to the Zcash Protocol Specification 1. Given that it largely follows the design of the Sapling protocol, we provide here a list of differences, with references to their normative specifications and associated design rationale. The Orchard protocol MUST be implemented as specified in the Zcash Protocol Specification 2. Given that the Orchard protocol largely follows the design of the Sapling protocol, we provide here a list of differences, with references to their normative specifications and associated design rationale. The Orchard protocol uses the Pallas / Vesta curve cycle, in place of BLS12-381 and its embedded curve Jubjub: We use the "simplified SWU" algorithm to define an infallible
\(\mathsf{GroupHash}\)
- , instead of the fallible BLAKE2s-based mechanism used for Sapling. It is intended to follow (version 10 of) the IETF hash-to-curve Internet Draft 26 (but the protocol specification takes precedence in the case of any discrepancy).Terminology
+ Abstract
Specification
- Curves
@@ -33,14 +37,14 @@ Discussions-To: <https://g
The presence of the curve cycle is an explicit design choice. This ZIP only uses half of the cycle (Pallas being an embedded curve of Vesta); the full cycle is expected to be leveraged by future ZIPs.
This ZIP does not make use of Halo 2's support for recursive proofs, but this is expected to be leveraged by future ZIPs.
Orchard uses a single circuit for both spends and outputs, similar to Sprout. An "action" contains both a single (possibly dummy) note being spent, and a single (possibly dummy) note being created.
An Orchard transaction contains a "bundle" of actions, and a single Halo 2 proof that covers all of the actions in the bundle.
The Orchard protocol has equivalent commitment schemes to Sapling. For non-homomorphic commitments, Orchard uses the UPA-efficient Sinsemilla in place of Bowe--Hopwood Pedersen hashes.
Orchard uses an identical commitment tree structure to Sapling, except that we instantiate it with Sinsemilla instead of a Bowe-Hopwood Pedersen hash.
Keys and addresses are encoded using Bech32. Orchard addresses used with the Zcash mainnet have the prefix "zo" (compared to "zc" for Sprout and "zs" for Sapling).
Orchard keys may be derived in a hierarchical deterministic (HD) manner. We do not adapt the Sapling HD mechanism from ZIP 32 to Orchard; instead, we define a hardened-only derivation mechanism (similar to Sprout).
Orchard uses RedPallas (RedDSA instantiated with the Pallas curve) as its signature scheme in place of Sapling's RedJubjub (RedDSA instantiated with the Jubjub curve).
This ZIP is proposed to activate with Network Upgrade 5.
1 | +RFC 2119: Key words for use in RFCs to Indicate Requirement Levels | +
---|
2 | Zcash Protocol Specification, Version 2021.1.16-gc8c7dd [Orchard proposal] |
---|
2 | +3 | Zcash Protocol Specification, Version 2021.1.16-gc8c7dd [Orchard proposal]. Section 3.1: Payment Addresses and Keys |
---|
3 | +4 | Zcash Protocol Specification, Version 2021.1.16-gc8c7dd [Orchard proposal]. Section 3.2: Notes |
---|
4 | +5 | Zcash Protocol Specification, Version 2021.1.16-gc8c7dd [Orchard proposal]. Section 3.7: Action Transfers and their Descriptions |
---|
5 | +6 | Zcash Protocol Specification, Version 2021.1.16-gc8c7dd [Orchard proposal]. 4.17.4: Action Statement (Orchard) |
---|
6 | +7 | Zcash Protocol Specification, Version 2021.1.16-gc8c7dd [Orchard proposal]. Section 4.2.3: Orchard Key Components |
---|
7 | +8 | Zcash Protocol Specification, Version 2021.1.16-gc8c7dd [Orchard proposal]. Section 5.4.1.9: Sinsemilla Hash Function |
---|
8 | +9 | Zcash Protocol Specification, Version 2021.1.16-gc8c7dd [Orchard proposal]. Section 5.4.6: RedDSA, RedJubjub, and RedPallas |
---|
9 | +10 | Zcash Protocol Specification, Version 2021.1.16-gc8c7dd [Orchard proposal]. Section 5.4.7.4: Sinsemilla commitments |
---|
10 | +11 | Zcash Protocol Specification, Version 2021.1.16-gc8c7dd [Orchard proposal]. Section 5.4.8.6: Pallas and Vesta |
---|
11 | +12 | Zcash Protocol Specification, Version 2021.1.16-gc8c7dd [Orchard proposal]. Section 5.4.8.8: Group Hash into Pallas and Vesta |
---|
12 | +13 | Zcash Protocol Specification, Version 2021.1.16-gc8c7dd [Orchard proposal]. Section 5.6.5: Orchard Payment Address |
---|
13 | +14 | Zcash Protocol Specification, Version 2021.1.16-gc8c7dd [Orchard proposal]. Section 5.6.8: Orchard Incoming Viewing Keys |
---|
14 | +15 | TODO |
---|
15 | +16 | TODO |
---|
16 | +17 | The halo2 Book: 1.2 UltraPLONK Arithmetization |
---|
17 | +18 | The halo2 Book: 3.1. Proving system |
---|
18 | +19 | The Orchard Book: 3.1. Keys and addresses |
---|
19 | +20 | The Orchard Book: 3.2. Actions |
---|
20 | +21 | The Orchard Book: 3.3. Commitments |
---|
21 | +22 | The Orchard Book: 3.4. Commitment tree |
---|
22 | +23 | The Orchard Book: 3.5. Nullifiers |
---|
23 | +24 | ZIP 32: Shielded Hierarchical Deterministic Wallets |
---|
24 | +25 | ZIP 212: Allow Recipient to Derive Sapling Ephemeral Secret from Note Plaintext |
---|
25 | +26 | ZIP 315: Best Practices for Wallet Handling of Multiple Pools |
---|
26 | +27 | draft-irtf-cfrg-hash-to-curve-10: Hashing to Elliptic Curves |
---|
27 | +28 | Pallas/Vesta supporting evidence |
---|