# ZIP 233: Network Sustainability Mechanism: Removing Funds From Circulation

Status: Draft

Owners: Jason McGee, Zooko Wilcox, Mark Henderson, Tomek Piotrowski, Mariusz Pilarek, Paul Dann

Snapshot: a34cfc091434275120ff017c92c3b50d3cef623a

Source date: 2026-10-16T02:56:04+01:00

[Source revision](https://github.com/zcash/zips/commit/a34cfc091434275120ff017c92c3b50d3cef623a)

[Official source](https://zips.z.cash/zip-0233) · [Source file](https://github.com/zcash/zips/blob/a34cfc091434275120ff017c92c3b50d3cef623a/zips/zip-0233.md) · [Discussion](https://github.com/zcash/zips/issues/922)

Preamble

**ZIP**: 233

**Title**: Network Sustainability Mechanism: Removing Funds From Circulation

**Owners**: 

- [Jason McGee](mailto:jason@shieldedlabs.net)
- [Zooko Wilcox](mailto:zooko@shieldedlabs.net)
- [Mark Henderson](mailto:mark@shieldedlabs.net)
- [Tomek Piotrowski](mailto:tomek@eiger.co)
- [Mariusz Pilarek](mailto:mariusz@eiger.co)
- [Paul Dann](mailto:paul@eiger.co)

**Original-Authors**: Nathan Wilcox

**Status**: Draft

**Category**: Consensus / Ecosystem

**Created**: 2023-08-16

**License**: BSD-2-Clause

**Discussions-To**: [https://github.com/zcash/zips/issues/922](https://github.com/zcash/zips/issues/922)

<a id="terminology"></a>

## Terminology

The key word "MUST" in this document is to be interpreted as described in
BCP 14 <a id="user-content-fnref-bcp14"></a>
[1](#user-content-fn-bcp14) when, and only when, it appears in all capitals.

The term "network upgrade" in this document is to be interpreted as described
in ZIP 200. <a id="user-content-fnref-zip-0200"></a>
[2](#user-content-fn-zip-0200)

The character § is used when referring to sections of the Zcash Protocol
Specification. <a id="user-content-fnref-protocol"></a>
[3](#user-content-fn-protocol)

The terms "Mainnet" and "Testnet" are to be interpreted as described in
§ 3.12 ‘Mainnet and Testnet’. <a id="user-content-fnref-protocol-networks"></a>
[4](#user-content-fn-protocol-networks)

"ZEC/TAZ" refers to the native currency of Zcash on a given network, i.e.
ZEC on Mainnet and TAZ on Testnet.

"Block Subsidy" - The algorithmic issuance of ZEC/TAZ on block creation, as
defined by consensus. This is split between the miner and Funding Streams.

"Issuance" - The method by which ZEC/TAZ becomes available for circulation
on the network. [TODO: there is a potential terminology conflict between
this and issuance as defined in ZIP 227.]

$\mathsf{MAX\_MONEY}$, as defined in § 5.3 ‘Constants’ <a id="user-content-fnref-protocol-constants"></a>
[5](#user-content-fn-protocol-constants),
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
issuance mechanism, but is the value used in existing critical consensus
checks.

<a id="abstract"></a>

## Abstract

This ZIP proposes the introduction of a mechanism to voluntarily remove funds
entirely from circulation on the network. The explicit intent of this removal
is that the funds will be returned to circulation through future block subsidies,
rather than being permanently destroyed or held in reserve for discretionary use.
This mechanism, in combination with ZIP 234 and ZIP 235 <a id="user-content-fnref-zip-0235"></a>
[6](#user-content-fn-zip-0235), 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”.

<a id="motivation"></a>

## Motivation

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

1. **Long Term Consensus Sustainability:** By enabling the removal of funds from
   circulation, the network gains the ability to create "headroom" between the
   chain value and $\mathsf{MAX\_MONEY}$. This lays necessary groundwork for
   extending the block subsidy system, which currently has a clear final end
   date. The intent is that removed funds will be automatically and
   algorithmically reissued through future block subsidies, sustaining the
   network's long-term security budget, whether or not all three ZIPs
   comprising the Network Sustainability Mechanism are deployed in the same
   network upgrade.

2. **Benefits to ZEC Holders:** 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.

<a id="privacy-implications"></a>

## Privacy Implications

ZIP 233 adds a new type of transparent transaction event that is fully visible
to chain observers, and linked to other events performed in the transaction.
The removal of funds from circulation does represent a potential distinguisher;
transactions that intentionally remove funds from circulation are likely to
represent a small fraction of Zcash transactions, and so this will provide
another tool that adversaries may use to be able to segment users of the
network.

<a id="requirements"></a>

## Requirements

- The mechanism enables users to remove funds from the circulating supply, and
  each removal event is explicitly specified in the corresponding transaction.

- The process is publicly auditable, allowing network participants to verify
  the amount and occurrence of funds removed from circulation.

<a id="specification"></a>

## Specification

<a id="changes-to-zip-248"></a>

### Changes to ZIP 248

This ZIP proposes to register bundle type 6 variant 0 ("ZIP 233 NSM field") in
the V7 transaction bundle type registry defined in ZIP 248 <a id="user-content-fnref-zip-0248"></a>
[7](#user-content-fn-zip-0248).

| BundleType | BundleVariant | `mValuePoolDeltas` | `mEffectBundles` | `mAuthBundles` |
| --- | --- | --- | --- | --- |
| 6 | 0 | ✅ | ❌ | ❌ |

$\mathsf{zip233\_amount}$ 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, $\mathsf{zip233\_amount}$ 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 id="user-content-fnref-zip-0234"></a>
[8](#user-content-fn-zip-0234) specifies a mechanism by which the funds removed from
circulation may be reissued through future block subsidies.

The NSM bundle has no effecting data and no authorizing data. The amount to be
removed from circulation is represented solely as an entry in `mValuePoolDeltas`
with `bundleType = 6` and `assetClass = 0` (ZEC).

<a id="nsm-amount"></a>

### NSM Amount

When the `mValuePoolDeltas` map contains an entry with `bundleType = 6`, the
transaction removes funds from circulation. The entry's `value` field MUST be
nonpositive; its negation is denoted $\mathsf{zip233\_amount}$ and represents
the value in zatoshis removed from circulation when the transaction is mined.
If no such entry is present, $\mathsf{zip233\_amount}$ is defined to be 0.

The NSM bundle's effect on the transparent transaction value pool does not
reflect an output being produced in any chain value pool. At the point at which
the transaction is applied to the global chain state, $\mathsf{zip233\_amount}$
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 id="user-content-fnref-zip-0234-2"></a>
[8](#user-content-fn-zip-0234) specifies a potential mechanism by which the funds
removed from circulation would become available for reintroduction into the
issued supply in subsequent blocks.

<a id="changes-to-the-zcash-protocol-specification"></a>

### Changes to the Zcash Protocol Specification

Let $\mathsf{NSMBundleId} = 6.$

Let $\mathsf{Zec}$ be the asset UUID for ZEC as defined in ZIP 248 <a id="user-content-fnref-zip-0248-2"></a>
[7](#user-content-fn-zip-0248).

Make a change to § 3.4 'Transactions and Treestates' <a id="user-content-fnref-protocol-transactions"></a>
[9](#user-content-fn-protocol-transactions)
adding the following consensus rules:

> - [NU7 onward] The `assetClass` for any entry in `mValuePoolDeltas` having
>   `bundleType` $= \mathsf{NSMBundleId}$ MUST be 0. That is, amounts to remove
>   from circulation MUST be denominated in ZEC.
> 
> - [NU7 onward] The value of $\mathsf{mValuePoolDeltas}[(\mathsf{NSMBundleId}, \mathsf{Zec})]$,
>   if present, MUST be nonpositive. Its absolute value is $\mathsf{zip233\_amount}$.
> 
> - [NU7 onward] $\mathsf{zip233\_amount}$ does not result in an output being
>   produced in any chain value pool.

In § 7.1 'Transaction Encoding and Consensus' <a id="user-content-fnref-protocol-txnconsensus"></a>
[10](#user-content-fn-protocol-txnconsensus), add:

> [NU7 onward] $\mathsf{zip233\_amount}$ MUST be in the range $\{ 0 .. \mathsf{MAX\_MONEY} \}$.

<a id="modifications-to-digest-algorithms"></a>

### Modifications to Digest Algorithms

The $\mathsf{zip233\_amount}$ is committed to the transaction identifier and
signature digest via the `value_pool_deltas_digest` defined in ZIP 248 <a id="user-content-fnref-zip-0248-3"></a>
[7](#user-content-fn-zip-0248).
Since the NSM bundle (bundle type 6) has no effecting data and no authorizing
data, its only contribution to the transaction digest is through its entry
in `mValuePoolDeltas`.

<a id="applicability"></a>

### Applicability

All of these changes apply identically to Mainnet and Testnet.

<a id="rationale"></a>

## Rationale

All technical decisions in this ZIP are balanced between the necessary
robustness of the NSM mechanics, and simplicity of implementation.

<a id="new-transaction-field-for-amount-to-remove-from-circulation"></a>

### New transaction field for amount to remove from circulation

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.

<a id="deployment"></a>

## Deployment

This ZIP is not deployed in Network Upgrade 7. <a id="user-content-fnref-zip-0259"></a>
[11](#user-content-fn-zip-0259) It is proposed to
activate in a later network upgrade.

<a id="references"></a>

## References

<a id="footnote-label"></a>

### Footnotes

1. [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"](https://www.rfc-editor.org/info/bcp14) [↩](#user-content-fnref-bcp14)

2. [ZIP 200: Network Upgrade Mechanism](/zip/200) [↩](#user-content-fnref-zip-0200)

3. [Zcash Protocol Specification, Version 2025.6.2 [NU6.1] or later](protocol/protocol.pdf) [↩](#user-content-fnref-protocol)

4. [Zcash Protocol Specification, Version 2025.6.2 [NU6.1]. Section 3.12: Mainnet and Testnet](protocol/protocol.pdf#networks) [↩](#user-content-fnref-protocol-networks)

5. [Zcash Protocol Specification, Version 2025.6.2 [NU6.1]. Section 5.3: Constants](protocol/protocol.pdf#constants) [↩](#user-content-fnref-protocol-constants)

6. [ZIP 235: Remove 60% of Transaction Fees From Circulation](/zip/235) [↩](#user-content-fnref-zip-0235)

7. [ZIP 248: Extensible Transaction Format](/zip/248) [↩](#user-content-fnref-zip-0248) [↩2](#user-content-fnref-zip-0248-2) [↩3](#user-content-fnref-zip-0248-3)

8. [ZIP 234: Network Sustainability Mechanism: Issuance Smoothing](/zip/234) [↩](#user-content-fnref-zip-0234) [↩2](#user-content-fnref-zip-0234-2)

9. [Zcash Protocol Specification, Version 2025.6.2 [NU6.1]. Section 3.4: Transactions And Treestates](protocol/protocol.pdf#transactions) [↩](#user-content-fnref-protocol-transactions)

10. [Zcash Protocol Specification, Version 2025.6.2 [NU6.1]. Section 7.1.2 Transaction Consensus Rules](protocol/protocol.pdf#txnconsensus) [↩](#user-content-fnref-protocol-txnconsensus)

11. [ZIP 259: Deployment of the NU7 Network Upgrade](/zip/259) [↩](#user-content-fnref-zip-0259)

## Citation relationships

Cites: [ZIP 200](https://zips.tools/zip/200), [ZIP 227](https://zips.tools/zip/227), [ZIP 234](https://zips.tools/zip/234), [ZIP 235](https://zips.tools/zip/235), [ZIP 248](https://zips.tools/zip/248), [ZIP 259](https://zips.tools/zip/259)

Cited by: [ZIP 230](https://zips.tools/zip/230), [ZIP 234](https://zips.tools/zip/234), [ZIP 235](https://zips.tools/zip/235), [ZIP 237](https://zips.tools/zip/237), [ZIP 248](https://zips.tools/zip/248), [ZIP 259](https://zips.tools/zip/259), [ZIP 315](https://zips.tools/zip/315)