ZIP: 259
Title: Deployment of the NU7 Network Upgrade
Owners: Dev Ojha <[email protected]>
Status: Draft
Category: Consensus / Network
Created: 2026-09-15
License: MIT
Discussions-To: <https://forum.zcashcommunity.com/t/nu7-coinholder-vote/56912>
The key words “MUST” and “MUST NOT” in this document are to be interpreted as described in BCP 14 1 when, and only when, they appear in all capitals.
The term “network upgrade” 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
“ZEC/TAZ” refers to the native currency of Zcash on a given network: ZEC on Mainnet and TAZ on Testnet.
\(\mathsf{MAX\_MONEY}\kern-0.05em\textsf{,}\) as defined in § 5.3 ‘Constants’, is the maximum permitted ZEC/TAZ supply measured in zatoshi. 5
“Issued Supply” at a given height means the sum of all chain value pool balances at that height, as calculated in § 4.17 ‘Chain Value Pool Balances’. 6
“Scheduled Block Subsidy” means the block subsidy determined by the existing halving schedule, after applying the changes in ZIP 218. 7
“NSM reserve” means a consensus-tracked balance of ZEC/TAZ removed from circulation by the Network Sustainability Mechanism (NSM). The NSM reserve is not a spendable chain value pool and is not included in Issued Supply.
This proposal defines the deployment of the NU7 network upgrade. NU7 reduces the block target spacing from 75 seconds to 25 seconds and introduces per-pool and global shielded action limits, as specified in ZIP 218. It also deploys ZIP 237:
NU7 introduces no new transaction format. Once NU7 activates, version 4 transactions are invalid, while version 5 and version 6 transactions remain valid. Because Sprout transfers can only be represented by version 4 transactions, funds remaining in the Sprout pool become unspendable. 8
The changes do not increase the ZEC supply cap. Funds paid from the NSM reserve were previously removed from circulation in equal amount. The reserve is public consensus state and introduces no new transaction-level data.
NU7 is deliberately limited to changes that have strong support from coinholders, developers, and major ecosystem organizations. These changes can be deployed without another transaction-format migration. Faster blocks reduce confirmation latency, while the action limits in ZIP 218 bound the validation and shielded synchronization costs enabled by the increased block frequency.
The primary sources of information about NU7 consensus protocol changes are:
The network handshake and peer management mechanisms defined in ZIP 201 also apply to this upgrade. 10
NU7 deploys all of the consensus changes specified in ZIP 218. The NSM and transaction-version changes are specified below. Where those changes conflict with ZIP 234 or ZIP 235 as currently written, this ZIP takes precedence for NU7. 11 12
The NU7 upgrade does not follow 2’s guidance that network upgrades should be scheduled after the last supporting node on the network’s end of support halt.
The following network upgrade constants are defined for NU7: 2
0x77190AD9For each network, nodes compatible with NU7 activation on that network MUST advertise a network protocol version greater than or equal to the corresponding MIN_NETWORK_PROTOCOL_VERSION.
Before NU7 activates on a network, NU7 and pre-NU7 nodes can connect to each other. NU7 nodes will prefer other NU7 nodes, so pre-NU7 nodes will gradually be disconnected approaching activation.
Once NU7 activates, NU7 nodes will disconnect peers that advertise a lower network protocol version. Blocks produced under the pre-NU7 consensus rules may also be rejected because of the new target spacing, subsidy calculation, action limits, fee allocation, or transaction-version rule.
Version 5 and version 6 transactions remain structurally unchanged. This does not imply that a transaction is valid across NU7 activation, because its signatures commit to a consensus branch ID.
The August and September 2026 NU7 polls asked five scope questions: whether to preserve halvings or smooth issuance; when NSM reissuance should begin; when version 4 transactions should be disabled; whether to deploy ZIP 218; and whether to ship promptly with only features ready by the September 30 deadline. The poll announcement records the complete questions and response options. 13
The coinholder and community poll results are available at 14.
The polls did not reach a shared majority position on when NSM reissuance should begin. NU7 selects February 2031, the more conservative of the proposed start dates.
The following calculation is intended to move to ZIP 237. Under a continued 75-second block schedule, the proposed NSM subsidy fraction of the prior reserve is \(f_{75} = 4126 / 10^{10} = 0.0000004126\) per block. The proposed 25-second fraction is \(f_{25} = 1375 / 10^{10} = 0.0000001375\) per block.
| Network | Third halving (\(H_3\kern-0.15em\) ) | 75–second crossover (\(C_{75}\kern-0.15em\) ) |
|---|---|---|
| Mainnet | 4,406,400 | 5,342,746 |
| Testnet | 4,476,000 | 5,412,346 |
The first eligible block is \(H_3 + 1\kern-0.05em\textsf{;}\) the crossover occurs 936,345 blocks later, when the reference NSM subsidy first falls below the scheduled subsidy of 78,125,000 zatoshi. These heights assume that blocks remain 75 seconds apart; they are not assigned deployment heights.
The proposed 25-second calculation uses the actual ZIP 218 halving schedule. Let \(A\) be the assigned NU7 activation height, and let \(H_3^{(25)}\) and \(H_4^{(25)}\) be the third and fourth halving heights under that schedule. Let \(S(h)\) be cumulative scheduled issuance through height \(h\kern-0.05em\textsf{,}\) excluding NSM reissuance and amounts removed from circulation, and let \(B(h)\) be the scheduled block subsidy. The reissuance height is the first \(h\) satisfying \(\max(H_3^{(25)} + 1, A) \le h < H_4^{(25)}\) and \(\lceil 1375(\mathsf{MAX\_MONEY} - S(h - 1)) / 10^{10} \rceil < B(h)\kern-0.05em\textsf{.}\) This applies the 25-second fraction and integer rounding directly.
The subsidy is constant between the third and fourth halvings, so the crossing can also be calculated without checking every block. If \(h_0 = \max(H_3^{(25)} + 1, A) < H_4^{(25)}\kern-0.05em\textsf{,}\) set \(b = B(h_0)\kern-0.05em\textsf{,}\) \(R_0 = \max(0, \mathsf{MAX\_MONEY} - S(h_0 - 1))\kern-0.05em\textsf{,}\) and \(R_{\max} = \lfloor (b - 1)10^{10} / 1375 \rfloor\kern-0.05em\textsf{.}\) Then the candidate height is \(h_0 + \lceil \max(0, R_0 - R_{\max}) / b \rceil\kern-0.05em\textsf{,}\) provided it precedes \(H_4^{(25)}\kern-0.05em\textsf{.}\) 15
For a rough timing check, converting the remaining 75-second interval to 25-second blocks gives \(C_{25}^{\mathrm{estimate}} = A + 3(C_{75} - A)\) when \(A < C_{75}\kern-0.05em\textsf{.}\) The Mainnet estimate is \(16{,}028{,}238 - 2A_{\mathrm{Mainnet}}\kern-0.05em\textsf{;}\) the Testnet estimate is \(16{,}237{,}038 - 2A_{\mathrm{Testnet}}\kern-0.05em\textsf{.}\) This estimate does not select the consensus height. For an illustrative, unassigned Mainnet NU7 height of 3,543,000, Zakura PR #1082 calculates an exact crossover of 8,940,474, while the time-equivalent estimate is 8,942,238. 15
Avoiding a new format limits parser and wallet disruption in the upgrade immediately following the introduction of version 6 in NU6.3. 16 The fee contribution is a block-level consensus calculation and therefore does not require a new field in ordinary or coinbase transactions.
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 5.3: Constants ↩︎
Zcash Protocol Specification, Version 2026.8.0 [NU6.3]. Section 4.17: Chain Value Pool Balances ↩︎
zip-0237 ↩︎
ZIP 234: Network Sustainability Mechanism: Issuance Smoothing ↩︎
Zakura PR #1082: Derive NSM activation from the NU7 crossover ↩︎