Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
8 changes: 4 additions & 4 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -156,9 +156,9 @@ written.
<tr> <td><span class="reserved">228</span></td> <td class="left"><a class="reserved" href="zips/zip-0228.rst">Asset Swaps for Zcash Shielded Assets</a></td> <td>Reserved</td>
<tr> <td>230</td> <td class="left"><a href="zips/zip-0230.rst">Version 6 Transaction Format</a></td> <td>Draft</td>
<tr> <td>231</td> <td class="left"><a href="zips/zip-0231.md">Memo Bundles</a></td> <td>Draft</td>
<tr> <td>233</td> <td class="left"><a href="zips/zip-0233.md">Network Sustainability Mechanism: Burning</a></td> <td>Draft</td>
<tr> <td>233</td> <td class="left"><a href="zips/zip-0233.md">Network Sustainability Mechanism: Removing Funds From Circulation</a></td> <td>Draft</td>
<tr> <td>234</td> <td class="left"><a href="zips/zip-0234.md">Network Sustainability Mechanism: Issuance Smoothing</a></td> <td>Draft</td>
<tr> <td>235</td> <td class="left"><a href="zips/zip-0235.md">Burn 60% of Transaction Fees</a></td> <td>Draft</td>
<tr> <td>235</td> <td class="left"><a href="zips/zip-0235.md">Remove 60% of Transaction Fees From Circulation</a></td> <td>Draft</td>
<tr> <td>245</td> <td class="left"><a href="zips/zip-0245.rst">Transaction Identifier Digests & Signature Validation for Transparent Zcash Extensions</a></td> <td>Draft</td>
<tr> <td>254</td> <td class="left"><a href="zips/zip-0254.md">Deployment of the NU7 Network Upgrade</a></td> <td>Draft</td>
<tr> <td>302</td> <td class="left"><a href="zips/zip-0302.rst">Standardized Memo Field Format</a></td> <td>Draft</td>
Expand Down Expand Up @@ -283,9 +283,9 @@ Index of ZIPs
<tr> <td><span class="reserved">228</span></td> <td class="left"><a class="reserved" href="zips/zip-0228.rst">Asset Swaps for Zcash Shielded Assets</a></td> <td>Reserved</td>
<tr> <td>230</td> <td class="left"><a href="zips/zip-0230.rst">Version 6 Transaction Format</a></td> <td>Draft</td>
<tr> <td>231</td> <td class="left"><a href="zips/zip-0231.md">Memo Bundles</a></td> <td>Draft</td>
<tr> <td>233</td> <td class="left"><a href="zips/zip-0233.md">Network Sustainability Mechanism: Burning</a></td> <td>Draft</td>
<tr> <td>233</td> <td class="left"><a href="zips/zip-0233.md">Network Sustainability Mechanism: Removing Funds From Circulation</a></td> <td>Draft</td>
<tr> <td>234</td> <td class="left"><a href="zips/zip-0234.md">Network Sustainability Mechanism: Issuance Smoothing</a></td> <td>Draft</td>
<tr> <td>235</td> <td class="left"><a href="zips/zip-0235.md">Burn 60% of Transaction Fees</a></td> <td>Draft</td>
<tr> <td>235</td> <td class="left"><a href="zips/zip-0235.md">Remove 60% of Transaction Fees From Circulation</a></td> <td>Draft</td>
<tr> <td>236</td> <td class="left"><a href="zips/zip-0236.rst">Blocks should balance exactly</a></td> <td>Implemented (zcashd and zebrad)</td>
<tr> <td>239</td> <td class="left"><a href="zips/zip-0239.rst">Relay of Version 5 Transactions</a></td> <td>Final</td>
<tr> <td>243</td> <td class="left"><a href="zips/zip-0243.rst">Transaction Signature Validation for Sapling</a></td> <td>Final</td>
Expand Down
8 changes: 4 additions & 4 deletions rendered/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -111,9 +111,9 @@
<tr> <td><span class="reserved">228</span></td> <td class="left"><a class="reserved" href="zip-0228">Asset Swaps for Zcash Shielded Assets</a></td> <td>Reserved</td>
<tr> <td>230</td> <td class="left"><a href="zip-0230">Version 6 Transaction Format</a></td> <td>Draft</td>
<tr> <td>231</td> <td class="left"><a href="zip-0231">Memo Bundles</a></td> <td>Draft</td>
<tr> <td>233</td> <td class="left"><a href="zip-0233">Network Sustainability Mechanism: Burning</a></td> <td>Draft</td>
<tr> <td>233</td> <td class="left"><a href="zip-0233">Network Sustainability Mechanism: Removing Funds From Circulation</a></td> <td>Draft</td>
<tr> <td>234</td> <td class="left"><a href="zip-0234">Network Sustainability Mechanism: Issuance Smoothing</a></td> <td>Draft</td>
<tr> <td>235</td> <td class="left"><a href="zip-0235">Burn 60% of Transaction Fees</a></td> <td>Draft</td>
<tr> <td>235</td> <td class="left"><a href="zip-0235">Remove 60% of Transaction Fees From Circulation</a></td> <td>Draft</td>
<tr> <td>245</td> <td class="left"><a href="zip-0245">Transaction Identifier Digests & Signature Validation for Transparent Zcash Extensions</a></td> <td>Draft</td>
<tr> <td>254</td> <td class="left"><a href="zip-0254">Deployment of the NU7 Network Upgrade</a></td> <td>Draft</td>
<tr> <td>302</td> <td class="left"><a href="zip-0302">Standardized Memo Field Format</a></td> <td>Draft</td>
Expand Down Expand Up @@ -219,9 +219,9 @@
<tr> <td><span class="reserved">228</span></td> <td class="left"><a class="reserved" href="zip-0228">Asset Swaps for Zcash Shielded Assets</a></td> <td>Reserved</td>
<tr> <td>230</td> <td class="left"><a href="zip-0230">Version 6 Transaction Format</a></td> <td>Draft</td>
<tr> <td>231</td> <td class="left"><a href="zip-0231">Memo Bundles</a></td> <td>Draft</td>
<tr> <td>233</td> <td class="left"><a href="zip-0233">Network Sustainability Mechanism: Burning</a></td> <td>Draft</td>
<tr> <td>233</td> <td class="left"><a href="zip-0233">Network Sustainability Mechanism: Removing Funds From Circulation</a></td> <td>Draft</td>
<tr> <td>234</td> <td class="left"><a href="zip-0234">Network Sustainability Mechanism: Issuance Smoothing</a></td> <td>Draft</td>
<tr> <td>235</td> <td class="left"><a href="zip-0235">Burn 60% of Transaction Fees</a></td> <td>Draft</td>
<tr> <td>235</td> <td class="left"><a href="zip-0235">Remove 60% of Transaction Fees From Circulation</a></td> <td>Draft</td>
<tr> <td>236</td> <td class="left"><a href="zip-0236">Blocks should balance exactly</a></td> <td>Implemented (zcashd and zebrad)</td>
<tr> <td>239</td> <td class="left"><a href="zip-0239">Relay of Version 5 Transactions</a></td> <td>Final</td>
<tr> <td>243</td> <td class="left"><a href="zip-0243">Transaction Signature Validation for Sapling</a></td> <td>Final</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