ZIP: 233
Title: Network Sustainability Mechanism: Burning
Owners: Jason McGee <jason@shieldedlabs.net>
Zooko Wilcox <zooko@shieldedlabs.net>
Tomek Piotrowski <tomek@eiger.co>
Mariusz Pilarek <mariusz@eiger.co>
Paul Dann <paul@eiger.co>
Original-Authors: Nathan Wilcox
Credits:
Status: Draft
Category: Consensus / Ecosystem
Created: 2023-08-16
License: BSD-2-Clause
Discussions-To: <https://github.com/zcash/zips/issues/922>
The key words “MUST”, “SHOULD”, “SHOULD NOT”, “MAY”, “RECOMMENDED”, “OPTIONAL”, and “REQUIRED” in this document are to be interpreted as described in RFC 2119. [1]
The term “network upgrade” in this document is to be interpreted as described in ZIP 200. [2]
“Block Subsidy” - the algorithmic issuance of ZEC on block creation. Part of the consensus rules. Split between the miner and the Dev Fund. Also known as Block Reward.
“Issuance” - The method by which ZEC becomes available for circulation on the network.
“We” - the ZIP Owners and Authors, listed in the above front matter.
“MAX_MONEY
” is the total ZEC supply cap, defined as
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.
We propose the introduction of a mechanism to voluntarily burn funds, removing those funds entirely from circulation on the network. This mechanism, in combination with ZIPs 234 and 235, 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”.
This mechanism seeks to address concerns about the sustainability of the network design shared by Bitcoin-like systems:
MAX_MONEY
. This lays necessary
groundwork for extending the miner reward system, which currently has a
clear final end date.The modifications required are:
The following field is added to the v6 transaction format [3]:
Bytes | Name | Data Type | Description |
---|---|---|---|
8 | burnAmount |
uint64 |
The amount of input value to be burned, in zatoshis. |
Note: 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.
The burned value must now be considered when calculating the total output value of a transaction. It should be treated similarly to a transparent output, except that there is no way for this value to be used as an input in a future transaction.
The transaction digest algorithm defined in ZIP 244 [4] is to be modified for v6 transactions as follows:
Section T.1: header_digest [5] is specified in draft-txv6-sighash [6] to read:
A BLAKE2b-256 hash of the following values:
T.1a: version (4-byte little-endian version identifier including ``fOverwintered`` flag) T.1b: version_group_id (4-byte little-endian version group identifier) T.1c: consensus_branch_id (4-byte little-endian consensus branch id) T.1d: lock_time (4-byte little-endian ``nLockTime`` value) T.1e: expiry_height (4-byte little-endian block height) T.1f: burn_amount (8-byte little-endian burn amount value)
The personalization field of this hash is set to:
ZTxIdHeadersHash
All technical decisions in this ZIP are balanced between the necessary robustness of the NSM mechanics, and simplicity of implementation.
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.
This ZIP is proposed to activate with Network Upgrade 7.
[1]: Key words for use in RFCs to Indicate Requirement Levels
[2]: ZIP 200: Network Upgrade Mechanism
[3]: ZIP 230: Version 6 Transaction Format
[4]: ZIP 244: Transaction Identifier Non-Malleability
[5]: ZIP 244: Transaction Identifier Non-Malleability. Section T.1: Header Digest
[6]: Draft Tx v6 Sighash