A Zcash turnstile is the public check at the edge of each shielded pool. Inside a pool, sender, recipient and amount are hidden, but every node tracks the pool's total balance, and ZIP 209 makes any block invalid that would push a pool below zero. When a pool stops accepting new value, as Sprout did in 2020 and Orchard in 2026, its balance can only fall.
The numbers on October 15, 2026
Orchard held 350,438.01 ZEC (block 3,519,197), down 3,309,625.93 ZEC from 3,660,063.94 ZEC on July 27, 2026, the last day before Ironwood. Ironwood held 4,113,754.72 ZEC. Sprout held 22,309.44 ZEC. Live figures: shielded supply.
What a turnstile is
All six Zcash pools, including the transparent pool and the lockbox, are described in Zcash value pools explained.
In a shielded pool the individual notes and amounts are encrypted. What stays public is one number per pool and transaction: its value balance, the net amount the transaction takes out of the pool (positive) or puts in (negative). ZIP 209 (Final) builds each pool's balance from these numbers alone. The "Sapling chain value pool balance", for example, "is the negation of the sum of all valueBalanceSapling fields for transactions in the block chain"; Orchard and Ironwood are defined the same way, and Sprout as "the sum of all vpub_old fields [...] minus the sum of all vpub_new fields".
The rule itself is one sentence: "If the chain value pool balance for any of the Sprout, Sapling, Orchard, Ironwood, transparent, or deferred development fund pools would become negative in the block chain created as a result of accepting a block, then all nodes MUST reject the block as invalid." A second rule rejects blocks that would push the total supply above MAX_MONEY, 21 million ZEC.
That is the turnstile: amounts pass in and out of a pool through a counter that everyone can read, and the counter may never go below zero. ZIP 209 gives the reason: nodes can monitor the value shielded into and out of each pool, and "If the total value that is unshielded exceeds the total value that was shielded for a given pool, a balance violation has occurred in the corresponding shielded transaction protocol."
Why it matters for counterfeiting
A flaw in the cryptography of one pool could let someone create notes that were never paid in. Those notes would be hidden like any other. In our reading of ZIP 209, the turnstile limits what such notes could do: taking them out of the pool lowers the public balance, and once the balance would go below zero, blocks are rejected. Fake value inside one pool therefore cannot raise the total supply; at worst it would take value that honest holders paid into the same pool. The two documented flaws and how they were fixed are in our guide Has Zcash ever been counterfeited?; this page explains only the check.
The Sprout turnstile (2020)
ZIP 211 (Final), "Disabling Addition of New Value to the Sprout Chain Value Pool", sets the consensus rule: "From the relevant activation height, the vpub_old field of each JoinSplit description MUST be zero." Since vpub_old is the field that moves value into Sprout, nothing can be added any more. The ZIP adds: "This does not prevent extracting value held in Sprout addresses and sending it to transparent addresses, or to Sapling addresses via the migration tool."
ZIP 211 says it "will be deployed with the Canopy network upgrade", and ZIP 251 lists ZIP 211 among Canopy's changes with the Mainnet activation height 1,046,400. ZIP 251 gives no date; our daily snapshots bracket the block: block 1,045,791 at 23:58 UTC on November 17, 2020 and block 1,046,947 at 23:59 UTC on November 18, so Canopy activated on November 18, 2020 (UTC). We have no snapshot at exactly block 1,046,400, so we give the last snapshot before it.
The Orchard to Ironwood turnstile (2026)
ZIP 258, "Deployment of the NU6.3 Network Upgrade" (status Draft), sets the Mainnet activation height 3,428,143 and the rules that apply from it "regardless of transaction version". They "ensure that, after NU6.3, the Orchard pool can only be spent from (not added to), and that cross-address transfers within the Orchard pool are disabled, so that newly created shielded value is directed into the Ironwood pool." In detail:
- "A coinbase transaction MUST NOT contain any Orchard-pool Actions".
- "No new value may enter the Orchard pool", so the encoded valueBalanceOrchard is never negative.
- "Value may still leave the Orchard pool, including across the turnstile into the Ironwood pool."
ZIP 258 also extends ZIP 209 so that the new Ironwood pool has its own balance that must not become negative.
ZIP 318, "Orchard to Ironwood Migration" (status Draft), states the purpose: Ironwood "enables verification of the Zcash shielded supply after NU6.2 mitigated a soundness flaw in the Orchard circuit", and NU6.3 "disables ordinary payments within the old Orchard pool while still permitting change; therefore, wallets are required to add functionality to migrate Orchard funds to the Ironwood pool." More on the upgrade itself: Ironwood (NU6.3) status.
What our data shows
Our daily snapshots read the pool balances at the last block of each UTC day. Balances in ZEC:
| Pool | Before | October 15, 2026 (block 3,519,197) | Change |
|---|---|---|---|
| Sprout | 110,746.51 (November 17, 2020, block 1,045,791, before Canopy) | 22,309.44 | โ88,437.07 |
| Orchard | 3,660,063.94 (July 27, 2026, block 3,427,462, before NU6.3) | 350,438.01 | โ3,309,625.93 |
| Ironwood | 0 (July 27, 2026, before NU6.3) | 4,113,754.72 | +4,113,754.72 |
- Sprout fell by 79.86 % from its last pre-Canopy snapshot. In all 2,158 daily snapshots from November 18, 2020 to October 15, 2026 its balance was never higher than the day before. The first snapshot after Canopy (November 18, 2020) showed 110,502.63 ZEC.
- Orchard fell by 90.43 %; 9.57 % of its July 27 balance was still in the pool on October 15. In all 80 daily snapshots from July 28 to October 15, 2026 its balance was never higher than the day before.
- Ironwood grew by more than Orchard shrank. Balances are net totals, so they do not show where Orchard's value went or where Ironwood's came from; ZIP 258, for example, has a rule for Ironwood outputs of coinbase transactions, so block rewards can be paid into Ironwood too.
A daily snapshot cannot show movements inside a day. That no balance rose is what the consensus rules require; our series is consistent with them, it does not prove them.
What the turnstile can and cannot prove
It can show: each pool's exact balance at any block, that no pool has paid out more than was put in, and the total amount that crossed out of a pool. For a pool that no longer accepts value, every change of its balance is value leaving it.
It cannot show:
- Whether a pool contains counterfeit notes that nobody has taken out. Such value would only become visible when withdrawals would push the balance below zero, which is the point at which blocks are rejected. In our reading, a pool's remaining balance cannot tell lost or unmoved coins apart from value that was never paid in.
- Who moved funds or why. ZIP 318 notes that a pool-crossing transfer reveals "the net amount crossing between the pools on-chain", and asks wallets to split migrations into standard amounts sent over time for that reason. Amounts are public at the turnstile; senders and recipients stay hidden. What an observer can link in general is in Can Zcash be traced?.
- Anything about a single payment inside one pool. A payment that stays within a pool changes its balance only by the transaction fee, which leaves the pool.
How to check it yourself
- Any Zcash full node reports the pool balances with the
getblockchaininfoRPC undervaluePools. Step-by-step instructions are in How to verify Zcash network statistics yourself. - Our shielded supply page shows the daily series for Sprout, Sapling, Orchard and Ironwood, and the data page links the CSV with block height and block hash for every day.
- Activation heights of all upgrades are on our network upgrade tracker.
Sources and method
- ZIP 209, "Prohibit Out-of-Range Chain Value Pool Balances" (Final), including the Ironwood update.
- ZIP 211, "Disabling Addition of New Value to the Sprout Chain Value Pool" (Final).
- ZIP 251, "Deployment of the Canopy Network Upgrade" (Final): Mainnet activation height 1,046,400.
- ZIP 258, "Deployment of the NU6.3 Network Upgrade" (Draft): Mainnet activation height 3,428,143.
- ZIP 318, "Orchard to Ironwood Migration" (Draft).
- Pool balances: our daily value-pool snapshots, rows for November 17 and 18, 2020, July 27, 2026 and October 15, 2026 of the shielded supply CSV. ZIP texts were read on October 16, 2026. Figures are rounded to two decimals from the exact values (Orchard on October 15, 2026: 350,438.01199114 ZEC). Changes and percentages are our arithmetic.
New guides first appear in the ZecZcash Telegram channel.
