mirror of https://github.com/zcash/zips.git
Merge pull request #892 from zcash/zip-sync-editing-2024-08-06
Edits from 2024-08-06 ZIP Sync
This commit is contained in:
commit
a73fa42515
|
@ -27,10 +27,10 @@ Discussions-To: <<a href="https://github.com/zcash/zips/issues/806">https://g
|
|||
<p>The primary sources of information about NU6 consensus protocol changes are:</p>
|
||||
<ul>
|
||||
<li>The Zcash Protocol Specification <a href="#fn4" class="footnote-ref" id="fnref4" role="doc-noteref"><sup>4</sup></a>.</li>
|
||||
<li>Network Upgrade Mechanism <a href="#fn5" class="footnote-ref" id="fnref5" role="doc-noteref"><sup>5</sup></a>.</li>
|
||||
<li>Lockbox Funding Streams <a href="#fn6" class="footnote-ref" id="fnref6" role="doc-noteref"><sup>6</sup></a>.</li>
|
||||
<li>Block Reward Allocation for Non-Direct Development Funding <a href="#fn7" class="footnote-ref" id="fnref7" role="doc-noteref"><sup>7</sup></a>.</li>
|
||||
<li>Blocks should balance exactly <a href="#fn8" class="footnote-ref" id="fnref8" role="doc-noteref"><sup>8</sup></a>.</li>
|
||||
<li>ZIP 200: Network Upgrade Mechanism <a href="#fn5" class="footnote-ref" id="fnref5" role="doc-noteref"><sup>5</sup></a>.</li>
|
||||
<li>ZIP 236: Blocks should balance exactly <a href="#fn6" class="footnote-ref" id="fnref6" role="doc-noteref"><sup>6</sup></a>.</li>
|
||||
<li>ZIP ???: Block Reward Allocation for Non-Direct Development Funding <a href="#fn7" class="footnote-ref" id="fnref7" role="doc-noteref"><sup>7</sup></a>.</li>
|
||||
<li>ZIP 2001: Lockbox Funding Streams <a href="#fn8" class="footnote-ref" id="fnref8" role="doc-noteref"><sup>8</sup></a>.</li>
|
||||
</ul>
|
||||
<p>The network handshake and peer management mechanisms defined in ZIP 201 <a href="#fn9" class="footnote-ref" id="fnref9" role="doc-noteref"><sup>9</sup></a> also apply to this upgrade.</p>
|
||||
<p>The following ZIPs have been updated in varying degrees to take into account NU6:</p>
|
||||
|
@ -68,9 +68,9 @@ Discussions-To: <<a href="https://github.com/zcash/zips/issues/806">https://g
|
|||
<li id="fn3" role="doc-endnote"><p><a href="protocol/protocol.pdf#networks">Zcash Protocol Specification, Version v2023.4.0 or later. Section 3.12: Mainnet and Testnet</a><a href="#fnref3" class="footnote-back" role="doc-backlink">↩︎</a></p></li>
|
||||
<li id="fn4" role="doc-endnote"><p><a href="protocol/protocol.pdf">Zcash Protocol Specification, Version v2023.4.0 or later</a><a href="#fnref4" class="footnote-back" role="doc-backlink">↩︎</a></p></li>
|
||||
<li id="fn5" role="doc-endnote"><p><a href="zip-0200">ZIP 200: Network Upgrade Mechanism</a><a href="#fnref5" class="footnote-back" role="doc-backlink">↩︎</a></p></li>
|
||||
<li id="fn6" role="doc-endnote"><p><a href="draft-nuttycom-lockbox-streams">ZIP 2001 Lockbox Funding Streams</a><a href="#fnref6" class="footnote-back" role="doc-backlink">↩︎</a></p></li>
|
||||
<li id="fn6" role="doc-endnote"><p><a href="zip-0236">ZIP 236: Blocks should balance exactly</a><a href="#fnref6" class="footnote-back" role="doc-backlink">↩︎</a></p></li>
|
||||
<li id="fn7" role="doc-endnote"><p><a href="draft-nuttycom-funding-allocation">ZIP ???: Block Reward Allocation for Non-Direct Development Funding</a><a href="#fnref7" class="footnote-back" role="doc-backlink">↩︎</a></p></li>
|
||||
<li id="fn8" role="doc-endnote"><p><a href="draft-hopwood-coinbase-balance">ZIP 236: Blocks should balance exactly</a><a href="#fnref8" class="footnote-back" role="doc-backlink">↩︎</a></p></li>
|
||||
<li id="fn8" role="doc-endnote"><p><a href="zip-2001">ZIP 2001: Lockbox Funding Streams</a><a href="#fnref8" class="footnote-back" role="doc-backlink">↩︎</a></p></li>
|
||||
<li id="fn9" role="doc-endnote"><p><a href="zip-0201">ZIP 201: Network Peer Management for Overwinter</a><a href="#fnref9" class="footnote-back" role="doc-backlink">↩︎</a></p></li>
|
||||
<li id="fn10" role="doc-endnote"><p><a href="zip-0207">ZIP 207: Funding Streams</a><a href="#fnref10" class="footnote-back" role="doc-backlink">↩︎</a></p></li>
|
||||
<li id="fn11" role="doc-endnote"><p><a href="zip-0214">ZIP 214: Consensus rules for a Zcash Development Fund</a><a href="#fnref11" class="footnote-back" role="doc-backlink">↩︎</a></p></li>
|
||||
|
|
|
@ -35,12 +35,13 @@ Pull-Request: <<a href="https://github.com/zcash/zips/pull/">https://github.c
|
|||
<p>The funding stream mechanism defined in ZIP 207 <a id="footnote-reference-4" class="footnote_reference" href="#zip-0207">3</a> is modified such that a funding stream may deposit funds into the deferred pool.</p>
|
||||
</section>
|
||||
<section id="specification"><h2><span class="section-heading">Specification</span><span class="section-anchor"> <a rel="bookmark" href="#specification"><img width="24" height="24" class="section-anchor" src="assets/images/section-anchor.png" alt=""></a></span></h2>
|
||||
<section id="deferred-development-fund-chain-value-pool-balance"><h3><span class="section-heading">Deferred Development Fund Chain Value Pool Balance</span><span class="section-anchor"> <a rel="bookmark" href="#deferred-development-fund-chain-value-pool-balance"><img width="24" height="24" class="section-anchor" src="assets/images/section-anchor.png" alt=""></a></span></h3>
|
||||
<p>Full node implementations MUST track an additional
|
||||
<span class="math">\(\mathsf{PoolValue}_{Deferred}\)</span>
|
||||
chain value pool balance, in addition to the Sprout, Sapling, and Orchard chain value pool balances. This balance is set to zero prior to the activation of Network Upgrade 6.</p>
|
||||
<p>ZIP 207 <a id="footnote-reference-5" class="footnote_reference" href="#zip-0207">3</a> is modified as follows:</p>
|
||||
<p>In the section <strong>Funding streams</strong> <a id="footnote-reference-6" class="footnote_reference" href="#zip-0207-funding-streams">4</a>, instead of:</p>
|
||||
<section id="modifications-to-zip-207">
|
||||
<h3>Modifications to ZIP 207 <a id="footnote-reference-5" class="footnote_reference" href="#zip-0207">3</a></h3>
|
||||
<p>The following paragraph is added to the section <strong>Motivation</strong>:</p>
|
||||
<blockquote>
|
||||
<p>ZIP TBD <a id="footnote-reference-6" class="footnote_reference" href="#draft-nuttycom-funding-allocation">6</a> directs part of the block reward to a reserve, the distribution of which is to be determined via a future ZIP. ZIP 2001 <a id="footnote-reference-7" class="footnote_reference" href="#zip-2001">7</a> modified this ZIP to augment the funding stream mechanism with a common mechanism to implement this proposal.</p>
|
||||
</blockquote>
|
||||
<p>In the section <strong>Funding streams</strong> <a id="footnote-reference-8" class="footnote_reference" href="#zip-0207-funding-streams">4</a>, instead of:</p>
|
||||
<blockquote>
|
||||
<p>Each funding stream has an associated sequence of recipient addresses, each of which MUST be either a transparent P2SH address or a Sapling address.</p>
|
||||
</blockquote>
|
||||
|
@ -48,15 +49,93 @@ Pull-Request: <<a href="https://github.com/zcash/zips/pull/">https://github.c
|
|||
<blockquote>
|
||||
<p>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 <cite>DEFERRED_POOL</cite>.</p>
|
||||
</blockquote>
|
||||
<p>In the section <strong>Consensus rules</strong> <a id="footnote-reference-7" class="footnote_reference" href="#zip-0207-consensus-rules">5</a>, the following will be added:</p>
|
||||
<p>After the section <strong>Funding streams</strong>, a new section is added with the heading "Deferred Development Fund Chain Value Pool Balance" and the following contents:</p>
|
||||
<blockquote>
|
||||
<p>The "prescribed way" to pay to the <cite>DEFERRED_POOL</cite> is to add
|
||||
<span class="math">\(\mathsf{FundingStream[FUND].Value}(\mathsf{height})\)</span>
|
||||
to
|
||||
<p>Full node implementations MUST track an additional
|
||||
<span class="math">\(\mathsf{PoolValue}_{Deferred}\)</span>
|
||||
chain value pool balance, in addition to the Sprout, Sapling, and Orchard chain value pool balances.</p>
|
||||
<p>Define
|
||||
<span class="math">\(\mathsf{totalDeferredOutput}(\mathsf{height}) := \sum_{\mathsf{fs} \in \mathsf{DeferredFundingStreams}(\mathsf{height})} \mathsf{fs.Value}(\mathsf{height})\)</span>
|
||||
where
|
||||
<span class="math">\(\mathsf{DeferredFundingStreams}(\mathsf{height})\)</span>
|
||||
is the set of funding streams with a recipient of <cite>DEFERRED_POOL</cite> in the block at height
|
||||
<span class="math">\(\mathsf{height}\)</span>
|
||||
.</p>
|
||||
<p>The
|
||||
<span class="math">\(\mathsf{PoolValue}_{Deferred}\)</span>
|
||||
chain value pool balance for a given block chain is the sum of the values of payments to <cite>DEFERRED_POOL</cite> for transactions in the block chain.</p>
|
||||
<p>Equivalently,
|
||||
<span class="math">\(\mathsf{PoolValue}_{Deferred}\)</span>
|
||||
for a block chain up to and including height
|
||||
<span class="math">\(\mathsf{height}\)</span>
|
||||
is given by
|
||||
<span class="math">\(\sum_{\mathsf{h} = 0}^{\mathsf{height}} \mathsf{totalDeferredOutput}(\mathsf{h})\)</span>
|
||||
.</p>
|
||||
<p>Note:
|
||||
<span class="math">\(\mathsf{totalDeferredOutput}(\mathsf{h})\)</span>
|
||||
is necessarily zero for heights
|
||||
<span class="math">\(\mathsf{h}\)</span>
|
||||
prior to NU6 activation.</p>
|
||||
</blockquote>
|
||||
<p>The protocol specification is modified to define the "total issued supply" such that the total issued supply as of a given height is given by the function:</p>
|
||||
<p>In the section <strong>Consensus rules</strong> <a id="footnote-reference-9" class="footnote_reference" href="#zip-0207-consensus-rules">5</a>, instead of:</p>
|
||||
<blockquote>
|
||||
<ul>
|
||||
<li>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.</li>
|
||||
</ul>
|
||||
</blockquote>
|
||||
<p>it will be modified to read:</p>
|
||||
<blockquote>
|
||||
<ul>
|
||||
<li>In each block, for each active funding stream with a recipient other than <cite>DEFERRED_POOL</cite> at that block's height, the block's coinbase transaction MUST contain at least one output that pays the stream's value in the prescribed way to that recipient.</li>
|
||||
</ul>
|
||||
</blockquote>
|
||||
<p>After the list of post-Canopy consensus rules, the following paragraph is added:</p>
|
||||
<blockquote>
|
||||
<p>The effect of the definition of
|
||||
<span class="math">\(\mathsf{PoolValue}_{Deferred}\)</span>
|
||||
above is that payments to the <cite>DEFERRED_POOL</cite> cause
|
||||
<span class="math">\(\mathsf{FundingStream[FUND].Value}(\mathsf{height})\)</span>
|
||||
to be added to
|
||||
<span class="math">\(\mathsf{PoolValue}_{Deferred}\)</span>
|
||||
for the block chain including that block.</p>
|
||||
</blockquote>
|
||||
</section>
|
||||
<section id="modifications-to-the-protocol-specification"><h3><span class="section-heading">Modifications to the protocol specification</span><span class="section-anchor"> <a rel="bookmark" href="#modifications-to-the-protocol-specification"><img width="24" height="24" class="section-anchor" src="assets/images/section-anchor.png" alt=""></a></span></h3>
|
||||
<p>In section <strong>7.1.2 Transaction Consensus Rules</strong> <a id="footnote-reference-10" class="footnote_reference" href="#protocol-txnconsensus">10</a>, instead of:</p>
|
||||
<blockquote>
|
||||
<p>The total value in zatoshi of transparent outputs from a coinbase transaction, minus
|
||||
<span class="math">\(\mathsf{v^{balanceSapling}}\)</span>
|
||||
, minus
|
||||
<span class="math">\(\mathsf{v^{balanceOrchard}}\)</span>
|
||||
, MUST NOT be greater than the value in zatoshi of the block subsidy plus the transaction fees paid by transactions in this block.</p>
|
||||
</blockquote>
|
||||
<p>it will be modified to read:</p>
|
||||
<blockquote>
|
||||
<p>For the block at height
|
||||
<span class="math">\(\mathsf{height}\)</span>
|
||||
:</p>
|
||||
<ul>
|
||||
<li>define the "total output value" of its coinbase transaction to be the total value in zatoshi of its transparent outputs, minus
|
||||
<span class="math">\(\mathsf{v^{balanceSapling}}\)</span>
|
||||
, minus
|
||||
<span class="math">\(\mathsf{v^{balanceOrchard}}\)</span>
|
||||
, plus
|
||||
<span class="math">\(\mathsf{totalDeferredOutput}(\mathsf{height})\)</span>
|
||||
;</li>
|
||||
<li>define the "total input value" of its coinbase transaction to be the value in zatoshi of the block subsidy, plus the transaction fees paid by transactions in the block.</li>
|
||||
</ul>
|
||||
<p>The total output value of a coinbase transaction MUST NOT be greater than its total input value.</p>
|
||||
</blockquote>
|
||||
<p>where
|
||||
<span class="math">\(\mathsf{totalDeferredOutput}(\mathsf{height})\)</span>
|
||||
is defined consistently with ZIP 207.</p>
|
||||
<p>Note: this ZIP and ZIP 236 both make changes to the above rule. Their combined effect is that the last paragraph will be replaced by:</p>
|
||||
<blockquote>
|
||||
<p>[Pre-NU6] The total output value of a coinbase transaction MUST NOT be greater than its total input value.</p>
|
||||
<p>[NU6 onward] The total output value of a coinbase transaction MUST be equal to its total input value.</p>
|
||||
</blockquote>
|
||||
<p>Section <strong>7.10 Payment of Funding Streams</strong> <a id="footnote-reference-11" class="footnote_reference" href="#protocol-fundingstreams">12</a> contains language and definitions copied from ZIP 207; it should be updated to reflect the changes made above.</p>
|
||||
<p>In section <strong>3.4 Transactions and Treestates</strong> <a id="footnote-reference-12" class="footnote_reference" href="#protocol-transactions">9</a>, 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:</p>
|
||||
<div class="math">\(\begin{array}{ll}
|
||||
\mathsf{IssuedSupply}(\mathsf{height}) := &\!\!\!\!\mathsf{PoolValue}_{Transparent}(\mathsf{height}) \\
|
||||
&+\;\; \mathsf{PoolValue}_{Sprout}(\mathsf{height}) \\
|
||||
|
@ -64,6 +143,7 @@ Pull-Request: <<a href="https://github.com/zcash/zips/pull/">https://github.c
|
|||
&+\,\; \mathsf{PoolValue}_{Orchard}(\mathsf{height}) \\
|
||||
&+\,\; \mathsf{PoolValue}_{Deferred}(\mathsf{height})
|
||||
\end{array}\)</div>
|
||||
<p>The second paragraph of section <strong>1.2 High-level Overview</strong> <a id="footnote-reference-13" class="footnote_reference" href="#protocol-overview">8</a> 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.</p>
|
||||
</section>
|
||||
</section>
|
||||
<section id="references"><h2><span class="section-heading">References</span><span class="section-anchor"> <a rel="bookmark" href="#references"><img width="24" height="24" class="section-anchor" src="assets/images/section-anchor.png" alt=""></a></span></h2>
|
||||
|
@ -107,6 +187,62 @@ Pull-Request: <<a href="https://github.com/zcash/zips/pull/">https://github.c
|
|||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table id="draft-nuttycom-funding-allocation" class="footnote">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>6</th>
|
||||
<td><a href="draft-nuttycom-funding-allocation">Draft ZIP: Block Reward Allocation for Non-Direct Development Funding</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table id="zip-2001" class="footnote">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>7</th>
|
||||
<td><a href="zip-2001">ZIP 2001: Lockbox Funding Streams</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table id="protocol-overview" class="footnote">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>8</th>
|
||||
<td><cite>Zcash Protocol Specification, Version 2023.4.0. Section 1.2: High-level Overview <protocol/protocol.pdf#overview></cite></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table id="protocol-transactions" class="footnote">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>9</th>
|
||||
<td><cite>Zcash Protocol Specification, Version 2023.4.0. Section 3.4: Transactions and Treestates <protocol/protocol.pdf#transactions></cite></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table id="protocol-txnconsensus" class="footnote">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>10</th>
|
||||
<td><cite>Zcash Protocol Specification, Version 2023.4.0. Section 7.1.2: Transaction Consensus Rules <protocol/protocol.pdf#txnconsensus></cite></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table id="protocol-subsidies" class="footnote">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>11</th>
|
||||
<td><cite>Zcash Protocol Specification, Version 2023.4.0. Section 7.8: Calculation of Block Subsidy, Funding Streams, and Founders’ Reward <protocol/protocol.pdf#subsidies></cite></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<table id="protocol-fundingstreams" class="footnote">
|
||||
<tbody>
|
||||
<tr>
|
||||
<th>12</th>
|
||||
<td><cite>Zcash Protocol Specification, Version 2023.4.0. Section 7.10: Payment of Funding Streams <protocol/protocol.pdf#fundingstreams></cite></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</section>
|
||||
</section>
|
||||
</body>
|
||||
|
|
|
@ -31,10 +31,10 @@ This proposal defines the deployment of the NU6 network upgrade.
|
|||
The primary sources of information about NU6 consensus protocol changes are:
|
||||
|
||||
* The Zcash Protocol Specification [^protocol].
|
||||
* Network Upgrade Mechanism [^zip-0200].
|
||||
* Lockbox Funding Streams [^zip-2001].
|
||||
* Block Reward Allocation for Non-Direct Development Funding [^draft-nuttycom-funding-allocation].
|
||||
* Blocks should balance exactly [^zip-0236].
|
||||
* ZIP 200: Network Upgrade Mechanism [^zip-0200].
|
||||
* ZIP 236: Blocks should balance exactly [^zip-0236].
|
||||
* ZIP ???: Block Reward Allocation for Non-Direct Development Funding [^draft-nuttycom-funding-allocation].
|
||||
* ZIP 2001: Lockbox Funding Streams [^zip-2001].
|
||||
|
||||
|
||||
The network handshake and peer management mechanisms defined in ZIP 201 [^zip-0201] also apply to this upgrade.
|
||||
|
@ -77,9 +77,9 @@ NU6 does not define a new transaction version or impose a new minimum transactio
|
|||
|
||||
[^protocol]: [Zcash Protocol Specification, Version v2023.4.0 or later](protocol/protocol.pdf)
|
||||
|
||||
[^zip-2001]: [ZIP 2001 Lockbox Funding Streams](draft-nuttycom-lockbox-streams.rst)
|
||||
[^zip-2001]: [ZIP 2001: Lockbox Funding Streams](zip-2001.rst)
|
||||
|
||||
[^zip-0236]: [ZIP 236: Blocks should balance exactly](draft-hopwood-coinbase-balance.rst)
|
||||
[^zip-0236]: [ZIP 236: Blocks should balance exactly](zip-0236.rst)
|
||||
|
||||
[^draft-nuttycom-funding-allocation]: [ZIP ???: Block Reward Allocation for Non-Direct Development Funding](draft-nuttycom-funding-allocation.rst)
|
||||
|
||||
|
|
|
@ -63,15 +63,15 @@ that a funding stream may deposit funds into the deferred pool.
|
|||
Specification
|
||||
=============
|
||||
|
||||
Deferred Development Fund Chain Value Pool Balance
|
||||
--------------------------------------------------
|
||||
Modifications to ZIP 207 [#zip-0207]_
|
||||
-------------------------------------
|
||||
|
||||
Full node implementations MUST track an additional
|
||||
:math:`\mathsf{PoolValue}_{Deferred}` chain value pool balance, in addition to
|
||||
the Sprout, Sapling, and Orchard chain value pool balances. This balance is
|
||||
set to zero prior to the activation of Network Upgrade 6.
|
||||
The following paragraph is added to the section **Motivation**:
|
||||
|
||||
ZIP 207 [#zip-0207]_ is modified as follows:
|
||||
ZIP TBD [#draft-nuttycom-funding-allocation]_ 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.
|
||||
|
||||
In the section **Funding streams** [#zip-0207-funding-streams]_, instead of:
|
||||
|
||||
|
@ -84,15 +84,92 @@ it will be modified to read:
|
|||
MUST be either a transparent P2SH address, a Sapling address, or the identifier
|
||||
`DEFERRED_POOL`.
|
||||
|
||||
In the section **Consensus rules** [#zip-0207-consensus-rules]_, the following
|
||||
will be added:
|
||||
After the section **Funding streams**, a new section is added with the heading
|
||||
"Deferred Development Fund Chain Value Pool Balance" and the following contents:
|
||||
|
||||
The "prescribed way" to pay to the `DEFERRED_POOL` is to add
|
||||
:math:`\mathsf{FundingStream[FUND].Value}(\mathsf{height})` to
|
||||
:math:`\mathsf{PoolValue}_{Deferred}`.
|
||||
Full node implementations MUST track an additional
|
||||
:math:`\mathsf{PoolValue}_{Deferred}` chain value pool balance, in addition to
|
||||
the Sprout, Sapling, and Orchard chain value pool balances.
|
||||
|
||||
The protocol specification is modified to define the "total issued supply" such
|
||||
that the total issued supply as of a given height is given by the function:
|
||||
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 a recipient of `DEFERRED_POOL` in the block at height
|
||||
:math:`\mathsf{height}`.
|
||||
|
||||
The :math:`\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, :math:`\mathsf{PoolValue}_{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.
|
||||
|
||||
In the section **Consensus rules** [#zip-0207-consensus-rules]_, instead of:
|
||||
|
||||
- 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.
|
||||
|
||||
it will be modified to read:
|
||||
|
||||
- In each block, for each active funding stream with a recipient other than
|
||||
`DEFERRED_POOL` at that block's height, the block's coinbase transaction
|
||||
MUST contain at least one output that pays the stream's value in the
|
||||
prescribed way to that recipient.
|
||||
|
||||
After the list of post-Canopy consensus rules, the following paragraph is added:
|
||||
|
||||
The effect of the definition of :math:`\mathsf{PoolValue}_{Deferred}` above
|
||||
is that payments to the `DEFERRED_POOL` cause
|
||||
:math:`\mathsf{FundingStream[FUND].Value}(\mathsf{height})` to be added to
|
||||
:math:`\mathsf{PoolValue}_{Deferred}` for the block chain including that block.
|
||||
|
||||
|
||||
Modifications to the protocol specification
|
||||
-------------------------------------------
|
||||
|
||||
In section **7.1.2 Transaction Consensus Rules** [#protocol-txnconsensus]_, instead of:
|
||||
|
||||
The total value in zatoshi of transparent outputs from a coinbase transaction,
|
||||
minus :math:`\mathsf{v^{balanceSapling}}`, minus :math:`\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 :math:`\mathsf{height}`:
|
||||
|
||||
- define the "total output value" of its coinbase transaction to be the total value
|
||||
in zatoshi of its transparent outputs, minus :math:`\mathsf{v^{balanceSapling}}`,
|
||||
minus :math:`\mathsf{v^{balanceOrchard}}`, plus :math:`\mathsf{totalDeferredOutput}(\mathsf{height})`;
|
||||
- define the "total input value" of its coinbase transaction to be the value in zatoshi
|
||||
of the block subsidy, plus the transaction fees paid by transactions in the block.
|
||||
|
||||
The total output value of a coinbase transaction MUST NOT be greater than its
|
||||
total input value.
|
||||
|
||||
where :math:`\mathsf{totalDeferredOutput}(\mathsf{height})` is defined consistently
|
||||
with ZIP 207.
|
||||
|
||||
Note: this ZIP and ZIP 236 both make changes to the above rule. Their combined effect
|
||||
is that the last paragraph will be replaced by:
|
||||
|
||||
[Pre-NU6] The total output value of a coinbase transaction MUST NOT be greater
|
||||
than its total input value.
|
||||
|
||||
[NU6 onward] The total output value of a coinbase transaction MUST be equal to
|
||||
its total input value.
|
||||
|
||||
Section **7.10 Payment of Funding Streams** [#protocol-fundingstreams]_ contains
|
||||
language and definitions copied from ZIP 207; it should be updated to reflect the
|
||||
changes made above.
|
||||
|
||||
In section **3.4 Transactions and Treestates** [#protocol-transactions]_, 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:
|
||||
|
||||
.. math::
|
||||
|
||||
|
@ -104,6 +181,12 @@ that the total issued supply as of a given height is given by the function:
|
|||
&+\,\; \mathsf{PoolValue}_{Deferred}(\mathsf{height})
|
||||
\end{array}
|
||||
|
||||
The second paragraph of section **1.2 High-level Overview** [#protocol-overview]_
|
||||
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.
|
||||
|
||||
|
||||
References
|
||||
==========
|
||||
|
||||
|
@ -114,3 +197,10 @@ References
|
|||
.. [#zip-0207] `ZIP 207: Funding Streams <zip-0207.rst>`_
|
||||
.. [#zip-0207-funding-streams] `ZIP 207: Funding Streams. Section: Funding streams <zip-0207.rst#funding-streams>`_
|
||||
.. [#zip-0207-consensus-rules] `ZIP 207: Funding Streams. Section: Consensus rules <zip-0207.rst#consensus-rules>`_
|
||||
.. [#draft-nuttycom-funding-allocation] `Draft ZIP: Block Reward Allocation for Non-Direct Development Funding <draft-nuttycom-funding-allocation.rst>`_
|
||||
.. [#zip-2001] `ZIP 2001: Lockbox Funding Streams <zip-2001.rst>`_
|
||||
.. [#protocol-overview] `Zcash Protocol Specification, Version 2023.4.0. Section 1.2: High-level Overview <protocol/protocol.pdf#overview>`
|
||||
.. [#protocol-transactions] `Zcash Protocol Specification, Version 2023.4.0. Section 3.4: Transactions and Treestates <protocol/protocol.pdf#transactions>`
|
||||
.. [#protocol-txnconsensus] `Zcash Protocol Specification, Version 2023.4.0. Section 7.1.2: Transaction Consensus Rules <protocol/protocol.pdf#txnconsensus>`
|
||||
.. [#protocol-subsidies] `Zcash Protocol Specification, Version 2023.4.0. Section 7.8: Calculation of Block Subsidy, Funding Streams, and Founders’ Reward <protocol/protocol.pdf#subsidies>`
|
||||
.. [#protocol-fundingstreams] `Zcash Protocol Specification, Version 2023.4.0. Section 7.10: Payment of Funding Streams <protocol/protocol.pdf#fundingstreams>`
|
||||
|
|
Loading…
Reference in New Issue