|
| 1 | + |
| 2 | + ZIP: 1 |
| 3 | + Title: Network Upgrade Policy and Scheduling |
| 4 | + Owners: Kris Nuttycombe <kris@nutty.land> |
| 5 | + Daira-Emma Hopwood <daira-emma@electriccoin.co> |
| 6 | + Status: Draft |
| 7 | + Category: Process |
| 8 | + Created: 2025-08-25 |
| 9 | + License: MIT |
| 10 | + Discussions-To: <https://github.com/zcash/zips/issues/343> |
| 11 | + |
| 12 | + |
| 13 | +# Terminology |
| 14 | + |
| 15 | +The key words "MUST", "REQUIRED", "MUST NOT", "SHOULD", and "MAY" in this |
| 16 | +document are to be interpreted as described in BCP 14 [^BCP14] when, and |
| 17 | +only when, they appear in all capitals. |
| 18 | + |
| 19 | +The terms "Mainnet" and "Testnet" in this document are to be interpreted as |
| 20 | +defined in the Zcash protocol specification [^protocol-networks]. |
| 21 | + |
| 22 | + |
| 23 | +# Abstract |
| 24 | + |
| 25 | +This document aims to describe the process of preparing and executing a |
| 26 | +Zcash Network Upgrade, including: |
| 27 | + |
| 28 | +- The interaction of EoS halts with the release of NU-supporting software. |
| 29 | + - When must nodes halt by that do not support an upcoming NU? |
| 30 | +- How NU activation heights are chosen, and the point at which they're made |
| 31 | + public in sw releases. |
| 32 | +- The minimum time that the ecosystem needs to have to upgrade to an |
| 33 | + NU-supporting release. |
| 34 | +- Audit requirements for upgrades. |
| 35 | +- Boilerplate requirements: |
| 36 | + - activation ZIP |
| 37 | + - consensus branch ID (partially covered by ZIP 200) |
| 38 | + - version group ID if needed |
| 39 | + - protocol spec changes |
| 40 | + - differences between Testnet and Mainnet |
| 41 | + - peer protocol versions |
| 42 | +- ZIP Editors' responsibilities for an NU |
| 43 | +- Governance issues |
| 44 | +- What happens if there is a security issue or other problem that necessitates a change |
| 45 | + to the NU-supporting release? |
| 46 | + - before Testnet activation |
| 47 | + - after Testnet activation & before release of node s/w that sets the Mainnet activation height |
| 48 | + - after the release of node s/w that sets the Mainnet activation height & before Mainnet activation |
| 49 | + - after Mainnet activation |
| 50 | + |
| 51 | + |
| 52 | +# Motivation |
| 53 | + |
| 54 | +The Zcash network performs hard-forking upgrades following the full node coordination mechanism specified in ZIP 200 [^zip-0200] when changes are made to the consensus rules. In order for the network to continue operating without interruption at network upgrade boundaries, node implementers must coordinate in order to ensure that the nodes that are active on the network at the time of such an upgrade are all running compatible software. |
| 55 | + |
| 56 | +Various documents have been written in the past that attempted to provide frameworks or documentation for the network upgrade process at an "engineers working on the Zcash protocol" level: |
| 57 | + |
| 58 | +- [Network Upgrade Pipeline 1.0](https://electriccoin.co/blog/the-zcash-network-upgrade-pipeline/) |
| 59 | +- Network Upgrade Pipeline 1.1 |
| 60 | +- [Network Upgrade Pipeline 1.2](https://docs.google.com/drawings/d/1WAvIkVBv_fC4L4wDoAJaMTYVh3dJbwhR5YuP5HgOjFw/edit) |
| 61 | + - This was followed for NU3 and NU4. |
| 62 | +- [Network Upgrade Pipeline 2.0](https://electriccoin.co/blog/network-upgrade-pipeline-2-0/) |
| 63 | + - This was followed for NU5 and (to some extent) NU6. |
| 64 | +- [Deadlines for ZIPs that want to be activated in NU7](https://forum.zcashcommunity.com/t/important-deadline-for-zips-that-want-to-be-activated-in-nu7/48998) |
| 65 | + |
| 66 | +These past attempts have suffered from several issues: |
| 67 | +- They were designed and used at a time when there was either one single feature being deployed in a network upgrade, or one single entity (usually the Electric Coin Company) developing all the NU's features. As such, and despite best efforts, they were ntot well-suited for parallelization. |
| 68 | +- TODO: Document other issues from past attempts that this ZIP is trying to solve. |
| 69 | + |
| 70 | +By following the steps specified by this ZIP, and ensuring that the required timelines are adhered to by node implementers, the Zcash network can maintain uninterrupted continuity of service. |
| 71 | + |
| 72 | + |
| 73 | + |
| 74 | +# Requirements |
| 75 | + |
| 76 | + |
| 77 | + |
| 78 | +# Non-requirements |
| 79 | + |
| 80 | + |
| 81 | + |
| 82 | +# Specification |
| 83 | + |
| 84 | +## End-Of-Service Halts |
| 85 | + |
| 86 | +Prior to a network upgrade, all nodes that do not support the network upgrade MUST have reached their end-of-service halt height at least 16384 blocks prior to the network upgrade's ac |
| 87 | +ho do not upgrade their node software until the end-of-service halt occurs have ample ivation height. This ensures that entities w |
| 88 | + |
| 89 | +## Timeline |
| 90 | + |
| 91 | +### Research and Development |
| 92 | + |
| 93 | +### ZIP Review |
| 94 | + |
| 95 | +### Specification |
| 96 | + |
| 97 | +### Auditing |
| 98 | + |
| 99 | +#### Auditor selection |
| 100 | + |
| 101 | +#### Specification auditing |
| 102 | + |
| 103 | +#### Implementation auditing |
| 104 | + |
| 105 | +### Testing |
| 106 | + |
| 107 | +### Partner adoptio |
| 108 | + |
| 109 | +# Reference implementation |
| 110 | + |
| 111 | + |
| 112 | + |
| 113 | +# References |
| 114 | + |
| 115 | +[^BCP14]: [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) |
| 116 | + |
| 117 | +[^protocol]: [Zcash Protocol Specification, Version 2024.5.1 or later](protocol/protocol.pdf) |
| 118 | + |
| 119 | +[^protocol-networks]: [Zcash Protocol Specification, Version 2024.5.1. Section 3.12: Mainnet and Testnet](protocol/protocol.pdf#networks) |
| 120 | + |
| 121 | +[^zip-0000]: [ZIP 0: ZIP Process](zip-0000.rst) |
| 122 | + |
| 123 | +[^zip-0200]: [ZIP 200: Network Upgrade Mechanism](zip-0200.rst) |
| 124 | + |
| 125 | +[^zip-0201]: [ZIP 201: Network Peer Management for Overwinter](zip-0201.rst) |
0 commit comments