Approximate activation October 7, 2021
What is NU5?
NU5 is the sixth major network upgrade for Zcash and a component of the Halo Arc product suite release. The testnet will be activated on approximately October 7, 2021 at block height 1,599,200.
NU5 represents the continued evolution of our zk-SNARK technology stack and will move Zcash to the Halo proving system, removing the need for the trusted setup and upgrading the protocol’s underlying cryptography.
Naming convention for this and future Zcash network upgrades has shifted from a theme-based alias, like Canopy and Sapling, to a simple number system. This is meant to provide clarity and consistency moving forward.
NU5 will create a new version of Zcashd, the consensus node for Zcash. This will include support for:
ZIP 216: Require Canonical Jubjub Point Encodings
Fixes an oversight in the implementation of the Sapling consensus rules, by rejecting all non-canonical representations of Jubjub points.
ZIP 224: Orchard Shielded Protocol
NU5 introduces a new shielded pool with spending keys and payment addresses that are amenable to future scalability improvements. New pools with separate privacy sets are instituted at major network upgrades to increase security of the monetary base.
This proposal defines an update to the Zcash peer-to-peer transaction format to include support for data elements required to support the Orchard protocol. The new transaction format defines well-bounded regions of the serialized form to serve each of the existing pools of funds, and adds and describes a new region containing Orchard-specific elements.
ZIP 239: Relay of Version 5 Transactions
This proposal alters the peer-to-peer network protocol, adding a new inv message type which must be used for advertising V5 transactions. This ensures that network nodes cannot perform a denial-of-service attack on wallets that are submitting V5 transactions to the mempool.
ZIP 244: Non-malleable transaction IDs
Among other benefits, this update defines a new transaction digest algorithm for the NU5 network upgrade onward, in order to introduce non-malleable transaction identifiers that commit to all transaction data except for attestations to transaction validity.
ZIP 316: Unified addresses
The unified address (UA) is a future-proof Zcash address format that improves usability, increases the ease of interoperability, and supports shielding Zcash by default. UAs make Zcash easier to use by removing the complexity of multiple address types. This simplifies the user experience and increases interoperability between shielded-only applications and transparent-only applications.
The following ZIPs have been updated to reflect support for NU5 including the Orchard protocol and new transaction format:
ZIP 32: Shielded Hierarchical Deterministic Wallets
ZIP 203: Transaction Expiry
ZIP 209: Prohibit Negative Shielded Chain Value Pool Balances
ZIP 212: Allow Recipient to Derive Ephemeral Secret from Note Plaintext
ZIP 213: Shielded Coinbase
ZIP 221: FlyClient – Consensus-Layer Changes
Consensus Branch ID
The Consensus Branch ID constant is changing for NU5, consistent with the Network Upgrade Mechanism process outlined in ZIP 200. The new constant is
Version Group ID
Unlike Blossom, Heartwood, and Canopy, and like Overwinter and Sapling, NU5 defines a new transaction version. Therefore, NU5 transactions may be in the new v5 format specified by ZIP 225. Unlike previous transaction version updates, the existing v4 transaction format remains valid after NU5 activation. If the transaction version number is 4 then the version group ID must be
0x892F2085. If the transaction version number is 5 then the version group ID must be
How do I upgrade?
If you are unsure about how to upgrade your node, don’t worry! The Zcash Full Node and CLI user guide has comprehensive sections on upgrading nodes, whether they were installed from source code or the Debian package. A careful read of this guide should answer most upgrade-related questions.
Note for ASIC Miners
ASIC miners do not verify consensus rules, and NU5 does not alter the block header, so there’s no specific upgrade action needed on their part. They rely on the mining pool they’re connecting to and should verify the pool has upgraded if not identified in the list below.