Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
e89b60e
ZIP 233-235: Rephrase all references to "burning"
Jan 15, 2025
47177fe
ZIP 233-235: Apply edits requested by str4d
Jan 29, 2025
38fa815
Add Mark Herderson's name to ZIP authors
Jan 31, 2025
a14bbf1
ZIP 227: Refactor the Asset Identifier section for clarity
str4d Feb 6, 2025
47f402c
ZIP 227: Replace `asset_desc` with its hash in `AssetId`
str4d Feb 6, 2025
9c32e13
Render manually, while the CI-based rendering is broken
str4d Feb 6, 2025
8d224d1
Update zips/zip-0233.md motivation.
nuttycom Feb 11, 2025
c11530f
Merge pull request #970 from ShieldedLabs/nsm-rephrase-burning
nuttycom Feb 12, 2025
00efeba
Initial ZIP draft for Account Metadata Keys
str4d Feb 18, 2025
deb8333
Apply copy-editing suggestions from review
daira Feb 18, 2025
a6d3eed
Re-render HTML.
daira Feb 19, 2025
e19e907
Merge pull request #981 from daira/rerender-html
daira Feb 19, 2025
7277edd
Add registered child key derivation with support for tags, and a
daira Feb 12, 2025
25f79a3
Address review comments: clarify the use of `full_width_leaf` and use…
daira Feb 15, 2025
41be02e
Apply suggestions from str4d's review.
daira Feb 17, 2025
e601318
Change to definition of `CKDh` inspired by a change in the implementa…
daira Feb 19, 2025
0c62177
Merge pull request #978 from daira/add-child-key-with-tag
str4d Feb 20, 2025
0b66580
Formatting and variable name changes from review
str4d Feb 20, 2025
ab459c7
Assign ZIP 325 to draft-str4d-account-metadata-keys
str4d Feb 20, 2025
294f606
Update the status of consensus ZIPs that have been deployed.
daira Feb 20, 2025
519658b
Describe the status of deployed non-consensus ZIPs as Active.
daira Feb 20, 2025
0fb1511
Merge pull request #975 from zcash/zip227-comm-asset-desc
nuttycom Feb 25, 2025
b9b7366
ZIP 325: Apply rewording to Motivation from review
str4d Feb 27, 2025
dc6fb14
ZIP 325: Fix typo in private use child index constant
str4d Feb 27, 2025
b96218b
ZIP 325: Clarify wording around how UFVK is used
str4d Feb 27, 2025
070c185
Render manually, while the CI-based rendering is broken
str4d Feb 27, 2025
eda6d41
Merge pull request #979 from zcash/account-metadata-keys
str4d Feb 27, 2025
d377d71
Merge pull request #982 from daira/nu6-cleanups
str4d Feb 27, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 28 additions & 26 deletions README.rst

Large diffs are not rendered by default.

54 changes: 28 additions & 26 deletions rendered/index.html

Large diffs are not rendered by default.

298 changes: 202 additions & 96 deletions rendered/zip-0032.html

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions rendered/zip-0207.html
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
Title: Funding Streams
Owners: Jack Grigg <str4d@electriccoin.co>
Daira-Emma Hopwood <daira-emma@electriccoin.co>
Status: [Pre-NU6] Final, [NU6] Implemented (zcashd and zebrad)
Status: [Canopy, NU6] Final
Category: Consensus
Created: 2019-01-04
License: MIT</pre>
Expand Down Expand Up @@ -276,7 +276,7 @@
</section>
<section id="deployment"><h2><span class="section-heading">Deployment</span><span class="section-anchor"> <a rel="bookmark" href="#deployment"><img width="24" height="24" class="section-anchor" src="assets/images/section-anchor.png" alt=""></a></span></h2>
<p>This proposal was initially deployed with Canopy. <a id="footnote-reference-29" class="footnote_reference" href="#zip-0251">18</a></p>
<p>Changes to support deferred funding streams are to be deployed with NU6. <a id="footnote-reference-30" class="footnote_reference" href="#zip-0253">19</a></p>
<p>Changes to support deferred funding streams were deployed with NU6. <a id="footnote-reference-30" class="footnote_reference" href="#zip-0253">19</a></p>
</section>
<section id="backward-compatibility"><h2><span class="section-heading">Backward compatibility</span><span class="section-anchor"> <a rel="bookmark" href="#backward-compatibility"><img width="24" height="24" class="section-anchor" src="assets/images/section-anchor.png" alt=""></a></span></h2>
<p>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.</p>
Expand Down
5 changes: 3 additions & 2 deletions rendered/zip-0214.html
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
Title: Consensus rules for a Zcash Development Fund
Owners: Daira-Emma Hopwood &lt;daira-emma@electriccoin.co&gt;
Kris Nuttycombe &lt;kris@nutty.land&gt;
Status: [Revision 0] Final, [Revision 1] Implemented (zcashd and zebrad)
Status: [Revision 0: Canopy, Revision 1: NU6] Final
Category: Consensus
Created: 2020-02-28
License: MIT
Expand Down Expand Up @@ -356,7 +356,8 @@ <h2>Rationale for <a href="#revision-0">Revision 0</a></h2>
<p>It was judged to be unnecessary to have a mechanism to update funding stream definitions (in case of security breach or changes to direct grant recipients) other than at network upgrades.</p>
</section>
<section id="deployment"><h2><span class="section-heading">Deployment</span><span class="section-anchor"> <a rel="bookmark" href="#deployment"><img width="24" height="24" class="section-anchor" src="assets/images/section-anchor.png" alt=""></a></span></h2>
<p><a href="#revision-0">Revision 0</a> of this proposal was deployed with Canopy. <a id="footnote-reference-21" class="footnote_reference" href="#zip-0251">11</a> <a href="#revision-1">Revision 1</a> of this proposal is intended to be deployed with NU6. <a id="footnote-reference-22" class="footnote_reference" href="#zip-0253">12</a></p>
<p><a href="#revision-0">Revision 0</a> of this proposal was deployed with Canopy. <a id="footnote-reference-21" class="footnote_reference" href="#zip-0251">11</a></p>
<p><a href="#revision-1">Revision 1</a> of this proposal was deployed with NU6. <a id="footnote-reference-22" class="footnote_reference" href="#zip-0253">12</a></p>
</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>
<table id="bcp14" class="footnote">
Expand Down
117 changes: 57 additions & 60 deletions rendered/zip-0227.html

Large diffs are not rendered by default.

14 changes: 4 additions & 10 deletions rendered/zip-0230.html
Original file line number Diff line number Diff line change
Expand Up @@ -560,16 +560,10 @@
</thead>
<tbody>
<tr>
<td><code>varies</code></td>
<td><code>assetDescSize</code></td>
<td><code>compactSize</code></td>
<td>The length of the asset description string in bytes.</td>
</tr>
<tr>
<td><code>assetDescSize</code></td>
<td><code>asset_desc</code></td>
<td><code>byte[assetDescSize]</code></td>
<td>A byte sequence of length <code>assetDescSize</code> bytes which SHOULD be a well-formed UTF-8 code unit sequence according to Unicode 15.0.0 or later.</td>
<td><code>32</code></td>
<td><code>assetDescHash</code></td>
<td><code>byte[32]</code></td>
<td>A hash of the description of the Custom Asset.</td>
</tr>
<tr>
<td><code>varies</code></td>
Expand Down
94 changes: 48 additions & 46 deletions rendered/zip-0233.html
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<!DOCTYPE html>
<html>
<head>
<title>ZIP 233: Network Sustainability Mechanism: Burning</title>
<title>ZIP 233: Network Sustainability Mechanism: Removing Funds From Circulation</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.min.css" integrity="sha384-nB0miv6/jRmo5UMMR1wu3Gz6NLsoTkbqJghGIsx//Rlm+ZU03BU6SQNC66uf4l5+" crossorigin="anonymous">
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.11/dist/katex.min.js" integrity="sha384-7zkQWkzuo3B5mTepMUcHkMB5jZaolc2xDwL6VFqjFALcbeS9Ggm/Yr2r3Dy4lfFg" crossorigin="anonymous"></script>
Expand All @@ -10,9 +10,10 @@
</head>
<body>
<pre><code>ZIP: 233
Title: Network Sustainability Mechanism: Burning
Title: Network Sustainability Mechanism: Removing Funds From Circulation
Owners: Jason McGee &lt;jason@shieldedlabs.net&gt;
Zooko Wilcox &lt;zooko@shieldedlabs.net&gt;
Mark Henderson &lt;mark@shieldedlabs.net&gt;
Tomek Piotrowski &lt;tomek@eiger.co&gt;
Mariusz Pilarek &lt;mariusz@eiger.co&gt;
Paul Dann &lt;paul@eiger.co&gt;
Expand Down Expand Up @@ -49,9 +50,6 @@ <h1 id="terminology"><span class="section-heading">Terminology</span><span class
on the network. [TODO: there is a potential terminology conflict between
this and issuance as defined in ZIP 227.]</p>

<p>&#8220;Burning&#8221; - The method by which ZEC/TAZ becomes unavailable for circulation
on the network.</p>

<p><span class="math">\(\mathsf{MAX\_MONEY}\)</span>, as defined in § 5.3 ‘Constants’ <a href="#fn:5" id="fnref:5" title="see footnote" class="footnote"><sup>5</sup></a>,
is the total ZEC/TAZ supply cap measured in zatoshi, corresponding to
21,000,000 ZEC. This is slightly larger than the supply cap for the current
Expand All @@ -60,44 +58,47 @@ <h1 id="terminology"><span class="section-heading">Terminology</span><span class

<h1 id="abstract"><span class="section-heading">Abstract</span><span class="section-anchor"> <a rel="bookmark" href="#abstract"><img width="24" height="24" class="section-anchor" src="assets/images/section-anchor.png" alt=""></a></span></h1>

<p>This ZIP proposes the introduction of a mechanism to voluntarily burn funds,
removing those funds entirely from circulation on the network. This mechanism,
in combination with ZIP 234 <a href="#fn:6" id="fnref:6" title="see footnote" class="footnote"><sup>6</sup></a> and ZIP 235 <a href="#fn:7" id="fnref:7" title="see footnote" class="footnote"><sup>7</sup></a>, comprises a
long-term strategy for the sustainability of the network. We will refer to the
combined effects of these three ZIPs as the “Network Sustainability Mechanism”.</p>
<p>This ZIP proposes the introduction of a mechanism to voluntarily remove funds
entirely from circulation on the network. This mechanism, in combination with
ZIP 234 <a href="#fn:6" id="fnref:6" title="see footnote" class="footnote"><sup>6</sup></a> and ZIP 235 <a href="#fn:7" id="fnref:7" title="see footnote" class="footnote"><sup>7</sup></a>, comprises a long-term strategy for
the sustainability of the network. We will refer to the combined effects of
these three ZIPs as the “Network Sustainability Mechanism”.</p>

<h1 id="motivation"><span class="section-heading">Motivation</span><span class="section-anchor"> <a rel="bookmark" href="#motivation"><img width="24" height="24" class="section-anchor" src="assets/images/section-anchor.png" alt=""></a></span></h1>

<p>This mechanism seeks to address concerns about the sustainability of the network
design shared by Bitcoin-like systems:</p>

<ol>
<li><strong>Long Term Consensus Sustainability:</strong> By enabling the burning of funds, the
network gains the ability to create &#8220;headroom&#8221; between the chain value and
<span class="math">\(\mathsf{MAX\_MONEY}\)</span>. This lays necessary groundwork for extending the
block subsidy system, which currently has a clear final end date.</li>
<li><strong>Benefits to ZEC Holders:</strong> Burning funds reduces the supply of ZEC,
benefiting network users in proportion to their holdings without requiring
them to opt into any scheme, introducing extra risk, active oversight, or
accounting complexity.</li>
<li><strong>Long Term Consensus Sustainability:</strong> By enabling the removal of funds from
circulation, the network gains the ability to create &#8220;headroom&#8221; between the
chain value and <span class="math">\(\mathsf{MAX\_MONEY}\)</span>. This lays necessary groundwork for
extending the block subsidy system, which currently has a clear final end
date.</li>
<li><strong>Benefits to ZEC Holders:</strong> Removing funds from circulation reduces the
circulating supply of ZEC. To the extent that this potentially contributes to
an increase in the value of remaining ZEC, it can be argued to benefit network
users in proportion to their holdings — without requiring them to opt into any
scheme, introducing extra risk, active oversight, or accounting complexity.</li>
</ol>

<h1 id="specification"><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></h1>

<h2 id="burnamount"><span class="section-heading">Burn amount</span><span class="section-anchor"> <a rel="bookmark" href="#burnamount"><img width="24" height="24" class="section-anchor" src="assets/images/section-anchor.png" alt=""></a></span></h2>
<h2 id="transactionfield"><span class="section-heading">Transaction Field</span><span class="section-anchor"> <a rel="bookmark" href="#transactionfield"><img width="24" height="24" class="section-anchor" src="assets/images/section-anchor.png" alt=""></a></span></h2>

<p>Each transaction gains a <span class="math">\(\mathsf{burn\_amount}\)</span> property, specifying the
value in zatoshis that is burned when the transaction is mined. The burned value
subtracts from the remaining value in the &#8220;transparent transaction value pool&#8221;
as described in § 3.4 ‘Transactions and Treestates’ <a href="#fn:8" id="fnref:8" title="see footnote" class="footnote"><sup>8</sup></a>.</p>
<p>Each transaction gains a <span class="math">\(\mathsf{zip233\_amount}\)</span> property, specifying the
value in zatoshis that is removed from circulation when the transaction is
mined. The value removed from circulation subtracts from the remaining value in
the &#8220;transparent transaction value pool&#8221; as described in § 3.4 ‘Transactions and
Treestates’ <a href="#fn:8" id="fnref:8" title="see footnote" class="footnote"><sup>8</sup></a>.</p>

<p><span class="math">\(\mathsf{burn\_amount}\)</span> does not result in an output being produced in any
<p><span class="math">\(\mathsf{zip233\_amount}\)</span> does not result in an output being produced in any
chain value pool, and therefore from the point at which the transaction is
applied to the global chain state, <span class="math">\(\mathsf{burn\_amount}\)</span> is subtracted from the
issued supply. It is unavailable for circulation on the network at least through
to the end of the block in which the transaction is mined. ZIP 234 <a href="#fn:6" title="see footnote" class="footnote"><sup>6</sup></a>
specifies a potential mechanism by which the burned funds would again become
available.</p>
applied to the global chain state, <span class="math">\(\mathsf{zip233\_amount}\)</span> is subtracted from
the issued supply. It is unavailable for circulation on the network at least
through to the end of the block in which the transaction is mined. ZIP 234
<a href="#fn:6" title="see footnote" class="footnote"><sup>6</sup></a> specifies a potential mechanism by which the funds removed from
circulation would again become available.</p>

<h2 id="changestozip230zip-0230">Changes to ZIP 230 <a href="#fn:9" id="fnref:9" title="see footnote" class="footnote"><sup>9</sup></a></h2>

Expand All @@ -117,54 +118,55 @@ <h2 id="changestozip230zip-0230">Changes to ZIP 230 <a href="#fn:9" id="fnref:9"
<th> Bytes </th>
<th> Name </th>
<th> Data Type </th>
<th> Description </th>
<th> Description </th>
</tr>
</thead>

<tbody>
<tr>
<td> 8 </td>
<td> <code>burnAmount</code> </td>
<td> <code>zip233Amount</code> </td>
<td> <code>uint64</code> </td>
<td> The value to be burned in this transaction, in zatoshis. </td>
<td> The value to be removed from circulation in this transaction, in zatoshis. </td>
</tr>
</tbody>
</table>

<p>The <span class="math">\(\mathsf{burn\_amount}\)</span> of a transaction is defined to be the value of the
<code>burnAmount</code> field if present, and otherwise 0.</p>
<p>The <span class="math">\(\mathsf{zip233\_amount}\)</span> of a transaction is defined to be the value of the
<code>zip233Amount</code> field if present, and otherwise 0.</p>

<p>Notes:</p>

<ul>
<li>If both this ZIP and ZIP 2002 are selected for inclusion in the same Network
Upgrade, then the ambiguity in ordering of the fields added by these ZIPs
would need to be resolved.</li>
<li>Older transaction versions can continue to be supported after a network upgrade,
but burning is not possible for these transactions. For example, NU5 supports
both v4 and v5 transaction formats, for both coinbase and non-coinbase transactions.</li>
<li>Older transaction versions can continue to be supported after a network
upgrade, but removing funds from circulation is not possible for these
transactions. For example, NU5 supports both v4 and v5 transaction formats,
for both coinbase and non-coinbase transactions.</li>
</ul>

<h2 id="changestothezcashprotocolspecification"><span class="section-heading">Changes to the Zcash Protocol Specification</span><span class="section-anchor"> <a rel="bookmark" href="#changestothezcashprotocolspecification"><img width="24" height="24" class="section-anchor" src="assets/images/section-anchor.png" alt=""></a></span></h2>

<p>Make a change to § 3.4 ‘Transactions and Treestates’ <a href="#fn:8" title="see footnote" class="footnote"><sup>8</sup></a>
implementing the specification in <a href="#burnamount">Burn amount</a>.</p>
implementing the specification in [ZIP-233 Amount].</p>

<p>In § 7.1 ‘Transaction Encoding and Consensus’ <a href="#fn:11" id="fnref:11" title="see footnote" class="footnote"><sup>11</sup></a>, add:</p>

<blockquote>
<p>[NU7 onward] <span class="math">\(\mathsf{burn\_amount}\)</span> MUST be in the range <span class="math">\(\{ 0 .. \mathsf{MAX\_MONEY} \}\)</span>.</p>
<p>[NU7 onward] <span class="math">\(\mathsf{zip233\_amount}\)</span> MUST be in the range <span class="math">\(\{ 0 .. \mathsf{MAX\_MONEY} \}\)</span>.</p>
</blockquote>

<h2 id="modificationsrelativetozip244zip-0244">Modifications relative to ZIP 244 <a href="#fn:12" id="fnref:12" title="see footnote" class="footnote"><sup>12</sup></a></h2>

<p>Relative to the sighash algorithm defined in ZIP 244, the sighash algorithm
that applies to v6 transactions differs by appending the encoding of
<span class="math">\(\mathsf{burn\_amount}\)</span> to the Common Transaction Fields that are the input
<span class="math">\(\mathsf{zip233\_amount}\)</span> to the Common Transaction Fields that are the input
to the digest in T.1: <code>header_digest</code> <a href="#fn:13" id="fnref:13" title="see footnote" class="footnote"><sup>13</sup></a>:</p>

<blockquote>
<pre><code> T.1f: burn_amount (8-byte little-endian burn amount)
<pre><code> T.1f: zip233_amount (8-byte little-endian amount to remove from circulation)
</code></pre>
</blockquote>

Expand All @@ -181,11 +183,11 @@ <h1 id="rationale"><span class="section-heading">Rationale</span><span class="se
<p>All technical decisions in this ZIP are balanced between the necessary
robustness of the NSM mechanics, and simplicity of implementation.</p>

<h2 id="newtransactionfieldforburnamount"><span class="section-heading">New transaction field for burn amount</span><span class="section-anchor"> <a rel="bookmark" href="#newtransactionfieldforburnamount"><img width="24" height="24" class="section-anchor" src="assets/images/section-anchor.png" alt=""></a></span></h2>
<h2 id="newtransactionfieldforamounttoremovefromcirculation"><span class="section-heading">New transaction field for amount to remove from circulation</span><span class="section-anchor"> <a rel="bookmark" href="#newtransactionfieldforamounttoremovefromcirculation"><img width="24" height="24" class="section-anchor" src="assets/images/section-anchor.png" alt=""></a></span></h2>

<p>An explicit value distinguishes the burned ZEC from the transaction fee.
Explicitness also ensures any arithmetic flaws in any implementations are more
likely to be observed and caught immediately.</p>
<p>An explicit value distinguishes the funds to remove from circulation from
the transaction fee. Explicitness also ensures any arithmetic flaws in any
implementations are more likely to be observed and caught immediately.</p>

<h1 id="deployment"><span class="section-heading">Deployment</span><span class="section-anchor"> <a rel="bookmark" href="#deployment"><img width="24" height="24" class="section-anchor" src="assets/images/section-anchor.png" alt=""></a></span></h1>

Expand Down Expand Up @@ -222,7 +224,7 @@ <h1 id="references"><span class="section-heading">References</span><span class="
</li>

<li id="fn:7">
<p><a href="zip-0235">ZIP 235: Burn 60% of Transaction Fees</a> <a href="#fnref:7" title="return to body" class="reversefootnote">&#160;&#8617;&#xfe0e;</a></p>
<p><a href="zip-0235">ZIP 235: Remove 60% of Transaction Fees From Circulation</a> <a href="#fnref:7" title="return to body" class="reversefootnote">&#160;&#8617;&#xfe0e;</a></p>
</li>

<li id="fn:8">
Expand Down
Loading