ZIP: 235
Title: Remove 60% of Transaction Fees From Circulation
Owners: Jason McGee <[email protected]>
Zooko Wilcox <[email protected]>
Mark Henderson <[email protected]>
Tomek Piotrowski <[email protected]>
Mariusz Pilarek <[email protected]>
Paul Dann <[email protected]>
Original-Authors: Nathan Wilcox
Credits:
Status: Draft
Category: Consensus / Ecosystem
Created: 2023-09-21
License: BSD-2-Clause
Discussions-To: <https://github.com/zcash/zips/issues/924>
The key word “MUST” in this document is to be interpreted as described in BCP 14 1 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. 2
The character § is used when referring to sections of the Zcash Protocol Specification. 3
The terms “Mainnet” and “Testnet” are to be interpreted as described in § 3.12 ‘Mainnet and Testnet’. 4
The symbol “\(\,\cdot\,\)” means multiplication, as described in § 2 ‘Notation’. 5
“ZEC/TAZ” refers to the native currency of Zcash on a given network, i.e. ZEC on Mainnet and TAZ on Testnet.
The terms “Block Subsidy” and “Issuance” are to be interpreted as described in ZIP 233. 6
“NSM Value Balance” is to be interpreted as defined in ZIP 237. 7
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.
ZIP 233 (“Network Sustainability Mechanism: Removing Funds From Circulation” 6) 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:
For the block at height \(\mathsf{height}\kern-0.05em\textsf{,}\) let \(\mathsf{TransactionFees}(\mathsf{height})\) be the total value in zatoshi of the transaction fees paid by the non-coinbase transactions in the block. Define:
\[\mathsf{NSMFeeContribution}(\mathsf{height}) := \mathsf{floor}\!\left(\frac{6 \cdot \mathsf{TransactionFees}(\mathsf{height})}{10}\right)\]
\[\mathsf{MinerFees}(\mathsf{height}) := \mathsf{TransactionFees}(\mathsf{height}) - \mathsf{NSMFeeContribution}(\mathsf{height})\]
The calculation uses the aggregate fees of the block, not the fees of each transaction.
In § 7.1.2 ‘Transaction Consensus Rules’ 9, 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})\kern-0.05em\textsf{.}\)
The rule that the total output value of a coinbase transaction MUST be equal to its total input value is unchanged. 10
\(\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}\kern-0.05em\textsf{,}\) and is therefore not included in the Issued Supply as calculated in § 4.17 ‘Chain Value Pool Balances’. 11 If ZIP 237 7 is deployed, \(\mathsf{NSMFeeContribution}(\mathsf{height})\) is included in \(\mathsf{removed}(\mathsf{height})\kern-0.05em\textsf{,}\) and so is credited to the NSM Value Balance.
All of these changes apply identically to Mainnet and Testnet.
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.
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. 6
Because ZIP 236 10 requires the coinbase transaction to claim its full total input value, the miner receives exactly \(\mathsf{MinerFees}(\mathsf{height})\kern-0.05em\textsf{.}\) 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.
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 12).
The total fees paid to miners from those transactions, assuming the ZIP 317 regime, would be 87.86 ZEC. 100,000 blocks is approximately 3 months of blocks. Extrapolating to a year, we would expect 351.44 ZEC in fees paid to miners over a year.
If 60% of these fees are removed from circulation, that would be 210.864 ZEC per year. 13
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:
This ZIP is proposed to activate with Network Upgrade 7. 14 It does not require the activation of ZIP 233 (“NSM: Removing Funds From Circulation” 6).
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” ↩︎
Zcash Protocol Specification, Version 2026.8.0 [NU6.3] or later ↩︎
Zcash Protocol Specification, Version 2026.8.0 [NU6.3]. Section 3.12: Mainnet and Testnet ↩︎
Zcash Protocol Specification, Version 2026.8.0 [NU6.3]. Section 2: Notation ↩︎
ZIP 233: Network Sustainability Mechanism: Removing Funds From Circulation ↩︎
ZIP 237: Network Sustainability Mechanism: Halving-Preserving Issuance ↩︎
Zcash Protocol Specification, Version 2026.8.0 [NU6.3]. Section 7.1.2: Transaction Consensus Rules ↩︎
Zcash Protocol Specification, Version 2026.8.0 [NU6.3]. Section 4.17: Chain Value Pool Balances ↩︎