Mainnet Recipient Addresses for Revision 1
-<TBD>
++FS_FPF_ZCG.AddressList[0..11] = ["t3cFfPt1Bcvgez9ZbMBFWeZsskxTkPzGCow"] * 12
+
The key words "MUST", "SHOULD", "SHOULD NOT", and "MAY" in this document are to be interpreted as described in BCP 14 1 when, and only when, they appear in all capitals.
-The terms "block subsidy" and "halving" in this document are to be interpreted as described in sections 3.9 and 7.7 of the Zcash Protocol Specification. 3 7
-The terms "consensus branch" and "network upgrade" in this document are to be interpreted as described in ZIP 200. 10
+The terms "block subsidy" and "halving" in this document are to be interpreted as described in sections 3.9 and 7.7 of the Zcash Protocol Specification. 3 9
+The terms "consensus branch" and "network upgrade" in this document are to be interpreted as described in ZIP 200. 13
The terms below are to be interpreted as follows:
This proposal specifies a mechanism to support funding streams, distributed from a portion of the block subsidy for a specified range of block heights.
-This is intended as a means of implementing the Zcash Development Fund, using the funding stream definitions specified in ZIP 214 14. It should be read in conjunction with ZIP 1014 16, which describes the high-level requirements for that fund.
+This is intended as a means of implementing the Zcash Development Fund, using the funding stream definitions specified in ZIP 214 17. It should be read in conjunction with ZIP 1014 20, which describes the high-level requirements for that fund.
Motivation for the Zcash Development Fund is considered in ZIP 1014 16.
-This ZIP 207 was originally proposed for the Blossom network upgrade, as a means of splitting the original Founders' Reward into several streams. It was then withdrawn when such splitting was judged to be unnecessary at the consensus level. Since the capabilities of the funding stream mechanism match the requirements for the Zcash Development Fund, the ZIP is being reintroduced for that purpose in order to reuse specification, analysis, and implementation effort.
+Motivation for the Zcash Development Fund is considered in ZIP 1014 20.
+This ZIP 207 was originally proposed for the Blossom network upgrade, as a means of splitting the original Founders' Reward into several streams. It was then withdrawn when such splitting was judged to be unnecessary at the consensus level. Since the capabilities of the funding stream mechanism match the requirements for the Zcash Development Fund, the ZIP was reintroduced for that purpose in the Canopy upgrade in order to reuse specification, analysis, and implementation effort.
+As of NU6, ZIP 1015 21 directs part of the block reward to a reserve, the distribution of which is to be determined via a future ZIP. ZIP 2001 22 modified this ZIP to augment the funding stream mechanism with a common mechanism to implement this proposal.
The primary requirement of this ZIP is to provide a mechanism for specifying the funding streams that are used in ZIP 214 14 to implement the Zcash Development Fund. It should be sufficiently expressive to handle both the main three "slices" (BP, ZF, and MG) defined in ZIP 1014 16, and also (with additional funding stream definitions) the "direct grant option" described in that ZIP.
+The primary requirement of this ZIP is to provide a mechanism for specifying the funding streams that are used in ZIP 214 17 to implement the Zcash Development Fund. It should be sufficiently expressive to handle both the main three "slices" (BP, ZF, and MG) defined in ZIP 1014 20, and also (with additional funding stream definitions) the "direct grant option" described in that ZIP.
As for the original Founders' Reward, a mechanism is provided to allow addresses for a given funding stream to be changed on a roughly-monthly basis, so that keys that are not yet needed may be kept off-line as a security measure.
We use the following constants and functions defined in 5, 6, 7, and 8:
+We use the following constants and functions defined in 5, 8, 9, and 10:
A funding stream is defined by a block subsidy fraction (represented as a numerator and a denominator), a start height (inclusive), and an end height (exclusive).
-By defining the issuance as a proportion of the total block subsidy, rather than absolute zatoshis, this ZIP dovetails with any changes to both block target spacing and issuance-per-block rates. Such a change occurred at the Blossom network upgrade, for example. 11
+A funding stream is defined by a block subsidy fraction (represented as a numerator and a denominator), a start height (inclusive), an end height (exclusive), and a sequence of recipients as defined below.
+By defining the issuance as a proportion of the total block subsidy, rather than absolute zatoshis, this ZIP dovetails with any changes to both block target spacing and issuance-per-block rates. Such a change occurred at the Blossom network upgrade, for example. 14
The value of a funding stream at a given block height is defined as:
An active funding stream at a given block height is defined as a funding stream for which the block height is less than its end height, but not less than its start height.
-Each funding stream has an associated sequence of recipient addresses, each of which MUST be either a transparent P2SH address or a Sapling address.
+The funding streams are paid to one of a pre-defined set of recipients, depending on the block height. Each recipient identifier MUST be either the string encoding of a transparent P2SH address or Sapling address (as specified in 6 or [#protocol-saplingpaymentaddrencoding]) to be paid by an output in the coinbase transaction, or the identifier + \(\mathsf{DEFERRED}\_\mathsf{POOL}\) + . The latter, added in the NU6 network upgrade 19, indicates that the value is to be paid to a reserve to be used for development funding, the distribution of which is to be determined via a future ZIP.
Each address is used for at most 1/48th of a halving interval, creating a roughly-monthly sequence of funding periods. The address to be used for a given block height is defined as follows:
On Mainnet, Canopy is planned to activate exactly at the point when the Founders' Reward expires, at block height 1046400. On Testnet, there will be a shortened Founders' Reward address period prior to Canopy activation.
+Full node implementations MUST track an additional + \(\mathsf{ChainValuePoolBalance^{Deferred}}\) + chain value pool balance, in addition to the Sprout, Sapling, and Orchard chain value pool balances.
+Define + \(\mathsf{totalDeferredOutput}(\mathsf{height}) := \sum_{\mathsf{fs} \in \mathsf{DeferredFundingStreams}(\mathsf{height})} \mathsf{fs.Value}(\mathsf{height})\) + where + \(\mathsf{DeferredFundingStreams}(\mathsf{height})\) + is the set of funding streams with recipient identifier + \(\mathsf{DEFERRED}\_\mathsf{POOL}\) + in the block at height + \(\mathsf{height}\) + .
+The + \(\mathsf{ChainValuePoolBalance^{Deferred}}\) + chain value pool balance for a given block chain is the sum of the values of payments to + \(\mathsf{DEFERRED}\_\mathsf{POOL}\) + for transactions in the block chain.
+Equivalently, + \(\mathsf{ChainValuePoolBalance^{Deferred}}\) + for a block chain up to and including height + \(\mathsf{height}\) + is given by + \(\sum_{\mathsf{h} = 0}^{\mathsf{height}} \mathsf{totalDeferredOutput}(\mathsf{h})\) + .
+Note: + \(\mathsf{totalDeferredOutput}(\mathsf{h})\) + is necessarily zero for heights + \(\mathsf{h}\) + prior to NU6 activation.
+Prior to activation of the Canopy network upgrade, the existing consensus rule for payment of the original Founders' Reward is enforced. 8
+Prior to activation of the Canopy network upgrade, the existing consensus rule for payment of the original Founders' Reward is enforced. 10
Once the Canopy network upgrade activates:
OP_HASH160 RedeemScriptHash(height) OP_EQUAL
as the scriptPubKey
.For the funding stream definitions to be activated at Canopy, see ZIP 214. 14 Funding stream definitions can be added, changed, or deleted in ZIPs associated with subsequent network upgrades, subject to the ZIP process. 9
+These rules are reproduced in [#protocol-fundingstreams].
+The effect of the definition of + \(\mathsf{ChainValuePoolBalance^{Deferred}}\) + above is that payments to the + \(\mathsf{DEFERRED}\_\mathsf{POOL}\) + cause + \(\mathsf{FundingStream[FUND].Value}(\mathsf{height})\) + to be added to + \(\mathsf{ChainValuePoolBalance^{Deferred}}\) + for the block chain including that block.
+For the funding stream definitions to be activated at Canopy and at NU6, see ZIP 214. 17 Funding stream definitions can be added, changed, or deleted in ZIPs associated with subsequent network upgrades, subject to the ZIP process. 12
This proposal is intended to be deployed with Canopy. 15
+This proposal was initially deployed with Canopy. 18
+Changes to support deferred funding streams are to be deployed with NU6. 19
This proposal intentionally creates what is known as a "bilateral consensus rule change". Use of this mechanism requires that all network participants upgrade their software to a compatible version within the upgrade window. Older software will treat post-upgrade blocks as invalid, and will follow any pre-upgrade consensus branch that persists.
@@ -227,7 +291,7 @@6 | -Zcash Protocol Specification, Version 2021.2.16. Section 7.7.3: Difficulty adjustment | +Zcash Protocol Specification, Version 2024.5.1 [NU6]. Section 5.6.1.1: Transparent Addresses <protocol/protocol.pdf#transparentaddrencoding> |
---|
7 | -Zcash Protocol Specification, Version 2021.2.16. Section 7.8: Calculation of Block Subsidy, Funding Streams, and Founders' Reward | +Zcash Protocol Specification, Version 2024.5.1 [NU6]. Section 5.6.3.1: Sapling Payment Addresses <protocol/protocol.pdf#saplingpaymentaddrencoding> |
---|
8 | -Zcash Protocol Specification, Version 2021.2.16. Section 7.9: Payment of Founders' Reward | +Zcash Protocol Specification, Version 2024.5.1 [NU6]. Section 7.7.3: Difficulty adjustment <protocol/protocol.pdf#diffadjustment> |
---|
9 | -ZIP 0: ZIP Process | +Zcash Protocol Specification, Version 2024.5.1 [NU6]. Section 7.8: Calculation of Block Subsidy, Funding Streams, and Founders' Reward <protocol/protocol.pdf#subsidies> |
---|
10 | -ZIP 200: Network Upgrade Mechanism | +Zcash Protocol Specification, Version 2024.5.1 [NU6]. Section 7.9: Payment of Founders' Reward <protocol/protocol.pdf#foundersreward> |
---|
11 | -ZIP 208: Shorter Block Target Spacing | +Zcash Protocol Specification, Version 2024.5.1 [NU6]. Section 7.10: Payment of Funding Streams <protocol/protocol.pdf#fundingstreams> |
---|
12 | -ZIP 212: Allow Recipient to Derive Sapling Ephemeral Secret from Note Plaintext | +ZIP 0: ZIP Process <zip-0000.rst> |
---|
13 | -ZIP 213: Shielded Coinbase | +ZIP 200: Network Upgrade Mechanism <zip-0200.rst> |
---|
14 | -ZIP 214: Consensus rules for a Zcash Development Fund | +ZIP 208: Shorter Block Target Spacing <zip-0208.rst> |
---|
15 | -ZIP 251: Deployment of the Canopy Network Upgrade | +ZIP 212: Allow Recipient to Derive Sapling Ephemeral Secret from Note Plaintext <zip-0212.rst> |
---|
16 | -ZIP 1014: Establishing a Dev Fund for ECC, ZF, and Major Grants | +ZIP 213: Shielded Coinbase <zip-0213.rst> | +
---|
17 | +ZIP 214: Consensus rules for a Zcash Development Fund <zip-0214.rst> | +
---|
18 | +ZIP 251: Deployment of the Canopy Network Upgrade <zip-0251.rst> | +
---|
19 | +ZIP 253: Deployment of the NU6 Network Upgrade <zip-0253.rst> | +
---|
20 | +ZIP 1014: Establishing a Dev Fund for ECC, ZF, and Major Grants <zip-1014.rst> | +
---|
21 | +ZIP 1015: Block Reward Allocation for Non-Direct Development Funding <zip-1015.rst> | +
---|
22 | +ZIP 2001: Lockbox Funding Streams <zip-2001.rst> |
---|
FS_DEFERRED
FS_FPF_ZCG
FS_FPF_ZCG
FS_DEFERRED
FS_DEFERRED
FS_FPF_ZCG
FS_FPF_ZCG
FS_DEFERRED
<TBD>
++FS_FPF_ZCG.AddressList[0..11] = ["t3cFfPt1Bcvgez9ZbMBFWeZsskxTkPzGCow"] * 12
+
This ZIP is proposed to activate with Network Upgrade 6.
+TBD
2 | -Zcash Protocol Specification, Version 2023.4.0 or later | +Zcash Protocol Specification, Version 2024.5.1 or later |
---|
Zcash Protocol -Specification, Version v2023.4.0 or later. Section 3.12: Mainnet and +Specification, Version 2024.5.1 [NU6]. Section 3.12: Mainnet and Testnet↩︎
ZIP 200: Network Upgrade
Mechanismhttps://github.com/zcash/zips/pull/881>
The key words "MUST", "REQUIRED", "MUST NOT", "SHOULD", and "MAY" in this document are to be interpreted as described in BCP 14 1 when, and only when, they appear in all capitals. The key words "MUST", "SHALL", "MUST NOT", "SHOULD", and "MAY" in this document are to be interpreted as described in BCP 14 1 when, and only when, they appear in all capitals. "Zcash Community Advisory Panel", also called "ZCAP", refers to the panel of community members assembled by the Zcash Foundation and described at 5. "Zcash Community Grants", also called "ZCG", refers to the committee selected by the Zcash Community Advisory Panel or a successor process (e.g. as established by FPF) to decide on the funding of grants intended to fund the Zcash ecosystem. "Financial Privacy Foundation", also called "FPF", refers to the Cayman Islands-incorporated non-profit foundation company limited by guarantee of that name. The key words "MUST", "REQUIRED", "MUST NOT", "SHOULD", and "MAY" in this document are to be interpreted as described in BCP 14 1 when, and only when, they appear in all capitals. The key words "MUST" and "MUST NOT" in this document are to be interpreted as described in BCP 14 1 when, and only when, they appear in all capitals. This ZIP specifies a change to the Zcash consensus protocol to define a pool of issued Zcash value to be used to fund future development efforts within the Zcash ecosystem. This ZIP builds upon the funding stream mechanism defined in ZIP 207 3. It defines a new "DEFERRED_POOL" funding stream type such that portions of the block reward sent to a stream of this type are deposited directly into the deferred funding pool instead of being sent to a recipient address. Other ways of adding to the pool, such as allowing for direct deposits or fee value currently allocated to miners may be defined in the future. This ZIP builds upon the funding stream mechanism defined in ZIP 207 11. It defines a new "DEFERRED_POOL" funding stream type such that portions of the block reward sent to a stream of this type are deposited directly into the deferred funding pool instead of being sent to a recipient address. Other ways of adding to the pool, such as allowing for direct deposits or fee value currently allocated to miners may be defined in the future. In accordance with ZIP 1014, 2 the Zcash block reward is allocated with 80% going to miners, and the remaining 20% distributed among the Major Grants Fund (8%), Electric Coin Company (ECC) (7%), and the Zcash Foundation (ZF) (5%). This funding structure supports various essential activities such as protocol development, security, marketing, and legal expenses. However, this model will expire in November 2024, leading to the entire block reward being allocated to miners if no changes are made. In accordance with ZIP 1014, 16 the Zcash block reward is allocated with 80% going to miners, and the remaining 20% distributed among the Major Grants Fund (8%), Electric Coin Company (ECC) (7%), and the Zcash Foundation (ZF) (5%). This funding structure supports various essential activities such as protocol development, security, marketing, and legal expenses. However, this model will expire in November 2024, leading to the entire block reward being allocated to miners if no changes are made. Several draft ZIPs under consideration for replacing the existing direct allocation of block rewards suggest that part of the block reward be directed to a reserve, the distribution of which is to be determined via a future ZIP. This ZIP is intended to provide a common mechanism that can be used to implement these various proposals. The Zcash protocol will maintain a new Deferred chain pool value balance
- \(\mathsf{PoolValue}_{Deferred}\)
+ \(\mathsf{ChainValuePoolBalance^{Deferred}}\)
for the deferred funding pool, in much the same fashion as it maintains chain pool value balances for the transparent, Sprout, Sapling, and Orchard pools. The funding stream mechanism defined in ZIP 207 3 is modified such that a funding stream may deposit funds into the deferred pool. The funding stream mechanism defined in ZIP 207 11 is modified such that a funding stream may deposit funds into the deferred pool. The following paragraph is added to the section Motivation: ZIP TBD 6 directs part of the block reward to a reserve, the distribution of which is to be determined via a future ZIP. ZIP 2001 7 modified this ZIP to augment the funding stream mechanism with a common mechanism to implement this proposal. As of NU6, ZIP 1015 17 directs part of the block reward to a reserve, the distribution of which is to be determined via a future ZIP. ZIP 2001 18 modified the present ZIP to augment the funding stream mechanism with a common mechanism to implement this proposal. In the section Funding streams 4, instead of: In the section Funding streams 12, instead of: Each funding stream has an associated sequence of recipient addresses, each of which MUST be either a transparent P2SH address or a Sapling address. it will be modified to read: Each funding stream has an associated sequence of recipients, each of which MUST be either a transparent P2SH address, a Sapling address, or the identifier DEFERRED_POOL. Each element of
+ \(\mathsf{fs.Recipients}\)
+ MUST represent either a transparent P2SH address as specified in 6, or a Sapling shielded payment address as specified in 7, or the identifier
+ \(\mathsf{DEFERRED}\_\mathsf{POOL}\!\)
+ . After the section Funding streams, a new section is added with the heading "Deferred Development Fund Chain Value Pool Balance" and the following contents: Full node implementations MUST track an additional
- \(\mathsf{PoolValue}_{Deferred}\)
+ \(\mathsf{ChainValuePoolBalance^{Deferred}}\)
chain value pool balance, in addition to the Sprout, Sapling, and Orchard chain value pool balances. Define
\(\mathsf{totalDeferredOutput}(\mathsf{height}) := \sum_{\mathsf{fs} \in \mathsf{DeferredFundingStreams}(\mathsf{height})} \mathsf{fs.Value}(\mathsf{height})\)
where
\(\mathsf{DeferredFundingStreams}(\mathsf{height})\)
- is the set of funding streams with a recipient of DEFERRED_POOL in the block at height
- \(\mathsf{height}\)
+ is the set of funding streams with recipient identifier
+ \(\mathsf{DEFERRED}\_\mathsf{POOL}\)
+ in the block at height
+ \(\mathsf{height}\!\)
. The
- \(\mathsf{PoolValue}_{Deferred}\)
- chain value pool balance for a given block chain is the sum of the values of payments to DEFERRED_POOL for transactions in the block chain. Equivalently,
- \(\mathsf{PoolValue}_{Deferred}\)
+ \(\mathsf{ChainValuePoolBalance^{Deferred}}\)
for a block chain up to and including height
\(\mathsf{height}\)
is given by
- \(\sum_{\mathsf{h} = 0}^{\mathsf{height}} \mathsf{totalDeferredOutput}(\mathsf{h})\)
+ \(\sum_{\mathsf{h} = 0}^{\mathsf{height}} \mathsf{totalDeferredOutput}(\mathsf{h})\!\)
. Note:
\(\mathsf{totalDeferredOutput}(\mathsf{h})\)
@@ -77,7 +85,7 @@ In the section Consensus rules 5, instead of: In the section Consensus rules 13, instead of: After the list of post-Canopy consensus rules, the following paragraph is added: After the list of post-Canopy consensus rules, the following paragraphs are added: These rules are reproduced in [#protocol-fundingstreams]. The effect of the definition of
- \(\mathsf{PoolValue}_{Deferred}\)
- above is that payments to the DEFERRED_POOL cause
+ \(\mathsf{ChainValuePoolBalance^{Deferred}}\)
+ above is that payments to the
+ \(\mathsf{DEFERRED}\_\mathsf{POOL}\)
+ cause
\(\mathsf{FundingStream[FUND].Value}(\mathsf{height})\)
to be added to
- \(\mathsf{PoolValue}_{Deferred}\)
+ \(\mathsf{ChainValuePoolBalance^{Deferred}}\)
for the block chain including that block. In the section Deployment 14, the following sentence is added: Changes to support deferred funding streams are to be deployed with NU6. 15 In section 7.1.2 Transaction Consensus Rules 10, instead of: In section 4.17 Chain Value Pool Balances 5 (which is new in version 2024.5.1 of the protocol specification), include the following: Define
+ \(\mathsf{totalDeferredOutput}\)
+ as in 9. Then, consistent with 11, the deferred development fund chain value pool balance for a block chain up to and including height
+ \(\mathsf{height}\)
+ is given by
+ \(\mathsf{ChainValuePoolBalance^{Deferred}}(\mathsf{height}) := \sum_{\mathsf{h} = 0}^{\mathsf{height}} \mathsf{totalDeferredOutput}(\mathsf{h})\!\)
+ . Non-normative notes: The total issued supply of a block chain at block height
+ \(\mathsf{height}\)
+ is given by the function: In section 7.1.2 Transaction Consensus Rules 8, instead of: The total value in zatoshi of transparent outputs from a coinbase transaction, minus
- \(\mathsf{v^{balanceSapling}}\)
+ \(\mathsf{v^{balanceSapling}}\!\)
, minus
- \(\mathsf{v^{balanceOrchard}}\)
+ \(\mathsf{v^{balanceOrchard}}\!\)
, MUST NOT be greater than the value in zatoshi of the block subsidy plus the transaction fees paid by transactions in this block. it will be modified to read: For the block at height
+ For the block at block height
\(\mathsf{height}\)
: In section 3.4 Transactions and Treestates 9, a definition of "total issued supply" will be added, such that the total issued supply as of a given height is given by the function: The second paragraph of section 1.2 High-level Overview 8 should also be updated to take into account the deferred chain value pool. Since that section of the specification is entirely non-normative, we do not give the full wording change here. Section 7.10 Payment of Funding Streams 10 contains language and definitions copied from ZIP 207; it should be updated to reflect the changes made above. The second paragraph of section 1.2 High-level Overview 2 should be updated to take into account the deferred chain value pool. Since that section of the specification is entirely non-normative, we do not give the full wording change here.Terminology
-
-
- FS_DEFERRED
12
+
+ FS_FPF_ZCG
8
100
2726400
3146400
-
- FS_FPF_ZCG
8
+
+ FS_DEFERRED
12
100
2726400
3146400
@@ -160,15 +160,15 @@
-
- FS_DEFERRED
12
+
+ FS_FPF_ZCG
8
100
2976000
3396000
-
- FS_FPF_ZCG
8
+
+ FS_DEFERRED
12
100
2976000
3396000
diff --git a/rendered/zip-2001.html b/rendered/zip-2001.html
index bc2f3d310..8e0ecfd19 100644
--- a/rendered/zip-2001.html
+++ b/rendered/zip-2001.html
@@ -18,58 +18,66 @@
License: MIT
Pull-Request: <https://github.com/zcash/zips/pull/>
Terminology
- Abstract
Motivation
- Requirements
Specification
Modifications to ZIP 207 3
+ Modifications to ZIP 207 11
-
-
-
- Modifications to ZIP 207 \(\mathsf{h}\)
prior to NU6 activation.
-
Modifications to ZIP 207 \(\mathsf{cb}\)
+ at block height
+ \(\mathsf{height}\)
+ , for each funding stream
+ \(\mathsf{fs}\)
+ active at that block height with a recipient identifier other than
+ \(\mathsf{DEFERRED}\_\mathsf{POOL}\)
+ given by
+ \(\mathsf{fs.Recipient}(\mathsf{height})\!\)
+ ,
+ \(\mathsf{cb}\)
+ MUST contain at least one output that pays
+ \(\mathsf{fs.Value}(\mathsf{height})\)
+ zatoshi in the prescribed way to the address represented by that recipient identifier.
+
+
+
+
Modifications to the protocol specification
-
+
+
+
+
-
@@ -134,16 +198,8 @@ Modifications to ZIP 207 12 contains language and definitions copied from ZIP 207; it should be updated to reflect the changes made above.
-
References
@@ -155,91 +211,139 @@ Modifications to ZIP 207
+
-
2
- ZIP 1014: Establishing a Dev Fund for ECC, ZF, and Major Grants
+ Zcash Protocol Specification, Version 2024.5.1 [NU6]. Section 1.2: High-level Overview <protocol/protocol.pdf#overview>
+
-
3
- ZIP 207: Funding Streams
+ Zcash Protocol Specification, Version 2024.5.1 [NU6]. Section 3.4: Transactions and Treestates <protocol/protocol.pdf#transactions>
+
-
4
- ZIP 207: Funding Streams. Section: Funding streams
+ Zcash Protocol Specification, Version 2024.5.1 [NU6]. Section 3.11: Coinbase Transactions and Issuance <protocol/protocol.pdf#coinbasetransactions>
+
-
5
- ZIP 207: Funding Streams. Section: Consensus rules
+ Zcash Protocol Specification, Version 2024.5.1 [NU6]. Section 4.17: Chain Value Pool Balances <protocol/protocol.pdf#chainvaluepoolbalances>
+
-
6
- Draft ZIP: Block Reward Allocation for Non-Direct Development Funding
+ Zcash Protocol Specification, Version 2024.5.1 [NU6]. Section 5.6.1.1: Transparent Addresses <protocol/protocol.pdf#transparentaddrencoding>
+
-
7
- ZIP 2001: Lockbox Funding Streams
+ Zcash Protocol Specification, Version 2024.5.1 [NU6]. Section 5.6.3.1: Sapling Payment Addresses <protocol/protocol.pdf#saplingpaymentaddrencoding>
+
-
8
- Zcash Protocol Specification, Version 2023.4.0. Section 1.2: High-level Overview <protocol/protocol.pdf#overview>
+ Zcash Protocol Specification, Version 2024.5.1 [NU6]. Section 7.1.2: Transaction Consensus Rules <protocol/protocol.pdf#txnconsensus>
+
-
9
- Zcash Protocol Specification, Version 2023.4.0. Section 3.4: Transactions and Treestates <protocol/protocol.pdf#transactions>
+ Zcash Protocol Specification, Version 2024.5.1 [NU6]. Section 7.8: Calculation of Block Subsidy, Funding Streams, and Founders’ Reward <protocol/protocol.pdf#subsidies>
+
-
10
- Zcash Protocol Specification, Version 2023.4.0. Section 7.1.2: Transaction Consensus Rules <protocol/protocol.pdf#txnconsensus>
+ Zcash Protocol Specification, Version 2024.5.1 [NU6]. Section 7.10: Payment of Funding Streams <protocol/protocol.pdf#fundingstreams>
+
-
11
- Zcash Protocol Specification, Version 2023.4.0. Section 7.8: Calculation of Block Subsidy, Funding Streams, and Founders’ Reward <protocol/protocol.pdf#subsidies>
+ ZIP 207: Funding Streams <zip-0207.rst>
+
+
+
+ 12
- Zcash Protocol Specification, Version 2023.4.0. Section 7.10: Payment of Funding Streams <protocol/protocol.pdf#fundingstreams>
+ ZIP 207: Funding Streams. Section: Funding streams <zip-0207.rst#funding-streams>
+
+
+
+
+
+
+ 13
+ ZIP 207: Funding Streams. Section: Consensus rules <zip-0207.rst#consensus-rules>
+
+
+
+
+
+
+ 14
+ ZIP 207: Funding Streams. Section: Deployment <zip-0207.rst#deployment>
+
+
+
+
+
+
+ 15
+ ZIP 253: Deployment of the NU6 Network Upgrade <zip-0253.rst>
+
+
+
+
+
+
+ 16
+ ZIP 1014: Establishing a Dev Fund for ECC, ZF, and Major Grants <zip-1014.rst>
+
+
+
+
+
+
+ 17
+ ZIP 1015: Block Reward Allocation for Non-Direct Development Funding <zip-1015.rst>
+
+
+
diff --git a/zips/zip-0207.rst b/zips/zip-0207.rst
index 8d8ed6b03..50b79227b 100644
--- a/zips/zip-0207.rst
+++ b/zips/zip-0207.rst
@@ -55,9 +55,14 @@ This ZIP 207 was originally proposed for the Blossom network upgrade, as a
means of splitting the original Founders' Reward into several streams. It was
then withdrawn when such splitting was judged to be unnecessary at the consensus
level. Since the capabilities of the funding stream mechanism match the
-requirements for the Zcash Development Fund, the ZIP is being reintroduced
-for that purpose in order to reuse specification, analysis, and implementation
-effort.
+requirements for the Zcash Development Fund, the ZIP was reintroduced for that
+purpose in the Canopy upgrade in order to reuse specification, analysis, and
+implementation effort.
+
+As of NU6, ZIP 1015 [#zip-1015]_ directs part of the block reward to a reserve,
+the distribution of which is to be determined via a future ZIP.
+ZIP 2001 [#zip-2001]_ modified this ZIP to augment the funding stream mechanism
+with a common mechanism to implement this proposal.
Requirements
@@ -100,8 +105,8 @@ Funding streams
---------------
A funding stream is defined by a block subsidy fraction (represented as a
-numerator and a denominator), a start height (inclusive), and an end height
-(exclusive).
+numerator and a denominator), a start height (inclusive), an end height
+(exclusive), and a sequence of recipients as defined below.
By defining the issuance as a proportion of the total block subsidy, rather
than absolute zatoshis, this ZIP dovetails with any changes to both block
@@ -121,8 +126,15 @@ An active funding stream at a given block height is defined as a funding
stream for which the block height is less than its end height, but not less
than its start height.
-Each funding stream has an associated sequence of recipient addresses,
-each of which MUST be either a transparent P2SH address or a Sapling address.
+The funding streams are paid to one of a pre-defined set of recipients,
+depending on the block height. Each recipient identifier MUST be either the
+string encoding of a transparent P2SH address or Sapling address (as specified in
+[#protocol-transparentaddrencoding]_ or [#protocol-saplingpaymentaddrencoding])
+to be paid by an output in the coinbase transaction, or the identifier
+:math:`\mathsf{DEFERRED}\_\mathsf{POOL}`. The latter, added in the NU6 network
+upgrade [#zip-0253]_, indicates that the value is to be paid to a reserve to be
+used for development funding, the distribution of which is to be determined via
+a future ZIP.
Each address is used for at most 1/48th of a halving interval, creating a
roughly-monthly sequence of funding periods. The address to be used for a
@@ -174,6 +186,30 @@ Reward expires, at block height 1046400. On Testnet, there will be a shortened
Founders' Reward address period prior to Canopy activation.
+Deferred Development Fund Chain Value Pool Balance
+--------------------------------------------------
+
+Full node implementations MUST track an additional
+:math:`\mathsf{ChainValuePoolBalance^{Deferred}}` chain value pool balance,
+in addition to the Sprout, Sapling, and Orchard chain value pool balances.
+
+Define :math:`\mathsf{totalDeferredOutput}(\mathsf{height}) := \sum_{\mathsf{fs} \in \mathsf{DeferredFundingStreams}(\mathsf{height})} \mathsf{fs.Value}(\mathsf{height})`
+where :math:`\mathsf{DeferredFundingStreams}(\mathsf{height})` is the set of
+funding streams with recipient identifier :math:`\mathsf{DEFERRED}\_\mathsf{POOL}`
+in the block at height :math:`\mathsf{height}`.
+
+The :math:`\mathsf{ChainValuePoolBalance^{Deferred}}` chain value pool balance
+for a given block chain is the sum of the values of payments to
+:math:`\mathsf{DEFERRED}\_\mathsf{POOL}` for transactions in the block chain.
+
+Equivalently, :math:`\mathsf{ChainValuePoolBalance^{Deferred}}` for a block
+chain up to and including height :math:`\mathsf{height}` is given by
+:math:`\sum_{\mathsf{h} = 0}^{\mathsf{height}} \mathsf{totalDeferredOutput}(\mathsf{h})`.
+
+Note: :math:`\mathsf{totalDeferredOutput}(\mathsf{h})` is necessarily
+zero for heights :math:`\mathsf{h}` prior to NU6 activation.
+
+
Consensus rules
---------------
@@ -187,9 +223,17 @@ Once the Canopy network upgrade activates:
(This would be the case under the preexisting consensus rules for Mainnet, but
not for Testnet.)
-- The coinbase transaction in each block MUST contain at least one output per
- active funding stream that pays the stream's value in the prescribed way to
- the stream's recipient address for the block's height.
+- In each block with coinbase transaction :math:`\mathsf{cb}` at block height
+ :math:`\mathsf{height}`, for each funding stream :math:`\mathsf{fs}`
+ active at that block height with a recipient identifier other than
+ :math:`\mathsf{DEFERRED}\_\mathsf{POOL}` given by
+ :math:`\mathsf{fs.Recipient}(\mathsf{height})\!`,
+ :math:`\mathsf{cb}` \MUST contain at least one output that pays
+ :math:`\mathsf{fs.Value}(\mathsf{height})` \zatoshi in the prescribed way to
+ the address represented by that recipient identifier.
+
+- :math:`\mathsf{fs.Recipient}(\mathsf{height})` is defined as
+ :math:`\mathsf{fs.Recipients_{\,\fs.RecipientIndex}}(\mathsf{height})\!`.
- The "prescribed way" to pay a transparent P2SH address is to use a standard
P2SH script of the form ``OP_HASH160 RedeemScriptHash(height) OP_EQUAL`` as
@@ -199,18 +243,29 @@ Once the Canopy network upgrade activates:
That is, all Sapling outputs in coinbase transactions (including, but not
limited to, outputs for funding streams) MUST have valid note commitments
when recovered using a 32-byte array of zeroes as the outgoing viewing key.
- In this case the note plaintext lead byte MUST be :math:`\mathbf{0x02}`, as
+ In this case the note plaintext lead byte MUST be :math:`\mathbf{0x02}\!`, as
specified in [#zip-0212]_.
-For the funding stream definitions to be activated at Canopy, see ZIP 214. [#zip-0214]_
-Funding stream definitions can be added, changed, or deleted in ZIPs associated
-with subsequent network upgrades, subject to the ZIP process. [#zip-0000]_
+These rules are reproduced in [#protocol-fundingstreams].
+
+The effect of the definition of :math:`\mathsf{ChainValuePoolBalance^{Deferred}}`
+above is that payments to the :math:`\mathsf{DEFERRED}\_\mathsf{POOL}` cause
+:math:`\mathsf{FundingStream[FUND].Value}(\mathsf{height})` to be added to
+:math:`\mathsf{ChainValuePoolBalance^{Deferred}}` for the block chain including
+that block.
+
+For the funding stream definitions to be activated at Canopy and at NU6, see
+ZIP 214. [#zip-0214]_ Funding stream definitions can be added, changed, or
+deleted in ZIPs associated with subsequent network upgrades, subject to the
+ZIP process. [#zip-0000]_
Deployment
==========
-This proposal is intended to be deployed with Canopy. [#zip-0251]_
+This proposal was initially deployed with Canopy. [#zip-0251]_
+
+Changes to support deferred funding streams are to be deployed with NU6. [#zip-0253]_
Backward compatibility
@@ -234,19 +289,25 @@ Reference Implementation
References
==========
-.. [#BCP14] `Information on BCP 14 — "RFC 2119: Key words for use in RFCs to Indicate Requirement Levels" and "RFC 8174: Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words"
+
18
+ ZIP 2001: Lockbox Funding Streams <zip-2001.rst>