Zcash’s newest shielded pool, Orchard, proves transaction validity with a zero-knowledge circuit (Halo 2). On 29 May 2026, security researcher Taylor Hornby — working on an audit for Shielded Labs, and notably with the help of an AI model — found that the verifier would accept Orchard proofs of a non-canonical size. That gap (tracked as advisory GHSA-jfw5-j458-pfv6) was enough to forge a valid-looking proof and, in a local test, generate unlimited, undetectable counterfeit ZEC inside the pool. The flaw had been latent since Orchard activated in 2022.
The response was a rare two-step emergency upgrade:
3,363,426, 2 June).3,364,600, 3 June). A hard fork was unavoidable because fixing a circuit means changing the verifying key.The Zcash Foundation reported no evidence of exploitation and no impact on user privacy, though it’s candid that — by the very nature of a shielded pool — counterfeiting can’t be cryptographically ruled out after the fact. Sources: Zcash Foundation, Cointelegraph, The Block.
Make sure you’re on the fixed software and following the post-fork chain — otherwise you’re stranded on a dead pre-NU6.2 fork:
zcashd/wallet build that activates NU6.2).active at height 3,364,600 and your tip matches a public explorer. With Zebra: getblockchaininfo → upgrades → NU6.2: active.This is the part that matters if you accept privacy-coin payments. Private Watch detects incoming payments using your read-only view key (a Zcash Unified Full Viewing Key, or a Monero secret view key). Two reasons the Orchard bug doesn’t touch that:
In other words: the mechanism Private Watch sells — “hold a read-only key, get a signed webhook when money lands, never touch a spend key” — sat behind the same confirmation discipline that protects you here. Nothing about it needed to change.
The Orchard bug belongs to a recurring privacy-coin failure mode: a verifier accepting a non-canonical encoding. Monero uses different cryptography (RingCT: CLSAG ring signatures + Bulletproofs+ range proofs, not Halo 2), so this exact bug can’t exist there — but the class absolutely has precedent:
The lesson for anyone receiving privacy-coin payments is the same regardless of chain: run patched nodes, and don’t consider a payment final until it has the confirmations you require.
Private Watch is a payment-webhook service for Monero and Zcash. You give us a receiving address and its read-only view key; we watch the chain on our own full nodes and POST you a signed (HMAC-SHA256) webhook when a payment lands and clears your confirmation threshold. No spend key ever leaves your hands, and you don’t have to run a node.
api.seneschal.space/v1/private/info