# ZIP 235: Remove 60% of Transaction Fees 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-0235) · [Source file](https://github.com/zcash/zips/blob/a34cfc091434275120ff017c92c3b50d3cef623a/zips/zip-0235.md) · [Discussion](https://github.com/zcash/zips/issues/924)

Preamble

**ZIP**: 235

**Title**: Remove 60% of Transaction Fees 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-09-21

**License**: BSD-2-Clause

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

<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)

The symbol "$\,\cdot\,$" means multiplication, as described in § 2 ‘Notation’.
<a id="user-content-fnref-protocol-notation"></a>
[5](#user-content-fn-protocol-notation)

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

$\mathsf{MAX\_MONEY}$, as defined in § 5.3 ‘Constants’ <a id="user-content-fnref-protocol-constants"></a>
[6](#user-content-fn-protocol-constants), is
$2\_100\_000\_000\_000\_000$ zatoshi.

"Block Subsidy" means the algorithmic issuance of ZEC/TAZ on block creation, as
defined by consensus and divided among the miner and any Funding Streams.

"Issuance" means the mechanism by which ZEC/TAZ becomes available for
circulation.

"NSM Value Balance" is to be interpreted as defined in ZIP 237. <a id="user-content-fnref-zip-0237"></a>
[7](#user-content-fn-zip-0237)

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

## Abstract

This ZIP proposes to remove 60% of transaction fees from circulation, while
the remaining 40% is directed as before. The intent of this removal is that the
funds will be automatically and algorithmically reissued through future block
subsidies, rather than being permanently destroyed or held as a discretionary
reserve.

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

## Motivation

ZIP 233 ("Network Sustainability Mechanism: Removing Funds From Circulation"
<a id="user-content-fnref-zip-0233"></a>
[8](#user-content-fn-zip-0233)) describes a method by which ZEC can be removed from circulation to
support network sustainability.

By introducing a requirement that a certain proportion of transaction fees be
removed from circulation, we aim to contribute to the long-term sustainability
of the network as described below:

<a id="benefits-to-the-network"></a>

### Benefits to the Network

1. **Network Sustainability**: This mechanism involves temporarily reducing the
   supply of ZEC, similar to asset burning in Ethereum’s EIP-1559 <a id="user-content-fnref-eip-1559"></a>
   [9](#user-content-fn-eip-1559),
   but with long-term sustainability benefits. Unlike a permanent burn, the
   removed funds are intended to be reissued through future block subsidies.

2. **Incentivizing Transaction Inclusion**: By maintaining a 40% share of
   transaction fees for miners, we continue incentivizing miners to prioritize
   including transactions in their blocks. This helps ensure the continued
   efficient processing of transactions and supports a robust and responsive
   network.

3. **Aligning Interests:** Removing transaction fees from circulation aligns the
   interests of miners with the long-term health of the network, incentivizing
   them to prioritize security and efficiency. As miners focus on maintaining a
   robust network, overall adoption and usage can increase, leading to higher
   transaction volumes in the long run. This structure discourages short-term
   profit-seeking behaviors, as miners benefit more from a stable and thriving
   ecosystem than from engaging in malicious activities that could undermine the
   network's reputation and security.

4. **Future-Proofing the Network**: Removing a portion of transaction fees from
   circulation is a forward-looking approach that prepares the Zcash network for
   long-term sustainability. By returning these funds to circulation through
   future block subsidies, the network maintains a viable security budget
   beyond the original issuance schedule.

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

## Privacy Implications

The amount removed from circulation and the miner's fee entitlement are
calculated from already-public transaction fees. These calculations disclose
no additional transaction information.

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

## Requirements

- For each block, 60% (rounded down) of the total fees are to be removed from
  circulation.

- The rule does not require any transaction format change.

- No restrictions are placed on the destination of the remaining proportion of
  fees.

- Any fractions are rounded in favor of the miner.

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

## Specification

<a id="consensus-rule-changes"></a>

### Consensus Rule Changes

For the block at height $\mathsf{height}$, let
$\mathsf{TransactionFees}(\mathsf{height}) \in
\{0\,..\,\mathsf{MAX\_MONEY}\}$ be the total value in zatoshi of the
transaction fees paid by the non-coinbase transactions in the block. Define the
integers $q \in \{0\,..\,210\_000\_000\_000\_000\}$ and
$r \in \{0\,..\,9\}$ by
$q := \mathsf{floor}(\mathsf{TransactionFees}(\mathsf{height}) / 10)$ and
$r := \mathsf{TransactionFees}(\mathsf{height}) \bmod 10$, and then define:

$\mathsf{NSMFeeContribution}(\mathsf{height}) := 6 \cdot q + \mathsf{floor}\!\left(\frac{6 \cdot r}{10}\right)$
$\mathsf{MinerFees}(\mathsf{height}) := \mathsf{TransactionFees}(\mathsf{height}) - \mathsf{NSMFeeContribution}(\mathsf{height})$

$\mathsf{NSMFeeContribution}(\mathsf{height})$ and
$\mathsf{MinerFees}(\mathsf{height})$ are also in
$\{0\,..\,\mathsf{MAX\_MONEY}\}$ and denote integer numbers of zatoshi. This
calculation is exactly equal to
$\mathsf{floor}(6 \cdot \mathsf{TransactionFees}(\mathsf{height}) / 10)$, but
avoids multiplying the aggregate fee value by 6. It uses the aggregate fees of
the block, not the fees of each transaction.

In § 7.1.2 ‘Transaction Consensus Rules’ <a id="user-content-fnref-protocol-txnconsensus"></a>
[10](#user-content-fn-protocol-txnconsensus), change the
definition of the total input value of a coinbase transaction to:

> 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 (pre-NU7) or $\mathsf{MinerFees}(\mathsf{height})$ (NU7 onward),
> plus $\mathsf{totalDeferredInput}(\mathsf{height})$.

The rule that the total output value of a coinbase transaction MUST be equal to
its total input value is unchanged. <a id="user-content-fnref-zip-0236"></a>
[11](#user-content-fn-zip-0236)

$\mathsf{NSMFeeContribution}(\mathsf{height})$ is not produced as an output in
any chain value pool. It is removed from circulation in the block at
$\mathsf{height}$, and is therefore not included in the Issued Supply as
calculated in § 4.17 ‘Chain Value Pool Balances’.
<a id="user-content-fnref-protocol-chainvaluepoolbalances"></a>
[12](#user-content-fn-protocol-chainvaluepoolbalances) If ZIP 237 <a id="user-content-fnref-zip-0237-2"></a>
[7](#user-content-fn-zip-0237) is deployed,
$\mathsf{NSMFeeContribution}(\mathsf{height})$ is included in
$\mathsf{removed}(\mathsf{height})$, and so is credited to the NSM Value Balance.

In § 3.4 ‘Transactions and Treestates’ <a id="user-content-fnref-protocol-transactions"></a>
[13](#user-content-fn-protocol-transactions), replace:

> As in Bitcoin, the remaining value in the transparent transaction value pool
> of a non-coinbase transaction is available to miners as a transaction fee.
> That is, the sum of those values for non-coinbase transactions in each block
> is treated as an implicit input to the transparent transaction value pool
> balance of the block's coinbase transaction (in addition to the implicit
> input created by issuance).

with:

> As in Bitcoin, the remaining value in the transparent transaction value pool
> of a non-coinbase transaction is a transaction fee. The sum of those values
> for non-coinbase transactions in each block (pre-NU7), or
> $\mathsf{MinerFees}(\mathsf{height})$ for the block at height
> $\mathsf{height}$ (NU7 onward), is available to miners: it is treated as an
> implicit input to the transparent transaction value pool balance of the
> block's coinbase transaction (in addition to the implicit input created by
> issuance).

In § 3.10 ‘Block Subsidy, Funding Streams, and Founders' Reward’
<a id="user-content-fnref-protocol-subsidyconcepts"></a>
[14](#user-content-fn-protocol-subsidyconcepts), replace "As in Bitcoin, the miner of a block also
receives transaction fees." with:

> As in Bitcoin, the miner of a block also receives transaction fees (pre-NU7),
> or $\mathsf{MinerFees}(\mathsf{height})$ (NU7 onward).

In § 3.11 ‘Coinbase Transactions’ <a id="user-content-fnref-protocol-coinbasetransactions"></a>
[15](#user-content-fn-protocol-coinbasetransactions), replace
"The purpose of this coinbase transaction is to collect and spend any miner
subsidy, and transaction fees paid by other transactions included in the
block." with:

> The purpose of this coinbase transaction is to collect and spend any miner
> subsidy, and the transaction fees paid by other transactions included in the
> block (pre-NU7) or $\mathsf{MinerFees}(\mathsf{height})$ (NU7 onward).

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

### Applicability

All of these changes apply identically to Mainnet and Testnet.

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

## Rationale

We believe the proposed changes to be relatively low-impact in terms of
implementation and protocol changes. Additionally, transaction fees are
currently small enough that the reduction in miner fees is unlikely to be a
concern.

<a id="rationale-for-a-block-level-rule"></a>

### Rationale for a block-level rule

The amount removed from circulation is a function of the block's fees alone, so
every node calculates it from data that it already validates. The coinbase
transaction does not state the amount, and so no transaction field is needed.
This lets the rule apply to coinbase transactions of every transaction version
that is valid at NU7, and does not require the explicit NSM field of ZIP 233.
<a id="user-content-fnref-zip-0233-2"></a>
[8](#user-content-fn-zip-0233)

Because ZIP 236 <a id="user-content-fnref-zip-0236-2"></a>
[11](#user-content-fn-zip-0236) requires the coinbase transaction to claim its full
total input value, the miner receives exactly $\mathsf{MinerFees}(\mathsf{height})$.
A miner cannot remove less than the required amount by underclaiming, and cannot
claim more than it is entitled to.

The contribution is rounded down once for the whole block. Rounding each
transaction's fee separately would, in aggregate, remove less than 60% of the
fees: for example, two transactions that each pay a fee of 1 zatoshi would each
contribute 0.

<a id="estimated-impact-on-miners"></a>

### Estimated impact on miners

Over 100,000 blocks starting at block 2235515, there were 316130 transactions.
60608 of them are categorized as 'sandblasting' transactions. The remaining
transactions have an average of 5.46 logical actions (see ZIP 317 <a id="user-content-fnref-zip-0317"></a>
[16](#user-content-fn-zip-0317)).

The total fees paid to miners from those transactions, assuming the ZIP 317
regime, would be 87.86 ZEC. These 100,000 blocks were mined at the 75-second
block target spacing and span about 86.8 days. Scaled to a 365.25-day year
(420,768 such blocks), this is about 369.7 ZEC in fees per year.

If 60% of these fees are removed from circulation, that would be about 221.8 ZEC
per year. <a id="user-content-fnref-zsf-fee-estimator"></a>
[17](#user-content-fn-zsf-fee-estimator)

<a id="considerations-for-the-future"></a>

### Considerations for the Future

If transaction fees were to increase, further modifications can easily be
proposed to alter the 60%/40% split. Finding the optimal fee split may require
an iterative approach involving adjustments based on real-world data and network
dynamics.

Looking further into the future, there may come a time when the transaction fees
become greater than the block subsidy issuance. At that time we may need to
reconsider the 60/40 split. However, this will likely not be the case for the
next 8-10 years due to forecasts based on issuance models and network traffic.

Further ZIPs may be proposed to remove ZEC from circulation in various ways to
support network sustainability, including but not limited to:

- ZSA fees

- Fees and donations specific to decentralized applications

- “Storage fees” for any future data availability

- Cross-chain bridge usage / Cross-chain messaging

- Note sorting micro-transactional fees

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

## Deployment

This ZIP is proposed to activate with Network Upgrade 7. <a id="user-content-fnref-zip-0259"></a>
[18](#user-content-fn-zip-0259) It does not
require the activation of ZIP 233 ("NSM: Removing Funds From Circulation" <a id="user-content-fnref-zip-0233-3"></a>
[8](#user-content-fn-zip-0233)).

<a id="reference-implementation"></a>

## Reference implementation

- Zebra: <a id="user-content-fnref-zebra-11487"></a>
  [19](#user-content-fn-zebra-11487) <a id="user-content-fnref-zebra-11530"></a>
  [20](#user-content-fn-zebra-11530)

- Zakura: <a id="user-content-fnref-zakura-1056"></a>
  [21](#user-content-fn-zakura-1056)

<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 2026.8.0 [NU6.3] or later](protocol/protocol.pdf) [↩](#user-content-fnref-protocol)

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

5. [Zcash Protocol Specification, Version 2026.8.0 [NU6.3]. Section 2: Notation](protocol/protocol.pdf#notation) [↩](#user-content-fnref-protocol-notation)

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

7. [ZIP 237: Network Sustainability Mechanism: Halving-Preserving Issuance](/zip/237) [↩](#user-content-fnref-zip-0237) [↩2](#user-content-fnref-zip-0237-2)

8. [ZIP 233: Network Sustainability Mechanism: Removing Funds From Circulation](/zip/233) [↩](#user-content-fnref-zip-0233) [↩2](#user-content-fnref-zip-0233-2) [↩3](#user-content-fnref-zip-0233-3)

9. [EIP-1559: Fee market change for ETH 1.0 chain](https://eips.ethereum.org/EIPS/eip-1559) [↩](#user-content-fnref-eip-1559)

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

11. [ZIP 236: Blocks should balance exactly](/zip/236) [↩](#user-content-fnref-zip-0236) [↩2](#user-content-fnref-zip-0236-2)

12. [Zcash Protocol Specification, Version 2026.8.0 [NU6.3]. Section 4.17: Chain Value Pool Balances](protocol/protocol.pdf#chainvaluepoolbalances) [↩](#user-content-fnref-protocol-chainvaluepoolbalances)

13. [Zcash Protocol Specification, Version 2026.8.0 [NU6.3]. Section 3.4: Transactions and Treestates](protocol/protocol.pdf#transactions) [↩](#user-content-fnref-protocol-transactions)

14. [Zcash Protocol Specification, Version 2026.8.0 [NU6.3]. Section 3.10: Block Subsidy, Funding Streams, and Founders' Reward](protocol/protocol.pdf#subsidyconcepts) [↩](#user-content-fnref-protocol-subsidyconcepts)

15. [Zcash Protocol Specification, Version 2026.8.0 [NU6.3]. Section 3.11: Coinbase Transactions](protocol/protocol.pdf#coinbasetransactions) [↩](#user-content-fnref-protocol-coinbasetransactions)

16. [ZIP 317: Proportional Transfer Fee Mechanism](/zip/317) [↩](#user-content-fnref-zip-0317)

17. [GitHub repository eigerco/zsf-fee-estimator](https://github.com/eigerco/zsf-fee-estimator) [↩](#user-content-fnref-zsf-fee-estimator)

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

19. [Zebra PR 11487: feat(chain, state, rpc): remove 60% of transaction fees from NU7 (ZIP 235)](https://github.com/ZcashFoundation/zebra/pull/11487) [↩](#user-content-fnref-zebra-11487)

20. [Zebra PR 11530: feat(nsm)!: enable merged issuance and fee accounting](https://github.com/ZcashFoundation/zebra/pull/11530) [↩](#user-content-fnref-zebra-11530)

21. [Zakura PR 1056: feat(consensus): recycle NU7 transaction fees into NSM](https://github.com/zakura-core/zakura/pull/1056) [↩](#user-content-fnref-zakura-1056)

## Citation relationships

Cites: [ZIP 200](https://zip-tools-web.harpocrates.workers.dev/zip/200), [ZIP 233](https://zip-tools-web.harpocrates.workers.dev/zip/233), [ZIP 236](https://zip-tools-web.harpocrates.workers.dev/zip/236), [ZIP 237](https://zip-tools-web.harpocrates.workers.dev/zip/237), [ZIP 259](https://zip-tools-web.harpocrates.workers.dev/zip/259), [ZIP 317](https://zip-tools-web.harpocrates.workers.dev/zip/317)

Cited by: [ZIP 230](https://zip-tools-web.harpocrates.workers.dev/zip/230), [ZIP 233](https://zip-tools-web.harpocrates.workers.dev/zip/233), [ZIP 237](https://zip-tools-web.harpocrates.workers.dev/zip/237), [ZIP 259](https://zip-tools-web.harpocrates.workers.dev/zip/259), [ZIP 315](https://zip-tools-web.harpocrates.workers.dev/zip/315), [ZIP 2009](https://zip-tools-web.harpocrates.workers.dev/zip/2009)