Skip to content

Commit d250e0f

Browse files
authored
Merge pull request #1058 from nuttycom/nu61_zip0214_fs
[ZIP 207, ZIP 214]: Specify NU6.1 funding streams
2 parents cc40836 + 6c7be39 commit d250e0f

File tree

4 files changed

+112
-42
lines changed

4 files changed

+112
-42
lines changed

README.rst

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -112,13 +112,13 @@ Released ZIPs
112112
<tr> <td>203</td> <td class="left"><a href="zips/zip-0203.rst">Transaction Expiry</a></td> <td>Final</td>
113113
<tr> <td>205</td> <td class="left"><a href="zips/zip-0205.rst">Deployment of the Sapling Network Upgrade</a></td> <td>Final</td>
114114
<tr> <td>206</td> <td class="left"><a href="zips/zip-0206.rst">Deployment of the Blossom Network Upgrade</a></td> <td>Final</td>
115-
<tr> <td>207</td> <td class="left"><a href="zips/zip-0207.rst">Funding Streams</a></td> <td>[Canopy, NU6] Final</td>
115+
<tr> <td>207</td> <td class="left"><a href="zips/zip-0207.rst">Funding Streams</a></td> <td>[Revision 0: Canopy, Revision 1: NU6] Final</td>
116116
<tr> <td>208</td> <td class="left"><a href="zips/zip-0208.rst">Shorter Block Target Spacing</a></td> <td>Final</td>
117117
<tr> <td>209</td> <td class="left"><a href="zips/zip-0209.rst">Prohibit Negative Shielded Chain Value Pool Balances</a></td> <td>Final</td>
118118
<tr> <td>211</td> <td class="left"><a href="zips/zip-0211.rst">Disabling Addition of New Value to the Sprout Chain Value Pool</a></td> <td>Final</td>
119119
<tr> <td>212</td> <td class="left"><a href="zips/zip-0212.rst">Allow Recipient to Derive Ephemeral Secret from Note Plaintext</a></td> <td>Final</td>
120120
<tr> <td>213</td> <td class="left"><a href="zips/zip-0213.rst">Shielded Coinbase</a></td> <td>Final</td>
121-
<tr> <td>214</td> <td class="left"><a href="zips/zip-0214.rst">Consensus rules for a Zcash Development Fund</a></td> <td>[Revision 0: Canopy, Revision 1: NU6] Final</td>
121+
<tr> <td>214</td> <td class="left"><a href="zips/zip-0214.rst">Consensus rules for a Zcash Development Fund</a></td> <td>[Revision 0: Canopy, Revision 1: NU6] Final, [Revision 2: NU6.1] Proposed</td>
122122
<tr> <td>215</td> <td class="left"><a href="zips/zip-0215.rst">Explicitly Defining and Modifying Ed25519 Validation Rules</a></td> <td>Final</td>
123123
<tr> <td>216</td> <td class="left"><a href="zips/zip-0216.rst">Require Canonical Jubjub Point Encodings</a></td> <td>Final</td>
124124
<tr> <td>221</td> <td class="left"><a href="zips/zip-0221.rst">FlyClient - Consensus-Layer Changes</a></td> <td>Final</td>
@@ -287,14 +287,14 @@ Index of ZIPs
287287
<tr> <td><span class="reserved">204</span></td> <td class="left"><a class="reserved" href="zips/zip-0204.rst">Zcash P2P Network Protocol</a></td> <td>Reserved</td>
288288
<tr> <td>205</td> <td class="left"><a href="zips/zip-0205.rst">Deployment of the Sapling Network Upgrade</a></td> <td>Final</td>
289289
<tr> <td>206</td> <td class="left"><a href="zips/zip-0206.rst">Deployment of the Blossom Network Upgrade</a></td> <td>Final</td>
290-
<tr> <td>207</td> <td class="left"><a href="zips/zip-0207.rst">Funding Streams</a></td> <td>[Canopy, NU6] Final</td>
290+
<tr> <td>207</td> <td class="left"><a href="zips/zip-0207.rst">Funding Streams</a></td> <td>[Revision 0: Canopy, Revision 1: NU6] Final</td>
291291
<tr> <td>208</td> <td class="left"><a href="zips/zip-0208.rst">Shorter Block Target Spacing</a></td> <td>Final</td>
292292
<tr> <td>209</td> <td class="left"><a href="zips/zip-0209.rst">Prohibit Negative Shielded Chain Value Pool Balances</a></td> <td>Final</td>
293293
<tr> <td><strike>210</strike></td> <td class="left"><strike><a href="zips/zip-0210.rst">Sapling Anchor Deduplication within Transactions</a></strike></td> <td>Withdrawn</td>
294294
<tr> <td>211</td> <td class="left"><a href="zips/zip-0211.rst">Disabling Addition of New Value to the Sprout Chain Value Pool</a></td> <td>Final</td>
295295
<tr> <td>212</td> <td class="left"><a href="zips/zip-0212.rst">Allow Recipient to Derive Ephemeral Secret from Note Plaintext</a></td> <td>Final</td>
296296
<tr> <td>213</td> <td class="left"><a href="zips/zip-0213.rst">Shielded Coinbase</a></td> <td>Final</td>
297-
<tr> <td>214</td> <td class="left"><a href="zips/zip-0214.rst">Consensus rules for a Zcash Development Fund</a></td> <td>[Revision 0: Canopy, Revision 1: NU6] Final</td>
297+
<tr> <td>214</td> <td class="left"><a href="zips/zip-0214.rst">Consensus rules for a Zcash Development Fund</a></td> <td>[Revision 0: Canopy, Revision 1: NU6] Final, [Revision 2: NU6.1] Proposed</td>
298298
<tr> <td>215</td> <td class="left"><a href="zips/zip-0215.rst">Explicitly Defining and Modifying Ed25519 Validation Rules</a></td> <td>Final</td>
299299
<tr> <td>216</td> <td class="left"><a href="zips/zip-0216.rst">Require Canonical Jubjub Point Encodings</a></td> <td>Final</td>
300300
<tr> <td><span class="reserved">217</span></td> <td class="left"><a class="reserved" href="zips/zip-0217.rst">Aggregate Signatures</a></td> <td>Reserved</td>

zips/zip-0207.rst

Lines changed: 57 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
Title: Funding Streams
55
Owners: Jack Grigg <[email protected]>
66
Daira-Emma Hopwood <[email protected]>
7-
Status: [Canopy, NU6] Final
7+
Status: [Revision 0: Canopy, Revision 1: NU6] Final
88
Category: Consensus
99
Created: 2019-01-04
1010
License: MIT
@@ -83,6 +83,21 @@ that are not yet needed may be kept off-line as a security measure.
8383
Specification
8484
=============
8585

86+
Revisions
87+
---------
88+
89+
.. _`Revision 0`:
90+
91+
* Revision 0: The initial version of this specification, as agreed upon
92+
by the Zcash community in ZIP 1014 [#zip-1014]_.
93+
94+
.. _`Revision 1`:
95+
96+
* Revision 1: Adds the `Deferred Development Fund Chain Value Pool Balance`_ as
97+
a potential recipient of funding stream outputs, as agreed upon by the
98+
Zcash community in ZIP 1015 [#zip-1015]_ and specified in ZIP 2001
99+
[#zip-2001]_.
100+
86101
Definitions
87102
-----------
88103

@@ -125,15 +140,20 @@ An active funding stream at a given block height is defined as a funding
125140
stream for which the block height is less than its end height, but not less
126141
than its start height.
127142

128-
The funding streams are paid to one of a pre-defined set of recipients,
129-
depending on the block height. Each recipient identifier MUST be either the
130-
string encoding of a transparent P2SH address or Sapling address (as specified in
143+
The value of each funding stream is paid to one of a pre-defined set of
144+
recipients, depending on the block height.
145+
146+
As of `Revision 0`_, each recipient MUST be the string encoding of a
147+
transparent P2SH address or Sapling address (as specified in
148+
[#protocol-transparentaddrencoding]_ or [#protocol-saplingpaymentaddrencoding]_).
149+
150+
As of `Revision 1`_, each recipient identifier MUST be either the string
151+
encoding of a transparent P2SH address or Sapling address (as specified in
131152
[#protocol-transparentaddrencoding]_ or [#protocol-saplingpaymentaddrencoding]_)
132-
to be paid by an output in the coinbase transaction, or the identifier
133-
$\mathsf{DEFERRED\_POOL}$. The latter, added in the NU6 network upgrade
134-
[#zip-0253]_, indicates that the value is to be paid to a reserve to be
135-
used for development funding, the distribution of which is to be determined via
136-
a future ZIP.
153+
or the identifier $\mathsf{DEFERRED\_POOL}$. The latter, added in the NU6
154+
network upgrade [#zip-0253]_, indicates that the value is to be paid to a
155+
reserve to be used for development funding, the distribution of which is to be
156+
determined via a future ZIP.
137157

138158
Each address is used for at most 1/48th of a halving interval, creating a
139159
roughly-monthly sequence of funding periods. The address to be used for a
@@ -188,9 +208,10 @@ Founders' Reward address period prior to Canopy activation.
188208
Deferred Development Fund Chain Value Pool Balance
189209
--------------------------------------------------
190210

191-
Full node implementations MUST track an additional
192-
$\mathsf{ChainValuePoolBalance^{Deferred}}$ chain value pool balance,
193-
in addition to the Sprout, Sapling, and Orchard chain value pool balances.
211+
As of `Revision 1`_ of this specification, full node implementations MUST track
212+
an additional $\mathsf{ChainValuePoolBalance^{Deferred}}$ chain value pool
213+
balance, in addition to the Sprout, Sapling, and Orchard chain value pool
214+
balances.
194215

195216
Define $\mathsf{totalDeferredOutput}(\mathsf{height}) := \sum_{\mathsf{fs} \in \mathsf{DeferredFundingStreams}(\mathsf{height})} \mathsf{fs.Value}(\mathsf{height})$
196217
where $\mathsf{DeferredFundingStreams}(\mathsf{height})$ is the set of
@@ -217,12 +238,31 @@ for payment of the original Founders' Reward is enforced. [#protocol-foundersrew
217238

218239
Once the Canopy network upgrade activates:
219240

220-
- The existing consensus rule for payment of the Founders' Reward [#protocol-foundersreward]_
221-
is no longer active.
222-
(This would be the case under the preexisting consensus rules for Mainnet, but
223-
not for Testnet.)
241+
1. The existing consensus rule for payment of the Founders' Reward
242+
[#protocol-foundersreward]_ is no longer active. (This would be the case
243+
under the preexisting consensus rules for Mainnet, but not for Testnet.)
244+
245+
2. The coinbase transaction in each block MUST contain at least one output per
246+
active funding stream that pays the stream's value in the prescribed way to
247+
the stream's recipient address for the block's height.
224248

225-
- In each block with coinbase transaction $\mathsf{cb}$ at block height
249+
3. $\mathsf{fs.Recipient}(\mathsf{height})$ is defined as
250+
$\mathsf{fs.Recipients_{\,fs.RecipientIndex}}(\mathsf{height})$.
251+
252+
4. The "prescribed way" to pay a transparent multisig P2SH address is to use a
253+
standard P2SH script as specified in [#Bitcoin-Multisig]_.
254+
255+
5. The "prescribed way" to pay a Sapling address is as defined in [#zip-0213]_.
256+
That is, all Sapling outputs in coinbase transactions (including, but not
257+
limited to, outputs for funding streams) MUST have valid note commitments
258+
when recovered using a 32-byte array of zeroes as the outgoing viewing key.
259+
In this case the note plaintext lead byte MUST be $\mathbf{0x02}$, as
260+
specified in [#zip-0212]_.
261+
262+
Once the NU6 network upgrade activates:
263+
264+
- Rule 2 above is replaced by:
265+
In each block with coinbase transaction $\mathsf{cb}$ at block height
226266
$\mathsf{height}$, for each funding stream $\mathsf{fs}$
227267
active at that block height with a recipient identifier other than
228268
$\mathsf{DEFERRED\_POOL}$ given by
@@ -231,19 +271,6 @@ Once the Canopy network upgrade activates:
231271
$\mathsf{fs.Value}(\mathsf{height})$ zatoshi in the prescribed way to
232272
the address represented by that recipient identifier.
233273

234-
- $\mathsf{fs.Recipient}(\mathsf{height})$ is defined as
235-
$\mathsf{fs.Recipients_{\,fs.RecipientIndex}}(\mathsf{height})$.
236-
237-
- The "prescribed way" to pay a transparent multisig P2SH address is to use a
238-
standard P2SH script as specified in [#Bitcoin-Multisig]_.
239-
240-
- The "prescribed way" to pay a Sapling address is as defined in [#zip-0213]_.
241-
That is, all Sapling outputs in coinbase transactions (including, but not
242-
limited to, outputs for funding streams) MUST have valid note commitments
243-
when recovered using a 32-byte array of zeroes as the outgoing viewing key.
244-
In this case the note plaintext lead byte MUST be $\mathbf{0x02}$, as
245-
specified in [#zip-0212]_.
246-
247274
These rules are reproduced in [#protocol-fundingstreams]_.
248275

249276
The effect of the definition of $\mathsf{ChainValuePoolBalance^{Deferred}}$

zips/zip-0214.rst

Lines changed: 50 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
Title: Consensus rules for a Zcash Development Fund
55
Owners: Daira-Emma Hopwood <[email protected]>
66
Kris Nuttycombe <[email protected]>
7-
Status: [Revision 0: Canopy, Revision 1: NU6] Final
7+
Status: [Revision 0: Canopy, Revision 1: NU6] Final, [Revision 2: NU6.1] Proposed
88
Category: Consensus
99
Created: 2020-02-28
1010
License: MIT
@@ -64,6 +64,9 @@ Network Upgrade 4 and last for 4 years.
6464
of Zcash development via block subsidies, to be enacted at Network Upgrade 6
6565
and lasting for 1 year.
6666

67+
`Revision 2`_ of this ZIP describes consensus rule changes related to funding
68+
of Zcash development via block subsidies, to be enacted at Network Upgrade 6.1
69+
and lasting for 3 years.
6770

6871
Applicability
6972
=============
@@ -121,6 +124,12 @@ Revisions
121124
* Revision 1: Funding streams defined to start at Zcash's second halving,
122125
and last for one year, as agreed upon in ZIP 1015 [#zip-1015]_.
123126

127+
.. _`Revision 2`:
128+
129+
* Revision 2: Funding streams defined to start at the end height of the
130+
`Revision 2`_ funding streams, and last for three years, as agreed upon
131+
in ZIP 1016 [#zip-1016]_.
132+
124133
Activation
125134
----------
126135

@@ -133,7 +142,7 @@ the activation height of Canopy on Mainnet therefore SHALL be 1046400.
133142

134143
`Revision 0`_ of ZIP 207 [#zip-0207]_ SHALL be activated in Canopy.
135144

136-
Since ZIP 1015 specifies that the specified funding streams start at the second
145+
Since ZIP 1015 specifies that the specified funding streams start at the second
137146
halving, the activation height of NU6 on Mainnet therefore SHALL be 2726400.
138147

139148
`Revision 1`_ of ZIP 207 [#zip-0207]_ SHALL be activated in NU6.
@@ -183,6 +192,24 @@ As of `Revision 1`_, the following additional streams are defined for Testnet:
183192
``FS_DEFERRED`` 12 100 2976000 3396000
184193
================= =========== ============= ============== ============
185194

195+
As of `Revision 2`_, the following additional streams are defined for Mainnet:
196+
197+
================= =========== ============= ============== ============
198+
Stream Numerator Denominator Start height End height
199+
================= =========== ============= ============== ============
200+
``FS_FPF_ZCG_H3`` 8 100 3146400 4406400
201+
``FS_CCF_H3`` 12 100 3146400 4406400
202+
================= =========== ============= ============== ============
203+
204+
As of `Revision 2`_, the following additional streams are defined for Testnet:
205+
206+
================= =========== ============= ============== ============
207+
Stream Numerator Denominator Start height End height
208+
================= =========== ============= ============== ============
209+
``FS_FPF_ZCG_H3`` 8 100 3536500 4476000
210+
``FS_CCF_H3`` 12 100 3536500 4476000
211+
================= =========== ============= ============== ============
212+
186213
Notes for `Revision 0`_:
187214

188215
* The block heights of halvings are different between Testnet and Mainnet, as a
@@ -198,7 +225,7 @@ Notes for `Revision 0`_:
198225

199226
Notes for `Revision 1`_:
200227

201-
* The new funding streams begin at the second halving for Mainnet, but the second
228+
* The new funding streams begin at the second halving for Mainnet, but the second
202229
halving on Testnet occurred prior to the introduction of the new funding streams.
203230
For both new funding streams on each network, the associated duration
204231
corresponds to approximately one year's worth of blocks.
@@ -297,10 +324,17 @@ Mainnet Recipient Addresses for `Revision 0`_
297324
(i.e. ``FS_ZIP214_ZF.AddressList`` and ``FS_ZIP214_MG.AddressList`` for Mainnet each
298325
consist of 48 repetitions of the same address).
299326

300-
Mainnet Recipient Addresses for `Revision 1`_
301-
---------------------------------------------
327+
Mainnet Recipients for `Revision 1`_
328+
------------------------------------
302329

303330
FS_FPF_ZCG.AddressList[0..11] = ["t3cFfPt1Bcvgez9ZbMBFWeZsskxTkPzGCow"] * 12
331+
FS_DEFERRED = DEFERRED_POOL as defined in [zip-0207]_
332+
333+
Mainnet Recipients for `Revision 2`_
334+
------------------------------------
335+
336+
FS_FPF_ZCG_H3.AddressList[0..35] = [TBD] * 36
337+
FS_CCF_H3 = DEFERRED_POOL as defined in [zip-0207]_
304338

305339
Testnet Recipient Addresses for `Revision 0`_
306340
---------------------------------------------
@@ -368,11 +402,17 @@ Testnet Recipient Addresses for `Revision 0`_
368402
(i.e. ``FS_ZIP214_ZF.AddressList`` and ``FS_ZIP214_MG.AddressList`` for Testnet each
369403
consist of 51 repetitions of the same address).
370404

371-
Testnet Recipient Addresses for `Revision 1`_
372-
---------------------------------------------
405+
Testnet Recipients for `Revision 1`_
406+
------------------------------------
373407

374408
FS_FPF_ZCG.AddressList[0..12] = ["t2HifwjUj9uyxr9bknR8LFuQbc98c3vkXtu"] * 13
409+
FS_DEFERRED = DEFERRED_POOL as defined in [zip-0207]_
410+
411+
Testnet Recipients for `Revision 2`_
412+
------------------------------------
375413

414+
FS_FPF_ZCG_H3.AddressList[0..26] = ["t2HifwjUj9uyxr9bknR8LFuQbc98c3vkXtu"] * 27
415+
FS_CCF_H3 = DEFERRED_POOL as defined in [zip-0207]_
376416

377417
Rationale for `Revision 0`_
378418
===========================
@@ -397,6 +437,7 @@ Deployment
397437

398438
`Revision 1`_ of this proposal was deployed with NU6. [#zip-0253]_
399439

440+
`Revision 2`_ of this proposal is intended to be deployed with NU6.1. [#zip-0255]_
400441

401442
References
402443
==========
@@ -413,5 +454,7 @@ References
413454
.. [#zip-0208] `ZIP 208: Shorter Block Target Spacing <zip-0208.rst>`_
414455
.. [#zip-0251] `ZIP 251: Deployment of the Canopy Network Upgrade <zip-0251.rst>`_
415456
.. [#zip-0253] `ZIP 253: Deployment of the NU6 Network Upgrade <zip-0253.rst>`_
457+
.. [#zip-0255] `ZIP 255: Deployment of the NU6.1 Network Upgrade <zip-0255.rst>`_
416458
.. [#zip-1014] `ZIP 1014: Establishing a Dev Fund for ECC, ZF, and Major Grants <zip-1014.rst>`_
417459
.. [#zip-1015] `ZIP 1015: Block Subsidy Allocation for Non-Direct Development Funding <zip-1015.rst>`_
460+
.. [#zip-1016] `ZIP 1016: Community and Coinholder Funding Model <zip-1016.rst>`_

zips/zip-1016.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ The funding streams described below will be defined in a new revision of ZIP 214
8383

8484
A funding stream will be established for Zcash Community Grants, consisting of 8% of the block subsidy, and subject to all of the same rules currently specified in ZIP 1015 [^zip-1015-zcg].
8585

86-
This funding stream will start on expiry of the existing ``FS_FPF_ZCG`` funding stream [^zip-1015-funding-streams], and last for a further 1,260,000 blocks (approximately 3 years), ending at Zcash's 3rd halving.
86+
On Mainnet, this funding stream will start on expiry of the existing ``FS_FPF_ZCG`` funding stream [^zip-1015-funding-streams], and last for a further 1,260,000 blocks (approximately 3 years), ending at Zcash's 3rd halving.
8787

8888
## Coinholder-Controlled Fund
8989

0 commit comments

Comments
 (0)