protocol
Zcash NU7 freezes the Sprout pool at block 3,543,405, stranding 12,226 ZEC
ZIP 2003 ships with NU7, rejecting the version-4 transactions that are the only way to spend from Zcash's original Sprout privacy pool. About $16M in ZEC becomes unspendable.
Zcash's NU7 upgrade activates at block 3,543,405 with ZIP 2003, which rejects the version-4 transaction format — the only format that can spend from Sprout, Zcash's original shielded pool. At the Nov 5 05:24 UTC chain tip of 3,542,391, activation was estimated for roughly 21:30 ET Thursday, slipping into early Asian hours if block discovery runs slow.
The ZIP 2003 draft is tracked in the Zcash improvement-proposal repository (zcash/zips); reporting by CoinDesk's "Zcash is about to freeze $16 million in its oldest privacy pool" and Crypto Briefing confirms the block height and transaction-version mechanism.
What NU7 does to Sprout
Sprout launched with Zcash in October 2016 and uses a first-generation zero-knowledge construction that the network has been migrating off since 2018. After NU7, any transaction trying to spend a Sprout note must be built as a v4 — and v4 is rejected at the consensus layer. The coins stay in Zcash's issued supply; private keys still exist; the funds simply can't move.
ZIP 2003 leaves room for a future upgrade to restore access but explicitly warns spending may never be re-enabled. That's a hard-coded design choice, not a UX accident.
Numbers block
- Sprout balance at Nov 5 morning: ~12,226 ZEC (CoinDesk)
- Sprout balance a week earlier: ~22,263 ZEC
- Largest recent exit: ~9,094 ZEC moved Sunday, Nov 2
- Wednesday Nov 4 exits: 40 ZEC
- ZEC reference price (CoinDesk): ~$1,300
- Dollar value frozen at the reference price: ~$15.9M
- Activation block: 3,543,405
- Governing proposal: ZIP 2003
- Software path: NU7 release (bundled with 25-second target block time)
The USD figure drifts with ZEC price and any last-minute withdrawals before activation. The hard quantity is the ZEC left in Sprout at the activation block — that's the amount that becomes unspendable.
What else NU7 ships
The same upgrade cuts Zcash's target block time from 75 seconds to 25 seconds, roughly tripling confirmation throughput. That change has shipped through the Zebra 4.5.0 testnet and mainnet milestones we covered previously (zcash-nu7-25-second-blocks-testnet-november-mainnet). The block-time change and the Sprout freeze are bundled in the same network upgrade; a node that accepts NU7 accepts both.
Who's exposed
The pool is public but the owners aren't: Sprout addresses (prefixed zc…) hide senders, recipients and amounts. The on-chain Sprout balance can't tell you how much belongs to lost-key wallets versus active holders who haven't migrated. The late-week drain — roughly 10,000 ZEC leaving in the week before activation, most of it Sunday — suggests at least some holders are still around and have functioning keys.
Anything left after block 3,543,405 is stuck under current consensus rules.
What to watch
- Final Sprout balance at the activation block, recorded on explorers (
explorer.zcha.inand the Zcash node RPC). - Whether a post-NU7 ZIP proposes a one-time recovery migration into a current shielded pool; ZIP 2003 anticipates but does not provide one.
- Reorg behavior around activation: with target block time dropping from 75 to 25 seconds in the same upgrade, nodes need to agree on both rule sets atomically.
- Whether the public Sprout balance stabilizes or shows post-activation drift (consensus rejection of v4 should hold it flat).
Context
Zcash has retired older cryptographic constructions before — Overwinter (2018), Sapling (2018) and Blossom (2019) each reshaped the shielded-pool rules. ZIP 2003 is the first hard freeze: not a deprecation, a cut-off. The rationale in ZIP 2003 is the same each time: keeping a deprecated transaction format alive carries ongoing cost in the verification code, and the verifier is where security bugs hide. Precedent on this site: our NU6-2 Orchard emergency hard-fork post (zcash-orchard-nu6-2-emergency-hardfork) covers the kind of soundness failure that tends to live in older shielded code.