4
4
Title: Funding Streams
5
5
Owners: Jack Grigg <[email protected] >
6
6
Daira-Emma Hopwood <[email protected] >
7
- Status: [Canopy, NU6] Final
7
+ Status: [Revision 0: Canopy, Revision 1: NU6] Final
8
8
Category: Consensus
9
9
Created: 2019-01-04
10
10
License: MIT
@@ -83,6 +83,21 @@ that are not yet needed may be kept off-line as a security measure.
83
83
Specification
84
84
=============
85
85
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
+
86
101
Definitions
87
102
-----------
88
103
@@ -125,15 +140,20 @@ An active funding stream at a given block height is defined as a funding
125
140
stream for which the block height is less than its end height, but not less
126
141
than its start height.
127
142
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
131
152
[#protocol-transparentaddrencoding ]_ or [#protocol-saplingpaymentaddrencoding ]_)
132
- to be paid by an output in the coinbase transaction, or the identifier
133
- $\m athsf{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 $\m athsf{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.
137
157
138
158
Each address is used for at most 1/48th of a halving interval, creating a
139
159
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.
188
208
Deferred Development Fund Chain Value Pool Balance
189
209
--------------------------------------------------
190
210
191
- Full node implementations MUST track an additional
192
- $\m athsf{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 $\m athsf{ChainValuePoolBalance^{Deferred}}$ chain value pool
213
+ balance, in addition to the Sprout, Sapling, and Orchard chain value pool
214
+ balances.
194
215
195
216
Define $\m athsf{totalDeferredOutput}(\m athsf{height}) := \s um_{\m athsf{fs} \i n \m athsf{DeferredFundingStreams}(\m athsf{height})} \m athsf{fs.Value}(\m athsf{height})$
196
217
where $\m athsf{DeferredFundingStreams}(\m athsf{height})$ is the set of
@@ -217,12 +238,31 @@ for payment of the original Founders' Reward is enforced. [#protocol-foundersrew
217
238
218
239
Once the Canopy network upgrade activates:
219
240
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.
224
248
225
- - In each block with coinbase transaction $\m athsf{cb}$ at block height
249
+ 3. $\m athsf{fs.Recipient}(\m athsf{height})$ is defined as
250
+ $\m athsf{fs.Recipients_{\, fs.RecipientIndex}}(\m athsf{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 $\m athbf{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 $\m athsf{cb}$ at block height
226
266
$\m athsf{height}$, for each funding stream $\m athsf{fs}$
227
267
active at that block height with a recipient identifier other than
228
268
$\m athsf{DEFERRED\_ POOL}$ given by
@@ -231,19 +271,6 @@ Once the Canopy network upgrade activates:
231
271
$\m athsf{fs.Value}(\m athsf{height})$ zatoshi in the prescribed way to
232
272
the address represented by that recipient identifier.
233
273
234
- - $\m athsf{fs.Recipient}(\m athsf{height})$ is defined as
235
- $\m athsf{fs.Recipients_{\, fs.RecipientIndex}}(\m athsf{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 $\m athbf{0x02}$, as
245
- specified in [#zip-0212 ]_.
246
-
247
274
These rules are reproduced in [#protocol-fundingstreams ]_.
248
275
249
276
The effect of the definition of $\m athsf{ChainValuePoolBalance^{Deferred}}$
0 commit comments