By: Zooko Wilcox [*], Daira-Emma Hopwood [†], Jack “str4d” Grigg [†] , Judah Caruso [*], Jason McGee [*], and Josh Swihart [†]
[*] Shielded Labs, [†] Zcash Open Development Lab
Key Points
-
A vulnerability in zcashd caused nodes to skip Sprout proof verification when processing new blocks.
-
The bug was not exploited. All users’ funds, including those in the Sprout pool, are safe.
-
The bug could have only affected the deprecated Sprout pool, containing around 25k ZEC. Zcash’s turnstile mechanism would have prevented any inflation of the ZEC supply, which currently stands at around 16,630k ZEC.
-
User privacy was not at risk.
-
The vulnerability was responsibly disclosed by security researcher Alex “Scalar” Sol on March 23, 2026. A patch was developed by engineers at Zcash Open Development Lab (ZODL) and deployed by all major mining pools within three days.
-
Zebra, the full node implementation developed by the Zcash Foundation, was not affected and would have triggered a chain fork if exploitation had been attempted.
Summary
Security researcher Alex “Scalar” Sol identified a vulnerability in zcashd that could have allowed invalid transactions introduced by a miner to be accepted under certain conditions, potentially draining user funds from the old, deprecated Sprout pool. The vulnerability had no impact on user privacy.
Protocol engineers from Zcash Open Development Lab (ZODL) developed a fix for the bug, which has been deployed by mining pools that comprise a supermajority of the hash power.
The bug was not exploited, and all user funds, including those held in the Sprout pool, are safe. You can verify this by running Zebra or the latest release of zcashd (v6.12.0). Each of those implementations verifies that only valid transactions have been added to the Zcash blockchain, proving that the bug was not exploited before the fix was deployed by mining pools.
The vulnerability was reported privately and handled through coordinated disclosure by Shielded Labs and ZODL engineers, in coordination with mining pools.
Importantly, this bug, and bugs like this one, could not have been used to inflate the overall supply of ZEC. Zcash implements “turnstiles” between value pools (the transparent pool; the old, deprecated Sprout pool; the Sapling pool; and the current Orchard pool), which serve as “blast doors,” limiting the blast radius of a potential exploit. The Sprout turnstile limits the amount of ZEC that can be withdrawn from the Sprout pool, preventing inflation of the total supply of ZEC and protecting users who store their ZEC in other value pools from being affected by this bug or similar bugs.
This bug could not have been used to violate Zcash users’ privacy. Zcash user privacy is protected by end-to-end encryption between the user’s wallets, and the behavior of the Zcash miners and full nodes —even if there is a bug in their code— cannot violate user privacy.
The Zebra full node implementation, written and maintained by the Zcash Foundation, has been live on the Zcash Mainnet since July 2023. Zebra never had this vulnerability, and if there had been an attempt to exploit it, Zebra would have created a chain fork of the Zcash blockchain that contained only valid transactions.
Background
Sprout was the original shielded pool. It went live with the launch of Zcash in October 2016. The improved Sapling pool was added in October of 2018, and Sprout was deprecated by ZIP 211 in November of 2020.
A previous vulnerability that could have affected Sprout users, which stemmed from an error in a pre-Zcash cryptography paper, was discovered and fixed in 2018.
It is not possible to deposit funds into the Sprout pool. No wallets currently support creating new Sprout transactions, except to withdraw existing funds from Sprout to other pools using the zcashd internal wallet.
As of this writing, the Sprout pool holds approximately 25,424 ZEC.
Third Party Disclosure
Alex “Scalar” Sol reported the issue to Shielded Labs on March 23, 2026.
Following receipt of the report, Shielded Labs coordinated with ZODL core engineers to validate the issue and develop a patch. The patch was authored by Jack Grigg (str4d) and reviewed by Daira-Emma Hopwood and Kris Nuttycombe.
Shielded Labs led outreach to mining pools and infrastructure providers to deploy the patch.
Mining pools, including ViaBTC, Luxor, F2Pool, and AntPool, were contacted directly to coordinate upgrades.
Timeline
October 28, 2016
- Zcash launched with the Sprout shielded pool.
October 28, 2018
- The Sapling shielded pool launched.
- CVE-2019-7167 fixed.
July 28, 2020
- This vulnerability is first present in zcashd v3.1.0.
November 18, 2020
- Sprout pool closed to new deposits (ZIP 211).
June 14, 2023
- Zebra 1.0.0 released, validating all transactions, including Sprout transactions.
March 23, 2026
- Scalar reported the vulnerability to Shielded Labs.
March 24, 2026
- Shielded Labs met with ZODL engineers Daira-Emma Hopwood, Kris Nuttycombe, and Jack Grigg (str4d) to review and validate the vulnerability and develop a fix. Str4d wrote the patch, and Daira-Emma Hopwood and Kris Nuttycombe reviewed it.
- Shielded Labs disclosed the issue to the Zcash Foundation.
- Shielded Labs reached out to Zcash mining pools ViaBTC, Luxor, and F2Pool.
March 25, 2026
- Luxor confirmed deployment of the patch.
- Shielded Labs reached out to AntPool.
March 26, 2026
- F2Pool confirmed deployment of the patch.
- ViaBTC confirmed deployment of the patch.
- AntPool confirmed deployment of the patch.
March 31, 2026
- Zcashd v6.12.0 released.
