{
  "schema_version": 1,
  "site": "https://zecstats.org",
  "mode": "placeholder",
  "catalogs": "live",
  "release": {
    "commit": "b5a220820d1f4693406bdd7392594a2de4add59a",
    "release_id": "20261002T053626Z"
  },
  "map_sha256": "c3ccbe209ca1c21f5db18244b0de3526f579b582cc1bce056a30f87aa83217e7",
  "placeholder_legend": "[live: <label>] marks text computed from live data when the page is served; the label names the data behind it, and the page's `placeholders` list gives the exact field paths. Paths without a prefix are fields of GET https://zecstats.org/api/zec/summary; price_summary.* and price_page.* are the /price page's market data and stored price history (GET https://zecstats.org/api/zec/price-history). \"derived from …\" marks arithmetic over several fields (shares, sums, day counts) or wording that depends on them. Units and all other words are literal page copy. For current values fetch https://zecstats.org/api/zec/summary — never quote a placeholder.",
  "pages": [
    {
      "path": "/",
      "url": "https://zecstats.org/",
      "kind": "home",
      "indexable": true,
      "title": "Zcash Network Stats — Shielded Pools, Ironwood & Halving | ZecStats",
      "h1": "Zcash Shielded Pools & Network Stats",
      "summary": "Live Zcash dashboard: shielded pools, the Ironwood migration, flows, supply, halving and price",
      "description": "Live Zcash stats — ZEC at [live: ZEC price (USD)], [live: shielded share of supply] of supply shielded. Track shielded pool balances, the Ironwood migration, shield/deshield flows, supply, halving countdown, and cross-chain ZEC activity. Updated continuously.",
      "sections": [
        {
          "id": "value-pool-balances",
          "level": 2,
          "heading": "Value pool balances",
          "origin": "code",
          "revision": null,
          "words": 41
        },
        {
          "id": "zcash-quick-answers",
          "level": 2,
          "heading": "Zcash — quick answers",
          "origin": "code",
          "revision": null,
          "words": 99
        }
      ],
      "faqs": [
        {
          "q": "How much ZEC is shielded?",
          "a": "[live: shielded ZEC total] ZEC — about [live: shielded share of supply] of total supply — is held across the Sprout, Sapling, Orchard, and Ironwood shielded pools (as of [live: pool balances as-of time (UTC)] UTC). Shielded pools explained."
        },
        {
          "q": "What is the Ironwood migration?",
          "a": "NU6.3 \"Ironwood\" (activated July 28, 2026) added a fifth shielded pool and sealed Orchard to new shielded transactions; Orchard funds are migrating into Ironwood. Live migration tracker."
        },
        {
          "q": "When is the next Zcash halving?",
          "a": "At block 4,406,400 — around November 2028 at the 75-second block target — the block subsidy halves from 1.5625 to 0.78125 ZEC. Halving countdown."
        }
      ],
      "internal_links": [
        "/shielded",
        "/ironwood",
        "/halving"
      ],
      "external_links": [],
      "catalog": {
        "article": null,
        "enhancement": null,
        "page_copy": null
      },
      "placeholders": [
        {
          "token": "[live: Ironwood pool balance]",
          "fields": [
            "pools.ironwood"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: Orchard pool balance]",
          "fields": [
            "pools.orchard"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: Sapling pool balance]",
          "fields": [
            "pools.sapling"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: Sprout pool balance]",
          "fields": [
            "pools.sprout"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: ZEC issued supply]",
          "fields": [
            "supply.total"
          ],
          "derived": false,
          "count": 2
        },
        {
          "token": "[live: ZEC migrated out of Orchard in 24h]",
          "fields": [
            "ironwood.orchardMigrated24hZec"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: ZEC price (USD)]",
          "fields": [
            "price.usd"
          ],
          "derived": false,
          "count": 3
        },
        {
          "token": "[live: block height]",
          "fields": [
            "network.height"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: blocks until the halving]",
          "fields": [
            "halving.blocksRemaining"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: lockbox balance]",
          "fields": [
            "pools.lockbox"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: pool balances as-of time (UTC)]",
          "fields": [
            "pools.updatedAt"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: shielded ZEC total]",
          "fields": [
            "pools.shieldedTotal"
          ],
          "derived": false,
          "count": 3
        },
        {
          "token": "[live: shielded share of supply]",
          "fields": [
            "pools.shieldedPct"
          ],
          "derived": false,
          "count": 4
        },
        {
          "token": "[live: transparent pool balance]",
          "fields": [
            "pools.transparent"
          ],
          "derived": false,
          "count": 1
        }
      ],
      "text": "# Zcash Shielded Pools & Network Stats\n\nZecStats tracks the Zcash network live. ZEC trades at [live: ZEC price (USD)], [live: shielded ZEC total] ZEC ([live: shielded share of supply] of supply) sits in shielded pools, and the Ironwood migration is moving the sealed Orchard pool at [live: ZEC migrated out of Orchard in 24h] ZEC per day. Total supply is [live: ZEC issued supply] ZEC of 21M.\n\nZEC price: [live: ZEC price (USD)]\nShielded ZEC: [live: shielded ZEC total] ZEC\nShielded %: [live: shielded share of supply]\nSupply / 21M: [live: ZEC issued supply] ZEC\nBlock height: [live: block height]\nHalving in: [live: blocks until the halving] blocks\n\n## Value pool balances\n\nTransparent — Status: open; Balance: [live: transparent pool balance] ZEC\nSprout — Status: closing; Balance: [live: Sprout pool balance] ZEC\nSapling — Status: open; Balance: [live: Sapling pool balance] ZEC\nOrchard — Status: sealed (migrating); Balance: [live: Orchard pool balance] ZEC\nIronwood — Status: open (NU6.3); Balance: [live: Ironwood pool balance] ZEC\nLockbox — Status: accruing; Balance: [live: lockbox balance] ZEC\n\n## Zcash — quick answers\n\nQ: How much ZEC is shielded?\nA: [live: shielded ZEC total] ZEC — about [live: shielded share of supply] of total supply — is held across the Sprout, Sapling, Orchard, and Ironwood shielded pools (as of [live: pool balances as-of time (UTC)] UTC). Shielded pools explained.\n\nQ: What is the Ironwood migration?\nA: NU6.3 \"Ironwood\" (activated July 28, 2026) added a fifth shielded pool and sealed Orchard to new shielded transactions; Orchard funds are migrating into Ironwood. Live migration tracker.\n\nQ: When is the next Zcash halving?\nA: At block 4,406,400 — around November 2028 at the 75-second block target — the block subsidy halves from 1.5625 to 0.78125 ZEC. Halving countdown.\n\nSee the full shielded pool breakdown →",
      "stats": {
        "words": 212,
        "chars": 1853,
        "sections": 2,
        "faqs": 3,
        "live_spans": 22
      },
      "content_sha256": "e1c35b4878672a4d5a424826b1e2cf4fd6f9b9c83d13f609d257066acd2d1a57"
    },
    {
      "path": "/share-kit",
      "url": "https://zecstats.org/share-kit",
      "kind": "share-kit",
      "indexable": true,
      "title": "ZecStats Share Kit",
      "h1": "Share Kit",
      "summary": "Every ZecStats share card, chart and post-to-X route in one gallery",
      "description": "Every tweet-ready ZecStats card, chart, and X share route in one place.",
      "sections": [
        {
          "id": "zecstats-live-zcash-network-stats",
          "level": 2,
          "heading": "ZecStats | Live Zcash Network Stats",
          "origin": "code",
          "revision": null,
          "words": 25
        },
        {
          "id": "zcash-shielded-pools-live-zec-zecstats",
          "level": 2,
          "heading": "Zcash Shielded Pools — [live: shielded ZEC total] ZEC | ZecStats",
          "origin": "code",
          "revision": null,
          "words": 27
        },
        {
          "id": "ironwood-migration-live-complete-zecstats",
          "level": 2,
          "heading": "Ironwood Migration — [live: share of sealed Orchard migrated] Complete | ZecStats",
          "origin": "code",
          "revision": null,
          "words": 27
        },
        {
          "id": "zcash-shielded-flows-30-days-zecstats",
          "level": 2,
          "heading": "Zcash Shielded Flows — 30 Days | ZecStats",
          "origin": "code",
          "revision": null,
          "words": 25
        },
        {
          "id": "zcash-halving-countdown-live-blocks-zecstats",
          "level": 2,
          "heading": "Zcash Halving Countdown — [live: blocks until the halving] Blocks | ZecStats",
          "origin": "code",
          "revision": null,
          "words": 24
        },
        {
          "id": "zec-price-today-zecstats",
          "level": 2,
          "heading": "ZEC Price Today | ZecStats",
          "origin": "code",
          "revision": null,
          "words": 20
        },
        {
          "id": "zec-vs-all-time-high-zecstats",
          "level": 2,
          "heading": "ZEC vs All-Time High | ZecStats",
          "origin": "code",
          "revision": null,
          "words": 22
        },
        {
          "id": "zec-vs-btc-vs-eth-zecstats",
          "level": 2,
          "heading": "ZEC vs BTC vs ETH | ZecStats",
          "origin": "code",
          "revision": null,
          "words": 20
        },
        {
          "id": "biggest-zcash-shields-last-24h-zecstats",
          "level": 2,
          "heading": "Biggest Zcash Shields — Last 24h | ZecStats",
          "origin": "code",
          "revision": null,
          "words": 32
        },
        {
          "id": "zec-perps-open-interest-zecstats",
          "level": 2,
          "heading": "ZEC Perps Open Interest | ZecStats",
          "origin": "code",
          "revision": null,
          "words": 24
        },
        {
          "id": "biggest-zec-positions-on-hyperliquid-zecstats",
          "level": 2,
          "heading": "Biggest ZEC Positions on Hyperliquid | ZecStats",
          "origin": "code",
          "revision": null,
          "words": 23
        }
      ],
      "faqs": [],
      "internal_links": [
        "/api/share/manifest.json",
        "/share",
        "/share/shielded",
        "/share/ironwood",
        "/share/flows",
        "/share/halving",
        "/share/price",
        "/share/price-ath",
        "/share/price-performance",
        "/share/shield-leaderboard",
        "/share/perps-pulse",
        "/share/perps-leaderboard"
      ],
      "external_links": [],
      "catalog": {
        "article": null,
        "enhancement": null,
        "page_copy": null
      },
      "placeholders": [
        {
          "token": "[live: blocks until the halving]",
          "fields": [
            "halving.blocksRemaining"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: share of sealed Orchard migrated]",
          "fields": [
            "ironwood.migrationPct"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: shielded ZEC total]",
          "fields": [
            "pools.shieldedTotal"
          ],
          "derived": false,
          "count": 2
        },
        {
          "token": "[live: shielded share of supply]",
          "fields": [
            "pools.shieldedPct"
          ],
          "derived": false,
          "count": 2
        }
      ],
      "text": "# Share Kit\n\nEvery watermarked ZecStats social card, chart, and X intent route from the live data.\n\nOpen JSON manifest\n\nsummary\n\n## ZecStats | Live Zcash Network Stats\n\nTrack Zcash live: [live: shielded ZEC total] ZEC shielded ([live: shielded share of supply] of supply), the Ironwood migration, flows, supply, halving countdown, and ZEC price.\n\nshielded\n\n## Zcash Shielded Pools — [live: shielded ZEC total] ZEC | ZecStats\n\nWhere ZEC lives: all five value pools plus the lockbox, [live: shielded share of supply] of supply shielded, and the 24h net shielded flow.\n\nironwood\n\n## Ironwood Migration — [live: share of sealed Orchard migrated] Complete | ZecStats\n\nOrchard is sealed and migrating to Ironwood, Zcash's fifth shielded pool (NU6.3). Live migration progress, balances, and the 24h migrated volume.\n\nflows\n\n## Zcash Shielded Flows — 30 Days | ZecStats\n\nDaily shield (t → z) vs deshield (z → t) volume over the last 30 days, plus the trailing-24h totals.\n\nhalving\n\n## Zcash Halving Countdown — [live: blocks until the halving] Blocks | ZecStats\n\nBlocks remaining to the next halving, the 1.5625 → 0.78125 ZEC subsidy drop, estimated date, and daily emission.\n\nprice\n\n## ZEC Price Today | ZecStats\n\nLive ZEC price with a bold 24-hour sparkline and focused 7D, 30D, and YTD returns.\n\nprice-ath\n\n## ZEC vs All-Time High | ZecStats\n\nHow far ZEC sits below its recorded peak — drawdown, reclaim multiple, and the full history chart.\n\nprice-performance\n\n## ZEC vs BTC vs ETH | ZecStats\n\nNormalized one-year ZEC, BTC, and ETH price lines on one shared percentage-change axis.\n\nshield-leaderboard\n\n## Biggest Zcash Shields — Last 24h | ZecStats\n\nThe largest individual moves into and out of Zcash's shielded pools over the last 24 hours, with the net flow across the whole anonymity set.\n\nperps-pulse\n\n## ZEC Perps Open Interest | ZecStats\n\nZEC perpetual-futures open interest by venue (Hyperliquid, OKX, Bitget, KuCoin, Gate, dYdX), 24h change, funding and long/short ratio.\n\nperps-leaderboard\n\n## Biggest ZEC Positions on Hyperliquid | ZecStats\n\nThe largest open ZEC longs and shorts among Hyperliquid's top accounts, with leverage, entry and unrealized PnL.",
      "stats": {
        "words": 289,
        "chars": 2161,
        "sections": 11,
        "faqs": 0,
        "live_spans": 6
      },
      "content_sha256": "d6ea68c0149f262014463abbd556d2a5652585b633796ea7681827b5ec1746c5"
    },
    {
      "path": "/shielded",
      "url": "https://zecstats.org/shielded",
      "kind": "reference",
      "indexable": true,
      "title": "Zcash Shielded Pools — Live Balances, Flows & Privacy Model | ZecStats",
      "h1": "Zcash shielded pools",
      "summary": "Shielded pools: every value pool's live balance, shield and deshield flows, and what is and is not observable",
      "description": "[live: shielded ZEC total] ZEC — [live: shielded share of supply] of all ZEC — is shielded right now. Live balances for every pool (Transparent, Sprout, Sapling, Orchard, Ironwood, Lockbox), 30-day shield/deshield flows, and an honest explanation of what is and isn't observable.",
      "sections": [
        {
          "id": "pools",
          "level": 2,
          "heading": "Where ZEC lives right now",
          "origin": "code",
          "revision": null,
          "words": 356
        },
        {
          "id": "flows",
          "level": 2,
          "heading": "Shield and deshield flows — last 30 days",
          "origin": "code",
          "revision": null,
          "words": 36
        },
        {
          "id": "visibility",
          "level": 2,
          "heading": "What ZecStats can and cannot see",
          "origin": "code",
          "revision": null,
          "words": 129
        },
        {
          "id": "faq",
          "level": 2,
          "heading": "Frequently asked questions",
          "origin": "code",
          "revision": null,
          "words": 263
        },
        {
          "id": "reader-reference",
          "level": 2,
          "heading": "Orchard receivers and Ironwood payments",
          "origin": "catalog:enhancement",
          "revision": "27a475ec9164563bc64bfed503de751794fc51e50fb38a935312745a53b70610",
          "words": 5
        },
        {
          "id": "can-an-older-receiver-receive-ironwood-funds",
          "level": 3,
          "heading": "Can an older receiver receive Ironwood funds?",
          "origin": "catalog:enhancement",
          "revision": "27a475ec9164563bc64bfed503de751794fc51e50fb38a935312745a53b70610",
          "words": 72
        },
        {
          "id": "compatibility-is-not-a-wallet-support-guarantee",
          "level": 3,
          "heading": "Compatibility is not a wallet-support guarantee",
          "origin": "catalog:enhancement",
          "revision": "27a475ec9164563bc64bfed503de751794fc51e50fb38a935312745a53b70610",
          "words": 95
        }
      ],
      "faqs": [
        {
          "q": "How much ZEC is shielded?",
          "a": "[live: shielded ZEC total] ZEC — about [live: shielded share of supply] of total supply — currently sits in Zcash's shielded pools (Sprout, Sapling, Orchard, and Ironwood). The shielded share peaked near 30% during the 2025-2026 privacy narrative and updates live on this page."
        },
        {
          "q": "What is a shielded pool?",
          "a": "A shielded pool is a portion of the ZEC supply protected by zero-knowledge proofs: addresses, amounts, and transaction graphs inside the pool are encrypted on-chain. Only the pool's total balance is publicly known, tracked by consensus as a 'value pool'."
        },
        {
          "q": "Why does Zcash have five shielded pools?",
          "a": "Each pool corresponds to a generation of proving system: Sprout (2016), Sapling (2018), Orchard (2022), and Ironwood (2026). Upgrading cryptography requires a new pool; funds move between pools through the turnstile, which publicly reveals pool-to-pool amounts so the total supply stays auditable."
        },
        {
          "q": "Is shielded ZEC traceable?",
          "a": "Shielded-to-shielded transfers are invisible by design — no amounts, no addresses. What IS visible are pool boundaries: shielding (t → z), deshielding (z → t), and turnstile migrations between pools. ZecStats reports exactly those boundary flows and pool balance changes, and nothing more, because nothing more is observable."
        },
        {
          "q": "What is the lockbox?",
          "a": "The lockbox is a protocol development fund, not a privacy pool. It accrues 0.1875 ZEC per block (12% of the subsidy under NU6) and currently holds [live: lockbox balance] ZEC. The remaining subsidy goes 80% to miners and 8% to Zcash Community Grants."
        },
        {
          "q": "What happened to the Sprout pool?",
          "a": "Sprout is closing: it has been shut to new deposits for years and only [live: Sprout pool balance] ZEC remains, exiting through the turnstile. Its first-generation circuit is retired."
        }
      ],
      "internal_links": [
        "/shielded-percentage",
        "/ironwood",
        "/ironwood-reconciliation",
        "/orchard-pool",
        "/halving",
        "/data",
        "/methodology"
      ],
      "external_links": [
        {
          "url": "https://zips.z.cash/zip-0326",
          "text": "ZIP 326: NU6.3 Consequences for Wallets — Draft"
        }
      ],
      "catalog": {
        "article": null,
        "enhancement": "27a475ec9164563bc64bfed503de751794fc51e50fb38a935312745a53b70610",
        "page_copy": null
      },
      "placeholders": [
        {
          "token": "[live: Ironwood pool balance]",
          "fields": [
            "pools.ironwood"
          ],
          "derived": false,
          "count": 2
        },
        {
          "token": "[live: Orchard pool balance]",
          "fields": [
            "pools.orchard"
          ],
          "derived": false,
          "count": 2
        },
        {
          "token": "[live: Sapling pool balance]",
          "fields": [
            "pools.sapling"
          ],
          "derived": false,
          "count": 2
        },
        {
          "token": "[live: Sprout pool balance]",
          "fields": [
            "pools.sprout"
          ],
          "derived": false,
          "count": 3
        },
        {
          "token": "[live: ZEC deshielded in the last 24h]",
          "fields": [
            "flows.last24h.deshield"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: ZEC shielded in the last 24h]",
          "fields": [
            "flows.last24h.shield"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: lockbox balance]",
          "fields": [
            "pools.lockbox"
          ],
          "derived": false,
          "count": 3
        },
        {
          "token": "[live: net shielded flow, last 24h]",
          "fields": [
            "flows.last24h.net"
          ],
          "derived": false,
          "count": 2
        },
        {
          "token": "[live: shielded ZEC total]",
          "fields": [
            "pools.shieldedTotal"
          ],
          "derived": false,
          "count": 5
        },
        {
          "token": "[live: shielded share of supply]",
          "fields": [
            "pools.shieldedPct"
          ],
          "derived": false,
          "count": 5
        },
        {
          "token": "[live: shielded value (USD)]",
          "fields": [
            "pools.shieldedUsd"
          ],
          "derived": false,
          "count": 2
        },
        {
          "token": "[live: transparent pool balance]",
          "fields": [
            "pools.transparent"
          ],
          "derived": false,
          "count": 2
        }
      ],
      "text": "# Zcash shielded pools\n\n[live: shielded ZEC total] ZEC — [live: shielded share of supply] of all ZEC — sits in shielded pools right now. Every value pool, live, plus the flows across pool boundaries.\n\nshielded total: [live: shielded ZEC total] ZEC\nof supply: [live: shielded share of supply]\nshielded value: [live: shielded value (USD)]\nnet flow · 24h: [live: net shielded flow, last 24h] ZEC\n\n## Where ZEC lives right now\n\n[live: shielded ZEC total] ZEC — [live: shielded share of supply] of all ZEC — is currently shielded across Zcash's four active privacy pools, worth [live: shielded value (USD)] at today's price. This page tracks every value pool live: what it is, whether it is open, closing, or sealed, and how ZEC flows across pool boundaries.\n\n- Transparent · [live: transparent pool balance] ZEC\n- Sprout · [live: Sprout pool balance] ZEC\n- Sapling · [live: Sapling pool balance] ZEC\n- Orchard · [live: Orchard pool balance] ZEC\n- Ironwood · [live: Ironwood pool balance] ZEC\n- Lockbox · [live: lockbox balance] ZEC\n- Transparent pool: Open — [live: transparent pool balance] ZEC — Bitcoin-style UTXOs — public addresses, amounts, and history. — Bitcoin-style UTXOs with public addresses, amounts, and history. Most exchange and mining flows land here first. Anything in this pool is fully traceable on-chain.\n- Sprout: Closing — [live: Sprout pool balance] ZEC — The original 2016 shielded pool — exit-only for years. — Zcash's original 2016 shielded pool, built on the first-generation zk-SNARK circuit. It has been closed to new deposits for years and its remaining balance can only exit via the turnstile into newer pools.\n- Sapling: Open — [live: Sapling pool balance] ZEC — The 2018 pool that made shielded mobile wallets possible. — The 2018-era shielded pool that made shielded transactions fast enough for mobile wallets. Still open and widely supported, though modern wallets prefer newer pools.\n- Orchard: Sealed (migrating) — [live: Orchard pool balance] ZEC — Sealed by NU6.3 — its balance now only migrates to Ironwood. — The Halo-2 based pool that carried most shielded adoption since 2022. NU6.3 (Ironwood, July 28 2026) sealed Orchard to new shielded transactions: its balance can now only migrate out, into the Ironwood pool.\n- Ironwood: Open (NU6.3) — [live: Ironwood pool balance] ZEC — Zcash's newest pool — all new shielded activity lands here. — Zcash's fifth and newest shielded pool, activated with NU6.3 at block 3,428,143 on July 28 2026. New shielded activity lands here, and the sealed Orchard pool is migrating into it.\n- Lockbox: Accruing — [live: lockbox balance] ZEC — Not a privacy pool: the protocol's development fund. — Not a privacy pool: a protocol-level development fund that accrues 0.1875 ZEC per block (12% of the block subsidy under NU6). Its balance sits outside circulation until governance disburses it.\n\nSources quote wildly different shielded percentages — the figure depends on whether you measure supply or transactions, which pools you count, and when the snapshot was taken. Here is why they disagree, and what each figure actually measures.\n\n## Shield and deshield flows — last 30 days\n\nEvery day ZEC crosses the transparent/shielded boundary in both directions. Over the last 24h: [live: ZEC shielded in the last 24h] ZEC shielded, [live: ZEC deshielded in the last 24h] ZEC deshielded — a net of [live: net shielded flow, last 24h] ZEC into the shielded pools.\n\n## What ZecStats can and cannot see\n\n- Shielded-to-shielded transfers are invisible by design. No explorer, ZecStats included, can see amounts or addresses inside a shielded pool. What the chain does publish is each pool's total balance (a consensus \"value pool\") and the flows across pool boundaries — shielding, deshielding, and turnstile migrations.\n- Everything on this page is built from observable pool boundaries. Shielding (t → z), deshielding (z → t), and turnstile migrations are public facts, and those are exactly what this page reports. Nothing here estimates private activity — what the chain does not publish, this site does not invent.\n\nRelated: why sources disagree on the shielded percentage, the Ironwood migration tracker (Orchard → Ironwood, live) and its reconciled figures, the sealed Orchard pool, the halving countdown, historical CSV downloads, and how ZecStats measures.\n\n## Frequently asked questions\n\nQ: How much ZEC is shielded?\nA: [live: shielded ZEC total] ZEC — about [live: shielded share of supply] of total supply — currently sits in Zcash's shielded pools (Sprout, Sapling, Orchard, and Ironwood). The shielded share peaked near 30% during the 2025-2026 privacy narrative and updates live on this page.\n\nQ: What is a shielded pool?\nA: A shielded pool is a portion of the ZEC supply protected by zero-knowledge proofs: addresses, amounts, and transaction graphs inside the pool are encrypted on-chain. Only the pool's total balance is publicly known, tracked by consensus as a 'value pool'.\n\nQ: Why does Zcash have five shielded pools?\nA: Each pool corresponds to a generation of proving system: Sprout (2016), Sapling (2018), Orchard (2022), and Ironwood (2026). Upgrading cryptography requires a new pool; funds move between pools through the turnstile, which publicly reveals pool-to-pool amounts so the total supply stays auditable.\n\nQ: Is shielded ZEC traceable?\nA: Shielded-to-shielded transfers are invisible by design — no amounts, no addresses. What IS visible are pool boundaries: shielding (t → z), deshielding (z → t), and turnstile migrations between pools. ZecStats reports exactly those boundary flows and pool balance changes, and nothing more, because nothing more is observable.\n\nQ: What is the lockbox?\nA: The lockbox is a protocol development fund, not a privacy pool. It accrues 0.1875 ZEC per block (12% of the subsidy under NU6) and currently holds [live: lockbox balance] ZEC. The remaining subsidy goes 80% to miners and 8% to Zcash Community Grants.\n\nQ: What happened to the Sprout pool?\nA: Sprout is closing: it has been shut to new deposits for years and only [live: Sprout pool balance] ZEC remains, exiting through the turnstile. Its first-generation circuit is retired.\n\n## Orchard receivers and Ironwood payments\n\n### Can an older receiver receive Ironwood funds?\n\nDraft ZIP 326 distinguishes the Orchard protocol from the Orchard pool: a receiver is scoped to the protocol, not to one pool. Its receiving guidance says an Orchard-protocol receiver exposed before NU6.3 can receive Ironwood-pool funds after NU6.3. The Orchard name on a receiver therefore does not mean a new payment must enter the old Orchard pool.\n\nSources: ZIP 326: NU6.3 Consequences for Wallets — Draft\n\n### Compatibility is not a wallet-support guarantee\n\nZIP 326 says a wallet that supports NU6.3 will scan for those Ironwood funds. It treats the sender's choice to route a payment into Ironwood as a separate wallet concern, outside that document's receiving guidance. This Draft specification does not verify support in any particular wallet or version. Receiver compatibility and the pool holding a balance are different questions; the balances on this dashboard cannot confirm that a particular wallet can receive or spend a payment.\n\nSources: ZIP 326: NU6.3 Consequences for Wallets — Draft\n\nContinue exploring: ironwood · orchard pool",
      "stats": {
        "words": 1008,
        "chars": 7312,
        "sections": 7,
        "faqs": 6,
        "live_spans": 30
      },
      "content_sha256": "3f5055362a08b6895a1808fe6b323b5e8f759890d2504654303b4728c46ebd51"
    },
    {
      "path": "/shielded-percentage",
      "url": "https://zecstats.org/shielded-percentage",
      "kind": "reference",
      "indexable": true,
      "title": "What Percentage of Zcash Is Shielded? [live: shielded share of supply] of Supply | ZecStats",
      "h1": "What percentage of Zcash is shielded?",
      "summary": "What share of ZEC is shielded, and why published figures disagree",
      "description": "[live: shielded share of supply] of Zcash is shielded ([live: shielded ZEC total] ZEC), live from the chain — and why other sources say 18%, 23%, 30% or 59%. Reconciled figure by figure.",
      "sections": [
        {
          "id": "answer",
          "level": 2,
          "heading": "How much Zcash is shielded right now",
          "origin": "code",
          "revision": null,
          "words": 208
        },
        {
          "id": "disagree",
          "level": 2,
          "heading": "Why sources disagree — the four real causes",
          "origin": "code",
          "revision": null,
          "words": 718
        },
        {
          "id": "figures",
          "level": 2,
          "heading": "Every shielded percentage in circulation, reconciled",
          "origin": "code",
          "revision": null,
          "words": 474
        },
        {
          "id": "limits",
          "level": 2,
          "heading": "What a shielded percentage can and cannot tell you",
          "origin": "code",
          "revision": null,
          "words": 304
        },
        {
          "id": "method",
          "level": 2,
          "heading": "How ZecStats computes the shielded percentage",
          "origin": "code",
          "revision": null,
          "words": 140
        },
        {
          "id": "faq",
          "level": 2,
          "heading": "Frequently asked questions",
          "origin": "code",
          "revision": null,
          "words": 589
        }
      ],
      "faqs": [
        {
          "q": "What percentage of Zcash is shielded?",
          "a": "[live: shielded share of supply] of the ZEC supply — [live: shielded ZEC total] ZEC, worth [live: shielded value (USD)] — sits in Zcash's shielded pools as of [live: pool balances as-of time (UTC)] UTC. That is the balance of the Sprout, Sapling, Orchard and Ironwood value pools divided by the chain's issued supply of [live: ZEC issued supply] ZEC, recomputed from the chain every couple of minutes rather than quoted from a past article."
        },
        {
          "q": "Why do different sites report different shielded percentages for Zcash?",
          "a": "Four reasons, and almost no source states which applies. (1) Stock versus flow: figures near 59% are a share of recent shielded transactions or actions, not a share of the coin supply. (2) Which pools are counted: a tracker that has not added the Ironwood pool since NU6.3 activated on July 28, 2026 is missing [live: Ironwood pool balance] ZEC. (3) Snapshot date: several widely republished \"23%\" figures date from November 2025. (4) Denominator: issued supply, circulating supply and the 21,000,000 maximum give three different answers from the same numerator. ZecStats reports [live: shielded share of supply] — shielded pool balances over issued chain supply, timestamped [live: pool balances as-of time (UTC)] UTC."
        },
        {
          "q": "Does the shielded percentage include Ironwood?",
          "a": "Yes. ZecStats counts all four privacy pools — Sprout, Sapling, Orchard and Ironwood — so the [live: shielded share of supply] figure includes the [live: Ironwood pool balance] ZEC now held in Ironwood. This matters more than it sounds: a tracker still showing only the pre-NU6.3 pools would report roughly [live: derived from ZEC issued supply and Ironwood pool balance + 1 more] from the same chain data, purely because it cannot see the newest pool."
        },
        {
          "q": "Is 59% of Zcash shielded?",
          "a": "No — that class of figure measures activity, not supply. Roughly [live: shielded share of supply] of the ZEC that exists is held in shielded pools. A separate and equally real statistic is the share of recent Zcash transactions that are shielded, which runs far higher because privacy-focused users transact more often than the transparent balances sitting dormant on exchanges. Both can be true simultaneously; they answer different questions."
        },
        {
          "q": "What is the Zcash lockbox and does it count as shielded?",
          "a": "The lockbox is the NU6 protocol development fund, accruing 0.1875 ZEC per block (12% of the block subsidy). It currently holds [live: lockbox balance] ZEC. ZecStats does not count it as shielded, because it is not a user-held private balance — it is an undisbursed protocol reserve. Including it would raise the headline figure to about [live: derived from ZEC issued supply and lockbox balance + 1 more], which is one small source of the spread between trackers."
        },
        {
          "q": "How much Zcash is shielded in ZEC terms?",
          "a": "[live: shielded ZEC total] ZEC as of [live: pool balances as-of time (UTC)] UTC: [live: Sprout pool balance] ZEC in Sprout, [live: Sapling pool balance] ZEC in Sapling, [live: Orchard pool balance] ZEC in the sealed Orchard pool and [live: Ironwood pool balance] ZEC in Ironwood. The remaining [live: transparent pool balance] ZEC sits in transparent, Bitcoin-style addresses."
        },
        {
          "q": "What percentage of the 21 million maximum Zcash supply is shielded?",
          "a": "About [live: shielded ZEC total]. That is the same shielded balance measured against the 21,000,000 ZEC cap rather than against the [live: ZEC issued supply] ZEC issued so far. It is a legitimate calculation and it is why some sources quote a figure in the high teens — but it understates how much of the money that actually exists today is private, so ZecStats headlines the issued-supply version instead."
        },
        {
          "q": "Can the shielded percentage be manipulated or faked?",
          "a": "The pool balance is the hardest shielded statistic to game: moving ZEC into a shielded pool means genuinely surrendering it to that pool, and every crossing of a pool boundary is publicly visible. Note counts and anonymity-set sizes are a different matter — anyone can inflate them cheaply by spamming tiny outputs, which is why ZecStats headlines the balance in ZEC and never a note count. What no chart can show is whether a shielded balance is being actively used, because shielded-to-shielded transfers are invisible by design."
        }
      ],
      "internal_links": [
        "/ironwood",
        "/shielded",
        "/orchard-pool",
        "/ironwood-reconciliation",
        "/methodology",
        "/data"
      ],
      "external_links": [],
      "catalog": {
        "article": null,
        "enhancement": null,
        "page_copy": null
      },
      "placeholders": [
        {
          "token": "[live: Ironwood pool balance]",
          "fields": [
            "pools.ironwood"
          ],
          "derived": false,
          "count": 6
        },
        {
          "token": "[live: Orchard balance when it sealed]",
          "fields": [
            "ironwood.orchardAtActivationZec"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: Orchard pool balance]",
          "fields": [
            "pools.orchard"
          ],
          "derived": false,
          "count": 2
        },
        {
          "token": "[live: Sapling pool balance]",
          "fields": [
            "pools.sapling"
          ],
          "derived": false,
          "count": 2
        },
        {
          "token": "[live: Sprout pool balance]",
          "fields": [
            "pools.sprout"
          ],
          "derived": false,
          "count": 2
        },
        {
          "token": "[live: ZEC deshielded in the last 24h]",
          "fields": [
            "flows.last24h.deshield"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: ZEC issued supply]",
          "fields": [
            "supply.total"
          ],
          "derived": false,
          "count": 6
        },
        {
          "token": "[live: ZEC shielded in the last 24h]",
          "fields": [
            "flows.last24h.shield"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: derived from ZEC issued supply and Ironwood pool balance + 1 more]",
          "fields": [
            "supply.total",
            "pools.ironwood",
            "pools.shieldedTotal"
          ],
          "derived": true,
          "count": 3
        },
        {
          "token": "[live: derived from ZEC issued supply and lockbox balance + 1 more]",
          "fields": [
            "supply.total",
            "pools.lockbox",
            "pools.shieldedTotal"
          ],
          "derived": true,
          "count": 3
        },
        {
          "token": "[live: derived from ZEC price (USD) and ZEC market cap (USD) + 1 more]",
          "fields": [
            "price.usd",
            "price.marketCapUsd",
            "pools.shieldedTotal"
          ],
          "derived": true,
          "count": 2
        },
        {
          "token": "[live: derived from ZEC price (USD) and ZEC market cap (USD)]",
          "fields": [
            "price.usd",
            "price.marketCapUsd"
          ],
          "derived": true,
          "count": 1
        },
        {
          "token": "[live: lockbox balance]",
          "fields": [
            "pools.lockbox"
          ],
          "derived": false,
          "count": 4
        },
        {
          "token": "[live: pool balances as-of time (UTC)]",
          "fields": [
            "pools.updatedAt"
          ],
          "derived": false,
          "count": 7
        },
        {
          "token": "[live: recent shielded-boundary transactions]",
          "fields": [
            "flows.recentTxs"
          ],
          "derived": false,
          "count": 3
        },
        {
          "token": "[live: shielded ZEC total]",
          "fields": [
            "pools.shieldedTotal"
          ],
          "derived": false,
          "count": 13
        },
        {
          "token": "[live: shielded share of supply]",
          "fields": [
            "pools.shieldedPct"
          ],
          "derived": false,
          "count": 18
        },
        {
          "token": "[live: shielded value (USD)]",
          "fields": [
            "pools.shieldedUsd"
          ],
          "derived": false,
          "count": 4
        },
        {
          "token": "[live: transparent pool balance]",
          "fields": [
            "pools.transparent"
          ],
          "derived": false,
          "count": 3
        }
      ],
      "text": "# What percentage of Zcash is shielded?\n\n[live: shielded share of supply] — [live: shielded ZEC total] ZEC — sits in Zcash's shielded pools right now. Sources quote anything from 18% to 59%; here is the live number and exactly why the others differ.\n\nof supply shielded: [live: shielded share of supply]\nshielded ZEC: [live: shielded ZEC total] ZEC\nshielded value: [live: shielded value (USD)]\nas of: [live: pool balances as-of time (UTC)] UTC\n\n## How much Zcash is shielded right now\n\n[live: shielded share of supply] of the Zcash supply is shielded — [live: shielded ZEC total] ZEC, worth [live: shielded value (USD)], held inside Zcash's four zero-knowledge value pools as of [live: pool balances as-of time (UTC)] UTC. It is the sum of the Sprout, Sapling, Orchard and Ironwood pool balances divided by the [live: ZEC issued supply] ZEC issued so far, recomputed from the chain every couple of minutes.\n\n[live: shielded share of supply] shielded (0% · all transparent → 100% · all shielded)\n\nIf you have asked this question before and been given a different answer, you were not imagining it. Sources in circulation today put Zcash's shielded share at 18%, 23%, 25.4%, 26.1%, 27%, 30% and 59.3% — and AI answer engines will happily emit two or three of those inside a single response. What almost none of them do is say what they are counting. Every one of those figures can be produced honestly from the same blockchain; they differ because they measure different things, on different dates, over different denominators. This page is the reconciliation nobody has published: our number, the arithmetic behind it, and figure by figure, what everyone else is actually measuring.\n\nShielded total: [live: shielded ZEC total] ZEC\nShare of supply: [live: shielded share of supply]\nShielded value: [live: shielded value (USD)]\nSapling: [live: Sapling pool balance] ZEC\nOrchard (sealed): [live: Orchard pool balance] ZEC\nIronwood (NU6.3): [live: Ironwood pool balance] ZEC\nSprout (closing): [live: Sprout pool balance] ZEC\nTransparent: [live: transparent pool balance] ZEC\n\n## Why sources disagree — the four real causes\n\nThere is no conspiracy and, mostly, no error. Four specific choices sit underneath the spread, and each one moves the answer by several percentage points on its own. Stack two of them and you get the gap between 18% and 30% without anybody being wrong.\n\n- Stock and flow are different questions with different answers. The headline on this page is a stock measure: what share of the coin supply is sitting inside shielded pools. A completely different and equally valid measure is the flow: what share of recent transactions, or of shielded actions, is private. The high figures — the ~59% class — are activity metrics being repeated as if they described the supply. — Flow runs much hotter than stock because privacy-motivated users transact frequently while large transparent balances sit dormant on exchanges. Over the last 24 hours the chain shows [live: ZEC shielded in the last 24h] ZEC shielded in and [live: ZEC deshielded in the last 24h] ZEC deshielded out. In our own live feed, [live: recent shielded-boundary transactions] of the last [live: recent shielded-boundary transactions] shielded-pool transactions ([live: recent shielded-boundary transactions]) were fully shielded at both ends, with amounts never disclosed on-chain. None of that changes the supply share, which only moves by the net of those two flows. — Rule of thumb: if a figure is above roughly 40%, it is almost certainly a transaction or action share, not a supply share.\n- Which pools you count changes the answer — and Ironwood broke every stale tracker. Zcash's shielded supply is spread across four pools, one per generation of proving system: Sprout (2016), Sapling (2018), Orchard (2022) and Ironwood (NU6.3, activated July 28, 2026). ZecStats counts all four. — NU6.3 sealed Orchard and opened Ironwood, so shielded ZEC has been draining out of one pool and into a brand-new one ever since. A tracker that has not added Ironwood to its pool list undercounts by the entire Ironwood balance — [live: Ironwood pool balance] ZEC today, which drags the shielded share down to about [live: derived from ZEC issued supply and Ironwood pool balance + 1 more]. Nighthawk's block explorer at mainnet.zcashexplorer.app is a live example: it surfaces an Orchard pool total with no Ironwood line at all, even though Orchard sealed holding roughly [live: Orchard balance when it sealed] ZEC and has been emptying into Ironwood since. ZecHub's dashboard does carry an Ironwood selector, but renders its numbers in the browser, so crawlers and AI engines reading the raw page see no figure at all. — The second pool question is the lockbox. It holds [live: lockbox balance] ZEC and it is not a privacy pool: it is the NU6 protocol development fund, accruing 0.1875 ZEC per block until governance disburses it. ZecStats excludes it, because \"shielded\" should mean ZEC that a user chose to make private, not an undisbursed protocol reserve. Counting it would lift the headline to about [live: derived from ZEC issued supply and lockbox balance + 1 more].\n- A large share of the disagreement is simply a stale date. The shielded share is not a constant — it moves with every block as ZEC is shielded, deshielded and migrated. The widely repeated \"23%\" cluster traces back to November 2025 readings that are still being republished as though they were current, and the \"roughly 30%\" figure on zcashtracker.com is hardcoded prose, not a live query: the page says \"as of today, roughly 30% of all Zcash is held in shielded addresses\" with no timestamp and no recomputation. — Once a number loses its \"as of\" stamp it becomes immortal, and answer engines have no way to tell a fresh reading from a year-old one. Every figure on this page carries the instant the pool balances describe — currently [live: pool balances as-of time (UTC)] UTC — so it can be checked, aged, and discarded when it goes stale.\n- Nobody states the denominator, and there are three plausible ones. The numerator is rarely the argument. The denominator almost always is, and the same [live: shielded ZEC total] ZEC of shielded ZEC produces three different headlines depending on what you divide it by: — Issued chain supply ([live: ZEC issued supply] ZEC) → [live: shielded share of supply]. This is the ZecStats headline: the share of the money that actually exists today. Circulating supply ([live: derived from ZEC price (USD) and ZEC market cap (USD)] ZEC, implied by market cap ÷ price) → [live: derived from ZEC price (USD) and ZEC market cap (USD) + 1 more]. Market-data sites net out balances they consider non-circulating, which shifts the figure slightly. The 21,000,000 maximum supply → [live: shielded ZEC total]. Arithmetically correct, and the main source of the figures down in the high teens — but it is answering \"how much of all Zcash that will ever exist is shielded\", which is a different question.\n- Shielded pools · [live: shielded ZEC total] ZEC\n- Transparent · [live: transparent pool balance] ZEC\n- Lockbox (dev fund, not shielded) · [live: lockbox balance] ZEC\n\n## Every shielded percentage in circulation, reconciled\n\nEach row below is a figure you can find in search results, articles or AI answers today, together with what it actually measures and why it differs from ours. Where a row quotes an alternative calculation, the number shown is our own live data run through that alternative method — not the other site's stale value.\n\n≈59% — What it actually measures: Share of recent Zcash transactions or shielded actions that are private — a flow metric.; Why it differs from the ZecStats number: A transaction-share metric answers \"how much Zcash activity is private?\" while [live: shielded share of supply] answers \"how much of the coin supply is private?\". Both are true at the same time; only the second is a supply figure.\n≈30% — What it actually measures: Supply share, published as hardcoded prose with no timestamp.; Why it differs from the ZecStats number: zcashtracker.com states \"roughly 30% of all Zcash is held in shielded addresses\" as static text rather than a live query, so it does not move as the chain does. Our live reading is [live: shielded share of supply] as of [live: pool balances as-of time (UTC)] UTC.\n25.4% – 27% — What it actually measures: Genuine supply-share readings taken from different indexers on different days.; Why it differs from the ZecStats number: These are the same calculation as ours and are usually only hours or days out of date. The shielded share changes every block, so a spread of a point or two between honest trackers is normal, not an error.\n≈23% — What it actually measures: A supply share captured in November 2025 and republished since.; Why it differs from the ZecStats number: It was accurate when measured. It is a snapshot, not a current figure, and the Orchard-to-Ironwood migration has reshaped the pools entirely since then.\n≈18% — What it actually measures: Shielded balance divided by the 21,000,000 ZEC maximum supply.; Why it differs from the ZecStats number: Applying that denominator to today's data gives [live: shielded ZEC total]. It measures the shielded share of all Zcash that will ever exist, not of the [live: ZEC issued supply] ZEC that exists now.\nIronwood-blind figures — What it actually measures: Sprout + Sapling + Orchard only, from trackers not yet updated for NU6.3.; Why it differs from the ZecStats number: Dropping Ironwood's [live: Ironwood pool balance] ZEC from the numerator yields [live: derived from ZEC issued supply and Ironwood pool balance + 1 more] instead of [live: shielded share of supply] — an artefact of the tracker, not of the chain.\nLockbox-inclusive figures — What it actually measures: All four shielded pools plus the NU6 lockbox development fund.; Why it differs from the ZecStats number: Adding the lockbox's [live: lockbox balance] ZEC gives [live: derived from ZEC issued supply and lockbox balance + 1 more]. ZecStats excludes it because it is an undisbursed protocol reserve, not a user-shielded balance.\nCirculating-supply figures — What it actually measures: Shielded balance over exchange-reported circulating supply rather than consensus chain supply.; Why it differs from the ZecStats number: Using circulating supply implied by market cap ÷ price gives [live: derived from ZEC price (USD) and ZEC market cap (USD) + 1 more] — a definitional difference of a fraction of a point, not a data disagreement.\n\n## What a shielded percentage can and cannot tell you\n\nA single percentage invites a conclusion it cannot actually support. Three distinct quantities get collapsed into the phrase \"how shielded Zcash is\", and they answer genuinely different questions with genuinely different reliability. Being explicit about which one we publish is the point.\n\n- Pool balance — what we headline: The ZEC held inside each shielded pool, published by consensus as a value-pool total. This is the hardest shielded statistic to game: putting ZEC in a pool means genuinely committing it there, and every crossing of a pool boundary is public. It is what [live: shielded share of supply] measures, and nothing more.\n- Note count — what we refuse to headline: The number of individual shielded notes, often used as a proxy for anonymity-set size. It is cheap to inflate: anyone willing to pay fees can spray thousands of dust-sized notes and make the set look larger without adding a single new user. ZecStats does not report a note count as a privacy metric.\n- Genuine user activity — not directly observable: Whether shielded ZEC is being actively used, and by how many people, cannot be read off any chart. Shielded-to-shielded transfers are invisible by design — no amounts, no addresses, no counts. What is observable is pool-boundary flow: shielding, deshielding and turnstile migrations.\n\n> The objection we think is right: Zcash forum contributor hanh has argued publicly that shielded-pool charts \"paint an incomplete and often misleading picture\", because the underlying note counts can be inflated by spam and the charts imply an activity story the data does not carry. We agree with the substance, which is exactly why this page headlines a pool balance in ZEC rather than a note count, and states plainly that [live: shielded share of supply] describes where the coins sit — not how many people are using them, and not how strong the anonymity set is.\n\n## How ZecStats computes the shielded percentage\n\n[live: shielded ZEC total] ZEC (Sprout + Sapling + Orchard + Ironwood) ÷ [live: ZEC issued supply] ZEC (issued chain supply) × 100 (to percent) = [live: shielded share of supply] (shielded share)\n\nPool balances come from the chain's own consensus value pools rather than from address-clustering heuristics, so there is no estimation step between the ledger and the numerator. Supply is sanity-gated against consensus emission math and withheld rather than guessed if it fails — this site prints \"n/a\" instead of a plausible-looking number. The lockbox is excluded, all four privacy pools are included, and the timestamp attached to the figure is the instant the pool balances describe, not the instant the page was rendered.\n\nDig further: every pool balance and the 30-day shield/deshield flows · the sealed Orchard pool · the Ironwood migration tracker · why \"total migrated\" and \"pool balance\" disagree · full methodology and sources · the raw data behind these figures.\n\n## Frequently asked questions\n\nQ: What percentage of Zcash is shielded?\nA: [live: shielded share of supply] of the ZEC supply — [live: shielded ZEC total] ZEC, worth [live: shielded value (USD)] — sits in Zcash's shielded pools as of [live: pool balances as-of time (UTC)] UTC. That is the balance of the Sprout, Sapling, Orchard and Ironwood value pools divided by the chain's issued supply of [live: ZEC issued supply] ZEC, recomputed from the chain every couple of minutes rather than quoted from a past article.\n\nQ: Why do different sites report different shielded percentages for Zcash?\nA: Four reasons, and almost no source states which applies. (1) Stock versus flow: figures near 59% are a share of recent shielded transactions or actions, not a share of the coin supply. (2) Which pools are counted: a tracker that has not added the Ironwood pool since NU6.3 activated on July 28, 2026 is missing [live: Ironwood pool balance] ZEC. (3) Snapshot date: several widely republished \"23%\" figures date from November 2025. (4) Denominator: issued supply, circulating supply and the 21,000,000 maximum give three different answers from the same numerator. ZecStats reports [live: shielded share of supply] — shielded pool balances over issued chain supply, timestamped [live: pool balances as-of time (UTC)] UTC.\n\nQ: Does the shielded percentage include Ironwood?\nA: Yes. ZecStats counts all four privacy pools — Sprout, Sapling, Orchard and Ironwood — so the [live: shielded share of supply] figure includes the [live: Ironwood pool balance] ZEC now held in Ironwood. This matters more than it sounds: a tracker still showing only the pre-NU6.3 pools would report roughly [live: derived from ZEC issued supply and Ironwood pool balance + 1 more] from the same chain data, purely because it cannot see the newest pool.\n\nQ: Is 59% of Zcash shielded?\nA: No — that class of figure measures activity, not supply. Roughly [live: shielded share of supply] of the ZEC that exists is held in shielded pools. A separate and equally real statistic is the share of recent Zcash transactions that are shielded, which runs far higher because privacy-focused users transact more often than the transparent balances sitting dormant on exchanges. Both can be true simultaneously; they answer different questions.\n\nQ: What is the Zcash lockbox and does it count as shielded?\nA: The lockbox is the NU6 protocol development fund, accruing 0.1875 ZEC per block (12% of the block subsidy). It currently holds [live: lockbox balance] ZEC. ZecStats does not count it as shielded, because it is not a user-held private balance — it is an undisbursed protocol reserve. Including it would raise the headline figure to about [live: derived from ZEC issued supply and lockbox balance + 1 more], which is one small source of the spread between trackers.\n\nQ: How much Zcash is shielded in ZEC terms?\nA: [live: shielded ZEC total] ZEC as of [live: pool balances as-of time (UTC)] UTC: [live: Sprout pool balance] ZEC in Sprout, [live: Sapling pool balance] ZEC in Sapling, [live: Orchard pool balance] ZEC in the sealed Orchard pool and [live: Ironwood pool balance] ZEC in Ironwood. The remaining [live: transparent pool balance] ZEC sits in transparent, Bitcoin-style addresses.\n\nQ: What percentage of the 21 million maximum Zcash supply is shielded?\nA: About [live: shielded ZEC total]. That is the same shielded balance measured against the 21,000,000 ZEC cap rather than against the [live: ZEC issued supply] ZEC issued so far. It is a legitimate calculation and it is why some sources quote a figure in the high teens — but it understates how much of the money that actually exists today is private, so ZecStats headlines the issued-supply version instead.\n\nQ: Can the shielded percentage be manipulated or faked?\nA: The pool balance is the hardest shielded statistic to game: moving ZEC into a shielded pool means genuinely surrendering it to that pool, and every crossing of a pool boundary is publicly visible. Note counts and anonymity-set sizes are a different matter — anyone can inflate them cheaply by spamming tiny outputs, which is why ZecStats headlines the balance in ZEC and never a note count. What no chart can show is whether a shielded balance is being actively used, because shielded-to-shielded transfers are invisible by design.",
      "stats": {
        "words": 2498,
        "chars": 17812,
        "sections": 6,
        "faqs": 8,
        "live_spans": 82
      },
      "content_sha256": "07757263a811353064d4386825e09758d08b9cf2f763f5b5df8fabedc0f01184"
    },
    {
      "path": "/ironwood",
      "url": "https://zecstats.org/ironwood",
      "kind": "reference",
      "indexable": true,
      "title": "Zcash Ironwood Migration Tracker — NU6.3, Orchard Sealed | ZecStats",
      "h1": "The Ironwood migration",
      "summary": "Ironwood migration tracker: the sealed Orchard pool migrating into Ironwood, live",
      "description": "NU6.3 \"Ironwood\" sealed Zcash's Orchard pool on July 28, 2026 and opened a fifth shielded pool. [live: share of sealed Orchard migrated] of sealed Orchard has migrated — [live: Orchard balance still to migrate] ZEC still in Orchard, [live: Ironwood balance (migration tracker)] ZEC in Ironwood. Tracked live.",
      "sections": [
        {
          "id": "progress",
          "level": 2,
          "heading": "Migration progress",
          "origin": "code",
          "revision": null,
          "words": 181
        },
        {
          "id": "where-ironwood-s-value-came-from",
          "level": 3,
          "heading": "Where Ironwood's value came from",
          "origin": "code",
          "revision": null,
          "words": 122
        },
        {
          "id": "why",
          "level": 2,
          "heading": "Why Orchard sealed",
          "origin": "code",
          "revision": null,
          "words": 216
        },
        {
          "id": "watch",
          "level": 2,
          "heading": "What to watch",
          "origin": "code",
          "revision": null,
          "words": 105
        },
        {
          "id": "faq",
          "level": 2,
          "heading": "Frequently asked questions",
          "origin": "code",
          "revision": null,
          "words": 389
        }
      ],
      "faqs": [
        {
          "q": "What is Ironwood?",
          "a": "Ironwood is Zcash's fifth shielded pool, activated by network upgrade NU6.3 at block 3,428,143 on July 28, 2026. All new shielded activity now lands in Ironwood, and the previous flagship pool — Orchard — is sealed and migrating into it."
        },
        {
          "q": "Why was Orchard sealed?",
          "a": "Sealing older pools is how Zcash retires aging cryptography while keeping the money supply auditable. Orchard's balance can only exit through the migration into Ironwood, and each migration amount is publicly visible at the pool boundary — so any hidden inflation inside the old pool would be exposed as the balance moves across."
        },
        {
          "q": "How far along is the migration?",
          "a": "About [live: share of sealed Orchard migrated] of the ZEC sealed inside Orchard has crossed into Ironwood, with roughly [live: ZEC migrated out of Orchard in 24h] ZEC migrating out of Orchard in the last 24 hours. [live: Orchard balance still to migrate] ZEC remains in Orchard."
        },
        {
          "q": "Why do other trackers show a higher Ironwood number than the pool balance?",
          "a": "Because they are measuring different things. [live: total ZEC ever migrated into Ironwood] ZEC ZEC has crossed into Ironwood in total since activation, but the pool holds [live: Ironwood balance (migration tracker)] ZEC ZEC right now — the difference is ZEC that entered Ironwood and was later spent back out. A cumulative \"total migrated\" figure only ever rises; a pool balance moves both ways. Both are correct."
        },
        {
          "q": "Is everything in Ironwood migrated from Orchard?",
          "a": "No, and this is why migration progress is measured against Orchard rather than against Ironwood's balance. Of the [live: total ZEC ever migrated into Ironwood] ZEC ZEC that has entered Ironwood, [live: Ironwood inflow from Orchard] ZEC came from sealed Orchard; the rest was shielded directly in from Sapling and transparent addresses and was never in Orchard at all."
        },
        {
          "q": "Do I need to move my ZEC?",
          "a": "If your ZEC is in Orchard, current wallets handle the migration — most migrate funds automatically or with one tap when you next spend. Transparent, Sapling, and exchange-held ZEC are unaffected. There is no deadline announced, but sealed pools are exit-only."
        },
        {
          "q": "Is the migration private?",
          "a": "Individual migrations move through the turnstile, so per-transaction amounts crossing the Orchard → Ironwood boundary are publicly visible (that's the auditability trade-off), but sender identity stays shielded. Once inside Ironwood, activity is fully shielded again."
        },
        {
          "q": "What is NU6.3?",
          "a": "NU6.3 ('Ironwood') is the July 2026 Zcash network upgrade that introduced the Ironwood pool and sealed Orchard. It followed NU6's dev-fund changes (80% miners / 8% Zcash Community Grants / 12% lockbox) and arrived days after zcashd's end-of-support made the network Zebra-only."
        }
      ],
      "internal_links": [
        "/ironwood-reconciliation",
        "/ironwood",
        "/api/zec/summary",
        "/shielded"
      ],
      "external_links": [],
      "catalog": {
        "article": null,
        "enhancement": null,
        "page_copy": "9183ed854a17293b2de1a41f24afbcf0a18e02a3b548d416b5e580bad2a90d9c"
      },
      "placeholders": [
        {
          "token": "[live: Ironwood balance (migration tracker)]",
          "fields": [
            "ironwood.ironwoodZec"
          ],
          "derived": false,
          "count": 7
        },
        {
          "token": "[live: Ironwood inflow from Orchard]",
          "fields": [
            "ironwood.inflowBySource.orchardZec"
          ],
          "derived": false,
          "count": 3
        },
        {
          "token": "[live: Ironwood inflow from Sapling]",
          "fields": [
            "ironwood.inflowBySource.saplingZec"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: Ironwood inflow from transparent]",
          "fields": [
            "ironwood.inflowBySource.transparentZec"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: Ironwood inflow, mixed or unattributed]",
          "fields": [
            "ironwood.inflowBySource.otherZec"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: Ironwood net inflow, 24h]",
          "fields": [
            "ironwood.ironwoodInflow24hZec"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: Orchard balance still to migrate]",
          "fields": [
            "ironwood.orchardRemainingZec"
          ],
          "derived": false,
          "count": 4
        },
        {
          "token": "[live: Sprout pool balance]",
          "fields": [
            "pools.sprout"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: ZEC migrated out of Orchard in 24h]",
          "fields": [
            "ironwood.orchardMigrated24hZec"
          ],
          "derived": false,
          "count": 3
        },
        {
          "token": "[live: ZEC spent back out of Ironwood]",
          "fields": [
            "ironwood.spentOutZec"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: derived from total ZEC ever migrated into Ironwood and Ironwood inflow from Orchard]",
          "fields": [
            "ironwood.totalInflowZec",
            "ironwood.inflowBySource.orchardZec"
          ],
          "derived": true,
          "count": 1
        },
        {
          "token": "[live: derived from total ZEC ever migrated into Ironwood and Ironwood inflow from Sapling]",
          "fields": [
            "ironwood.totalInflowZec",
            "ironwood.inflowBySource.saplingZec"
          ],
          "derived": true,
          "count": 1
        },
        {
          "token": "[live: derived from total ZEC ever migrated into Ironwood and Ironwood inflow from transparent]",
          "fields": [
            "ironwood.totalInflowZec",
            "ironwood.inflowBySource.transparentZec"
          ],
          "derived": true,
          "count": 1
        },
        {
          "token": "[live: derived from total ZEC ever migrated into Ironwood and Ironwood inflow, mixed or unattributed]",
          "fields": [
            "ironwood.totalInflowZec",
            "ironwood.inflowBySource.otherZec"
          ],
          "derived": true,
          "count": 1
        },
        {
          "token": "[live: node software version]",
          "fields": [
            "network.subversion"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: share of sealed Orchard migrated]",
          "fields": [
            "ironwood.migrationPct"
          ],
          "derived": false,
          "count": 5
        },
        {
          "token": "[live: shielded share of supply]",
          "fields": [
            "pools.shieldedPct"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: total ZEC ever migrated into Ironwood]",
          "fields": [
            "ironwood.totalInflowZec"
          ],
          "derived": false,
          "count": 4
        }
      ],
      "text": "# The Ironwood migration\n\nNU6.3 sealed Orchard on July 28, 2026 — every coin now exits through a public turnstile into Ironwood, Zcash's fifth shielded pool. Tracked live.\n\nof orchard migrated: [live: share of sealed Orchard migrated]\norchard remaining: [live: Orchard balance still to migrate] ZEC\nironwood balance: [live: Ironwood balance (migration tracker)] ZEC\ntotal ever migrated in: [live: total ZEC ever migrated into Ironwood] ZEC\n\n## Migration progress\n\nOn July 28, 2026, at block 3,428,143, Zcash activated NU6.3 \"Ironwood\": a fifth shielded pool. The Orchard pool — home to most shielded ZEC since 2022 — was sealed to new shielded transactions, and its entire balance is now migrating through a public turnstile into Ironwood. This page tracks that migration live.\n\n[live: share of sealed Orchard migrated] of the ZEC sealed inside Orchard has crossed the turnstile into Ironwood.\n\nPublic trackers report very different Ironwood figures because they publish different quantities — current pool balance, cumulative inflow through the turnstile, and net migration rate are three separate numbers. See Ironwood metric definitions and reconciliation.\n\nOrchard migrated: [live: share of sealed Orchard migrated]\nOrchard remaining: [live: Orchard balance still to migrate] ZEC\nIronwood balance: [live: Ironwood balance (migration tracker)] ZEC\nMigrated from Orchard · 24h: [live: ZEC migrated out of Orchard in 24h] ZEC\nIronwood balance change · 24h: [live: Ironwood net inflow, 24h] ZEC\n\nNet change in the Ironwood pool balance over the observed 24-hour baseline, including new shielding and net of spends out. This is not gross inflow or a count of users or payments. A negative value means the observed pool balance fell; it does not imply negative gross inflow.\n\nSources: ZECStats Ironwood Migration Tracker · ZECStats live summary · ZECStats Ironwood reconciliation\n\n### Where Ironwood's value came from\n\n[live: total ZEC ever migrated into Ironwood] ZEC has entered Ironwood in total since activation — only [live: Ironwood inflow from Orchard] ZEC of it migrated out of sealed Orchard; the rest was shielded straight in from Sapling and transparent addresses, and was never in Orchard at all.\n\n- Migrated from Orchard · [live: Ironwood inflow from Orchard] ZEC · [live: derived from total ZEC ever migrated into Ironwood and Ironwood inflow from Orchard]\n- Shielded from Sapling · [live: Ironwood inflow from Sapling] ZEC · [live: derived from total ZEC ever migrated into Ironwood and Ironwood inflow from Sapling]\n- Shielded from transparent · [live: Ironwood inflow from transparent] ZEC · [live: derived from total ZEC ever migrated into Ironwood and Ironwood inflow from transparent]\n- Mixed / unattributed · [live: Ironwood inflow, mixed or unattributed] ZEC · [live: derived from total ZEC ever migrated into Ironwood and Ironwood inflow, mixed or unattributed]\n\n> Total migrated vs. pool balance: The figure above is gross — every ZEC that has ever crossed into Ironwood. The pool holds [live: Ironwood balance (migration tracker)] ZEC right now, because roughly [live: ZEC spent back out of Ironwood] ZEC has since been spent back out. A tracker quoting \"total migrated\" will always read higher than one quoting the live balance. Both are correct; this page shows both.\n\n## Why Orchard sealed\n\n- Cryptography ages — Zcash retires it by sealing the pool. Zcash's privacy comes from zero-knowledge circuits, and each generation — Sprout (2016), Sapling (2018), Orchard (2022), Ironwood (2026) — fixed limitations of the last. You cannot silently swap the cryptography under a shielded pool, so upgrades work by opening a new pool and sealing the old one. Orchard's balance can now only exit, into Ironwood.\n- The turnstile keeps a private money supply auditable. Funds exit a sealed pool through a turnstile: each crossing publicly reveals its amount, which means the total moved out can never exceed the total that went in. If a counterfeiting bug had ever been exploited inside the old pool, the turnstile is where the books would fail to balance — sender identity stays shielded the whole way.\n- Orchard funds migrate; new activity is born in Ironwood. Current wallets migrate Orchard balances automatically or with one tap on the next spend; transparent, Sapling, and exchange-held ZEC are unaffected. All new shielded activity lands directly in Ironwood — so its balance ([live: Ironwood balance (migration tracker)] ZEC) grows from both migration and brand-new shielding.\n\nIronwood's activation also marks a clean generational break: zcashd, the original node software, hit end-of-support at block 3,417,100 on July 18, 2026 — ten days before Ironwood — leaving the network running entirely on Zebra (current release [live: node software version]).\n\n## What to watch\n\n- Migration rate: About [live: ZEC migrated out of Orchard in 24h] ZEC migrated out of Orchard in the last 24h. A steady pace means wallets are moving on schedule; a stall would mean dormant funds.\n- The long tail: Sprout still holds [live: Sprout pool balance] ZEC eight years after closing — expect Orchard's last coins to take years too. The interesting part is the first 80%, not the last 1%.\n- Shielded share: If the migration churn shakes loose deshielding, the shielded percentage ([live: shielded share of supply] today) will show it.\n- Ironwood-native adoption: Ironwood's balance ([live: Ironwood balance (migration tracker)] ZEC) grows from both migration and brand-new shielding — new shielding is the real demand signal, visible in the daily flow chart.\n\n## Frequently asked questions\n\nQ: What is Ironwood?\nA: Ironwood is Zcash's fifth shielded pool, activated by network upgrade NU6.3 at block 3,428,143 on July 28, 2026. All new shielded activity now lands in Ironwood, and the previous flagship pool — Orchard — is sealed and migrating into it.\n\nQ: Why was Orchard sealed?\nA: Sealing older pools is how Zcash retires aging cryptography while keeping the money supply auditable. Orchard's balance can only exit through the migration into Ironwood, and each migration amount is publicly visible at the pool boundary — so any hidden inflation inside the old pool would be exposed as the balance moves across.\n\nQ: How far along is the migration?\nA: About [live: share of sealed Orchard migrated] of the ZEC sealed inside Orchard has crossed into Ironwood, with roughly [live: ZEC migrated out of Orchard in 24h] ZEC migrating out of Orchard in the last 24 hours. [live: Orchard balance still to migrate] ZEC remains in Orchard.\n\nQ: Why do other trackers show a higher Ironwood number than the pool balance?\nA: Because they are measuring different things. [live: total ZEC ever migrated into Ironwood] ZEC ZEC has crossed into Ironwood in total since activation, but the pool holds [live: Ironwood balance (migration tracker)] ZEC ZEC right now — the difference is ZEC that entered Ironwood and was later spent back out. A cumulative \"total migrated\" figure only ever rises; a pool balance moves both ways. Both are correct.\n\nQ: Is everything in Ironwood migrated from Orchard?\nA: No, and this is why migration progress is measured against Orchard rather than against Ironwood's balance. Of the [live: total ZEC ever migrated into Ironwood] ZEC ZEC that has entered Ironwood, [live: Ironwood inflow from Orchard] ZEC came from sealed Orchard; the rest was shielded directly in from Sapling and transparent addresses and was never in Orchard at all.\n\nQ: Do I need to move my ZEC?\nA: If your ZEC is in Orchard, current wallets handle the migration — most migrate funds automatically or with one tap when you next spend. Transparent, Sapling, and exchange-held ZEC are unaffected. There is no deadline announced, but sealed pools are exit-only.\n\nQ: Is the migration private?\nA: Individual migrations move through the turnstile, so per-transaction amounts crossing the Orchard → Ironwood boundary are publicly visible (that's the auditability trade-off), but sender identity stays shielded. Once inside Ironwood, activity is fully shielded again.\n\nQ: What is NU6.3?\nA: NU6.3 ('Ironwood') is the July 2026 Zcash network upgrade that introduced the Ironwood pool and sealed Orchard. It followed NU6's dev-fund changes (80% miners / 8% Zcash Community Grants / 12% lockbox) and arrived days after zcashd's end-of-support made the network Zebra-only.",
      "stats": {
        "words": 1073,
        "chars": 8348,
        "sections": 5,
        "faqs": 8,
        "live_spans": 38
      },
      "content_sha256": "a40e0d168bd6286c32c9cffb673d141b85bdfdd76962cd2a0d021495c2e2333c"
    },
    {
      "path": "/ironwood-reconciliation",
      "url": "https://zecstats.org/ironwood-reconciliation",
      "kind": "reference",
      "indexable": true,
      "title": "Ironwood Migration Tracker — [live: share of sealed Orchard migrated] of Orchard Migrated | ZecStats",
      "h1": "Ironwood migration numbers, reconciled",
      "summary": "Ironwood pool balance vs cumulative turnstile inflow vs migration rate, reconciled",
      "description": "Ironwood trackers disagree because they count different things: [live: share of sealed Orchard migrated] of sealed Orchard migrated, [live: total ZEC ever migrated into Ironwood] ZEC crossed the turnstile, [live: Ironwood balance (migration tracker)] ZEC in the pool.",
      "sections": [
        {
          "id": "answer",
          "level": 2,
          "heading": "Three numbers, one migration",
          "origin": "code",
          "revision": null,
          "words": 293
        },
        {
          "id": "quantities",
          "level": 2,
          "heading": "The three quantities, and why they can never be equal",
          "origin": "code",
          "revision": null,
          "words": 472
        },
        {
          "id": "origin",
          "level": 2,
          "heading": "Where the inflow actually came from",
          "origin": "code",
          "revision": null,
          "words": 185
        },
        {
          "id": "trackers",
          "level": 2,
          "heading": "What each public tracker appears to measure",
          "origin": "code",
          "revision": null,
          "words": 403
        },
        {
          "id": "matters",
          "level": 2,
          "heading": "The turnstile is an audit — if you read it correctly",
          "origin": "code",
          "revision": null,
          "words": 360
        },
        {
          "id": "rate",
          "level": 2,
          "heading": "Rate and completion",
          "origin": "code",
          "revision": null,
          "words": 218
        },
        {
          "id": "faq",
          "level": 2,
          "heading": "Frequently asked questions",
          "origin": "code",
          "revision": null,
          "words": 597
        }
      ],
      "faqs": [
        {
          "q": "How much ZEC has migrated to Ironwood?",
          "a": "Two honest answers, because two things are being counted. [live: Ironwood inflow from Orchard] ZEC has crossed the turnstile out of the sealed Orchard pool — that is \"migrated\" in the strict sense, and it works out to [live: share of sealed Orchard migrated] of the [live: Orchard balance when it sealed] ZEC that was sealed inside Orchard when the pool closed. Counting everything that has entered Ironwood from any pool, gross inflow is [live: total ZEC ever migrated into Ironwood] ZEC. The Ironwood pool itself holds [live: Ironwood balance (migration tracker)] ZEC right now, which is lower again because [live: ZEC spent back out of Ironwood] ZEC has since been spent back out."
        },
        {
          "q": "Why do Ironwood trackers show different numbers?",
          "a": "Because they publish different quantities under the same word. ironwood.zodl.com shows the current Ironwood pool balance; CipherScan and ironwood.live show the cumulative amount migrated out of Orchard. A balance moves in both directions and is net of spends; a cumulative figure only ever rises and ignores what left. Neither is wrong, and neither site labels which one it is. This was first spelled out by Zebraman in the Zcash Community Forum thread \"Ironwood migration dashboards\" on July 28, 2026."
        },
        {
          "q": "Is the Orchard pool empty yet?",
          "a": "No. [live: Orchard balance still to migrate] ZEC is still sitting in sealed Orchard, and [live: share of sealed Orchard migrated] of the pool's balance at activation has crossed into Ironwood. Sealed pools drain on a long tail — Sprout still holds [live: Sprout pool balance] ZEC eight years after it closed — so expect the last of Orchard to take years, with no deadline announced."
        },
        {
          "q": "What is the Orchard turnstile?",
          "a": "A turnstile is the one-way exit from a sealed shielded pool. When NU6.3 sealed Orchard, the only spend the consensus rules still permit from an Orchard note is one that moves value out into Ironwood, and the amount crossing the boundary is revealed publicly even though the sender stays shielded. That is what makes the migration auditable: the total that comes out through the turnstile can never exceed the total that was inside."
        },
        {
          "q": "Did NU6.3 change Zcash's supply?",
          "a": "No. NU6.3 opened a fifth shielded pool and sealed the fourth; it did not mint, burn, or reissue any ZEC. Migration moves value between pools, so pool balances change while total supply follows the same emission schedule it always has. A tracker quoting cumulative turnstile inflow as if it were a pool balance can make Ironwood look larger than it is, but that is a labelling artefact, not new coins."
        },
        {
          "q": "Why is the Ironwood pool balance smaller than the total migrated?",
          "a": "Because ZEC that entered Ironwood can be spent again. [live: total ZEC ever migrated into Ironwood] ZEC has crossed in since activation, [live: ZEC spent back out of Ironwood] ZEC has since left, and the pool holds [live: Ironwood balance (migration tracker)] ZEC today. Cumulative inflow minus spent-out equals the balance, by construction — the gap is ordinary shielded spending, not a discrepancy."
        },
        {
          "q": "Is everything in Ironwood migrated from Orchard?",
          "a": "No, and that is the second reason naive \"migrated\" figures diverge. Of the [live: total ZEC ever migrated into Ironwood] ZEC that has entered Ironwood, [live: Ironwood inflow from Orchard] ZEC came from sealed Orchard; the remainder was shielded straight in from Sapling and transparent addresses and was never in Orchard at all. Measuring progress as Ironwood ÷ (Ironwood + Orchard) counts that new shielding as migration and overstates how far along the migration is."
        },
        {
          "q": "Which number does ZecStats publish?",
          "a": "All three, side by side, with the denominator named. Migration progress is Orchard-sourced turnstile inflow divided by Orchard's balance at activation ([live: Orchard balance when it sealed] ZEC), which is derived from the chain each refresh rather than hardcoded. The live tracker is at /ironwood, the raw figures are in /api/zec/summary, and every source is documented at /methodology."
        }
      ],
      "internal_links": [
        "/ironwood",
        "/methodology",
        "/shielded-percentage",
        "/shielded",
        "/orchard-pool",
        "/api/zec/summary",
        "/data"
      ],
      "external_links": [
        {
          "url": "https://forum.zcashcommunity.com/t/ironwood-migration-dashboards/56841",
          "text": "Ironwood migration dashboards"
        }
      ],
      "catalog": {
        "article": null,
        "enhancement": null,
        "page_copy": null
      },
      "placeholders": [
        {
          "token": "[live: Ironwood balance (migration tracker)]",
          "fields": [
            "ironwood.ironwoodZec"
          ],
          "derived": false,
          "count": 10
        },
        {
          "token": "[live: Ironwood inflow from Orchard]",
          "fields": [
            "ironwood.inflowBySource.orchardZec"
          ],
          "derived": false,
          "count": 6
        },
        {
          "token": "[live: Ironwood inflow from Sapling]",
          "fields": [
            "ironwood.inflowBySource.saplingZec"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: Ironwood inflow from transparent]",
          "fields": [
            "ironwood.inflowBySource.transparentZec"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: Ironwood inflow, mixed or unattributed]",
          "fields": [
            "ironwood.inflowBySource.otherZec"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: Ironwood net inflow, 24h]",
          "fields": [
            "ironwood.ironwoodInflow24hZec"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: Orchard balance still to migrate]",
          "fields": [
            "ironwood.orchardRemainingZec"
          ],
          "derived": false,
          "count": 5
        },
        {
          "token": "[live: Orchard balance when it sealed]",
          "fields": [
            "ironwood.orchardAtActivationZec"
          ],
          "derived": false,
          "count": 5
        },
        {
          "token": "[live: Sprout pool balance]",
          "fields": [
            "pools.sprout"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: ZEC migrated out of Orchard in 24h]",
          "fields": [
            "ironwood.orchardMigrated24hZec"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: ZEC spent back out of Ironwood]",
          "fields": [
            "ironwood.spentOutZec"
          ],
          "derived": false,
          "count": 6
        },
        {
          "token": "[live: derived from total ZEC ever migrated into Ironwood and Ironwood inflow from Orchard]",
          "fields": [
            "ironwood.totalInflowZec",
            "ironwood.inflowBySource.orchardZec"
          ],
          "derived": true,
          "count": 1
        },
        {
          "token": "[live: derived from total ZEC ever migrated into Ironwood and Ironwood inflow from Sapling]",
          "fields": [
            "ironwood.totalInflowZec",
            "ironwood.inflowBySource.saplingZec"
          ],
          "derived": true,
          "count": 1
        },
        {
          "token": "[live: derived from total ZEC ever migrated into Ironwood and Ironwood inflow from transparent]",
          "fields": [
            "ironwood.totalInflowZec",
            "ironwood.inflowBySource.transparentZec"
          ],
          "derived": true,
          "count": 1
        },
        {
          "token": "[live: derived from total ZEC ever migrated into Ironwood and Ironwood inflow, mixed or unattributed]",
          "fields": [
            "ironwood.totalInflowZec",
            "ironwood.inflowBySource.otherZec"
          ],
          "derived": true,
          "count": 1
        },
        {
          "token": "[live: pool balances as-of time (UTC)]",
          "fields": [
            "pools.updatedAt"
          ],
          "derived": false,
          "count": 2
        },
        {
          "token": "[live: share of sealed Orchard migrated]",
          "fields": [
            "ironwood.migrationPct"
          ],
          "derived": false,
          "count": 11
        },
        {
          "token": "[live: total ZEC ever migrated into Ironwood]",
          "fields": [
            "ironwood.totalInflowZec"
          ],
          "derived": false,
          "count": 10
        }
      ],
      "text": "# Ironwood migration numbers, reconciled\n\nTrackers publish wildly different Ironwood figures because they count different things. [live: share of sealed Orchard migrated] of the sealed Orchard pool has migrated; [live: total ZEC ever migrated into Ironwood] ZEC has crossed the turnstile in total; the pool holds [live: Ironwood balance (migration tracker)] ZEC. Here is why all three are correct.\n\nof sealed orchard migrated: [live: share of sealed Orchard migrated]\ncumulative turnstile inflow: [live: total ZEC ever migrated into Ironwood] ZEC\nironwood balance now: [live: Ironwood balance (migration tracker)] ZEC\norchard remaining: [live: Orchard balance still to migrate] ZEC\n\n## Three numbers, one migration\n\nAs of [live: pool balances as-of time (UTC)] UTC, [live: total ZEC ever migrated into Ironwood] ZEC has crossed the turnstile into Ironwood since NU6.3 activated, the Ironwood pool holds [live: Ironwood balance (migration tracker)] ZEC right now, and [live: share of sealed Orchard migrated] of the ZEC that was sealed inside the Orchard pool at activation has migrated out of it. Those three sentences describe the same event and none of them is the same number. That is the entire reason public Ironwood dashboards disagree.\n\nCumulative turnstile inflow: [live: total ZEC ever migrated into Ironwood] ZEC\nIronwood pool balance now: [live: Ironwood balance (migration tracker)] ZEC\nSpent back out of Ironwood: [live: ZEC spent back out of Ironwood] ZEC\nMigrated out of sealed Orchard: [live: Ironwood inflow from Orchard] ZEC\nOrchard remaining (sealed): [live: Orchard balance still to migrate] ZEC\nOrchard balance at activation: [live: Orchard balance when it sealed] ZEC\n\nIn the weeks after activation the published figures diverged badly — the same migration was being reported at scales that differed several times over, depending on which dashboard a reader happened to open. The cause was identified in the Zcash Community Forum thread Ironwood migration dashboards, opened by Zebraman on July 28, 2026: ironwood.zodl.com lists the balance present in Ironwood, while CipherScan and ironwood.live track the amount that migrated from Orchard into Ironwood. Different quantities, same headline word, and neither site says which it is publishing.\n\nWe have been on the receiving end of the same confusion. On August 4, 2026 a reader reported our Ironwood figure as a bug because a headline elsewhere announced a round-number \"migrated\" milestone while ZecStats showed less. Nothing was wrong: theirs was cumulative gross inflow, ours was the live pool balance, and the site was showing only one of the two without explaining the difference. The fix was to publish both, and then to write this page. For the live tracker itself — progress, rate, what to watch — see the Ironwood migration tracker; this page is the definitions and the reconciliation behind it.\n\n## The three quantities, and why they can never be equal\n\n- Current Ironwood pool balance: [live: Ironwood balance (migration tracker)] ZEC — the ZEC sitting in the Ironwood pool at the chain tip. It moves in both directions: up as Orchard migrates in and as new value is shielded, down whenever ZEC is spent out to a transparent or Sapling destination. This is a stock, not a total.\n- Cumulative turnstile inflow: [live: total ZEC ever migrated into Ironwood] ZEC — everything that has ever entered Ironwood since block 3,428,143, summed across every crossing. It only ever rises, it never subtracts what later left, and it includes value that arrived from pools other than Orchard.\n- Spent back out: [live: ZEC spent back out of Ironwood] ZEC — value that entered Ironwood and has since been spent out again. This is the entire gap between the two figures above, and it is ordinary wallet activity rather than any kind of leakage.\n\n[live: total ZEC ever migrated into Ironwood] ZEC (cumulative inflow) − [live: ZEC spent back out of Ironwood] ZEC (spent back out) = [live: Ironwood balance (migration tracker)] ZEC (pool balance now)\n\nThe identity holds by construction, which is exactly why the two headline figures can never converge. The moment a single Ironwood note is spent outward, the balance falls below cumulative inflow and stays there; the moment a single transparent coin is shielded directly into Ironwood, the balance rises without anything having migrated. A tracker publishing the balance will read below one publishing cumulative inflow, permanently and correctly. Asking which is \"the real Ironwood number\" is asking the wrong question — the right question is which one answers what you wanted to know.\n\nThe Orchard side of the ledger has the same trap. Orchard remaining is a balance: [live: Orchard balance still to migrate] ZEC still sealed in the pool today. Migration progress is a ratio, and it is emphatically not a share of all ZEC — it is the share of the Orchard pool's own balance at the moment it sealed:\n\n[live: Ironwood inflow from Orchard] ZEC (migrated out of Orchard) ÷ [live: Orchard balance when it sealed] ZEC (Orchard at activation) = [live: share of sealed Orchard migrated] (of sealed Orchard migrated)\n\nThat denominator is itself derived rather than assumed. Sealed Orchard is exit-only through the turnstile, so nothing can leave it by any other route — which means Orchard's balance at activation must equal what is still in the pool plus everything that has crossed out of it. We recompute it on every refresh instead of pinning a constant, because a constant would silently rot: an earlier ZecStats build hardcoded an activation balance and the number was later shown to be impossible. The full derivation and its audit checks are in the methodology.\n\n> Read the denominator, always: [live: share of sealed Orchard migrated] is the share of the sealed Orchard pool that has migrated. It is not the share of Zcash's total supply, not the share of all shielded ZEC, and not Ironwood ÷ (Ironwood + Orchard) — that last formula was our own earlier mistake, and it overstated progress because it counted brand-new shielding as migration. For supply-wide context see the shielded percentage and the shielded pools page.\n\n## Where the inflow actually came from\n\nNot everything that entered Ironwood is migrated Orchard value, and this is the second independent reason \"migrated\" figures diverge. Ironwood is the pool where all new shielded activity now lands, so value arriving from Sapling notes and from transparent addresses is mixed in with the Orchard migration in any raw inflow total. Splitting gross inflow by the pool each crossing came from is the only way to isolate the migration itself.\n\n- Migrated from sealed Orchard · [live: Ironwood inflow from Orchard] ZEC · [live: derived from total ZEC ever migrated into Ironwood and Ironwood inflow from Orchard]\n- Shielded in from Sapling · [live: Ironwood inflow from Sapling] ZEC · [live: derived from total ZEC ever migrated into Ironwood and Ironwood inflow from Sapling]\n- Shielded in from transparent · [live: Ironwood inflow from transparent] ZEC · [live: derived from total ZEC ever migrated into Ironwood and Ironwood inflow from transparent]\n- Mixed / unattributed spends · [live: Ironwood inflow, mixed or unattributed] ZEC · [live: derived from total ZEC ever migrated into Ironwood and Ironwood inflow, mixed or unattributed]\n\nOnly the Orchard slice belongs in a migration percentage. Counting the rest would mean a wave of newly shielded ZEC — a demand signal, and a good one — reading on the dashboard as Orchard emptying faster, which it is not. The split comes from turnstile events indexed by an independent Zcash indexer running its own node; if that single source is unavailable, this section publishes — rather than an approximation, and nothing else on the site depends on it. Related: the Orchard pool.\n\n## What each public tracker appears to measure\n\nBelow is our best like-for-like reading of the other public Ironwood dashboards. To be clear about the framing: these sites are not wrong. They are measuring different quantities, mostly without saying so, and a reader who assumes two dashboards answer the same question will conclude one of them is broken. Where we could not verify what a tracker measures — several render client-side or would not serve our fetch — the table says so rather than guessing.\n\nironwood.zodl.com (Zodl / Zashi wallet team) — Appears to publish: Current Ironwood pool balance; Why it differs from our figure: Same quantity as our [live: Ironwood balance (migration tracker)] ZEC balance. Reads below any cumulative figure because it is net of the [live: ZEC spent back out of Ironwood] ZEC spent back out.\ncipherscan.app/ironwood — Appears to publish: Cumulative amount migrated out of Orchard; Why it differs from our figure: Closest to our [live: Ironwood inflow from Orchard] ZEC Orchard-sourced line. Only ever rises. CipherScan is also our upstream for pool balances; we did not scrape its Ironwood page for this table, to stay inside its rate limit.\nironwood.live — Appears to publish: Cumulative amount migrated (per the forum thread); Why it differs from our figure: Unverified by us — the site did not complete a TLS handshake for our fetch, so the definition here is the forum thread's characterisation, not our own inspection.\nzechub.wiki/dashboard — Appears to publish: Per-pool charts (Sprout, Sapling, Orchard, Ironwood); Why it differs from our figure: Unverified — the dashboard renders client-side and the served HTML exposes only the pool selector, so we could not confirm whether the series are balances or flows.\nBlockworks Research — Appears to publish: Zcash shielded-supply metrics; Why it differs from our figure: Unverified — we could not locate a public Ironwood-specific metric to compare against, so we make no claim about what it measures.\n\nThe same forum thread also points to CyphZec.com, and more dashboards have appeared since. The useful takeaway is not a ranking, it is a habit: before comparing two Ironwood numbers, establish whether each is a balance or a cumulative total, and if it is a percentage, ask what sits in the denominator. Almost every apparent contradiction in this dataset resolves at that question. ZecStats publishes all three quantities together, with the as-of stamp bound to the instant the balances describe rather than to page-render time — during heavy migration the pool moves thousands of ZEC an hour, and an hour-old number presented as current is its own kind of wrong.\n\n## The turnstile is an audit — if you read it correctly\n\n- A sealed pool with a public turnstile makes shielded value auditable. Inside a shielded pool, balances are invisible by design: nobody can observe how much any participant holds, and no external observer can prove the pool's contents. A turnstile changes that at the boundary. Every exit from sealed Orchard reveals its amount publicly, while leaving sender identity shielded — so the total that comes out is measurable even though the pool never was. Ordinary shielded-to-shielded transfers offer no such vantage point.\n- The ledger of cumulative-in versus balance is where you would see a problem. The recurring question about any privacy pool is whether value could have been counterfeited inside it. The turnstile is the accounting checkpoint for exactly that: if more ZEC exited the sealed pool than consensus rules ever permitted to be in it, the books would fail to balance in public. The same discipline applies on the Ironwood side, where cumulative inflow minus spent-out must equal the live balance. Those identities are what our data audit checks every run — and misreading a cumulative figure as a balance breaks the reader's ability to run that check at all.\n- What this does not prove — stated plainly. A turnstile audit is a statement about value conservation at a pool boundary, not a proof that the retired cryptography was flawless, and it says nothing about a hypothetical bug that was never exercised. It also does not weaken privacy for individual holders: crossing amounts are public, but who moved them is not. ZecStats reports only what the chain publishes at pool boundaries and never estimates activity inside a shielded pool — see what we refuse to publish.\n\nThis is why the labelling problem is worth a page of its own rather than a footnote. The migration is one of the few moments when a large body of shielded ZEC becomes publicly measurable, and the measurement is only meaningful if everyone reading it agrees on what is being counted. Our raw figures are available at /api/zec/summary and in bulk on the data downloads page, so any of this can be checked rather than taken on trust.\n\n## Rate and completion\n\n[live: share of sealed Orchard migrated] of sealed Orchard migrated (Sealed 2026-07-28 · block 3,428,143 → Orchard empty)\n\nMigrated from Orchard · 24h: [live: ZEC migrated out of Orchard in 24h] ZEC\nIronwood inflow · 24h: [live: Ironwood net inflow, 24h] ZEC\nOrchard remaining: [live: Orchard balance still to migrate] ZEC\nActivation height: 3,428,143\nActivation date: 2026-07-28\nFigures as of: [live: pool balances as-of time (UTC)] UTC\n\nThe two 24-hour figures are deliberately separate and will rarely agree. Migrated from Orchard · 24h is the fall in the sealed pool's balance — value genuinely leaving Orchard. Ironwood inflow · 24h is the rise in the Ironwood pool, which also captures new shielding and is net of anything spent back out on the same day. Quoting either one as \"ZEC migrated today\" without saying which is how a daily rate ends up wrong by a wide margin. Completion, meanwhile, is measured against the sealed pool: [live: share of sealed Orchard migrated] of the [live: Orchard balance when it sealed] ZEC sealed in Orchard at activation has now crossed.\n\nWhere a 24-hour figure reads —, that is deliberate. Upstream baselines for pool deltas have been observed to shift under us — one such contradiction understated a daily move by orders of magnitude — so when the available deltas disagree with our own recorded history, ZecStats withholds the number and raises a warning instead of publishing whichever value happened to arrive. The gap closes on its own once our own snapshot history spans the full window. The same policy governs every — on this page.\n\n## Frequently asked questions\n\nQ: How much ZEC has migrated to Ironwood?\nA: Two honest answers, because two things are being counted. [live: Ironwood inflow from Orchard] ZEC has crossed the turnstile out of the sealed Orchard pool — that is \"migrated\" in the strict sense, and it works out to [live: share of sealed Orchard migrated] of the [live: Orchard balance when it sealed] ZEC that was sealed inside Orchard when the pool closed. Counting everything that has entered Ironwood from any pool, gross inflow is [live: total ZEC ever migrated into Ironwood] ZEC. The Ironwood pool itself holds [live: Ironwood balance (migration tracker)] ZEC right now, which is lower again because [live: ZEC spent back out of Ironwood] ZEC has since been spent back out.\n\nQ: Why do Ironwood trackers show different numbers?\nA: Because they publish different quantities under the same word. ironwood.zodl.com shows the current Ironwood pool balance; CipherScan and ironwood.live show the cumulative amount migrated out of Orchard. A balance moves in both directions and is net of spends; a cumulative figure only ever rises and ignores what left. Neither is wrong, and neither site labels which one it is. This was first spelled out by Zebraman in the Zcash Community Forum thread \"Ironwood migration dashboards\" on July 28, 2026.\n\nQ: Is the Orchard pool empty yet?\nA: No. [live: Orchard balance still to migrate] ZEC is still sitting in sealed Orchard, and [live: share of sealed Orchard migrated] of the pool's balance at activation has crossed into Ironwood. Sealed pools drain on a long tail — Sprout still holds [live: Sprout pool balance] ZEC eight years after it closed — so expect the last of Orchard to take years, with no deadline announced.\n\nQ: What is the Orchard turnstile?\nA: A turnstile is the one-way exit from a sealed shielded pool. When NU6.3 sealed Orchard, the only spend the consensus rules still permit from an Orchard note is one that moves value out into Ironwood, and the amount crossing the boundary is revealed publicly even though the sender stays shielded. That is what makes the migration auditable: the total that comes out through the turnstile can never exceed the total that was inside.\n\nQ: Did NU6.3 change Zcash's supply?\nA: No. NU6.3 opened a fifth shielded pool and sealed the fourth; it did not mint, burn, or reissue any ZEC. Migration moves value between pools, so pool balances change while total supply follows the same emission schedule it always has. A tracker quoting cumulative turnstile inflow as if it were a pool balance can make Ironwood look larger than it is, but that is a labelling artefact, not new coins.\n\nQ: Why is the Ironwood pool balance smaller than the total migrated?\nA: Because ZEC that entered Ironwood can be spent again. [live: total ZEC ever migrated into Ironwood] ZEC has crossed in since activation, [live: ZEC spent back out of Ironwood] ZEC has since left, and the pool holds [live: Ironwood balance (migration tracker)] ZEC today. Cumulative inflow minus spent-out equals the balance, by construction — the gap is ordinary shielded spending, not a discrepancy.\n\nQ: Is everything in Ironwood migrated from Orchard?\nA: No, and that is the second reason naive \"migrated\" figures diverge. Of the [live: total ZEC ever migrated into Ironwood] ZEC that has entered Ironwood, [live: Ironwood inflow from Orchard] ZEC came from sealed Orchard; the remainder was shielded straight in from Sapling and transparent addresses and was never in Orchard at all. Measuring progress as Ironwood ÷ (Ironwood + Orchard) counts that new shielding as migration and overstates how far along the migration is.\n\nQ: Which number does ZecStats publish?\nA: All three, side by side, with the denominator named. Migration progress is Orchard-sourced turnstile inflow divided by Orchard's balance at activation ([live: Orchard balance when it sealed] ZEC), which is derived from the chain each refresh rather than hardcoded. The live tracker is at /ironwood, the raw figures are in /api/zec/summary, and every source is documented at /methodology.\n\nKeep reading: the live Ironwood tracker · the Orchard pool · Zcash shielded pools · what share of ZEC is shielded · methodology and sources · data downloads.",
      "stats": {
        "words": 2606,
        "chars": 18491,
        "sections": 7,
        "faqs": 8,
        "live_spans": 65
      },
      "content_sha256": "b43a2f8aa163bc7067bb8bf6d21c28377b14c344bb4570f32792585eb4e0ddd3"
    },
    {
      "path": "/orchard-pool",
      "url": "https://zecstats.org/orchard-pool",
      "kind": "reference",
      "indexable": true,
      "title": "Zcash Orchard Pool Balance: [live: Orchard pool balance] ZEC Left (Sealed) | ZecStats",
      "h1": "Zcash Orchard pool balance",
      "summary": "Live Orchard pool balance, sealed by the Ironwood network upgrade",
      "description": "[live: Orchard pool balance] ZEC is in the Zcash Orchard pool right now, and [live: share of sealed Orchard migrated] of the sealed balance has already crossed into Ironwood. Live Orchard balance, what sealing means, how much has left, and how long the drain has to run.",
      "sections": [
        {
          "id": "balance",
          "level": 2,
          "heading": "How much ZEC is in the Orchard pool?",
          "origin": "code",
          "revision": null,
          "words": 136
        },
        {
          "id": "what-is",
          "level": 2,
          "heading": "What is the Orchard pool?",
          "origin": "code",
          "revision": null,
          "words": 187
        },
        {
          "id": "sealed",
          "level": 2,
          "heading": "What “sealed” means for Orchard",
          "origin": "code",
          "revision": null,
          "words": 196
        },
        {
          "id": "exit",
          "level": 2,
          "heading": "Where the ZEC is going",
          "origin": "code",
          "revision": null,
          "words": 167
        },
        {
          "id": "at-a-glance",
          "level": 2,
          "heading": "Orchard pool at a glance",
          "origin": "code",
          "revision": null,
          "words": 104
        },
        {
          "id": "trajectory",
          "level": 2,
          "heading": "When will the Orchard pool be empty?",
          "origin": "code",
          "revision": null,
          "words": 128
        },
        {
          "id": "faq",
          "level": 2,
          "heading": "Frequently asked questions",
          "origin": "code",
          "revision": null,
          "words": 461
        },
        {
          "id": "related",
          "level": 2,
          "heading": "Related ZecStats pages",
          "origin": "code",
          "revision": null,
          "words": 45
        }
      ],
      "faqs": [
        {
          "q": "How much ZEC is in the Orchard pool?",
          "a": "[live: Orchard pool balance] ZEC is in Zcash's Orchard pool right now — [live: derived from ZEC issued supply and Orchard pool balance] of the total ZEC supply and [live: derived from Orchard pool balance and shielded ZEC total] of all shielded ZEC. The pool was sealed by network upgrade NU6.3 on July 28, 2026, so the balance can only fall from here. Figures are read from the chain tip, as of [live: pool balances as-of time (UTC)] UTC."
        },
        {
          "q": "Is the Orchard pool still open?",
          "a": "No. NU6.3 \"Ironwood\" sealed Orchard at block 3,428,143 on 2026-07-28. A sealed pool accepts no new shielded transactions: no ZEC can be shielded into Orchard, and an Orchard note cannot be spent to a transparent or Sapling address. The only permitted movement is out through a public turnstile into the Ironwood pool."
        },
        {
          "q": "What is the Zcash Orchard pool?",
          "a": "Orchard is the Zcash shielded pool introduced in 2022 with the NU5 upgrade. It uses the Halo 2 proving system, which removed the trusted setup that earlier Zcash circuits required, and it is the pool behind unified addresses. From 2022 until it sealed in 2026 it held the large majority of shielded ZEC."
        },
        {
          "q": "How much ZEC has left the Orchard pool since it sealed?",
          "a": "[live: Ironwood inflow from Orchard] ZEC has crossed the turnstile out of Orchard into Ironwood — [live: share of sealed Orchard migrated] of the [live: Orchard balance when it sealed] ZEC sealed inside the pool. In the last 24 hours [live: ZEC migrated out of Orchard in 24h] ZEC left."
        },
        {
          "q": "When will the Orchard pool be empty?",
          "a": "No deadline has been announced and no protocol rule forces coins out. At the last 24 hours' pace ([live: ZEC migrated out of Orchard in 24h] ZEC per day) the remaining [live: Orchard pool balance] ZEC would take about [live: derived from Orchard pool balance and ZEC migrated out of Orchard in 24h] days — a straight-line projection, not a forecast, because migration pace falls as active wallets finish. Sprout, sealed the same way years earlier, still holds [live: Sprout pool balance] ZEC."
        },
        {
          "q": "Can I still receive ZEC into an Orchard address?",
          "a": "No new value can enter Orchard. Current wallets route new shielded funds into Ironwood and migrate an existing Orchard balance automatically, or on your next spend. Transparent, Sapling and exchange-held ZEC are unaffected by the sealing."
        },
        {
          "q": "Do I need to move my ZEC out of Orchard?",
          "a": "A sealed pool is exit-only, not a countdown: Orchard funds do not expire. Running a current wallet is what matters, because it performs the turnstile crossing for you. Until it crosses, the ZEC stays in Orchard and is counted in the balance on this page."
        },
        {
          "q": "Why do trackers report different Orchard balances?",
          "a": "Two reasons. Some read an hourly pool rollup while ZecStats reads the chain tip, and during the migration Orchard moves thousands of ZEC an hour. And some place a cumulative \"total migrated\" figure — which only ever rises — next to a pool balance, which moves both ways. ZecStats publishes the balance ([live: Orchard pool balance] ZEC), the gross amount that has crossed ([live: Ironwood inflow from Orchard] ZEC), and the timestamp the balance describes, so the two cannot be confused."
        }
      ],
      "internal_links": [
        "/ironwood",
        "/ironwood-reconciliation",
        "/shielded",
        "/shielded-percentage",
        "/how-many-zcash-are-there",
        "/network",
        "/halving",
        "/price",
        "/methodology",
        "/data",
        "/api/zec/summary"
      ],
      "external_links": [],
      "catalog": {
        "article": null,
        "enhancement": null,
        "page_copy": null
      },
      "placeholders": [
        {
          "token": "[live: Ironwood balance (migration tracker)]",
          "fields": [
            "ironwood.ironwoodZec"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: Ironwood inflow from Orchard]",
          "fields": [
            "ironwood.inflowBySource.orchardZec"
          ],
          "derived": false,
          "count": 6
        },
        {
          "token": "[live: Orchard balance when it sealed]",
          "fields": [
            "ironwood.orchardAtActivationZec"
          ],
          "derived": false,
          "count": 7
        },
        {
          "token": "[live: Orchard pool balance]",
          "fields": [
            "pools.orchard"
          ],
          "derived": false,
          "count": 11
        },
        {
          "token": "[live: Sprout pool balance]",
          "fields": [
            "pools.sprout"
          ],
          "derived": false,
          "count": 3
        },
        {
          "token": "[live: ZEC migrated out of Orchard in 24h]",
          "fields": [
            "ironwood.orchardMigrated24hZec"
          ],
          "derived": false,
          "count": 6
        },
        {
          "token": "[live: derived from Orchard pool balance and ZEC migrated out of Orchard in 24h]",
          "fields": [
            "pools.orchard",
            "ironwood.orchardMigrated24hZec"
          ],
          "derived": true,
          "count": 3
        },
        {
          "token": "[live: derived from Orchard pool balance and shielded ZEC total]",
          "fields": [
            "pools.orchard",
            "pools.shieldedTotal"
          ],
          "derived": true,
          "count": 4
        },
        {
          "token": "[live: derived from ZEC issued supply and Orchard pool balance]",
          "fields": [
            "supply.total",
            "pools.orchard"
          ],
          "derived": true,
          "count": 4
        },
        {
          "token": "[live: derived from ZEC price (USD) and Orchard pool balance]",
          "fields": [
            "price.usd",
            "pools.orchard"
          ],
          "derived": true,
          "count": 2
        },
        {
          "token": "[live: pool balances as-of time (UTC)]",
          "fields": [
            "pools.updatedAt"
          ],
          "derived": false,
          "count": 3
        },
        {
          "token": "[live: share of sealed Orchard migrated]",
          "fields": [
            "ironwood.migrationPct"
          ],
          "derived": false,
          "count": 6
        },
        {
          "token": "[live: total ZEC ever migrated into Ironwood]",
          "fields": [
            "ironwood.totalInflowZec"
          ],
          "derived": false,
          "count": 1
        }
      ],
      "text": "# Zcash Orchard pool balance\n\n[live: Orchard pool balance] ZEC is left in Zcash's Orchard pool. NU6.3 sealed it on 2026-07-28 — no new shielded transactions, and one exit: the turnstile into Ironwood.\n\nin Orchard now: [live: Orchard pool balance] ZEC\nhas migrated out: [live: share of sealed Orchard migrated]\nin Orchard at sealing: [live: Orchard balance when it sealed] ZEC\nleft Orchard · 24h: [live: ZEC migrated out of Orchard in 24h] ZEC\nstatus since NU6.3: Sealed\n\n## How much ZEC is in the Orchard pool?\n\nThe Zcash Orchard pool holds [live: Orchard pool balance] ZEC — [live: derived from ZEC issued supply and Orchard pool balance] of the total ZEC supply, [live: derived from Orchard pool balance and shielded ZEC total] of all shielded ZEC, and [live: derived from ZEC price (USD) and Orchard pool balance] at the current ZEC price. The pool is sealed: it accepts no new shielded transactions, so that balance can only fall.\n\n[live: share of sealed Orchard migrated] has left Orchard (Sealed · [live: Orchard balance when it sealed] ZEC → Empty)\n\nOrchard balance now: [live: Orchard pool balance] ZEC\nBalance when it sealed: [live: Orchard balance when it sealed] ZEC\nMigrated out to Ironwood: [live: Ironwood inflow from Orchard] ZEC\nLeft Orchard · last 24h: [live: ZEC migrated out of Orchard in 24h] ZEC\nShare of total ZEC supply: [live: derived from ZEC issued supply and Orchard pool balance]\nShare of all shielded ZEC: [live: derived from Orchard pool balance and shielded ZEC total]\n\nBalances come from the chain tip rather than an hourly rollup, and the stamp is the instant the balance describes: [live: pool balances as-of time (UTC)] UTC. A figure ZecStats cannot source is left blank rather than estimated, and a degraded source is stamped stale with a visible warning.\n\n## What is the Orchard pool?\n\nOrchard is one of Zcash's shielded pools — a portion of the ZEC supply held inside a zero-knowledge circuit, where addresses, amounts and the transaction graph are encrypted on-chain and only the pool's total balance is public. It arrived in 2022 with the NU5 upgrade and, until it sealed, carried the large majority of shielded ZEC. Each Zcash pool corresponds to a generation of cryptography: Sprout (2016), Sapling (2018), Orchard (2022), Ironwood (2026).\n\n- Halo 2 proofs: Orchard was Zcash's first pool built on Halo 2 — recursive proof composition, and a clean break from the proving system Sapling used.\n- No trusted setup: Sprout and Sapling needed multi-party ceremonies to generate their parameters. Orchard needed none, removing a whole class of assumption from Zcash's security story.\n- Unified addresses: Orchard is the pool behind Zcash unified addresses — a single address string carrying several receiver types, so senders stop picking a pool by hand.\n- The 2022–2026 default: From NU5 until NU6.3, Orchard is where new shielded ZEC landed. That is why the sealed balance is large: [live: Orchard balance when it sealed] ZEC was inside the pool on the day it closed.\n\n## What “sealed” means for Orchard\n\n- Nothing new can enter — the pool only drains. At block 3,428,143 on 2026-07-28, NU6.3 \"Ironwood\" stopped Orchard accepting new shielded transactions. No ZEC can be shielded into it, and an Orchard note cannot be spent to a transparent or Sapling address. The balance on this page is therefore monotonically falling.\n- There is exactly one exit: a public turnstile into Ironwood. Funds leave a sealed pool through a turnstile, and each crossing publicly reveals its amount. That is the price Zcash pays for auditability — the total leaving a pool can never exceed the total that went in, so a counterfeiting bug inside the old circuit would surface as books that fail to balance. Sender identity stays shielded throughout, and once inside Ironwood activity is fully private again.\n- Sealing is how Zcash retires ageing cryptography. You cannot swap the circuit under a live shielded pool. So each upgrade opens a new pool and seals the old one, and the network carries both until the old balance drains. Sprout was sealed the same way years ago and still holds [live: Sprout pool balance] ZEC — the last coins out of a sealed pool take a very long time.\n\n## Where the ZEC is going\n\n[live: Ironwood inflow from Orchard] ZEC has crossed out of Orchard into Ironwood since sealing — [live: share of sealed Orchard migrated] of the [live: Orchard balance when it sealed] ZEC that was locked in. Ironwood itself now holds [live: Ironwood balance (migration tracker)] ZEC, but those two figures answer different questions and should never be read as the same quantity.\n\n> Migration progress is measured against Orchard, not against Ironwood: Ironwood's balance also contains ZEC shielded straight in from Sapling and transparent addresses, which was never in Orchard and therefore never “migrated”. Of the [live: total ZEC ever migrated into Ironwood] ZEC that has entered Ironwood in total, [live: Ironwood inflow from Orchard] ZEC came from sealed Orchard. Migration progress here is Orchard-sourced inflow ÷ Orchard's balance at sealing; the full working is on the reconciliation page.\n\nOrchard's balance at sealing is not a constant typed into the code. Because a sealed pool can go nowhere except through the turnstile, what is left plus everything that crossed is what was there. ZecStats re-derives it on every refresh, which doubles as an audit: a drifting activation balance would mean a source is wrong.\n\n## Orchard pool at a glance\n\nOrchard pool balance: [live: Orchard pool balance] ZEC\nBalance when the pool sealed (derived): [live: Orchard balance when it sealed] ZEC\nMigrated out through the turnstile: [live: Ironwood inflow from Orchard] ZEC\nShare of sealed Orchard migrated: [live: share of sealed Orchard migrated]\nLeft Orchard in the last 24h: [live: ZEC migrated out of Orchard in 24h] ZEC\nShare of total ZEC supply: [live: derived from ZEC issued supply and Orchard pool balance]\nShare of all shielded ZEC: [live: derived from Orchard pool balance and shielded ZEC total]\nValue at the current ZEC price: [live: derived from ZEC price (USD) and Orchard pool balance]\nPool status: Sealed — accepts no new shielded transactions\nSealed by: NU6.3 “Ironwood”, block 3,428,143 (2026-07-28)\nOnly exit route: Public turnstile into the Ironwood pool\nProving system: Halo 2 (no trusted setup)\nStraight-line time to empty at the 24h pace: [live: derived from Orchard pool balance and ZEC migrated out of Orchard in 24h] days\nBalances as of: [live: pool balances as-of time (UTC)] UTC\n\n## When will the Orchard pool be empty?\n\nThere is no deadline. No protocol rule forces coins out of a sealed pool, and none has been announced. What the chain does show is pace: [live: ZEC migrated out of Orchard in 24h] ZEC left Orchard in the last 24 hours, which against the remaining [live: Orchard pool balance] ZEC is a straight-line [live: derived from Orchard pool balance and ZEC migrated out of Orchard in 24h] days to empty.\n\nTreat that as arithmetic, not a forecast. Migration pace is front-loaded — wallets that are open and spending cross quickly, and what remains is dormant ZEC that moves only when its owner next transacts. The precedent is Sprout, sealed years ago and still holding [live: Sprout pool balance] ZEC: the interesting part of a migration is the first 80%, not the last 1%. Live pace, per-origin splits and the day-by-day series are on the Ironwood migration tracker.\n\n## Frequently asked questions\n\nQ: How much ZEC is in the Orchard pool?\nA: [live: Orchard pool balance] ZEC is in Zcash's Orchard pool right now — [live: derived from ZEC issued supply and Orchard pool balance] of the total ZEC supply and [live: derived from Orchard pool balance and shielded ZEC total] of all shielded ZEC. The pool was sealed by network upgrade NU6.3 on July 28, 2026, so the balance can only fall from here. Figures are read from the chain tip, as of [live: pool balances as-of time (UTC)] UTC.\n\nQ: Is the Orchard pool still open?\nA: No. NU6.3 \"Ironwood\" sealed Orchard at block 3,428,143 on 2026-07-28. A sealed pool accepts no new shielded transactions: no ZEC can be shielded into Orchard, and an Orchard note cannot be spent to a transparent or Sapling address. The only permitted movement is out through a public turnstile into the Ironwood pool.\n\nQ: What is the Zcash Orchard pool?\nA: Orchard is the Zcash shielded pool introduced in 2022 with the NU5 upgrade. It uses the Halo 2 proving system, which removed the trusted setup that earlier Zcash circuits required, and it is the pool behind unified addresses. From 2022 until it sealed in 2026 it held the large majority of shielded ZEC.\n\nQ: How much ZEC has left the Orchard pool since it sealed?\nA: [live: Ironwood inflow from Orchard] ZEC has crossed the turnstile out of Orchard into Ironwood — [live: share of sealed Orchard migrated] of the [live: Orchard balance when it sealed] ZEC sealed inside the pool. In the last 24 hours [live: ZEC migrated out of Orchard in 24h] ZEC left.\n\nQ: When will the Orchard pool be empty?\nA: No deadline has been announced and no protocol rule forces coins out. At the last 24 hours' pace ([live: ZEC migrated out of Orchard in 24h] ZEC per day) the remaining [live: Orchard pool balance] ZEC would take about [live: derived from Orchard pool balance and ZEC migrated out of Orchard in 24h] days — a straight-line projection, not a forecast, because migration pace falls as active wallets finish. Sprout, sealed the same way years earlier, still holds [live: Sprout pool balance] ZEC.\n\nQ: Can I still receive ZEC into an Orchard address?\nA: No new value can enter Orchard. Current wallets route new shielded funds into Ironwood and migrate an existing Orchard balance automatically, or on your next spend. Transparent, Sapling and exchange-held ZEC are unaffected by the sealing.\n\nQ: Do I need to move my ZEC out of Orchard?\nA: A sealed pool is exit-only, not a countdown: Orchard funds do not expire. Running a current wallet is what matters, because it performs the turnstile crossing for you. Until it crosses, the ZEC stays in Orchard and is counted in the balance on this page.\n\nQ: Why do trackers report different Orchard balances?\nA: Two reasons. Some read an hourly pool rollup while ZecStats reads the chain tip, and during the migration Orchard moves thousands of ZEC an hour. And some place a cumulative \"total migrated\" figure — which only ever rises — next to a pool balance, which moves both ways. ZecStats publishes the balance ([live: Orchard pool balance] ZEC), the gross amount that has crossed ([live: Ironwood inflow from Orchard] ZEC), and the timestamp the balance describes, so the two cannot be confused.\n\n## Related ZecStats pages\n\nEvery figure above is served from one live dataset: Ironwood migration tracker · Ironwood reconciliation · Zcash shielded pools · what percentage of ZEC is shielded · how many Zcash there are · Zcash network stats · halving countdown · ZEC price · methodology · data downloads · raw JSON at /api/zec/summary.",
      "stats": {
        "words": 1492,
        "chars": 11014,
        "sections": 8,
        "faqs": 8,
        "live_spans": 57
      },
      "content_sha256": "c217ec617602179c24211d02e52c36d5ad6bba1c66a66612a6b0560e5d24fdd5"
    },
    {
      "path": "/network",
      "url": "https://zecstats.org/network",
      "kind": "reference",
      "indexable": true,
      "title": "Zcash Network Stats — [live: transactions in the last 24h] Tx/24h · [live: network hashrate] GSol/s · [live: reachable nodes] Nodes | ZecStats",
      "h1": "Zcash network statistics",
      "summary": "Zcash network stats: hashrate, difficulty, nodes, transactions per day and block time",
      "description": "Live Zcash network stats: [live: transactions in the last 24h] transactions in 24h, [live: network hashrate] GSol/s hashrate, difficulty [live: mining difficulty], [live: reachable nodes] reachable nodes, 75-second block target and block height [live: block height] — each figure with the method and source behind it.",
      "sections": [
        {
          "id": "overview",
          "level": 2,
          "heading": "Zcash network statistics right now",
          "origin": "code",
          "revision": null,
          "words": 77
        },
        {
          "id": "transactions",
          "level": 2,
          "heading": "Zcash transactions per day",
          "origin": "code",
          "revision": null,
          "words": 102
        },
        {
          "id": "blocks",
          "level": 2,
          "heading": "Zcash block time, height and recent blocks",
          "origin": "code",
          "revision": null,
          "words": 111
        },
        {
          "id": "hashrate",
          "level": 2,
          "heading": "Zcash hashrate",
          "origin": "code",
          "revision": null,
          "words": 157
        },
        {
          "id": "difficulty",
          "level": 2,
          "heading": "Zcash mining difficulty",
          "origin": "code",
          "revision": null,
          "words": 79
        },
        {
          "id": "nodes",
          "level": 2,
          "heading": "Zcash node count",
          "origin": "code",
          "revision": null,
          "words": 225
        },
        {
          "id": "mempool",
          "level": 2,
          "heading": "Zcash mempool",
          "origin": "code",
          "revision": null,
          "words": 50
        },
        {
          "id": "software",
          "level": 2,
          "heading": "Chain size and node software",
          "origin": "code",
          "revision": null,
          "words": 117
        },
        {
          "id": "summary-table",
          "level": 2,
          "heading": "All Zcash network stats",
          "origin": "code",
          "revision": null,
          "words": 291
        },
        {
          "id": "faq",
          "level": 2,
          "heading": "Frequently asked questions",
          "origin": "code",
          "revision": null,
          "words": 518
        },
        {
          "id": "related",
          "level": 2,
          "heading": "Related ZecStats pages",
          "origin": "code",
          "revision": null,
          "words": 40
        }
      ],
      "faqs": [
        {
          "q": "How many Zcash transactions are there per day?",
          "a": "Zcash processed [live: transactions in the last 24h] transactions in the last 24 hours, across [live: blocks in the last 24h] blocks — an average of [live: derived from blocks in the last 24h and transactions in the last 24h] transactions per block. Shielded transactions are included in that count: the chain publishes that they happened, while their amounts and addresses stay encrypted."
        },
        {
          "q": "How many Zcash nodes are there?",
          "a": "[live: reachable nodes] reachable Zcash nodes were counted by the Blockchair crawler in its most recent sweep — nodes that accepted an inbound connection on the peer-to-peer port. Separately, the indexer node ZecStats reads holds [live: connected peers] peer connections. Those are different measurements, and neither counts nodes behind NAT that accept no inbound connections."
        },
        {
          "q": "What is the Zcash hashrate?",
          "a": "The Zcash network hashrate is [live: network hashrate] GSol/s. Zcash mines Equihash (200,9), whose work is measured in solutions per second (Sol/s) rather than hashes per second, so a figure quoted in plain H/s without the 2^13 Equihash factor reads about 8,192 times lower for the same network."
        },
        {
          "q": "What is the Zcash block time?",
          "a": "Zcash targets a 75-second block interval, set at the Blossom upgrade. Over the last 24 hours the observed average was [live: blocks in the last 24h] s ([live: blocks in the last 24h] blocks in 24 hours), which drifts around the target as hashrate joins and leaves the network."
        },
        {
          "q": "What is the current Zcash block height?",
          "a": "The Zcash chain is at block [live: block height] as of [live: snapshot time (UTC)] UTC. Height is read from a zebrad node's blockchain info and cross-checked against an independent explorer; a disagreement of more than 20 blocks raises a warning on the site rather than being silently resolved."
        },
        {
          "q": "What is Zcash's mining difficulty?",
          "a": "Zcash's mining difficulty is [live: mining difficulty]. Difficulty adjusts every block to hold the 75-second target, so it rises when mining power joins the network and falls when it leaves — it is the network's own measure of how much work a block costs."
        },
        {
          "q": "Why do different sites report different Zcash node counts?",
          "a": "Because they measure different things and at different times. A crawler counts distinct nodes that answered on the peer-to-peer port during one sweep; a peer count reports the connections a single node happens to hold; some counts include only listening nodes, and none can see nodes behind NAT. Crawler sweep windows, timeouts and retry rules all differ, so two honest sources can differ by an order of magnitude. A node count without its method and its date is not comparable to another."
        },
        {
          "q": "How big is the Zcash blockchain?",
          "a": "The Zcash chain occupies [live: chain size (GB)] GB on disk as reported by the node ZecStats reads. The exact figure varies with node software and index settings, so treat it as the size of one current node's chain state rather than a universal constant."
        },
        {
          "q": "What software do Zcash nodes run?",
          "a": "The node ZecStats reads reports [live: node software version]. zcashd, the original node implementation, reached end of support at block 3,417,100 on July 18, 2026, leaving Zebra as the network's node software."
        },
        {
          "q": "How many transactions are waiting in the Zcash mempool?",
          "a": "[live: mempool transactions] transactions are in the mempool right now. With a 75-second block target, Zcash's mempool normally stays small — a persistently large one is the signal worth watching, not a large absolute number at any single moment."
        }
      ],
      "internal_links": [
        "/shielded",
        "/halving",
        "/ironwood",
        "/orchard-pool",
        "/methodology",
        "/shielded-percentage",
        "/ironwood-reconciliation",
        "/how-many-zcash-are-there",
        "/price",
        "/data",
        "/api/zec/summary"
      ],
      "external_links": [],
      "catalog": {
        "article": null,
        "enhancement": null,
        "page_copy": null
      },
      "placeholders": [
        {
          "token": "[live: ZEC deshielded in the last 24h]",
          "fields": [
            "flows.last24h.deshield"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: ZEC shielded in the last 24h]",
          "fields": [
            "flows.last24h.shield"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: block height]",
          "fields": [
            "network.height"
          ],
          "derived": false,
          "count": 8
        },
        {
          "token": "[live: blocks in the last 24h]",
          "fields": [
            "network.blocks24h"
          ],
          "derived": false,
          "count": 10
        },
        {
          "token": "[live: chain size (GB)]",
          "fields": [
            "network.chainSizeGb"
          ],
          "derived": false,
          "count": 4
        },
        {
          "token": "[live: connected peers]",
          "fields": [
            "network.peers"
          ],
          "derived": false,
          "count": 3
        },
        {
          "token": "[live: derived from blocks in the last 24h and transactions in the last 24h]",
          "fields": [
            "network.blocks24h",
            "network.tx24h"
          ],
          "derived": true,
          "count": 3
        },
        {
          "token": "[live: mempool transactions]",
          "fields": [
            "network.mempoolCount"
          ],
          "derived": false,
          "count": 4
        },
        {
          "token": "[live: mining difficulty]",
          "fields": [
            "network.difficulty"
          ],
          "derived": false,
          "count": 5
        },
        {
          "token": "[live: network hashrate]",
          "fields": [
            "network.hashrate"
          ],
          "derived": false,
          "count": 9
        },
        {
          "token": "[live: node software version]",
          "fields": [
            "network.subversion"
          ],
          "derived": false,
          "count": 3
        },
        {
          "token": "[live: reachable nodes]",
          "fields": [
            "network.nodes"
          ],
          "derived": false,
          "count": 9
        },
        {
          "token": "[live: recent blocks]",
          "fields": [
            "recentBlocks"
          ],
          "derived": false,
          "count": 11
        },
        {
          "token": "[live: shielded share of supply]",
          "fields": [
            "pools.shieldedPct"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: snapshot time (UTC)]",
          "fields": [
            "generatedAt"
          ],
          "derived": false,
          "count": 4
        },
        {
          "token": "[live: transactions in the last 24h]",
          "fields": [
            "network.tx24h"
          ],
          "derived": false,
          "count": 9
        }
      ],
      "text": "# Zcash network statistics\n\nBlock [live: block height], [live: transactions in the last 24h] transactions in the last 24 hours, [live: network hashrate] GSol/s of hashrate and [live: reachable nodes] reachable nodes — each metric with its measurement method attached.\n\ntransactions · 24h: [live: transactions in the last 24h]\nnetwork hashrate: [live: network hashrate] GSol/s\nblock height: [live: block height]\nreachable nodes: [live: reachable nodes]\ntarget block time: 75 s\n\n## Zcash network statistics right now\n\nThe Zcash network is at block [live: block height], processing [live: transactions in the last 24h] transactions across [live: blocks in the last 24h] blocks in the last 24 hours, secured by [live: network hashrate] GSol/s of mining power, with [live: reachable nodes] reachable nodes — as of [live: snapshot time (UTC)] UTC. Every metric below has its own section, its own source, and its own definition.\n\nBlock height: [live: block height]\nTransactions · 24h: [live: transactions in the last 24h]\nBlocks · 24h: [live: blocks in the last 24h]\nNetwork hashrate: [live: network hashrate] GSol/s\nDifficulty: [live: mining difficulty]\nReachable nodes: [live: reachable nodes]\nMempool transactions: [live: mempool transactions]\nChain size: [live: chain size (GB)] GB\n\n## Zcash transactions per day\n\nZcash confirmed [live: transactions in the last 24h] transactions in the last 24 hours — an average of [live: derived from blocks in the last 24h and transactions in the last 24h] per block over [live: blocks in the last 24h] blocks.\n\nThe count includes shielded transactions. Zcash publishes that a shielded transaction occurred and how many actions it contained, while its amounts, addresses and transaction graph stay encrypted — so daily transaction count is a usage measure, not a transparency measure. The one thing the chain does reveal about shielded activity is movement across pool boundaries: shielding, deshielding and turnstile migrations, all tracked on the shielded pools page. Over the same 24 hours [live: ZEC shielded in the last 24h] ZEC was shielded and [live: ZEC deshielded in the last 24h] ZEC was deshielded.\n\n## Zcash block time, height and recent blocks\n\nZcash targets a 75-second block interval, set at the Blossom upgrade in 2019 (before it, blocks targeted 2.5 minutes). Over the last 24 hours the network produced [live: blocks in the last 24h] blocks, an observed mean of [live: blocks in the last 24h] s per block. The chain tip is block [live: block height].\n\nThe 75-second target is also the constant behind the halving countdown: blocks remaining × 75 seconds. Difficulty retargets every block, so the observed average tracks the target closely and the countdown self-corrects on every refresh.\n\n[live: recent blocks] — Time (UTC): [live: recent blocks] UTC; Transactions: [live: recent blocks]; Size: [live: recent blocks] KB; Fees: [live: recent blocks] ZEC\n[live: recent blocks] — Time (UTC): [live: recent blocks] UTC; Transactions: [live: recent blocks]; Size: [live: recent blocks] KB; Fees: [live: recent blocks] ZEC\n[live: recent blocks]\n\n## Zcash hashrate\n\nThe Zcash network hashrate is [live: network hashrate] GSol/s. Zcash mines Equihash (200,9), a memory-hard proof-of-work whose output is counted in solutions per second (Sol/s), not hashes per second — the two are not interchangeable units.\n\n> Why Zcash hashrate figures differ by ~8,192×: Converting Zcash difficulty to a work rate requires the Equihash factor of 213 = 8,192: rate = difficulty × 8,192 ÷ block time. A source that omits that factor reports a rate about 8,192 times too low for the same network — which is how the same chain can be quoted in MH/s in one place and GSol/s in another. ZecStats publishes the measured 24-hour rate from an independent explorer and, when that is unavailable, derives it from live difficulty using the formula above.\n\nHashrate is not directly observable; it is always inferred, either from difficulty or from observed block intervals. Both methods are estimates, which is why short-window hashrate charts are noisy and 24-hour averages are the honest unit.\n\n## Zcash mining difficulty\n\nZcash's mining difficulty is [live: mining difficulty]. Unlike Bitcoin's fortnightly retarget, Zcash adjusts difficulty every block, from a moving average of recent solve times, so the network converges back on its 75-second target within minutes rather than weeks.\n\nDifficulty is the network's own statement of what a block costs: it rises when mining power arrives and falls when it leaves. That is what makes it a usable hashrate proxy — difficulty × 8,192 ÷ 75 s is the implied solution rate.\n\n## Zcash node count\n\nZecStats reports [live: reachable nodes] reachable Zcash nodes — the count of distinct nodes that accepted an inbound peer-to-peer connection during the Blockchair crawler's most recent sweep. Separately, the indexer node whose RPC we read is holding [live: connected peers] peer connections right now. Both numbers are published because they are not the same measurement.\n\n- What a crawler counts: A crawler walks the peer-to-peer network and records every node that answers on its advertised port within a sweep. It counts reachable listening nodes at one point in time.\n- What a peer count counts: A peer count is one node's active connection list, capped by that node's configuration. It says how well-connected that single node is, not how large the network is.\n- What neither can count: Nodes behind NAT or a firewall that never accept inbound connections are invisible to both methods. Every published Zcash node count is therefore a floor, not a census.\n- Why the numbers move: Sweep windows, timeouts, retry rules and how long a node stays in the index after its last response all differ between crawlers. Two honest sources can differ widely on the same day.\n\nSo a node count is only meaningful with its method and its date attached. Ours: reachable listening nodes, Blockchair crawler, as of [live: snapshot time (UTC)] UTC. When a figure elsewhere disagrees, check what it counts before concluding either is wrong.\n\n## Zcash mempool\n\nThe Zcash mempool holds [live: mempool transactions] unconfirmed transactions. With a 75-second block target, pending transactions normally clear within a block or two, so the count is usually small — what is worth watching is a mempool that stays large across many blocks, which is what a real backlog looks like.\n\n## Chain size and node software\n\nThe chain occupies [live: chain size (GB)] GB on disk on the node ZecStats reads, which reports itself as [live: node software version]. Chain size varies with implementation and index settings, so read it as one current node's state rather than a universal figure.\n\nzcashd, the original Zcash node implementation, reached end of support at block 3,417,100 on July 18, 2026. Ten days later, at block 3,428,143, NU6.3 \"Ironwood\" activated — sealing the Orchard pool and opening a fifth shielded pool. Two protocol-level changes ten days apart, which is why the node software string above matters more than usual right now; the migration itself is tracked on the Ironwood page and the sealed pool on the Orchard pool page.\n\n## All Zcash network stats\n\nBlock height — Value: [live: block height]; How it is measured: Chain tip from a zebrad node, cross-checked against an independent explorer\nBlocks · 24h — Value: [live: blocks in the last 24h]; How it is measured: Blocks mined in the trailing 24 hours\nTransactions · 24h — Value: [live: transactions in the last 24h]; How it is measured: Confirmed transactions in the trailing 24 hours, shielded included\nTransactions per block · 24h — Value: [live: derived from blocks in the last 24h and transactions in the last 24h]; How it is measured: Derived: transactions 24h ÷ blocks 24h\nTarget block time — Value: 75 s; How it is measured: Protocol constant since the Blossom upgrade\nObserved block time · 24h — Value: [live: blocks in the last 24h] s; How it is measured: Derived: 86,400 s ÷ blocks in 24h\nDifficulty — Value: [live: mining difficulty]; How it is measured: Consensus difficulty at the chain tip; retargets every block\nNetwork hashrate — Value: [live: network hashrate] GSol/s; How it is measured: Measured 24h solution rate, else difficulty × 8,192 ÷ 75 s\nReachable nodes — Value: [live: reachable nodes]; How it is measured: Nodes answering the Blockchair crawler's latest peer-to-peer sweep\nPeers of the indexer node — Value: [live: connected peers]; How it is measured: Active connections held by the single node whose RPC we read\nMempool transactions — Value: [live: mempool transactions]; How it is measured: Unconfirmed transactions seen by that node\nChain size — Value: [live: chain size (GB)] GB; How it is measured: On-disk chain state reported by that node\nNode software — Value: [live: node software version]; How it is measured: User agent reported by that node\nShielded share of supply — Value: [live: shielded share of supply]; How it is measured: Shielded pool balances ÷ chain supply\nData as of — Value: [live: snapshot time (UTC)] UTC; How it is measured: Timestamp of the summary this page was rendered from\n\nA figure ZecStats cannot source is left blank rather than estimated, and a degraded source is stamped stale with a visible warning instead of quietly serving an old number. The full per-metric provenance is on the methodology page.\n\n## Frequently asked questions\n\nQ: How many Zcash transactions are there per day?\nA: Zcash processed [live: transactions in the last 24h] transactions in the last 24 hours, across [live: blocks in the last 24h] blocks — an average of [live: derived from blocks in the last 24h and transactions in the last 24h] transactions per block. Shielded transactions are included in that count: the chain publishes that they happened, while their amounts and addresses stay encrypted.\n\nQ: How many Zcash nodes are there?\nA: [live: reachable nodes] reachable Zcash nodes were counted by the Blockchair crawler in its most recent sweep — nodes that accepted an inbound connection on the peer-to-peer port. Separately, the indexer node ZecStats reads holds [live: connected peers] peer connections. Those are different measurements, and neither counts nodes behind NAT that accept no inbound connections.\n\nQ: What is the Zcash hashrate?\nA: The Zcash network hashrate is [live: network hashrate] GSol/s. Zcash mines Equihash (200,9), whose work is measured in solutions per second (Sol/s) rather than hashes per second, so a figure quoted in plain H/s without the 2^13 Equihash factor reads about 8,192 times lower for the same network.\n\nQ: What is the Zcash block time?\nA: Zcash targets a 75-second block interval, set at the Blossom upgrade. Over the last 24 hours the observed average was [live: blocks in the last 24h] s ([live: blocks in the last 24h] blocks in 24 hours), which drifts around the target as hashrate joins and leaves the network.\n\nQ: What is the current Zcash block height?\nA: The Zcash chain is at block [live: block height] as of [live: snapshot time (UTC)] UTC. Height is read from a zebrad node's blockchain info and cross-checked against an independent explorer; a disagreement of more than 20 blocks raises a warning on the site rather than being silently resolved.\n\nQ: What is Zcash's mining difficulty?\nA: Zcash's mining difficulty is [live: mining difficulty]. Difficulty adjusts every block to hold the 75-second target, so it rises when mining power joins the network and falls when it leaves — it is the network's own measure of how much work a block costs.\n\nQ: Why do different sites report different Zcash node counts?\nA: Because they measure different things and at different times. A crawler counts distinct nodes that answered on the peer-to-peer port during one sweep; a peer count reports the connections a single node happens to hold; some counts include only listening nodes, and none can see nodes behind NAT. Crawler sweep windows, timeouts and retry rules all differ, so two honest sources can differ by an order of magnitude. A node count without its method and its date is not comparable to another.\n\nQ: How big is the Zcash blockchain?\nA: The Zcash chain occupies [live: chain size (GB)] GB on disk as reported by the node ZecStats reads. The exact figure varies with node software and index settings, so treat it as the size of one current node's chain state rather than a universal constant.\n\nQ: What software do Zcash nodes run?\nA: The node ZecStats reads reports [live: node software version]. zcashd, the original node implementation, reached end of support at block 3,417,100 on July 18, 2026, leaving Zebra as the network's node software.\n\nQ: How many transactions are waiting in the Zcash mempool?\nA: [live: mempool transactions] transactions are in the mempool right now. With a 75-second block target, Zcash's mempool normally stays small — a persistently large one is the signal worth watching, not a large absolute number at any single moment.\n\n## Related ZecStats pages\n\nSame dataset, other questions: Zcash shielded pools · what percentage of ZEC is shielded · Ironwood migration tracker · Ironwood reconciliation · Orchard pool balance · how many Zcash there are · halving countdown · ZEC price · methodology · data downloads · raw JSON at /api/zec/summary.",
      "stats": {
        "words": 1832,
        "chars": 13282,
        "sections": 11,
        "faqs": 10,
        "live_spans": 85
      },
      "content_sha256": "11d91dd2a9b687ee16732f566b20ce6b84ef1a4b1d6f4518692bfd189efe3037"
    },
    {
      "path": "/how-many-zcash-are-there",
      "url": "https://zecstats.org/how-many-zcash-are-there",
      "kind": "reference",
      "indexable": true,
      "title": "How Many Zcash Are There? [live: ZEC issued supply] ZEC of 21,000,000 | ZecStats",
      "h1": "How many Zcash (ZEC) are there?",
      "summary": "ZEC supply, decomposed across every pool plus the unmined remainder",
      "description": "[live: ZEC issued supply] ZEC exist of a 21,000,000 ZEC maximum ([live: share of the 21M cap issued] issued), with [live: ZEC issued supply] ZEC left to mine. Live supply broken down across transparent, Sprout, Sapling, Orchard, Ironwood and lockbox — plus emission, halving schedule and the supply identity.",
      "sections": [
        {
          "id": "supply-now",
          "level": 2,
          "heading": "How many Zcash are there right now?",
          "origin": "code",
          "revision": null,
          "words": 73
        },
        {
          "id": "max-supply",
          "level": 2,
          "heading": "What is the maximum supply of Zcash?",
          "origin": "code",
          "revision": null,
          "words": 60
        },
        {
          "id": "left-to-mine",
          "level": 2,
          "heading": "How many ZEC are left to mine?",
          "origin": "code",
          "revision": null,
          "words": 60
        },
        {
          "id": "daily-emission",
          "level": 2,
          "heading": "How many new ZEC are created each day?",
          "origin": "code",
          "revision": null,
          "words": 49
        },
        {
          "id": "inflation",
          "level": 2,
          "heading": "What is Zcash's inflation rate?",
          "origin": "code",
          "revision": null,
          "words": 60
        },
        {
          "id": "decomposition",
          "level": 2,
          "heading": "Where is all the ZEC? Supply by pool",
          "origin": "code",
          "revision": null,
          "words": 197
        },
        {
          "id": "transparent",
          "level": 2,
          "heading": "How much ZEC is transparent?",
          "origin": "code",
          "revision": null,
          "words": 49
        },
        {
          "id": "shielded",
          "level": 2,
          "heading": "How much ZEC is shielded?",
          "origin": "code",
          "revision": null,
          "words": 57
        },
        {
          "id": "lockbox",
          "level": 2,
          "heading": "How much ZEC is in the lockbox?",
          "origin": "code",
          "revision": null,
          "words": 58
        },
        {
          "id": "identity",
          "level": 2,
          "heading": "Does the Zcash supply add up?",
          "origin": "code",
          "revision": null,
          "words": 139
        },
        {
          "id": "unclaimed",
          "level": 2,
          "heading": "Why is supply slightly below the emission ceiling?",
          "origin": "code",
          "revision": null,
          "words": 90
        },
        {
          "id": "circulating",
          "level": 2,
          "heading": "How many Zcash are in circulation?",
          "origin": "code",
          "revision": null,
          "words": 86
        },
        {
          "id": "market-cap",
          "level": 2,
          "heading": "What is Zcash's market cap?",
          "origin": "code",
          "revision": null,
          "words": 69
        },
        {
          "id": "halving",
          "level": 2,
          "heading": "How does the halving change ZEC supply?",
          "origin": "code",
          "revision": null,
          "words": 97
        },
        {
          "id": "auditable",
          "level": 2,
          "heading": "Can the supply be audited if transactions are private?",
          "origin": "code",
          "revision": null,
          "words": 108
        },
        {
          "id": "vs-bitcoin",
          "level": 2,
          "heading": "How does Zcash's supply compare to Bitcoin's?",
          "origin": "code",
          "revision": null,
          "words": 66
        },
        {
          "id": "supply-table",
          "level": 2,
          "heading": "Zcash supply at a glance",
          "origin": "code",
          "revision": null,
          "words": 85
        },
        {
          "id": "sources",
          "level": 2,
          "heading": "Where these numbers come from",
          "origin": "code",
          "revision": null,
          "words": 95
        },
        {
          "id": "faq",
          "level": 2,
          "heading": "Frequently asked questions",
          "origin": "code",
          "revision": null,
          "words": 559
        },
        {
          "id": "related",
          "level": 2,
          "heading": "Related ZecStats pages",
          "origin": "code",
          "revision": null,
          "words": 36
        }
      ],
      "faqs": [
        {
          "q": "How many Zcash are there?",
          "a": "[live: ZEC issued supply] ZEC have been issued, out of a hard maximum of 21,000,000 — that is [live: share of the 21M cap issued] of the cap, leaving [live: ZEC issued supply] ZEC still to be mined. The figure updates with every block; it was last read at [live: snapshot time (UTC)] UTC."
        },
        {
          "q": "What is the maximum supply of Zcash?",
          "a": "21,000,000 ZEC, the same hard cap as Bitcoin. It is enforced by the emission schedule in consensus rules — the block subsidy halves every 1,680,000 blocks — rather than by a policy anyone can change without a network upgrade."
        },
        {
          "q": "How many ZEC are left to mine?",
          "a": "[live: ZEC issued supply] ZEC remain unissued — [live: ZEC issued supply] of the 21,000,000 cap. At the current emission of [live: ZEC emitted per day] ZEC per day that share shrinks slowly, and each halving cuts the rate in half again."
        },
        {
          "q": "How many new ZEC are created each day?",
          "a": "About [live: ZEC emitted per day] ZEC per day: 1.5625 ZEC per block at a 75-second target, which is roughly 1,152 blocks a day. That works out to about [live: annual inflation rate] annual issuance against the current supply."
        },
        {
          "q": "How much ZEC is shielded?",
          "a": "[live: shielded ZEC total] ZEC — [live: shielded share of supply] of all issued ZEC — sits in the Sprout, Sapling, Orchard and Ironwood shielded pools. The rest is transparent ZEC in Bitcoin-style public UTXOs, plus the protocol lockbox."
        },
        {
          "q": "How many Zcash are in circulation?",
          "a": "Circulating supply and chain supply are different definitions. The chain has issued [live: ZEC issued supply] ZEC, but [live: lockbox balance] ZEC of that sits in the protocol lockbox, which cannot be spent until Zcash governance defines a disbursement mechanism. Market-data providers apply their own circulating-supply definitions, which is why their figure and the chain figure rarely match exactly."
        },
        {
          "q": "Why is Zcash's supply slightly below the emission ceiling?",
          "a": "Because coinbase outputs are not always claimed. The emission schedule sets the maximum that could have been issued by a given height; miners occasionally construct blocks that do not claim the full subsidy, so actual chain supply sits a few hundred ZEC under the ceiling. ZecStats checks every reported supply against that ceiling and withholds the figure rather than publishing one that sits outside the envelope."
        },
        {
          "q": "What is Zcash's market cap?",
          "a": "[live: ZEC market cap (USD)], ranking [live: ZEC market-cap rank] by market capitalisation. Note it is not exactly price × chain supply: [live: derived from ZEC price (USD) and ZEC issued supply] at the current ZEC price[live: derived from ZEC price (USD) and ZEC market cap (USD) + 1 more], because market cap uses a provider's circulating-supply definition while chain supply is what consensus has issued."
        },
        {
          "q": "Can Zcash's supply be audited if transactions are private?",
          "a": "Yes. Shielded pool balances are tracked by consensus as public value pools, and every crossing between pools — shielding, deshielding and turnstile migration — publicly reveals its amount. Individual shielded transfers are invisible, but the total in each pool is not, so the money supply stays checkable without exposing any user."
        },
        {
          "q": "When will the last Zcash be mined?",
          "a": "Emission halves every 1,680,000 blocks — roughly four years. The next halving is at block 4,406,400, about [live: blocks until the halving] blocks away (≈ [live: estimated halving date]), when the subsidy drops from 1.5625 to 0.78125 ZEC. Each era issues about half of the one before it, so the 21,000,000 cap is approached asymptotically rather than hit on a date."
        },
        {
          "q": "How does Zcash's supply compare to Bitcoin's?",
          "a": "Both cap at 21,000,000 coins and both halve on a schedule, but the emission curves differ: Zcash targets 75-second blocks (Bitcoin targets 10 minutes) and halves every 1,680,000 blocks, so the same four-year rhythm is delivered across many more, much smaller block rewards. Zcash also splits each block subsidy with ecosystem funding, which Bitcoin does not."
        }
      ],
      "internal_links": [
        "/halving",
        "/shielded",
        "/shielded-percentage",
        "/methodology",
        "/price",
        "/orchard-pool",
        "/ironwood",
        "/api/zec/summary",
        "/ironwood-reconciliation",
        "/network",
        "/data"
      ],
      "external_links": [],
      "catalog": {
        "article": null,
        "enhancement": null,
        "page_copy": null
      },
      "placeholders": [
        {
          "token": "[live: Ironwood pool balance]",
          "fields": [
            "pools.ironwood"
          ],
          "derived": false,
          "count": 3
        },
        {
          "token": "[live: Orchard pool balance]",
          "fields": [
            "pools.orchard"
          ],
          "derived": false,
          "count": 3
        },
        {
          "token": "[live: Sapling pool balance]",
          "fields": [
            "pools.sapling"
          ],
          "derived": false,
          "count": 3
        },
        {
          "token": "[live: Sprout pool balance]",
          "fields": [
            "pools.sprout"
          ],
          "derived": false,
          "count": 3
        },
        {
          "token": "[live: ZEC emitted per day]",
          "fields": [
            "supply.emissionPerDayZec"
          ],
          "derived": false,
          "count": 6
        },
        {
          "token": "[live: ZEC issued supply]",
          "fields": [
            "supply.total"
          ],
          "derived": false,
          "count": 25
        },
        {
          "token": "[live: ZEC market cap (USD)]",
          "fields": [
            "price.marketCapUsd"
          ],
          "derived": false,
          "count": 3
        },
        {
          "token": "[live: ZEC market-cap rank]",
          "fields": [
            "price.marketCapRank"
          ],
          "derived": false,
          "count": 2
        },
        {
          "token": "[live: annual inflation rate]",
          "fields": [
            "supply.inflationAnnualPct"
          ],
          "derived": false,
          "count": 4
        },
        {
          "token": "[live: blocks until the halving]",
          "fields": [
            "halving.blocksRemaining"
          ],
          "derived": false,
          "count": 3
        },
        {
          "token": "[live: derived from ZEC issued supply and lockbox balance]",
          "fields": [
            "supply.total",
            "pools.lockbox"
          ],
          "derived": true,
          "count": 1
        },
        {
          "token": "[live: derived from ZEC issued supply and transparent pool balance + 5 more]",
          "fields": [
            "supply.total",
            "pools.transparent",
            "pools.sprout",
            "pools.sapling",
            "pools.orchard",
            "pools.ironwood",
            "pools.lockbox"
          ],
          "derived": true,
          "count": 3
        },
        {
          "token": "[live: derived from ZEC issued supply and transparent pool balance]",
          "fields": [
            "supply.total",
            "pools.transparent"
          ],
          "derived": true,
          "count": 2
        },
        {
          "token": "[live: derived from ZEC price (USD) and ZEC issued supply]",
          "fields": [
            "price.usd",
            "supply.total"
          ],
          "derived": true,
          "count": 2
        },
        {
          "token": "[live: derived from ZEC price (USD) and ZEC market cap (USD) + 1 more]",
          "fields": [
            "price.usd",
            "price.marketCapUsd",
            "supply.total"
          ],
          "derived": true,
          "count": 2
        },
        {
          "token": "[live: derived from transparent pool balance and Sprout pool balance + 4 more]",
          "fields": [
            "pools.transparent",
            "pools.sprout",
            "pools.sapling",
            "pools.orchard",
            "pools.ironwood",
            "pools.lockbox"
          ],
          "derived": true,
          "count": 2
        },
        {
          "token": "[live: estimated halving date]",
          "fields": [
            "halving.estimatedDate"
          ],
          "derived": false,
          "count": 4
        },
        {
          "token": "[live: lockbox balance]",
          "fields": [
            "pools.lockbox"
          ],
          "derived": false,
          "count": 7
        },
        {
          "token": "[live: net shielded flow, last 24h]",
          "fields": [
            "flows.last24h.net"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: pool balances as-of time (UTC)]",
          "fields": [
            "pools.updatedAt"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: share of the 21M cap issued]",
          "fields": [
            "supply.pctIssued"
          ],
          "derived": false,
          "count": 8
        },
        {
          "token": "[live: shielded ZEC total]",
          "fields": [
            "pools.shieldedTotal"
          ],
          "derived": false,
          "count": 3
        },
        {
          "token": "[live: shielded share of supply]",
          "fields": [
            "pools.shieldedPct"
          ],
          "derived": false,
          "count": 4
        },
        {
          "token": "[live: shielded value (USD)]",
          "fields": [
            "pools.shieldedUsd"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: snapshot time (UTC)]",
          "fields": [
            "generatedAt"
          ],
          "derived": false,
          "count": 3
        },
        {
          "token": "[live: transparent pool balance]",
          "fields": [
            "pools.transparent"
          ],
          "derived": false,
          "count": 4
        }
      ],
      "text": "# How many Zcash (ZEC) are there?\n\n[live: ZEC issued supply] ZEC of the 21,000,000 ZEC cap have been issued — [live: share of the 21M cap issued] — leaving [live: ZEC issued supply] ZEC to mine. Below: where every one of those coins sits.\n\nZEC in existence: [live: ZEC issued supply] ZEC\nof the 21M cap issued: [live: share of the 21M cap issued]\nleft to mine: [live: ZEC issued supply] ZEC\nmaximum supply: 21,000,000 ZEC\n\n## How many Zcash are there right now?\n\nThere are [live: ZEC issued supply] ZEC in existence — [live: share of the 21M cap issued] of Zcash's hard cap of 21,000,000 ZEC — with [live: ZEC issued supply] ZEC still left to mine. Read from the chain at [live: snapshot time (UTC)] UTC.\n\n[live: share of the 21M cap issued] issued (Genesis · 2016 → 21,000,000 ZEC cap)\n\nZEC issued so far: [live: ZEC issued supply] ZEC\nMaximum supply: 21,000,000 ZEC\nLeft to mine: [live: ZEC issued supply] ZEC\nShare of the cap issued: [live: share of the 21M cap issued]\nNew ZEC per day: [live: ZEC emitted per day] ZEC\nAnnual issuance rate: [live: annual inflation rate]\n\n## What is the maximum supply of Zcash?\n\nZcash's maximum supply is 21,000,000 ZEC — the same hard cap as Bitcoin, chosen deliberately when Zcash launched in 2016. The cap is enforced by consensus rules: the block subsidy halves every 1,680,000 blocks and no rule permits issuance beyond the schedule, so raising it would require a network upgrade the whole network adopted.\n\n## How many ZEC are left to mine?\n\n[live: ZEC issued supply] ZEC have not been issued yet — [live: ZEC issued supply] of the 21,000,000 cap. Those coins enter circulation only as block subsidy, 1.5625 ZEC at a time, and the rate halves at every halving. Because each era issues roughly half of the previous one, the unmined remainder shrinks quickly at first and then very slowly.\n\n## How many new ZEC are created each day?\n\nAbout [live: ZEC emitted per day] ZEC of new supply is created per day. The arithmetic is public: 1.5625 ZEC per block at a 75-second target is roughly 1,152 blocks a day.\n\n1.5625 (ZEC per block) × 1,152 (blocks per day) = [live: ZEC emitted per day] ZEC (issued per day)\n\n## What is Zcash's inflation rate?\n\nZcash's annual issuance rate is [live: annual inflation rate] — a year of emission at the current subsidy measured against the [live: ZEC issued supply] ZEC already issued. It falls continuously, both because the denominator grows and because each halving cuts the numerator in half. The next halving is at block 4,406,400, around [live: estimated halving date]; the live countdown is on the halving page.\n\n## Where is all the ZEC? Supply by pool\n\nThe interesting question is not how many ZEC exist but where they sit. Zcash's consensus rules track the supply across six value pools, and the balance of each one is public even when the transactions inside it are not. Every balance below is a live consensus figure, as of [live: pool balances as-of time (UTC)] UTC.\n\nTransparent (public UTXOs) — Balance: [live: transparent pool balance] ZEC; Share of the 21M cap: [live: transparent pool balance]\nSprout (2016 pool, sealed) — Balance: [live: Sprout pool balance] ZEC; Share of the 21M cap: [live: Sprout pool balance]\nSapling (2018 pool, open) — Balance: [live: Sapling pool balance] ZEC; Share of the 21M cap: [live: Sapling pool balance]\nOrchard (2022 pool, sealed) — Balance: [live: Orchard pool balance] ZEC; Share of the 21M cap: [live: Orchard pool balance]\nIronwood (2026 pool, open) — Balance: [live: Ironwood pool balance] ZEC; Share of the 21M cap: [live: Ironwood pool balance]\nLockbox (protocol dev fund) — Balance: [live: lockbox balance] ZEC; Share of the 21M cap: [live: lockbox balance]\nNot yet mined — Balance: [live: ZEC issued supply] ZEC; Share of the 21M cap: [live: ZEC issued supply]\nTotal cap — Balance: 21,000,000 ZEC; Share of the 21M cap: 100.0%\n\nRead down that table and you have the whole answer: [live: derived from ZEC issued supply and transparent pool balance] of issued ZEC is transparent, [live: shielded share of supply] is shielded across four privacy pools, [live: derived from ZEC issued supply and lockbox balance] is in the lockbox, and the rest of the cap has never been mined.\n\n## How much ZEC is transparent?\n\n[live: transparent pool balance] ZEC — [live: derived from ZEC issued supply and transparent pool balance] of issued ZEC — sits in transparent, Bitcoin-style UTXOs where addresses, amounts and history are fully public. Exchange balances, mining payouts and most newly issued coins land here first, which is why the transparent pool is the largest by a wide margin.\n\n## How much ZEC is shielded?\n\n[live: shielded ZEC total] ZEC — [live: shielded share of supply] of issued ZEC, worth [live: shielded value (USD)] — is held across the four shielded pools. Net movement across the transparent boundary over the last 24 hours was [live: net shielded flow, last 24h] ZEC. The pool-by-pool breakdown and the 30-day flow chart live on the shielded pools page, and the share itself on the shielded percentage page.\n\n## How much ZEC is in the lockbox?\n\nThe lockbox holds [live: lockbox balance] ZEC. It is not a privacy pool: it is a consensus-level development reserve that accrues 0.1875 ZEC per block — 12% of the block subsidy under NU6 — and it cannot be spent until Zcash governance defines a disbursement mechanism. Those coins are issued but, by construction, not circulating.\n\n## Does the Zcash supply add up?\n\nEvery issued ZEC is in exactly one of the six pools, so the pools must sum to chain supply. That identity is the single most useful check on any Zcash supply figure, and it is checked on every refresh here.\n\n[live: transparent pool balance] ZEC (transparent) + [live: Sprout pool balance] ZEC (sprout) + [live: Sapling pool balance] ZEC (sapling) + [live: Orchard pool balance] ZEC (orchard) + [live: Ironwood pool balance] ZEC (ironwood) + [live: lockbox balance] ZEC (lockbox) = [live: derived from transparent pool balance and Sprout pool balance + 4 more] ZEC (chain supply)\n\n> The identity is allowed to be off by up to 4.7 ZEC: The lockbox is credited in 25-block batches, so its published balance can trail the chain tip by up to 25 blocks — 25 × 0.1875 = 4.6875 ZEC. A gap inside that band is batching, not a discrepancy. Right now the pools sum to [live: derived from transparent pool balance and Sprout pool balance + 4 more] ZEC against a reported chain supply of [live: ZEC issued supply] ZEC — a difference of [live: derived from ZEC issued supply and transparent pool balance + 5 more] ZEC, [live: derived from ZEC issued supply and transparent pool balance + 5 more] batching [live: derived from ZEC issued supply and transparent pool balance + 5 more].\n\n## Why is supply slightly below the emission ceiling?\n\nConsensus rules define the maximum that could have been issued by a given block height. Actual supply usually sits a few hundred ZEC under it, because coinbase outputs are not always claimed in full — an unclaimed subsidy is simply never created.\n\nZecStats implements that emission schedule independently and checks every reported supply figure against it. A supply outside the envelope is withheld, not published: a wrong supply number is worse than no supply number. The gate is documented on the methodology page.\n\n## How many Zcash are in circulation?\n\n\"Circulating supply\" and \"chain supply\" are different quantities, and conflating them is the most common error in ZEC supply figures. Chain supply is what consensus has issued: [live: ZEC issued supply] ZEC. Circulating supply is a market-data convention that excludes coins deemed unavailable — and each provider applies its own definition.\n\nZcash has an obvious candidate for exclusion: the [live: lockbox balance] ZEC lockbox, issued but unspendable. ZecStats publishes the chain figure, names it as such, and does not quietly substitute one definition for the other.\n\n## What is Zcash's market cap?\n\nZcash's market capitalisation is [live: ZEC market cap (USD)], ranked [live: ZEC market-cap rank] among all cryptocurrencies. Multiplying the current ZEC price by chain supply instead gives [live: derived from ZEC price (USD) and ZEC issued supply] [live: derived from ZEC price (USD) and ZEC market cap (USD) + 1 more].\n\nThe two are rarely identical, and the difference is definitional rather than an error: market cap is computed on a provider's circulating supply, which differs from what the chain has issued. Live price, history and comparisons are on the ZEC price page.\n\n## How does the halving change ZEC supply?\n\nIssuance halves every 1,680,000 blocks. The next halving is at block 4,406,400 — [live: blocks until the halving] blocks away, around [live: estimated halving date] — when the subsidy drops from 1.5625 to 0.78125 ZEC per block, and daily issuance halves with it.\n\n- Miners · 80% — proof-of-work security\n- Zcash Community Grants · 8% — ecosystem funding\n- Lockbox · 12% (0.1875 ZEC/block) — protocol dev fund\n\nSo new ZEC does not all reach the market: under NU6 each block's 1.5625 ZEC splits 80% to miners, 8% to Zcash Community Grants and 12% into the lockbox. The full era-by-era emission table is on the halving page.\n\n## Can the supply be audited if transactions are private?\n\nYes — and this is the part most supply pages skip. Shielded balances are tracked by consensus as public value pools, so the total inside each pool is always known even though individual notes are not. Every crossing between pools reveals its amount publicly: shielding, deshielding, and turnstile migrations such as the sealed Orchard pool draining into Ironwood.\n\nThat is the deliberate trade-off. Privacy holds inside a pool; the boundaries are public so the money supply stays checkable. If a counterfeiting bug had ever been exploited inside an old circuit, the turnstile is where the books would fail to balance.\n\n## How does Zcash's supply compare to Bitcoin's?\n\nSame cap, different curve. Both stop at 21,000,000 coins and both halve on roughly a four-year rhythm, but Zcash targets 75-second blocks against Bitcoin's ten minutes, halving every 1,680,000 blocks — the same emission delivered through many more, much smaller rewards. Zcash also splits each subsidy with ecosystem funding (8% grants, 12% lockbox), where Bitcoin's entire subsidy goes to miners.\n\n## Zcash supply at a glance\n\nTotal ZEC issued (chain supply): [live: ZEC issued supply] ZEC\nMaximum supply: 21,000,000 ZEC\nLeft to mine: [live: ZEC issued supply] ZEC\nShare of cap issued: [live: share of the 21M cap issued]\nNew ZEC per day: [live: ZEC emitted per day] ZEC\nAnnual issuance rate: [live: annual inflation rate]\nCurrent block subsidy: 1.5625 ZEC\nSubsidy after the next halving: 0.78125 ZEC\nNext halving block: 4,406,400\nBlocks to the next halving: [live: blocks until the halving]\nEstimated halving date: [live: estimated halving date]\nShielded ZEC: [live: shielded ZEC total] ZEC\nShielded share of supply: [live: shielded share of supply]\nLockbox (issued, not circulating): [live: lockbox balance] ZEC\nMarket capitalisation: [live: ZEC market cap (USD)]\nData as of: [live: snapshot time (UTC)] UTC\n\n## Where these numbers come from\n\nChain supply and every pool balance are read from a Zcash node's consensus state at the chain tip, then checked against an independently implemented emission schedule before publication. Price and market cap come from a market-data provider, cross-checked against an exchange feed. Nothing on this page is estimated or interpolated, and nothing is filled in from a previous value without being stamped stale: a figure we cannot source is left blank instead. Full per-metric provenance is on the methodology page, and the same figures are available as JSON at /api/zec/summary.\n\n## Frequently asked questions\n\nQ: How many Zcash are there?\nA: [live: ZEC issued supply] ZEC have been issued, out of a hard maximum of 21,000,000 — that is [live: share of the 21M cap issued] of the cap, leaving [live: ZEC issued supply] ZEC still to be mined. The figure updates with every block; it was last read at [live: snapshot time (UTC)] UTC.\n\nQ: What is the maximum supply of Zcash?\nA: 21,000,000 ZEC, the same hard cap as Bitcoin. It is enforced by the emission schedule in consensus rules — the block subsidy halves every 1,680,000 blocks — rather than by a policy anyone can change without a network upgrade.\n\nQ: How many ZEC are left to mine?\nA: [live: ZEC issued supply] ZEC remain unissued — [live: ZEC issued supply] of the 21,000,000 cap. At the current emission of [live: ZEC emitted per day] ZEC per day that share shrinks slowly, and each halving cuts the rate in half again.\n\nQ: How many new ZEC are created each day?\nA: About [live: ZEC emitted per day] ZEC per day: 1.5625 ZEC per block at a 75-second target, which is roughly 1,152 blocks a day. That works out to about [live: annual inflation rate] annual issuance against the current supply.\n\nQ: How much ZEC is shielded?\nA: [live: shielded ZEC total] ZEC — [live: shielded share of supply] of all issued ZEC — sits in the Sprout, Sapling, Orchard and Ironwood shielded pools. The rest is transparent ZEC in Bitcoin-style public UTXOs, plus the protocol lockbox.\n\nQ: How many Zcash are in circulation?\nA: Circulating supply and chain supply are different definitions. The chain has issued [live: ZEC issued supply] ZEC, but [live: lockbox balance] ZEC of that sits in the protocol lockbox, which cannot be spent until Zcash governance defines a disbursement mechanism. Market-data providers apply their own circulating-supply definitions, which is why their figure and the chain figure rarely match exactly.\n\nQ: Why is Zcash's supply slightly below the emission ceiling?\nA: Because coinbase outputs are not always claimed. The emission schedule sets the maximum that could have been issued by a given height; miners occasionally construct blocks that do not claim the full subsidy, so actual chain supply sits a few hundred ZEC under the ceiling. ZecStats checks every reported supply against that ceiling and withholds the figure rather than publishing one that sits outside the envelope.\n\nQ: What is Zcash's market cap?\nA: [live: ZEC market cap (USD)], ranking [live: ZEC market-cap rank] by market capitalisation. Note it is not exactly price × chain supply: [live: derived from ZEC price (USD) and ZEC issued supply] at the current ZEC price[live: derived from ZEC price (USD) and ZEC market cap (USD) + 1 more], because market cap uses a provider's circulating-supply definition while chain supply is what consensus has issued.\n\nQ: Can Zcash's supply be audited if transactions are private?\nA: Yes. Shielded pool balances are tracked by consensus as public value pools, and every crossing between pools — shielding, deshielding and turnstile migration — publicly reveals its amount. Individual shielded transfers are invisible, but the total in each pool is not, so the money supply stays checkable without exposing any user.\n\nQ: When will the last Zcash be mined?\nA: Emission halves every 1,680,000 blocks — roughly four years. The next halving is at block 4,406,400, about [live: blocks until the halving] blocks away (≈ [live: estimated halving date]), when the subsidy drops from 1.5625 to 0.78125 ZEC. Each era issues about half of the one before it, so the 21,000,000 cap is approached asymptotically rather than hit on a date.\n\nQ: How does Zcash's supply compare to Bitcoin's?\nA: Both cap at 21,000,000 coins and both halve on a schedule, but the emission curves differ: Zcash targets 75-second blocks (Bitcoin targets 10 minutes) and halves every 1,680,000 blocks, so the same four-year rhythm is delivered across many more, much smaller block rewards. Zcash also splits each block subsidy with ecosystem funding, which Bitcoin does not.\n\n## Related ZecStats pages\n\nGo deeper on any row above: Zcash shielded pools · what percentage of ZEC is shielded · Orchard pool balance · Ironwood migration tracker · Ironwood reconciliation · Zcash network stats · halving countdown · ZEC price · methodology · data downloads.",
      "stats": {
        "words": 2165,
        "chars": 16038,
        "sections": 20,
        "faqs": 11,
        "live_spans": 103
      },
      "content_sha256": "2db89a5bb7ea0421cc8f3f0010129b12bbac0a3c0bc104f21bc3504845389319"
    },
    {
      "path": "/halving",
      "url": "https://zecstats.org/halving",
      "kind": "reference",
      "indexable": true,
      "title": "Zcash Halving Countdown — Block 4,406,400, Emission Schedule | ZecStats",
      "h1": "Zcash halving countdown",
      "summary": "Halving countdown, block reward split and the full emission schedule",
      "description": "[live: blocks until the halving] blocks until the next Zcash halving at block 4,406,400 (≈ [live: estimated halving date]). Subsidy drops 1.5625 → 0.78125 ZEC. Full emission schedule, the 80/8/12 subsidy split, and the lockbox explained.",
      "sections": [
        {
          "id": "countdown",
          "level": 2,
          "heading": "How the countdown works",
          "origin": "code",
          "revision": null,
          "words": 72
        },
        {
          "id": "emission",
          "level": 2,
          "heading": "Emission schedule",
          "origin": "code",
          "revision": null,
          "words": 127
        },
        {
          "id": "split",
          "level": 2,
          "heading": "Where each block reward goes",
          "origin": "code",
          "revision": null,
          "words": 98
        },
        {
          "id": "faq",
          "level": 2,
          "heading": "Frequently asked questions",
          "origin": "code",
          "revision": null,
          "words": 230
        }
      ],
      "faqs": [
        {
          "q": "When is the next Zcash halving?",
          "a": "At block 4,406,400 — [live: blocks until the halving] blocks away. At the 75-second block target that lands around [live: estimated halving date]. The block subsidy drops from 1.5625 to 0.78125 ZEC."
        },
        {
          "q": "How is the countdown calculated?",
          "a": "Blocks remaining × 75 seconds per block. Zcash targets a 75-second block interval, so [live: blocks until the halving] blocks ≈ [live: blocks until the halving] days. The date drifts slightly with actual block times, so ZecStats recomputes it continuously from the live height."
        },
        {
          "q": "How many ZEC will ever exist?",
          "a": "21 million, same as Bitcoin. About [live: ZEC issued supply] ZEC ([live: share of the 21M cap issued]) has been issued so far. Halvings every 1,680,000 blocks (~4 years) cut new issuance until the cap is reached."
        },
        {
          "q": "Who gets the block reward?",
          "a": "Under NU6, each block's 1.5625 ZEC subsidy splits 80% to miners, 8% to Zcash Community Grants, and 12% (0.1875 ZEC) to the protocol lockbox — a development fund held at the consensus level."
        },
        {
          "q": "What is the lockbox?",
          "a": "A consensus-level development reserve that accrues 0.1875 ZEC per block and currently holds [live: lockbox balance] ZEC. It cannot be spent until Zcash governance defines a disbursement mechanism, so it is effectively out of circulation."
        },
        {
          "q": "Did previous halvings move the ZEC price?",
          "a": "Zcash halved in November 2020 (Canopy) and November 2024. Like Bitcoin halvings, they cut sell pressure from miners mechanically — issuance drops by half overnight — but price effects are entangled with market cycles. ZecStats shows the emission math; it does not make price predictions."
        }
      ],
      "internal_links": [
        "/shielded"
      ],
      "external_links": [],
      "catalog": {
        "article": null,
        "enhancement": null,
        "page_copy": null
      },
      "placeholders": [
        {
          "token": "[live: ZEC emitted per day]",
          "fields": [
            "supply.emissionPerDayZec"
          ],
          "derived": false,
          "count": 2
        },
        {
          "token": "[live: ZEC issued supply]",
          "fields": [
            "supply.total"
          ],
          "derived": false,
          "count": 2
        },
        {
          "token": "[live: annual inflation rate]",
          "fields": [
            "supply.inflationAnnualPct"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: block height]",
          "fields": [
            "network.height"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: blocks until the halving]",
          "fields": [
            "halving.blocksRemaining"
          ],
          "derived": false,
          "count": 8
        },
        {
          "token": "[live: estimated halving date]",
          "fields": [
            "halving.estimatedDate"
          ],
          "derived": false,
          "count": 4
        },
        {
          "token": "[live: lockbox balance]",
          "fields": [
            "pools.lockbox"
          ],
          "derived": false,
          "count": 2
        },
        {
          "token": "[live: share of the 21M cap issued]",
          "fields": [
            "supply.pctIssued"
          ],
          "derived": false,
          "count": 2
        }
      ],
      "text": "# Zcash halving countdown\n\nPure emission math: at block 4,406,400 the subsidy halves again — recomputed continuously from the live chain height.\n\nblocks remaining: [live: blocks until the halving]\nestimated date: ≈ [live: estimated halving date]\nsubsidy step (ZEC): 1.5625 → 0.78125\nemitted per day: [live: ZEC emitted per day] ZEC\n\n## How the countdown works\n\n[live: blocks until the halving] (blocks remaining) × 75 s (target block time) = ≈ [live: blocks until the halving] days ([live: estimated halving date])\n\n[live: blocks until the halving] through the era (2nd halving · Nov 2024 → 3rd halving · block 4,406,400)\n\nThe math, in the open: countdown = blocks remaining × 75 seconds. Real block times wobble around the target, so the estimate self-corrects on every refresh from the live chain height ([live: block height] right now). At block 4,406,400 the subsidy drops from 1.5625 to 0.78125 ZEC per block.\n\n## Emission schedule\n\nLaunch (2016) — Blocks: 1 – 653,599; Subsidy per block: up to 12.5 ZEC; Notes: 40-block slow start, 2.5-min blocks\nBlossom (2019) — Blocks: 653,600 – 1,046,399; Subsidy per block: 6.25 ZEC; Notes: 75s blocks, subsidy halved per block to keep emission rate\n1st halving (Nov 2020) — Blocks: 1,046,400 – 2,726,399; Subsidy per block: 3.125 ZEC; Notes: Canopy; dev fund v2\n2nd halving (Nov 2024) — Blocks: 2,726,400 – 4,406,399; Subsidy per block: 1.5625 ZEC; Notes: NU6: 80% miners / 8% ZCG / 12% lockbox\n3rd halving (~Nov 2028) — Blocks: 4,406,400 onward; Subsidy per block: 0.78125 ZEC; Notes: next era — the countdown on this page\n\nZcash caps at 21,000,000 ZEC. [live: ZEC issued supply] ZEC ([live: share of the 21M cap issued]) has been issued, emitting [live: ZEC emitted per day] ZEC per day at the current subsidy — about [live: annual inflation rate] annual inflation and falling with every halving.\n\n## Where each block reward goes\n\n- Miners · 80% — proof-of-work security\n- Zcash Community Grants · 8% — ecosystem funding\n- Lockbox · 12% (0.1875 ZEC/block) — protocol dev fund\n\nSince NU6, every block's 1.5625 ZEC splits three ways: 80% to miners (proof-of-work security), 8% to Zcash Community Grants (ecosystem funding), and 12% to the lockbox — 0.1875 ZEC per block accruing at the consensus level.\n\n> The lockbox: issued, but not circulating: The lockbox is a consensus-level development reserve, not a privacy pool. It accrues 0.1875 ZEC per block and currently holds [live: lockbox balance] ZEC — issued-but-not-circulating until Zcash governance defines a disbursement mechanism. Details on the pools page.\n\n## Frequently asked questions\n\nQ: When is the next Zcash halving?\nA: At block 4,406,400 — [live: blocks until the halving] blocks away. At the 75-second block target that lands around [live: estimated halving date]. The block subsidy drops from 1.5625 to 0.78125 ZEC.\n\nQ: How is the countdown calculated?\nA: Blocks remaining × 75 seconds per block. Zcash targets a 75-second block interval, so [live: blocks until the halving] blocks ≈ [live: blocks until the halving] days. The date drifts slightly with actual block times, so ZecStats recomputes it continuously from the live height.\n\nQ: How many ZEC will ever exist?\nA: 21 million, same as Bitcoin. About [live: ZEC issued supply] ZEC ([live: share of the 21M cap issued]) has been issued so far. Halvings every 1,680,000 blocks (~4 years) cut new issuance until the cap is reached.\n\nQ: Who gets the block reward?\nA: Under NU6, each block's 1.5625 ZEC subsidy splits 80% to miners, 8% to Zcash Community Grants, and 12% (0.1875 ZEC) to the protocol lockbox — a development fund held at the consensus level.\n\nQ: What is the lockbox?\nA: A consensus-level development reserve that accrues 0.1875 ZEC per block and currently holds [live: lockbox balance] ZEC. It cannot be spent until Zcash governance defines a disbursement mechanism, so it is effectively out of circulation.\n\nQ: Did previous halvings move the ZEC price?\nA: Zcash halved in November 2020 (Canopy) and November 2024. Like Bitcoin halvings, they cut sell pressure from miners mechanically — issuance drops by half overnight — but price effects are entangled with market cycles. ZecStats shows the emission math; it does not make price predictions.",
      "stats": {
        "words": 575,
        "chars": 4223,
        "sections": 4,
        "faqs": 6,
        "live_spans": 22
      },
      "content_sha256": "758581547fa51cdf09116731f602da587127e4a413736ce49c95fe843fa40ac6"
    },
    {
      "path": "/price",
      "url": "https://zecstats.org/price",
      "kind": "reference",
      "indexable": true,
      "title": "Zcash (ZEC) Price — Live Chart, ATH & Price History | ZecStats",
      "h1": "Zcash (ZEC) price",
      "summary": "Live ZEC price, all-time high, Bitcoin and Ethereum comparison and daily price history",
      "description": "ZEC is trading at [live: ZEC spot price (USD)] ([live: ZEC 24h move] today). Live chart with history since March 2019 (Binance), normalized Bitcoin and Ethereum comparison, market cap, all-time high, converter, and full price history. Updated continuously.",
      "sections": [
        {
          "id": "chart",
          "level": 2,
          "heading": "ZEC price chart",
          "origin": "code",
          "revision": null,
          "words": 17
        },
        {
          "id": "compare",
          "level": 2,
          "heading": "Compare ZEC with Bitcoin and Ethereum",
          "origin": "code",
          "revision": null,
          "words": 76
        },
        {
          "id": "today",
          "level": 2,
          "heading": "ZEC price today",
          "origin": "code",
          "revision": null,
          "words": 66
        },
        {
          "id": "market",
          "level": 2,
          "heading": "ZEC market stats",
          "origin": "code",
          "revision": null,
          "words": 26
        },
        {
          "id": "ath",
          "level": 2,
          "heading": "ZEC all-time high",
          "origin": "code",
          "revision": null,
          "words": 73
        },
        {
          "id": "convert",
          "level": 2,
          "heading": "1 ZEC to USD",
          "origin": "code",
          "revision": null,
          "words": 34
        },
        {
          "id": "targets",
          "level": 2,
          "heading": "If ZEC hits $100, $250, or $1,000",
          "origin": "code",
          "revision": null,
          "words": 84
        },
        {
          "id": "performance",
          "level": 2,
          "heading": "ZEC price performance",
          "origin": "code",
          "revision": null,
          "words": 86
        },
        {
          "id": "calendar-year-returns",
          "level": 3,
          "heading": "Calendar-year returns",
          "origin": "code",
          "revision": null,
          "words": 5
        },
        {
          "id": "timemachine",
          "level": 2,
          "heading": "If you bought $100 of ZEC",
          "origin": "code",
          "revision": null,
          "words": 45
        },
        {
          "id": "adoption",
          "level": 2,
          "heading": "ZEC price vs shielded adoption",
          "origin": "code",
          "revision": null,
          "words": 61
        },
        {
          "id": "supply",
          "level": 2,
          "heading": "ZEC supply and emission",
          "origin": "code",
          "revision": null,
          "words": 60
        },
        {
          "id": "history",
          "level": 2,
          "heading": "ZEC price history",
          "origin": "code",
          "revision": null,
          "words": 35
        },
        {
          "id": "faq",
          "level": 2,
          "heading": "Frequently asked questions",
          "origin": "code",
          "revision": null,
          "words": 314
        },
        {
          "id": "sources",
          "level": 2,
          "heading": "Sources",
          "origin": "code",
          "revision": null,
          "words": 36
        }
      ],
      "faqs": [
        {
          "q": "What is the price of Zcash (ZEC) today?",
          "a": "ZEC trades at [live: ZEC spot price (USD)], [live: ZEC 24h move] over the last 24 hours. ZecStats refreshes market data continuously from CoinGecko and Binance daily closes stored since March 2019."
        },
        {
          "q": "What is Zcash's all-time high?",
          "a": "The recorded all-time high is [live: ZEC all-time high (USD)]. Note the caveat: Zcash's October 2016 launch had a tiny circulating supply, so launch-window prices reflect extreme scarcity rather than market consensus."
        },
        {
          "q": "How does the halving affect the ZEC price?",
          "a": "The next halving (block 4,406,400, ≈ November 2028) cuts new issuance from 1.5625 to 0.78125 ZEC per block — a mechanical drop in daily sell pressure from miners. Whether that moves price depends on demand; ZecStats shows the emission math and makes no predictions. See the halving countdown page."
        },
        {
          "q": "What is the Zcash privacy premium thesis?",
          "a": "The thesis: as more ZEC moves into shielded pools (currently [live: shielded share of supply] of supply), the liquid transparent float shrinks and privacy demand gets priced in. It is a thesis, not a fact — ZecStats tracks the inputs (shielded share, flows, migration) live so you can judge it with data."
        },
        {
          "q": "How much is 1 ZEC in USD?",
          "a": "1 ZEC equals [live: ZEC spot price (USD)]. The converter on this page handles any amount in both directions."
        },
        {
          "q": "How many ZEC are there?",
          "a": "[live: ZEC issued supply] ZEC of the hard 21,000,000 cap ([live: share of the 21M cap issued]) has been issued. Emission halves roughly every four years; the lockbox portion (12% of each block) is issued but held out of circulation at the protocol level."
        },
        {
          "q": "Where does the price history come from?",
          "a": "ZecStats stores Binance ZECUSDT daily closes in its own database, backfilled to March 2019 when the pair listed, and records live ticks continuously. Charts read from this store — no third-party calls at page load."
        },
        {
          "q": "Is ZEC price the same as shielded adoption?",
          "a": "No. Price is the market's valuation of ZEC; shielded adoption measures actual privacy usage (pool balances and flows). ZecStats tracks both, and they often diverge."
        }
      ],
      "internal_links": [
        "/ironwood",
        "/shielded",
        "/halving",
        "/api/zec/price-history",
        "/about"
      ],
      "external_links": [
        {
          "url": "https://www.coingecko.com/en/coins/zcash",
          "text": "CoinGecko"
        }
      ],
      "catalog": {
        "article": null,
        "enhancement": null,
        "page_copy": null
      },
      "placeholders": [
        {
          "token": "[live: ZEC 1-year return]",
          "fields": [
            "price_summary.performance.1y"
          ],
          "derived": false,
          "count": 4
        },
        {
          "token": "[live: ZEC 24h high (USD)]",
          "fields": [
            "price_summary.facts.high24hUsd"
          ],
          "derived": false,
          "count": 2
        },
        {
          "token": "[live: ZEC 24h low (USD)]",
          "fields": [
            "price_summary.facts.low24hUsd"
          ],
          "derived": false,
          "count": 2
        },
        {
          "token": "[live: ZEC 24h move]",
          "fields": [
            "price_summary.change24hPct"
          ],
          "derived": false,
          "count": 5
        },
        {
          "token": "[live: ZEC 24h return]",
          "fields": [
            "price_summary.performance.24h"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: ZEC 24h trade volume (USD)]",
          "fields": [
            "price_summary.facts.volume24hUsd"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: ZEC 30-day return]",
          "fields": [
            "price_summary.performance.1m"
          ],
          "derived": false,
          "count": 2
        },
        {
          "token": "[live: ZEC 7-day return]",
          "fields": [
            "price_summary.performance.7d"
          ],
          "derived": false,
          "count": 2
        },
        {
          "token": "[live: ZEC 90-day return]",
          "fields": [
            "price_summary.performance.3m"
          ],
          "derived": false,
          "count": 2
        },
        {
          "token": "[live: ZEC all-time high (USD)]",
          "fields": [
            "price_summary.facts.athUsd"
          ],
          "derived": false,
          "count": 4
        },
        {
          "token": "[live: ZEC all-time low (USD)]",
          "fields": [
            "price_summary.facts.atlUsd"
          ],
          "derived": false,
          "count": 2
        },
        {
          "token": "[live: ZEC all-time-high date]",
          "fields": [
            "price_summary.facts.athDate"
          ],
          "derived": false,
          "count": 2
        },
        {
          "token": "[live: ZEC circulating supply]",
          "fields": [
            "price_summary.facts.circulatingSupply"
          ],
          "derived": false,
          "count": 7
        },
        {
          "token": "[live: ZEC close one year ago (USD)]",
          "fields": [
            "price_page.yearAgoClose"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: ZEC distance below its all-time high]",
          "fields": [
            "price_summary.facts.athChangePct"
          ],
          "derived": false,
          "count": 2
        },
        {
          "token": "[live: ZEC emitted per day]",
          "fields": [
            "supply.emissionPerDayZec"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: ZEC issued supply]",
          "fields": [
            "supply.total"
          ],
          "derived": false,
          "count": 4
        },
        {
          "token": "[live: ZEC market capitalization (USD)]",
          "fields": [
            "price_summary.facts.marketCapUsd"
          ],
          "derived": false,
          "count": 2
        },
        {
          "token": "[live: ZEC market capitalization rank]",
          "fields": [
            "price_summary.facts.marketCapRank"
          ],
          "derived": false,
          "count": 2
        },
        {
          "token": "[live: ZEC return since March 2019]",
          "fields": [
            "price_summary.performance.all"
          ],
          "derived": false,
          "count": 2
        },
        {
          "token": "[live: ZEC spot price (USD)]",
          "fields": [
            "price_summary.currentUsd"
          ],
          "derived": false,
          "count": 21
        },
        {
          "token": "[live: ZEC vs BTC, 1 year]",
          "fields": [
            "price_summary.vsBtc.1y"
          ],
          "derived": false,
          "count": 2
        },
        {
          "token": "[live: ZEC vs BTC, 30 days]",
          "fields": [
            "price_summary.vsBtc.30d"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: ZEC vs BTC, 7 days]",
          "fields": [
            "price_summary.vsBtc.7d"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: ZEC vs BTC, 90 days]",
          "fields": [
            "price_summary.vsBtc.90d"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: ZEC vs ETH, 1 year]",
          "fields": [
            "price_summary.vsEth.1y"
          ],
          "derived": false,
          "count": 2
        },
        {
          "token": "[live: ZEC vs ETH, 30 days]",
          "fields": [
            "price_summary.vsEth.30d"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: ZEC vs ETH, 7 days]",
          "fields": [
            "price_summary.vsEth.7d"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: ZEC vs ETH, 90 days]",
          "fields": [
            "price_summary.vsEth.90d"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: ZEC year-to-date return]",
          "fields": [
            "price_summary.performance.ytd"
          ],
          "derived": false,
          "count": 2
        },
        {
          "token": "[live: ZEC/BTC/ETH comparison series]",
          "fields": [
            "price_page.comparison30d"
          ],
          "derived": false,
          "count": 9
        },
        {
          "token": "[live: blocks until the halving]",
          "fields": [
            "halving.blocksRemaining"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: calendar-year returns]",
          "fields": [
            "price_page.calendarReturns"
          ],
          "derived": false,
          "count": 3
        },
        {
          "token": "[live: days since the all-time high]",
          "fields": [
            "price_summary.facts.daysSinceAth"
          ],
          "derived": false,
          "count": 2
        },
        {
          "token": "[live: derived from ZEC spot price (USD) and ZEC all-time high (USD)]",
          "fields": [
            "price_summary.currentUsd",
            "price_summary.facts.athUsd"
          ],
          "derived": true,
          "count": 4
        },
        {
          "token": "[live: derived from ZEC spot price (USD) and ZEC all-time low (USD)]",
          "fields": [
            "price_summary.currentUsd",
            "price_summary.facts.atlUsd"
          ],
          "derived": true,
          "count": 2
        },
        {
          "token": "[live: derived from ZEC spot price (USD) and ZEC close one year ago (USD)]",
          "fields": [
            "price_summary.currentUsd",
            "price_page.yearAgoClose"
          ],
          "derived": true,
          "count": 2
        },
        {
          "token": "[live: monthly closing prices]",
          "fields": [
            "price_page.monthlyRows"
          ],
          "derived": false,
          "count": 6
        },
        {
          "token": "[live: price data as-of time (UTC)]",
          "fields": [
            "price_summary.updatedAt"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: share of sealed Orchard migrated]",
          "fields": [
            "ironwood.migrationPct"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: share of the 21M cap issued]",
          "fields": [
            "supply.pctIssued"
          ],
          "derived": false,
          "count": 2
        },
        {
          "token": "[live: shielded ZEC total]",
          "fields": [
            "pools.shieldedTotal"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: shielded share of supply]",
          "fields": [
            "pools.shieldedPct"
          ],
          "derived": false,
          "count": 3
        },
        {
          "token": "[live: shielded value (USD)]",
          "fields": [
            "pools.shieldedUsd"
          ],
          "derived": false,
          "count": 1
        }
      ],
      "text": "# Zcash (ZEC) price\n\nZEC is trading at [live: ZEC spot price (USD)] ([live: ZEC 24h move] today). Live chart with history since March 2019 (Binance), normalized Bitcoin and Ethereum comparison, market cap, all-time high, converter, and full price history. Updated continuously.\n\n[live: ZEC spot price (USD)] [live: ZEC 24h move] · 24H\n\n24H low [live: ZEC 24h low (USD)] · 24H high [live: ZEC 24h high (USD)]\n\n## ZEC price chart\n\n24H [live: ZEC 24h return] · 7D [live: ZEC 7-day return] · 30D [live: ZEC 30-day return] · 3M [live: ZEC 90-day return] · YTD [live: ZEC year-to-date return] · 1Y [live: ZEC 1-year return] · ALL [live: ZEC return since March 2019]\n\n## Compare ZEC with Bitcoin and Ethereum\n\nPerformance is indexed to 0% at one shared UTC starting close. Raw USD closes remain visible in the chart readout and supporting table.\n\nZcash — Starting close: [live: ZEC/BTC/ETH comparison series]; Latest close: [live: ZEC/BTC/ETH comparison series]; Change: [live: ZEC/BTC/ETH comparison series]\nBitcoin — Starting close: [live: ZEC/BTC/ETH comparison series]; Latest close: [live: ZEC/BTC/ETH comparison series]; Change: [live: ZEC/BTC/ETH comparison series]\nEthereum — Starting close: [live: ZEC/BTC/ETH comparison series]; Latest close: [live: ZEC/BTC/ETH comparison series]; Change: [live: ZEC/BTC/ETH comparison series]\n\nSource: Binance spot daily closes stored by ZecStats (ZECUSDT since March 2019). The ALL range is downsampled to weekly closes.\n\n## ZEC price today\n\nZcash (ZEC) is trading at [live: ZEC spot price (USD)] as of [live: price data as-of time (UTC)] UTC, [live: ZEC 24h move] over the last 24 hours (24h range [live: ZEC 24h low (USD)] – [live: ZEC 24h high (USD)]).\n\nMarket capitalization is [live: ZEC market capitalization (USD)] (rank [live: ZEC market capitalization rank]). [live: ZEC issued supply] ZEC of the 21M cap has been issued, and about [live: shielded share of supply] of it is shielded. Price history on this page is computed from daily exchange closes stored in the ZecStats database — Binance ZECUSDT since March 2019.\n\n## ZEC market stats\n\nMarket cap: [live: ZEC market capitalization (USD)]\n24h trade volume: [live: ZEC 24h trade volume (USD)]\nMarket cap rank: [live: ZEC market capitalization rank]\nSupply issued: [live: ZEC issued supply] ZEC / 21M\nShielded value: [live: shielded value (USD)]\nNext halving: [live: blocks until the halving] blocks\n\n## ZEC all-time high\n\nAll-time high: [live: ZEC all-time high (USD)]\nATH date: [live: ZEC all-time-high date] UTC\nBelow ATH: [live: ZEC distance below its all-time high]\nMove to reclaim: [live: derived from ZEC spot price (USD) and ZEC all-time high (USD)]\nDays since ATH: [live: days since the all-time high]\nAll-time low: [live: ZEC all-time low (USD)]\n\nZEC's recorded peak is [live: ZEC all-time high (USD)] ([live: ZEC all-time-high date] UTC) — [live: days since the all-time high] days ago. Context matters: Zcash's launch-day frenzy in October 2016 printed four-digit prices against a supply of a few thousand coins, so early \"ATH\" figures describe scarcity mechanics, not market consensus. From [live: ZEC spot price (USD)] that peak is [live: ZEC distance below its all-time high] away — a [live: derived from ZEC spot price (USD) and ZEC all-time high (USD)] move.\n\n## 1 ZEC to USD\n\n0.5 ZEC: [live: ZEC spot price (USD)]\n1 ZEC: [live: ZEC spot price (USD)]\n5 ZEC: [live: ZEC spot price (USD)]\n10 ZEC: [live: ZEC spot price (USD)]\n100 ZEC: [live: ZEC spot price (USD)]\n1000 ZEC: [live: ZEC spot price (USD)]\n$1: [live: ZEC spot price (USD)] ZEC\n$10: [live: ZEC spot price (USD)] ZEC\n$100: [live: ZEC spot price (USD)] ZEC\n$1,000: [live: ZEC spot price (USD)] ZEC\n\n## If ZEC hits $100, $250, or $1,000\n\nNo predictions here — just arithmetic. Implied market cap = target price × [live: ZEC circulating supply] circulating ZEC. Whether a target is realistic is your call; the math is ours.\n\n$100.00 — Implied market cap: [live: ZEC circulating supply]; Multiple from today: [live: ZEC spot price (USD)]; Context: inside the top-40 today\n$250.00 — Implied market cap: [live: ZEC circulating supply]; Multiple from today: [live: ZEC spot price (USD)]; Context: inside the top-40 today\n$500.00 — Implied market cap: [live: ZEC circulating supply]; Multiple from today: [live: ZEC spot price (USD)]; Context: [live: ZEC circulating supply] today\n$1,000.00 — Implied market cap: [live: ZEC circulating supply]; Multiple from today: [live: ZEC spot price (USD)]; Context: [live: ZEC circulating supply] today\n\n## ZEC price performance\n\n7 days — In USD: [live: ZEC 7-day return]; vs BTC: [live: ZEC vs BTC, 7 days]; vs ETH: [live: ZEC vs ETH, 7 days]\n30 days — In USD: [live: ZEC 30-day return]; vs BTC: [live: ZEC vs BTC, 30 days]; vs ETH: [live: ZEC vs ETH, 30 days]\n90 days — In USD: [live: ZEC 90-day return]; vs BTC: [live: ZEC vs BTC, 90 days]; vs ETH: [live: ZEC vs ETH, 90 days]\nYear to date — In USD: [live: ZEC year-to-date return]; vs BTC: —; vs ETH: —\n1 year — In USD: [live: ZEC 1-year return]; vs BTC: [live: ZEC vs BTC, 1 year]; vs ETH: [live: ZEC vs ETH, 1 year]\nSince Mar 2019 — In USD: [live: ZEC return since March 2019]; vs BTC: —; vs ETH: —\n\nDenominators matter: over the trailing year ZEC is [live: ZEC 1-year return] in USD but [live: ZEC vs BTC, 1 year] against BTC and [live: ZEC vs ETH, 1 year] against ETH.\n\n### Calendar-year returns\n\n[live: calendar-year returns]\n[live: calendar-year returns]\n[live: calendar-year returns]\n\n## If you bought $100 of ZEC\n\nThe same $100, three different entry points. Cuts both ways — that is the point.\n\nAll-time low ([live: ZEC all-time low (USD)]) — $100 today: [live: derived from ZEC spot price (USD) and ZEC all-time low (USD)]; Multiple: [live: derived from ZEC spot price (USD) and ZEC all-time low (USD)]\nAll-time high ([live: ZEC all-time high (USD)]) — $100 today: [live: derived from ZEC spot price (USD) and ZEC all-time high (USD)]; Multiple: [live: derived from ZEC spot price (USD) and ZEC all-time high (USD)]\nOne year ago ([live: ZEC close one year ago (USD)]) — $100 today: [live: derived from ZEC spot price (USD) and ZEC close one year ago (USD)]; Multiple: [live: derived from ZEC spot price (USD) and ZEC close one year ago (USD)]\n\n## ZEC price vs shielded adoption\n\nPrice is the market's opinion; shielded usage is a fact. ZEC is [live: ZEC 1-year return] over 12 months while [live: shielded ZEC total] ZEC ([live: shielded share of supply] of supply) sits in shielded pools and the Ironwood migration is [live: share of sealed Orchard migrated] complete. The privacy-premium thesis — that ZEC gets repriced as shielded adoption compounds — is tracked with live data on the shielded page, not asserted here.\n\n## ZEC supply and emission\n\nZcash is hard-capped at 21,000,000 ZEC — Bitcoin's cap with Zcash's privacy. [live: ZEC issued supply] ZEC ([live: share of the 21M cap issued]) is issued, emission runs at [live: ZEC emitted per day] ZEC/day, and the next halving (block 4,406,400, ≈ Nov 2028) cuts the subsidy from 1.5625 to 0.78125 ZEC. Of each block today, 80% pays miners, 8% funds Zcash Community Grants, and 12% accrues to the protocol lockbox.\n\n## ZEC price history\n\n[live: monthly closing prices] — Close: [live: monthly closing prices]; Change: [live: monthly closing prices]\n[live: monthly closing prices] — Close: [live: monthly closing prices]; Change: [live: monthly closing prices]\n\nFull daily history since March 2019 (Binance) backs this page — the chart's ALL view draws every week of it. Machine-readable series: /api/zec/price-history.\n\n## Frequently asked questions\n\nQ: What is the price of Zcash (ZEC) today?\nA: ZEC trades at [live: ZEC spot price (USD)], [live: ZEC 24h move] over the last 24 hours. ZecStats refreshes market data continuously from CoinGecko and Binance daily closes stored since March 2019.\n\nQ: What is Zcash's all-time high?\nA: The recorded all-time high is [live: ZEC all-time high (USD)]. Note the caveat: Zcash's October 2016 launch had a tiny circulating supply, so launch-window prices reflect extreme scarcity rather than market consensus.\n\nQ: How does the halving affect the ZEC price?\nA: The next halving (block 4,406,400, ≈ November 2028) cuts new issuance from 1.5625 to 0.78125 ZEC per block — a mechanical drop in daily sell pressure from miners. Whether that moves price depends on demand; ZecStats shows the emission math and makes no predictions. See the halving countdown page.\n\nQ: What is the Zcash privacy premium thesis?\nA: The thesis: as more ZEC moves into shielded pools (currently [live: shielded share of supply] of supply), the liquid transparent float shrinks and privacy demand gets priced in. It is a thesis, not a fact — ZecStats tracks the inputs (shielded share, flows, migration) live so you can judge it with data.\n\nQ: How much is 1 ZEC in USD?\nA: 1 ZEC equals [live: ZEC spot price (USD)]. The converter on this page handles any amount in both directions.\n\nQ: How many ZEC are there?\nA: [live: ZEC issued supply] ZEC of the hard 21,000,000 cap ([live: share of the 21M cap issued]) has been issued. Emission halves roughly every four years; the lockbox portion (12% of each block) is issued but held out of circulation at the protocol level.\n\nQ: Where does the price history come from?\nA: ZecStats stores Binance ZECUSDT daily closes in its own database, backfilled to March 2019 when the pair listed, and records live ticks continuously. Charts read from this store — no third-party calls at page load.\n\nQ: Is ZEC price the same as shielded adoption?\nA: No. Price is the market's valuation of ZEC; shielded adoption measures actual privacy usage (pool balances and flows). ZecStats tracks both, and they often diverge.\n\n## Sources\n\nMarket data: CoinGecko (live facts, refreshed hourly) and Binance ZECUSDT daily closes stored in the ZecStats database since March 2019. Chain data: CipherScan. Methodology: how ZecStats measures data. Nothing on this page is investment advice.",
      "stats": {
        "words": 1077,
        "chars": 9940,
        "sections": 15,
        "faqs": 8,
        "live_spans": 121
      },
      "content_sha256": "3dd7c4124d4edb56a00ad9e6dcceab55eb10127fdf2707214864b05b591fdb65"
    },
    {
      "path": "/zcash-vs-monero",
      "url": "https://zecstats.org/zcash-vs-monero",
      "kind": "reference",
      "indexable": true,
      "title": "Zcash vs Monero — Privacy Models Compared ([live: shielded share of supply] of ZEC Shielded) | ZecStats",
      "h1": "Zcash vs Monero",
      "summary": "Data-backed comparison of the Zcash and Monero privacy models",
      "description": "Zcash vs Monero, compared on design rather than marketing: mandatory ring signatures versus optional zk-SNARK shielded pools, trusted setup history, supply caps, viewing keys and block times. Zcash figures are live from the chain ([live: shielded share of supply] shielded); every Monero claim is dated and cited to a primary source.",
      "sections": [
        {
          "id": "answer",
          "level": 2,
          "heading": "Two different bets on privacy",
          "origin": "code",
          "revision": null,
          "words": 295
        },
        {
          "id": "design",
          "level": 2,
          "heading": "Design differences that actually matter",
          "origin": "code",
          "revision": null,
          "words": 572
        },
        {
          "id": "adoption",
          "level": 2,
          "heading": "Optional privacy has an adoption problem",
          "origin": "code",
          "revision": null,
          "words": 227
        },
        {
          "id": "choose",
          "level": 2,
          "heading": "Which should you use?",
          "origin": "code",
          "revision": null,
          "words": 345
        },
        {
          "id": "faq",
          "level": 2,
          "heading": "Frequently asked questions",
          "origin": "code",
          "revision": null,
          "words": 565
        }
      ],
      "faqs": [
        {
          "q": "Is Zcash more private than Monero?",
          "a": "Not as a blanket statement. Per transaction, Zcash is stronger: a shielded spend draws its anonymity set from the entire shielded pool, while Monero hides each input in a ring of 16 outputs (the protocol floor since August 2022). But Zcash privacy is optional and only [live: shielded share of supply] of ZEC ([live: shielded ZEC total] ZEC) is shielded, whereas Monero applies privacy to every transaction with no opt-out. Stronger where used, versus universally applied."
        },
        {
          "q": "Is Monero or Zcash better for privacy?",
          "a": "It depends whether you value the default or the ceiling. Monero is better if you want privacy that cannot be misconfigured, since it is mandatory. Zcash is better if you want the strongest cryptography for the transactions you do shield, and if you may need to disclose activity selectively to an auditor later. Any comparison that picks a winner without naming that trade-off is not being straight with you."
        },
        {
          "q": "Does Zcash have a max supply?",
          "a": "Yes — Zcash is hard-capped at 21,000,000 ZEC, the same cap Bitcoin uses, enforced by a halving emission schedule. ZecStats tracks issuance against that ceiling live."
        },
        {
          "q": "Does Monero have a max supply?",
          "a": "No. Per getmonero.org (accessed August 6, 2026), \"the emission is infinite\": roughly 18.132 million XMR had been issued by the end of May 2022, after which tail emission of 0.6 XMR per 2-minute block began, which the project describes as under 1% inflation trending toward zero. It is a deliberate choice to keep paying miners after the main emission curve ends, and one of the clearest structural differences between the two coins."
        },
        {
          "q": "Why is only part of Zcash shielded?",
          "a": "Because Zcash privacy is opt-in: transparent (t-) and shielded (z-) addresses coexist on one chain, and coins become private only when moved into a shielded pool. Right now [live: shielded ZEC total] ZEC — [live: shielded share of supply] of supply — is shielded; the rest is as publicly visible as Bitcoin. Much of that transparent balance is exchange and custodial holdings rather than users declining privacy, but the number is real and is the standard critique of Zcash's model."
        },
        {
          "q": "Did Zcash have a trusted setup?",
          "a": "Yes, originally. The 2016 Sprout ceremony generated the parameters for Zcash's first shielded pool; had every participant colluded, they could in principle have forged proofs. Zcash has since removed the requirement — the Halo 2 proving system needs no trusted setup and underpins both the Orchard pool (2022) and the Ironwood pool that activated in July 2026. The original ceremony now applies only to the legacy Sprout pool, which is closing."
        },
        {
          "q": "Did Monero ever have a trusted setup?",
          "a": "Monero does not require one. Its range proofs are Bulletproofs, which the project's own documentation describes as \"short non-interactive zero-knowledge proofs that require no trusted setup\" (Moneropedia, accessed August 6, 2026). Because Monero uses ring signatures rather than zk-SNARKs, there is no structured reference string and no \"toxic waste\" to destroy."
        },
        {
          "q": "Which is harder to trace, Zcash or Monero?",
          "a": "A fully shielded Zcash transaction encrypts amounts, addresses and the transaction graph — nothing is observable beyond the pool boundary, which is at least as opaque as Monero and arguably more so, since the anonymity set is the whole pool rather than a ring of 16. But unshielded Zcash activity is as traceable as Bitcoin, and Monero has no equivalent traceable mode. So Monero is harder to trace on average across all activity, while a shielded Zcash transaction is the harder individual target."
        }
      ],
      "internal_links": [
        "/shielded-percentage",
        "/methodology",
        "/shielded",
        "/how-many-zcash-are-there",
        "/ironwood",
        "/ironwood-reconciliation"
      ],
      "external_links": [
        {
          "url": "https://www.getmonero.org/get-started/what-is-monero/",
          "text": "getmonero.org — What is Monero?"
        },
        {
          "url": "https://www.getmonero.org/resources/moneropedia/bulletproofs.html",
          "text": "Moneropedia — Bulletproofs"
        },
        {
          "url": "https://www.getmonero.org/resources/about/",
          "text": "getmonero.org — About Monero"
        },
        {
          "url": "https://github.com/monero-project/monero/blob/master/src/cryptonote_config.h",
          "text": "monero-project/monero — src/cryptonote_config.h"
        },
        {
          "url": "https://www.getmonero.org/resources/moneropedia/viewkey.html",
          "text": "Moneropedia — View key"
        },
        {
          "url": "https://github.com/monero-project/monero",
          "text": "monero-project/monero — network upgrade table"
        },
        {
          "url": "https://www.coindesk.com/markets/2024/02/06/binance-to-delist-monero-privacy-token-xmr-slides",
          "text": "CoinDesk — Binance to delist Monero"
        },
        {
          "url": "https://www.getmonero.org/resources/roadmap/",
          "text": "getmonero.org — Roadmap"
        }
      ],
      "catalog": {
        "article": null,
        "enhancement": null,
        "page_copy": null
      },
      "placeholders": [
        {
          "token": "[live: share of sealed Orchard migrated]",
          "fields": [
            "ironwood.migrationPct"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: shielded ZEC total]",
          "fields": [
            "pools.shieldedTotal"
          ],
          "derived": false,
          "count": 6
        },
        {
          "token": "[live: shielded share of supply]",
          "fields": [
            "pools.shieldedPct"
          ],
          "derived": false,
          "count": 10
        },
        {
          "token": "[live: transparent pool balance]",
          "fields": [
            "pools.transparent"
          ],
          "derived": false,
          "count": 1
        }
      ],
      "text": "# Zcash vs Monero\n\nMonero makes privacy mandatory; Zcash makes it optional but cryptographically stronger where it is used — and [live: shielded share of supply] of ZEC is shielded right now. The design differences, with live Zcash figures and every Monero claim dated and cited.\n\nof ZEC shielded: [live: shielded share of supply]\nshielded ZEC: [live: shielded ZEC total] ZEC\nZEC max supply: 21,000,000\nXMR supply cap: None\n\n## Two different bets on privacy\n\nThere is no honest one-word winner, and any page that gives you one is selling something. Monero makes privacy mandatory: every transaction is private, so no user can get it wrong. Zcash makes privacy optional but cryptographically stronger where it is used: a shielded spend proves membership in the entire pool rather than a fixed ring, and Zcash's newest pools need no trusted setup. That strength comes at a real cost — an adoption question Monero does not have, with only [live: shielded share of supply] of ZEC shielded today. The rest of this page is the design differences and the live numbers, not a verdict.\n\n- Monero's strength: nothing to opt into: Privacy is enforced by consensus, not user choice — minimum ring sizes were set “so that all transactions were private by mandate”. Nobody can leak their own history through carelessness, and there is no public subset of the supply to reason from. [1] [3]\n- Monero's cost: no transparency when you want it: Removing user error also removes user choice. Auditing depends on a view key that reveals incoming transactions only — Monero's docs warn the balance it shows “should not be relied upon”. Mandatory privacy has listing costs too: Binance delisted XMR effective February 20, 2024. [5] [7]\n- Zcash's strength: stronger proofs, real disclosure: A shielded spend is a proof against the whole pool, not a ring of decoys, so the anonymity set is not a tunable parameter. Halo 2 removed the trusted setup Sprout needed in 2016, and a full viewing key discloses incoming and outgoing activity.\n- Zcash's cost: optional privacy is often not taken: The fair critique, and it is measurable: [live: shielded ZEC total] ZEC shielded, [live: shielded share of supply] of supply — so most ZEC sits transparent and is as public as Bitcoin. See what that percentage measures.\n\n## Design differences that actually matter\n\nThe differences that matter are architectural, not marketing. The Zcash column is read live from the chain; the Monero column is a dated reference, cited line by line.\n\n> How to read the numbers on this page: Zcash figures are live, read from the Zcash chain and refreshed with the rest of this site — see how ZecStats measures. Monero figures are not. We do not run a Monero node and have no Monero feed, so every XMR claim below is a static, dated reference to a primary source, verified on August 6, 2026 and cited inline — protocol design, not a live feed. Monero claims we could not tie to a primary source were left out rather than estimated.\n\nPrivacy model — Zcash (ZEC) — live: Optional. Transparent (t-) and shielded (z-) addresses coexist on one chain; shielded transactions use zk-SNARKs.; Monero (XMR) — dated reference: Mandatory. Sender, receiver and amount are hidden on every transaction by stealth addresses, ring signatures and RingCT. [1]\nTransparent option? — Zcash (ZEC) — live: Yes. t-addresses are fully public, and a large share of ZEC sits in them.; Monero (XMR) — dated reference: None. No transparent or opt-out transaction type; privacy is protocol-wide. [1]\nTrusted setup — Zcash (ZEC) — live: Historically yes — the 2016 Sprout ceremony. Halo 2 removed the requirement; Orchard (2022) and Ironwood (2026) need no ceremony.; Monero (XMR) — dated reference: Not required. Monero's range proofs are Bulletproofs, which “require no trusted setup”. [2]\nSupply cap — Zcash (ZEC) — live: 21,000,000 ZEC — a hard cap, enforced by the emission schedule this site tracks.; Monero (XMR) — dated reference: None. “The emission is infinite”: ~18.132M XMR by end of May 2022, then tail emission of 0.6 XMR per 2-minute block, described as <1% inflation trending to zero. [3]\nBlock time — Zcash (ZEC) — live: 75 seconds (live target); Monero (XMR) — dated reference: 120 seconds (DIFFICULTY_TARGET_V2 in the reference implementation). [4]\nAnonymity set per transaction — Zcash (ZEC) — live: The whole shielded pool — a shielded spend proves membership without naming a subset.; Monero (XMR) — dated reference: A ring of 16 outputs per input, the protocol floor since the August 2022 upgrade. [6]\nSelective disclosure — Zcash (ZEC) — live: Viewing keys split by capability: incoming reveals received transactions, full reveals incoming and outgoing.; Monero (XMR) — dated reference: A view key reveals incoming transactions only; Monero's docs warn the balance shown “should not be relied upon”. [5]\nExchange posture — Zcash (ZEC) — live: Transparent addresses let venues integrate ZEC with ordinary public-address accounting.; Monero (XMR) — dated reference: No transparent fallback. Binance delisted XMR effective February 20, 2024. [7]\nProtocol frontier — Zcash (ZEC) — live: NU6.3 “Ironwood” activated July 28, 2026 at block 3,428,143: Orchard sealed, migrating to a fifth shielded pool.; Monero (XMR) — dated reference: FCMP++ (full-chain membership proofs), which would replace fixed-size rings, is listed “Coming Soon” on the official roadmap — not activated. [8]\n\nMonero sources. [1] getmonero.org — What is Monero? — official project site, accessed August 6, 2026. [2] Moneropedia — Bulletproofs — official project site, accessed August 6, 2026. [3] getmonero.org — About Monero — official project site, accessed August 6, 2026. [4] monero-project/monero — src/cryptonote_config.h — DIFFICULTY_TARGET_V2, read from source August 6, 2026. [5] Moneropedia — View key — official project site, accessed August 6, 2026. [6] monero-project/monero — network upgrade table — ring size 16 set at the v15 fork, August 13, 2022; read August 6, 2026. [7] CoinDesk — Binance to delist Monero — published February 6, 2024; delisting effective February 20, 2024. [8] getmonero.org — Roadmap — FCMP++ listed under \"Coming Soon\", checked August 6, 2026.\n\n## Optional privacy has an adoption problem\n\nHere is the number these comparisons usually bury. Of all ZEC in existence, [live: shielded ZEC total] ZEC — [live: shielded share of supply] — is in a shielded pool; the rest sits transparent, as visible as a Bitcoin address. Monero has no such line item because there is nothing to opt into. [1] That is a real advantage of the mandatory model, and if your mental model is “Zcash is the private one”, this split is the correction.\n\n- Shielded — [live: shielded ZEC total] ZEC\n- Transparent — [live: transparent pool balance] ZEC\n\nTwo caveats. The transparent share is dominated by exchange and custodial balances rather than users declining privacy — a statement about where ZEC is held, not about how strong shielded transactions are. And the percentage itself is defined differently by different trackers depending on whether you measure supply or transactions, and which pools you count; we take that apart in detail, and track total supply separately.\n\nThe relevant recent change is Ironwood. NU6.3 activated July 28, 2026 at block 3,428,143, sealing Orchard: shielded ZEC can no longer stay put, and every coin must exit through a public turnstile into Zcash's fifth shielded pool. That migration is [live: share of sealed Orchard migrated] complete. It does not change the optional/mandatory trade-off, but it is the clearest evidence Zcash's shielded cryptography is still being upgraded rather than frozen. Trackers publish different Ironwood numbers because they publish different quantities; all three are reconciled here.\n\n## Which should you use?\n\nThe two designs fail in opposite directions, so answer by use case rather than by winner.\n\n- If you want privacy with zero configuration, Monero's model is the safer default. Mandatory privacy removes the failure mode where someone forgets to shield, uses a wallet defaulting to transparent, or deanonymizes themselves moving between the two. [3] If the user is not going to think carefully every time, a design that does not ask them to beats a stronger proof they might not use.\n- If you have to prove what you did, Zcash's viewing keys are the stronger tool. Auditors, accountants and regulated businesses need to disclose selectively — private from the public, provable to one party. Zcash splits that by capability: an incoming viewing key reveals received funds, a full viewing key reveals incoming and outgoing. Monero's view key covers incoming only, and its docs warn the resulting balance “should not be relied upon”. [5] For an audit trail, that gap decides it.\n- If you are judging the cryptography itself, Zcash's shielded pool is the stronger construction. A shielded Zcash transaction proves membership in the entire pool; a Monero transaction proves membership in a ring of 16. [6] Ring size is a parameter that has been raised over time, and Monero's roadmap lists full-chain membership proofs (FCMP++) under “Coming Soon” to close exactly this gap — but as of August 6, 2026 it is not activated. [8] Zcash also no longer needs a trusted setup: Halo 2 removed it, making the 2016 Sprout ceremony history rather than a live assumption.\n- If you need to move value through regulated venues, the transparent option is the practical difference. Zcash's t-addresses let exchanges and custodians handle ZEC with ordinary public-address accounting, separate from the shielded pool. Monero has no such fallback, and that has had consequences — Binance delisted XMR effective February 20, 2024. [7] This is the clearest case where Zcash's compromise is the point rather than a weakness, and also why so much ZEC sits transparent: [live: shielded share of supply] shielded is partly a measure of where coins are custodied.\n\n## Frequently asked questions\n\nQ: Is Zcash more private than Monero?\nA: Not as a blanket statement. Per transaction, Zcash is stronger: a shielded spend draws its anonymity set from the entire shielded pool, while Monero hides each input in a ring of 16 outputs (the protocol floor since August 2022). But Zcash privacy is optional and only [live: shielded share of supply] of ZEC ([live: shielded ZEC total] ZEC) is shielded, whereas Monero applies privacy to every transaction with no opt-out. Stronger where used, versus universally applied.\n\nQ: Is Monero or Zcash better for privacy?\nA: It depends whether you value the default or the ceiling. Monero is better if you want privacy that cannot be misconfigured, since it is mandatory. Zcash is better if you want the strongest cryptography for the transactions you do shield, and if you may need to disclose activity selectively to an auditor later. Any comparison that picks a winner without naming that trade-off is not being straight with you.\n\nQ: Does Zcash have a max supply?\nA: Yes — Zcash is hard-capped at 21,000,000 ZEC, the same cap Bitcoin uses, enforced by a halving emission schedule. ZecStats tracks issuance against that ceiling live.\n\nQ: Does Monero have a max supply?\nA: No. Per getmonero.org (accessed August 6, 2026), \"the emission is infinite\": roughly 18.132 million XMR had been issued by the end of May 2022, after which tail emission of 0.6 XMR per 2-minute block began, which the project describes as under 1% inflation trending toward zero. It is a deliberate choice to keep paying miners after the main emission curve ends, and one of the clearest structural differences between the two coins.\n\nQ: Why is only part of Zcash shielded?\nA: Because Zcash privacy is opt-in: transparent (t-) and shielded (z-) addresses coexist on one chain, and coins become private only when moved into a shielded pool. Right now [live: shielded ZEC total] ZEC — [live: shielded share of supply] of supply — is shielded; the rest is as publicly visible as Bitcoin. Much of that transparent balance is exchange and custodial holdings rather than users declining privacy, but the number is real and is the standard critique of Zcash's model.\n\nQ: Did Zcash have a trusted setup?\nA: Yes, originally. The 2016 Sprout ceremony generated the parameters for Zcash's first shielded pool; had every participant colluded, they could in principle have forged proofs. Zcash has since removed the requirement — the Halo 2 proving system needs no trusted setup and underpins both the Orchard pool (2022) and the Ironwood pool that activated in July 2026. The original ceremony now applies only to the legacy Sprout pool, which is closing.\n\nQ: Did Monero ever have a trusted setup?\nA: Monero does not require one. Its range proofs are Bulletproofs, which the project's own documentation describes as \"short non-interactive zero-knowledge proofs that require no trusted setup\" (Moneropedia, accessed August 6, 2026). Because Monero uses ring signatures rather than zk-SNARKs, there is no structured reference string and no \"toxic waste\" to destroy.\n\nQ: Which is harder to trace, Zcash or Monero?\nA: A fully shielded Zcash transaction encrypts amounts, addresses and the transaction graph — nothing is observable beyond the pool boundary, which is at least as opaque as Monero and arguably more so, since the anonymity set is the whole pool rather than a ring of 16. But unshielded Zcash activity is as traceable as Bitcoin, and Monero has no equivalent traceable mode. So Monero is harder to trace on average across all activity, while a shielded Zcash transaction is the harder individual target.",
      "stats": {
        "words": 2076,
        "chars": 13569,
        "sections": 5,
        "faqs": 8,
        "live_spans": 18
      },
      "content_sha256": "8ab00becbae107d8708aeac7a047a220de3e81291d1c179b8787bb174a4e883c"
    },
    {
      "path": "/methodology",
      "url": "https://zecstats.org/methodology",
      "kind": "reference",
      "indexable": true,
      "title": "Methodology — How ZecStats Measures Zcash | ZecStats",
      "h1": "Methodology",
      "summary": "How every figure is derived, sourced and sanity-gated",
      "description": "Every ZecStats metric documented: primary sources, fallbacks, and cross-checks per metric, the emission-math sanity gate on supply, the app-owned history store, refresh cadences, and honest statements about what shielded data can and cannot show.",
      "sections": [
        {
          "id": "pipeline",
          "level": 2,
          "heading": "The pipeline, at a glance",
          "origin": "code",
          "revision": null,
          "words": 80
        },
        {
          "id": "sources",
          "level": 2,
          "heading": "Per-metric sources",
          "origin": "code",
          "revision": null,
          "words": 343
        },
        {
          "id": "principles",
          "level": 2,
          "heading": "Six principles the data lives by",
          "origin": "code",
          "revision": null,
          "words": 398
        },
        {
          "id": "verification",
          "level": 2,
          "heading": "Audited against independent witnesses",
          "origin": "code",
          "revision": null,
          "words": 55
        },
        {
          "id": "cadences",
          "level": 2,
          "heading": "Refresh cadences",
          "origin": "code",
          "revision": null,
          "words": 66
        }
      ],
      "faqs": [],
      "internal_links": [
        "/api/zec/summary",
        "/shielded",
        "/about"
      ],
      "external_links": [],
      "catalog": {
        "article": null,
        "enhancement": null,
        "page_copy": null
      },
      "placeholders": [
        {
          "token": "[live: ZEC issued supply]",
          "fields": [
            "supply.total"
          ],
          "derived": false,
          "count": 1
        }
      ],
      "text": "# Methodology\n\nEvery number is cross-checked against independent sources — or shown as “—”, never guessed.\n\nindependent sources: 6\nautomated checks: ~40\nrefresh cycle: ~2 min\nAI auditors: 5\n\n## The pipeline, at a glance\n\n- Primary source: CipherScan first — serialized, rate-limit-respecting\n- Independent fallback: Blockchair · CoinGecko · Binance · local math\n- Last-good snapshot: served stale-stamped, with a visible warning\n- Honest “—”: a missing number beats a made-up one\n- Emission-math sanity gate: implausible supply is withheld, not published\n\nEvery metric walks this ladder until something trustworthy answers. Every section of the summary API carries a provenance stamp (source id, fetch time, ok/stale flags), and degraded sections add human-readable warnings rather than silently serving stale numbers.\n\n## Per-metric sources\n\nSix metric families, each with a documented primary, fallback, and cross-check. Hover a chip for the detail (shown inline on phones).\n\n- Price: Primary: CoinGecko (Live ZEC price and market facts); Fallback: CipherScan (Live-price fallback when CoinGecko is unavailable); Cross-check: > 3% spread → warning (If primary and fallback disagree by more than 3%, the page warns instead of pretending confidence) — Price history is app-owned: Binance ZECUSDT daily closes stored since March 2019, with DefiLlama for the first listed price only.\n- Pools & supply: Primary: CipherScan pools (Consensus value-pool balances from the pools overview); Fallback: blockchain-info → last-good (CipherScan blockchain-info, then the last-good ZecStats snapshot); Cross-check: Emission-math envelope (Chain supply outside the consensus emission envelope is withheld, not published) — Blockchair's Zcash “circulation” field is broken (it disagrees with consensus chainSupply) — excluded; Blockchair is used only for network stats and node counts.\n- Shield/deshield flows: Primary: CipherScan flow series (Daily 30-day and hourly 48-hour shield/deshield series); Fallback: Own flow table (App-owned SQLite flow history, exact to the zatoshi) — Every successful refresh also persists flows into ZecStats' own store, so the series keeps working if the upstream disappears.\n- Network: Primary: CipherScan network stats (Height, difficulty, hashrate); Fallback: Blockchair (Independent network stats from the Blockchair explorer); Cross-check: > 20-block height gap → warning (Primary and fallback height disagreement over 20 blocks raises a warning) — Reachable nodes come from the Blockchair crawler; mempool from CipherScan with a Blockchair count fallback.\n- Halving countdown: Primary: CipherScan halving API (Upstream halving height and estimate); Fallback: Local emission math (Zero-dependency consensus schedule — the one witness that can never go down); Cross-check: > 2,000-block gap → warning (Disagreement over 2,000 blocks between API and local math raises a warning)\n- Cross-chain: Primary: CipherScan cross-chain index (Cross-chain intents settled on NEAR); Primary: Maya Midgard (Maya Protocol ZEC.ZEC pool depth and volume); Cross-check: Rolling-24h trend estimate (24h intents volume is estimated from the daily trend series (today + prorated yesterday), not from summing every swap) — The 24h intents figure is an estimate; per-swap history is display-only. THORChain ZEC is excluded (v1): its API was unreachable during validation, and an unverifiable number does not ship.\n\n## Six principles the data lives by\n\nThe scannable claims below are the contract; expand any card for the full reasoning.\n\n- Nulls, not guesses — missing data renders as “—”. ZecStats is a deterministic data pipeline: fetch from public sources, validate, persist, render. No AI in the data path, no estimates dressed up as measurements. — When a source fails, the affected section is served from the last good snapshot with a stale stamp and a human-readable warning — and if nothing trustworthy exists, the page shows “—” instead of a fabricated number.\n- A figure is only called wrong on two independent witnesses. The mechanical audit separates internal math identities — which can fail on their own — from witnessed comparisons against outside sources. A witnessed check only fails when at least two independent witnesses agree the site is off. — CipherScan, as the primary source, is never counted as a witness for itself.\n- Own history from day one — charts survive any upstream. Every successful refresh persists pool balances and daily flows into ZecStats' own SQLite store (values in exact zatoshi). The site accumulates history independent of any upstream, so charts and deltas keep working — and stay honest — even if a source disappears. — The ZEC price store works the same way: Binance daily closes backfilled to March 2019, plus live ticks.\n- Implausible supply is withheld, not published. Zcash's supply is fully determined by consensus rules: sum the block subsidies up to the current height and you get the ceiling of what can exist. ZecStats implements that emission schedule independently — the emission-math sanity gate — and checks every reported chain supply against it. — A supply figure outside the envelope (allowing for pre-Blossom timing variance) is withheld, not published — a wrong supply number is worse than none. Current supply [live: ZEC issued supply] ZEC passes the gate.\n- Single-operator risk is hedged, not ignored. CipherScan is an indie project. It is the primary chain-data source and deserves the credit — but it is a single-operator dependency. Fallbacks, last-good snapshots, and our own history store limit the blast radius. — A self-hosted zebrad node is on the roadmap to remove the dependency entirely.\n- Shielded activity is invisible by design — and we say so. ZecStats reports pool-boundary flows (shield/deshield, turnstile migrations) and pool balance changes only. Nothing on this site estimates activity inside a shielded pool, because nothing can observe it. — What the chain does not publish, this site does not invent. See what is and isn't observable.\n\n## Audited against independent witnesses\n\n> ~40 mechanical checks + 5 specialist AI auditors: An audit harness verifies this site against independent sources: ~40 automated checks (internal math identities plus witnessed comparisons) and 5 specialist auditors covering pools & supply, price & market, flows & Ironwood, network & cross-chain, and market context. More on the project: about ZecStats · the shielded pools page.\n\n## Refresh cadences\n\nCipherScan fast set (pools, network, flows, mempool, blocks): every ~2 minutes, requests serialized at > 5.5s spacing\nBlockchair network stats: every 10 minutes\nCoinGecko price + market facts: every 15 minutes (facts hourly)\nMaya Midgard: every 5 minutes\nHalving API: every 6 hours\nLockbox balance (blockchain-info): every 30 minutes\n\nQuestions or corrections: use the feedback button on any page, or see about ZecStats. Machine-readable data: /api/zec/summary.",
      "stats": {
        "words": 968,
        "chars": 6936,
        "sections": 5,
        "faqs": 0,
        "live_spans": 1
      },
      "content_sha256": "6909649f405fc3e232b8fa797fdfa85a166ee6e5e8c85e111494a1374f60298b"
    },
    {
      "path": "/api",
      "url": "https://zecstats.org/api",
      "kind": "reference",
      "indexable": true,
      "title": "ZecStats Public API — Free Zcash Network Data (JSON + CSV) | ZecStats",
      "h1": "ZecStats Public API",
      "summary": "Public API reference: free, no key, CORS-enabled JSON and CSV endpoints",
      "description": "The free, key-free ZecStats API: live Zcash shielded pool balances, the Ironwood migration, flows, supply, halving and price as JSON, plus daily CSV downloads. CORS-enabled, CC BY 4.0, with a provenance stamp on every metric so staleness is machine-detectable.",
      "sections": [
        {
          "id": "overview",
          "level": 2,
          "heading": "A free, open Zcash data API",
          "origin": "code",
          "revision": null,
          "words": 245
        },
        {
          "id": "endpoints",
          "level": 2,
          "heading": "Every endpoint",
          "origin": "code",
          "revision": null,
          "words": 41
        },
        {
          "id": "endpoints-json",
          "level": 3,
          "heading": "Live JSON",
          "origin": "code",
          "revision": null,
          "words": 252
        },
        {
          "id": "endpoints-csv",
          "level": 3,
          "heading": "Bulk CSV",
          "origin": "code",
          "revision": null,
          "words": 157
        },
        {
          "id": "endpoints-images",
          "level": 3,
          "heading": "Cards & charts",
          "origin": "code",
          "revision": null,
          "words": 87
        },
        {
          "id": "endpoints-health",
          "level": 3,
          "heading": "Health",
          "origin": "code",
          "revision": null,
          "words": 191
        },
        {
          "id": "shape",
          "level": 2,
          "heading": "What /api/zec/summary returns",
          "origin": "code",
          "revision": null,
          "words": 270
        },
        {
          "id": "examples",
          "level": 2,
          "heading": "Working examples",
          "origin": "code",
          "revision": null,
          "words": 159
        },
        {
          "id": "provenance",
          "level": 2,
          "heading": "Provenance is an API feature",
          "origin": "code",
          "revision": null,
          "words": 393
        },
        {
          "id": "limits",
          "level": 2,
          "heading": "Rate limits and polite polling",
          "origin": "code",
          "revision": null,
          "words": 152
        },
        {
          "id": "licence",
          "level": 2,
          "heading": "Attribution & licence",
          "origin": "code",
          "revision": null,
          "words": 129
        },
        {
          "id": "faq",
          "level": 2,
          "heading": "API FAQ",
          "origin": "code",
          "revision": null,
          "words": 342
        }
      ],
      "faqs": [
        {
          "q": "Is the ZecStats API free?",
          "a": "Yes. Every endpoint on this page is free, public and read-only. There is no paid tier, no signup and no commercial licence to negotiate — the data is published under CC BY 4.0, and all we ask for is attribution to zecstats.org."
        },
        {
          "q": "Do I need an API key?",
          "a": "No. There is no API key, no token and no authentication of any kind on the read endpoints — just issue a GET. The write endpoints (feedback and analytics events) and the admin endpoints are not part of the public API and are not reachable cross-origin."
        },
        {
          "q": "Can I use this from a browser?",
          "a": "Yes. The public read-only surface sends Access-Control-Allow-Origin: * on GET and HEAD for /api/* and /health*, and answers preflight requests, so a page on any domain can fetch ZecStats data directly. Feedback, events and admin endpoints stay same-origin."
        },
        {
          "q": "How often does the data update?",
          "a": "The pipeline refreshes roughly every two minutes, and /api/zec/summary is cached for 45 seconds with a 120-second stale-while-revalidate window, so polling faster than about once a minute returns the same bytes. The snapshot behind this page was generated at [live: snapshot time (UTC)] UTC."
        },
        {
          "q": "Can I use ZecStats data in my own project?",
          "a": "Yes — in wallets, dashboards, research papers, newsletters, bots and AI agents, commercially or not, under CC BY 4.0. Credit ZecStats and link back to zecstats.org so your readers can check the numbers themselves."
        },
        {
          "q": "How do I know if a number is stale?",
          "a": "Read the sources block. Every section of the summary carries {source, fetchedAt, ok, stale} — if stale is true, the value came from a last-good cache rather than a live fetch, and warnings[] usually explains why. Values that could not be obtained at all are null, never a carried-forward guess."
        },
        {
          "q": "What happens when a source is down?",
          "a": "The pipeline walks a ladder: primary source, then an independent fallback, then the last-good snapshot (served with a stale stamp and a warning), and finally null. It never fabricates a value to fill the gap — the methodology page lists the per-metric primaries, fallbacks and cross-checks."
        }
      ],
      "internal_links": [
        "/api/zec/summary",
        "/data",
        "/llms.txt",
        "/llms-full.txt",
        "/content-map.json",
        "/sitemap.xml",
        "/methodology",
        "/about"
      ],
      "external_links": [],
      "catalog": {
        "article": null,
        "enhancement": null,
        "page_copy": null
      },
      "placeholders": [
        {
          "token": "[live: shielded ZEC total]",
          "fields": [
            "pools.shieldedTotal"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: shielded share of supply]",
          "fields": [
            "pools.shieldedPct"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: snapshot time (UTC)]",
          "fields": [
            "generatedAt"
          ],
          "derived": false,
          "count": 2
        }
      ],
      "text": "# ZecStats Public API\n\nEvery number on this site as JSON and CSV — free, no API key, CORS-enabled, CC BY 4.0. Fresh Zcash network data you can actually build on.\n\nAPI keys needed: 0\nbrowser-callable: CORS *\nrefresh cadence: ~2 min\nlicence: CC BY 4.0\n\n## A free, open Zcash data API\n\nThe ZecStats API is the same deterministic pipeline that renders zecstats.org, exposed as public read-only endpoints. One request to /api/zec/summary returns the entire dashboard — shielded pool balances, the Ironwood migration, shield/deshield flows, supply, halving, price, network health and cross-chain ZEC volume — as a single JSON document, and bulk history downloads as CSV. It is free, it needs no API key, and it is licensed CC BY 4.0 with attribution to zecstats.org.\n\n- Free, no key, no signup: No token, no account, no quota form. Issue a GET and you have the data — the same bytes the site itself renders from.\n- Callable from a browser: The public read surface sends Access-Control-Allow-Origin: * on GET and HEAD and answers preflight, so a page on any domain can read it directly.\n- JSON for live, CSV for history: Live state comes from /api/zec/summary; daily history downloads as CSV — see the data downloads page.\n- Provenance on every metric: Each section carries {source, fetchedAt, ok, stale}, so staleness is something your code detects rather than something you have to trust.\n\n> Why this exists: On 31 July 2026 someone asked on the Zcash Community Forum (thread “Fresh Zcash Data”) where to get fresh, queryable Zcash network data — and the honest answer was that the public datasets are “quite stale, from around 2022”. This API is our answer: current data, documented fields, an open licence, no gatekeeping. As of [live: snapshot time (UTC)] UTC it reports [live: shielded ZEC total] ZEC shielded — [live: shielded share of supply] of supply.\n\n## Every endpoint\n\nEverything below is a GET, read-only, and open to any origin. Paths are relative to https://zecstats.org. Timestamps are ISO-8601 UTC, ZEC amounts are ZEC (not zatoshi) as JSON numbers, and any value that could not be observed is null.\n\n### Live JSON\n\n- GET /api/zec/summary: Params: none. · Returns: the whole dashboard as one JSON document — price, network, supply, pools, ironwood, flows, halving, crossChain, mempool, recentBlocks, recentPoolDeltas, plus sources, warnings and diagnostics. · Cache: public, max-age=45, stale-while-revalidate=120 · Start here — everything the site renders comes from this one document.\n- GET /api/zec/price-history: Params: window=24h|7d|1m|3m|ytd|1y|all (default 7d). · Returns: OHLC candles from the app-owned price store: points[] of {t,o,h,l,c} plus granularity (5m for 24h, 30m for 7d, 1d for 1m–1y, 1w for all), pointCount, rangeStart, rangeEnd, performancePct, highUsd, lowUsd, currentPriceUsd, generatedAt, warning. · Cache: max-age=60, stale-while-revalidate=120 for 24h/7d; max-age=300, stale-while-revalidate=900 for the longer windows.\n- GET /api/zec/price-comparison: Params: window=7d|1m|3m|ytd|1y|all (default 1m) and assets= — a comma-separated list drawn from zec, bitcoin, ethereum: two or three unique assets, and zec must be one of them (default: all three). · Returns: one normalized series per asset (basis: \"normalized-percent\", source: \"binance-vision\") with startPriceUsd, currentPriceUsd, performancePct and points[]. An invalid query returns HTTP 400. · Cache: public, max-age=300, stale-while-revalidate=900\n- GET /api/search: Params: q — the query string, up to 200 characters (an empty q returns the zero state). · Returns: the deterministic answer engine's response: intent, interpretation chips, a cited answer (headline, value, facts, sources, coverage, asOf) when the query resolves, grouped results, didYouMean, suggestions, tookMs, warning. · Cache: public, max-age=10, stale-while-revalidate=30 · Rate limited to 600 requests per minute across all callers; over that it returns HTTP 429.\n- GET /api/share/manifest.json: Params: none. · Returns: every share surface on the site: app, url, generatedAt, count, and items[] with key, title, description, shareUrl, linkUrl, imageUrl, pngDownloadUrl, downloadUrl, shareIntentUrl, xIntentUrl and tweetText. · Cache: public, max-age=60\n\n### Bulk CSV\n\nAll three CSV endpoints return text/csv; charset=utf-8 with Content-Disposition: attachment, Cache-Control: public, max-age=3600 and an X-License: CC-BY-4.0 header. from and to are inclusive UTC calendar days; a malformed value is ignored rather than rejected. An empty cell means the value was not observed — never zero. Coverage, column semantics and caveats live on the downloads page.\n\n- GET /api/zec/pools.csv: Params: optional from=YYYY-MM-DD and to=YYYY-MM-DD. · Returns: daily pool balances — day,height,transparent,sprout,sapling,orchard,ironwood,lockbox,chain_supply. One row per UTC day (the last observation of that day) from the ZecStats snapshot store. Amounts are ZEC. · Cache: public, max-age=3600; served as text/csv; charset=utf-8 with Content-Disposition: attachment.\n- GET /api/zec/flows.csv: Params: optional from=YYYY-MM-DD and to=YYYY-MM-DD. · Returns: daily shield/deshield flows — day,shield_zec,deshield_zec,net_zec,shield_tx,deshield_tx, one row per UTC day. Amounts are ZEC; the _tx columns are transaction counts. · Cache: public, max-age=3600; text/csv; charset=utf-8, Content-Disposition: attachment.\n- GET /api/zec/price.csv: Params: optional token=zec|bitcoin|ethereum (default zec), from=YYYY-MM-DD and to=YYYY-MM-DD. · Returns: daily OHLC — day,open,high,low,close,volume,market_cap_usd, one row per UTC day. · Cache: public, max-age=3600; text/csv; charset=utf-8, Content-Disposition: attachment.\n\n### Cards & charts\n\n- GET /api/share-card.svg · .png: Params: none. · Returns: the main ZecStats KPI card (1200×630), rendered server-side from the live summary. The SVG is the source of truth; the PNG is rasterized from it. · Cache: public, max-age=60\n- GET /api/chart/<kind>.svg · .png: Params: <kind> is one of summary (alias summary-v2), shielded, ironwood, flows, halving, price, price-ath, price-performance. · Returns: a 1200×630 card for that topic, generated from the current data with no client-side JavaScript — safe to hotlink in a post, a README or an embed. · Cache: public, max-age=60 (price-ath.svg uses max-age=300).\n\n### Health\n\n- GET /health: Params: none. · Returns: { ok, service, timestamp } — a liveness probe. It does not touch the data pipeline. · Cache: no cache headers set.\n- GET /health/ready: Params: none. · Returns: { ok, service, cache: { cached, expiresAt, generatedAt } } — readiness plus the age of the summary currently being served. · Cache: no cache headers set. · cache.generatedAt is the cheapest way to check freshness before pulling the full summary.\n\nFour further machine-readable surfaces are worth knowing about: /llms.txt, a plain-text guide to the site for AI agents; /llms-full.txt, the complete text of every page with its live figures filled in and an as-of time (both cached an hour); /content-map.json, a machine-readable outline of every page — sections, FAQs, links and each live figure named by the summary field behind it (cached five minutes); and /sitemap.xml (cached five minutes).\n\nNot part of the public API: /api/feedback, /api/events and /api/admin/* are same-origin only — they receive no CORS headers, and the admin routes are cloaked as 404 without a token. /api/zec/refresh is not a public data endpoint either: its GET form only echoes the summary that is already cached, and its POST form — which spends our rate-limited upstream budget — is admin-gated.\n\n## What /api/zec/summary returns\n\nThirteen top-level keys. Pool and supply values are ZEC as floating-point numbers, USD values are plain numbers, and every timestamp is ISO-8601 UTC.\n\n- generatedAt: ISO-8601 UTC timestamp of the snapshot that every other field in the document belongs to.\n- price: usd, change24hPct, btc, marketCapUsd, marketCapRank.\n- network: height, blocks24h, tx24h, difficulty, hashrate (the source's own string) and hashrateRaw, peers, nodes, mempoolCount, avgBlockTimeSeconds, subversion, chainSizeGb.\n- supply: total (consensus chain supply), max (21,000,000), pctIssued, inflationAnnualPct, emissionPerDayZec.\n- pools: Balances for transparent, sprout, sapling, orchard, ironwood and lockbox, plus shieldedTotal, shieldedPct, shieldedUsd, updatedAt and deltas — 1/7/30-day changes (d1, d7, d30) for sprout, sapling, orchard, ironwood and the shielded total.\n- ironwood: The NU6.3 migration: ironwoodZec, orchardRemainingZec, migrationPct, orchardMigrated24hZec, ironwoodInflow24hZec, orchardAtActivationZec, totalInflowZec, spentOutZec, inflowBySource (orchard / sapling / transparent / other), activationHeight, activationDate.\n- flows: daily[] and hourly[] points of {date, shield, deshield, net, shieldTx, deshieldTx}, the last24h totals, and recentTxs[] — individual boundary transactions (shield, deshield or fully_shielded; the amount is null for fully-shielded transactions, because the chain does not reveal it).\n- halving: block, blocksRemaining, estimatedDate, currentSubsidy, nextSubsidy, and the subsidy split: minerSharePct, zcgSharePct, lockboxSharePct.\n- crossChain: intents (24h volume, swap count, inflow/outflow USD, a daily[] trend series and recent[] swaps), maya (24h volume, ZEC pool depth, status), and totalVolume24hUsd.\n- mempool: count plus recent[] unconfirmed transactions with their sapling, orchard and ironwood action counts.\n- recentBlocks · recentPoolDeltas: Newest blocks (height, hash, timestampMs, txCount, sizeBytes, fees) and observed pool movements between two indexer snapshots (fromHeight → toHeight, per-pool deltas, shieldedDelta).\n- sources · warnings · diagnostics: sources maps a section id (price, pools, network, nodes, halving, turnstile, flows, poolDeltas, crossChain) to {source, fetchedAt, ok, stale, note?}. warnings[] is written for humans; diagnostics[] is ops telemetry.\n\n## Working examples\n\nFetch the whole summary from a shell:\n\n```\ncurl -sS \"https://zecstats.org/api/zec/summary\" -H \"Accept: application/json\"\n```\n\nRead it from a browser page on any domain — this works because the public API now sends permissive CORS headers on GET:\n\n```\nconst res = await fetch(\"https://zecstats.org/api/zec/summary\");\nconst s = await res.json();\n\nconsole.log(`${s.pools.shieldedTotal} ZEC shielded (${s.pools.shieldedPct}% of supply)`);\nconsole.log(`Ironwood migration: ${s.ironwood.migrationPct}%`);\n\n// Provenance: was the pools section read live, or served from a cache?\nconst { source, fetchedAt, ok, stale } = s.sources.pools;\nif (!ok || stale) console.warn(`pools data is ${stale ? \"stale\" : \"unavailable\"} (${source}, ${fetchedAt})`);\n\n// Anything user-facing is worth repeating in your own UI:\ns.warnings.forEach((w) => console.warn(w));\n```\n\nPull the shielded percentage with jq:\n\n```\n# just the number\ncurl -s https://zecstats.org/api/zec/summary | jq '.pools.shieldedPct'\n\n# a one-line report, with a staleness check\ncurl -s https://zecstats.org/api/zec/summary \\\n  | jq -r '\"\\(.pools.shieldedPct)% of ZEC is shielded (\\(.pools.shieldedTotal) ZEC) as of \\(.generatedAt)\"\n           + (if .sources.pools.stale then \"  [STALE]\" else \"\" end)'\n```\n\nGrab a slice of daily history as CSV:\n\n```\ncurl -s \"https://zecstats.org/api/zec/pools.csv?from=2026-07-30\" -o zcash-pools.csv\ncurl -s \"https://zecstats.org/api/zec/flows.csv?from=2026-06-29&to=2026-08-01\" -o zcash-flows.csv\ncurl -s \"https://zecstats.org/api/zec/price.csv?token=zec&from=2019-03-21\" -o zec-price.csv\n```\n\n## Provenance is an API feature\n\nMost data APIs hand you a number and let you assume it is current. This one hands you the number and the receipt — that is the part worth building on. Expand any card for the detail.\n\n- Every section carries a source stamp you can read programmatically. summary.sources maps each section to {source, fetchedAt, ok, stale, note?}. source names the upstream that produced the value (for example cipherscan, blockchair, emission-math, zodl-indexer, or zecstats-db when it came from our own store), fetchedAt is when it was retrieved, ok says whether that fetch succeeded, and stale says whether the value came from a last-good cache instead of a live read. — That makes staleness a machine-readable fact rather than something you have to infer. Most crypto data APIs silently carry a stale value forward and give you no way to tell.\n- Unavailable means null. It never means zero, and it is never a guess. When a source fails and nothing trustworthy is cached, the field is null — the site renders that as “—”. Nothing in this pipeline interpolates, extrapolates, or rounds a missing measurement into a plausible-looking number. — Supply gets an extra gate: a chain supply outside the consensus emission envelope is withheld rather than published. Treat null as “not observed”, never as 0.\n- warnings[] is for your users; diagnostics[] is for operators. warnings holds user-facing degradations in plain English — the same strings the dashboard shows in its notice strip. If you surface ZecStats data in your own UI, rendering these is the single highest-value thing you can do with the response. — diagnostics is ops telemetry: cross-check disagreements, withheld-value guards, upstream-quality notes. It is consumed by our audit harness and patrol jobs, and is not meant for display.\n- You can detect a stale response in one line of code. Compare generatedAt against your own clock, or read the specific section you depend on: — const s = await (await fetch(\"https://zecstats.org/api/zec/summary\")).json(); const poolsAreLive = s.sources.pools.ok && !s.sources.pools.stale; — Because unavailable data is null rather than a stale carry-forward, a consumer that checks these two things can never accidentally present a 2022 number as today's.\n\n> Audited against independent witnesses: The figures behind these endpoints are checked by an audit harness — ~40 mechanical checks (internal math identities plus witnessed comparisons against outside sources) and five specialist auditors. The per-metric primaries, fallbacks and cross-checks are all written down on the methodology page.\n\n## Rate limits and polite polling\n\nThere is no API key, no auth and no per-consumer quota. The only limits enforced in the app are these:\n\n/api/search: 600 requests/minute, global (HTTP 429 above that)\n/api/zec/summary and every other read endpoint: no hard limit — fair use\n/api/feedback (not part of this API): 20 submissions/minute, global\n/api/events (not part of this API): 1,200/minute global · 120/minute per client\n\nThe fair-use ask: the pipeline refreshes roughly every two minutes, and /api/zec/summary is cached with max-age=45, stale-while-revalidate=120 — polling faster than about once a minute returns you the same bytes and only costs us bandwidth. Cache what you fetch, respect the Cache-Control headers we send, back off on HTTP 429, and send a user agent that identifies your project so we can reach you if something you depend on is about to change.\n\nAuth: none\nSummary cache: 45s + 120s SWR\nRefresh cadence: ~2 minutes\nSuggested poll: ≤ 1 per minute\n\n## Attribution & licence\n\nZecStats data — JSON, CSV and cards alike — is published under the Creative Commons Attribution 4.0 International licence (CC BY 4.0). You may use, reshape, redistribute and build commercial products on it, as long as you credit the source. Copy this line:\n\n```\nData: ZecStats (https://zecstats.org), CC BY 4.0\n```\n\nIn HTML:\n\n```\n<a href=\"https://zecstats.org\">Data: ZecStats</a> — CC BY 4.0\n```\n\nA visible link back matters more than the legal formality: it lets your readers verify the number, and it is the only thing we get in return. If you are publishing charts or a paper, the downloads page carries a suggested citation. If you build something on this API we would like to hear about it — use the feedback button on any page, and see about ZecStats for who is behind it.\n\n## API FAQ\n\nQ: Is the ZecStats API free?\nA: Yes. Every endpoint on this page is free, public and read-only. There is no paid tier, no signup and no commercial licence to negotiate — the data is published under CC BY 4.0, and all we ask for is attribution to zecstats.org.\n\nQ: Do I need an API key?\nA: No. There is no API key, no token and no authentication of any kind on the read endpoints — just issue a GET. The write endpoints (feedback and analytics events) and the admin endpoints are not part of the public API and are not reachable cross-origin.\n\nQ: Can I use this from a browser?\nA: Yes. The public read-only surface sends Access-Control-Allow-Origin: * on GET and HEAD for /api/* and /health*, and answers preflight requests, so a page on any domain can fetch ZecStats data directly. Feedback, events and admin endpoints stay same-origin.\n\nQ: How often does the data update?\nA: The pipeline refreshes roughly every two minutes, and /api/zec/summary is cached for 45 seconds with a 120-second stale-while-revalidate window, so polling faster than about once a minute returns the same bytes. The snapshot behind this page was generated at [live: snapshot time (UTC)] UTC.\n\nQ: Can I use ZecStats data in my own project?\nA: Yes — in wallets, dashboards, research papers, newsletters, bots and AI agents, commercially or not, under CC BY 4.0. Credit ZecStats and link back to zecstats.org so your readers can check the numbers themselves.\n\nQ: How do I know if a number is stale?\nA: Read the sources block. Every section of the summary carries {source, fetchedAt, ok, stale} — if stale is true, the value came from a last-good cache rather than a live fetch, and warnings[] usually explains why. Values that could not be obtained at all are null, never a carried-forward guess.\n\nQ: What happens when a source is down?\nA: The pipeline walks a ladder: primary source, then an independent fallback, then the last-good snapshot (served with a stale stamp and a warning), and finally null. It never fabricates a value to fill the gap — the methodology page lists the per-metric primaries, fallbacks and cross-checks.",
      "stats": {
        "words": 2475,
        "chars": 18059,
        "sections": 12,
        "faqs": 7,
        "live_spans": 4
      },
      "content_sha256": "e577a99f4faec11c430e51e56f3fa0129a31747c6b29aa11507beb420edfd0a6"
    },
    {
      "path": "/data",
      "url": "https://zecstats.org/data",
      "kind": "reference",
      "indexable": true,
      "title": "Zcash Historical Data Downloads — Pool Balances, Flows & Price CSVs | ZecStats",
      "h1": "Zcash historical data downloads",
      "summary": "Historical CSV downloads of pool balances, flows and price, free to reuse with attribution",
      "description": "Download Zcash historical data as CSV: daily shielded pool balances (Sprout, Sapling, Orchard, Ironwood, lockbox, transparent, chain supply), daily shield/deshield flows, and ZEC daily price candles back to 2019. No signup, CC BY 4.0, with honest coverage dates for every file.",
      "sections": [
        {
          "id": "downloads",
          "level": 2,
          "heading": "Three CSVs, no signup",
          "origin": "code",
          "revision": null,
          "words": 312
        },
        {
          "id": "coverage",
          "level": 2,
          "heading": "How far back each file actually goes",
          "origin": "code",
          "revision": null,
          "words": 256
        },
        {
          "id": "caveats",
          "level": 2,
          "heading": "Using this responsibly",
          "origin": "code",
          "revision": null,
          "words": 338
        },
        {
          "id": "licence",
          "level": 2,
          "heading": "Licence, attribution & citation",
          "origin": "code",
          "revision": null,
          "words": 152
        },
        {
          "id": "faq",
          "level": 2,
          "heading": "Download FAQ",
          "origin": "code",
          "revision": null,
          "words": 295
        }
      ],
      "faqs": [
        {
          "q": "Where can I download historical Zcash shielded pool data?",
          "a": "Right here: /api/zec/pools.csv gives one row per UTC day with the transparent, Sprout, Sapling, Orchard, Ironwood and lockbox balances plus chain supply, as a plain CSV with no signup. It is the file this page exists to publish, because a clean daily pool-balance CSV was not otherwise available anywhere."
        },
        {
          "q": "How far back does each dataset go?",
          "a": "Honestly: not equally far. ZEC daily price candles start 2019-03-21. Daily shield/deshield flows start 2026-06-29. Pool balances start 2026-07-30 — [live: snapshot time (UTC)] days as of this page load — because that is when our own snapshot archive began accumulating. The pool series grows by one row every day and never gets rewritten."
        },
        {
          "q": "Do I need an account or an API key?",
          "a": "No. There is no signup, no key and no rate-limit contract. The files are plain HTTP GETs, served with an hour of cache, and they are open to any origin so a browser page can read them directly."
        },
        {
          "q": "Does an empty cell mean zero?",
          "a": "No. An empty or null cell means the value was not observed for that day — a source outage, or a field that did not exist yet. Zero means an actual observed zero. Never fill blanks with 0, and if you forward-fill for charting, say so in your methods."
        },
        {
          "q": "Are the amounts in ZEC or zatoshi?",
          "a": "All amounts in these CSVs are ZEC as decimal numbers. Internally the snapshot store keeps exact zatoshi integers; multiply a CSV amount by 100,000,000 if you need the integer form."
        },
        {
          "q": "Can I use this in a paper, an article, or a commercial product?",
          "a": "Yes, under CC BY 4.0 — including commercially. Credit ZecStats and link to zecstats.org so your readers can re-derive the numbers. A suggested citation line is on this page."
        }
      ],
      "internal_links": [
        "/api",
        "/api/zec/pools.csv",
        "/api/zec/flows.csv",
        "/api/zec/price.csv",
        "/about",
        "/methodology",
        "/shielded",
        "/ironwood-reconciliation"
      ],
      "external_links": [],
      "catalog": {
        "article": null,
        "enhancement": null,
        "page_copy": null
      },
      "placeholders": [
        {
          "token": "[live: snapshot time (UTC)]",
          "fields": [
            "generatedAt"
          ],
          "derived": false,
          "count": 7
        }
      ],
      "text": "# Zcash historical data downloads\n\nDaily Sprout, Sapling, Orchard and Ironwood balances, shield/deshield flows, and ZEC price — as plain CSV, no signup, CC BY 4.0.\n\npool history: [live: snapshot time (UTC)] days\nflows since: 2026-06-29\nZEC price since: 2019-03-21\nlicence: CC BY 4.0\n\n## Three CSVs, no signup\n\nThree datasets are downloadable here as plain CSV: daily shielded pool balances, daily shield/deshield flows, and daily ZEC price candles. No account, no API key, no rate-limit contract — each one is a single HTTP GET, served as text/csv; charset=utf-8 with Content-Disposition: attachment, an hour of caching and an X-License: CC-BY-4.0 header — the files save as zecstats-pool-balances-daily.csv, zecstats-shielded-flows-daily.csv and zecstats-zec-price-daily.csv. Published under CC BY 4.0 with attribution to zecstats.org. The same figures are available live as JSON through the ZecStats API.\n\n- Daily shielded pool balances: Download: /api/zec/pools.csv · Columns: day,height,transparent,sprout,sapling,orchard,ironwood,lockbox,chain_supply · Cadence: one row per UTC day — the last observation of that day, with the block height it was taken at. Optional ?from=YYYY-MM-DD&to=YYYY-MM-DD. · Coverage: from 2026-07-30 onward — [live: snapshot time (UTC)] days so far, growing by one row a day. Short, and we will not pretend otherwise: this series starts the day our own snapshot archive did.\n- Daily shield / deshield flows: Download: /api/zec/flows.csv · Columns: day,shield_zec,deshield_zec,net_zec,shield_tx,deshield_tx · Cadence: one row per UTC day: ZEC crossing into shielded pools, ZEC leaving them, the net, and the transaction counts behind each side. Optional ?from=YYYY-MM-DD&to=YYYY-MM-DD. · Coverage: from 2026-06-29 onward — [live: snapshot time (UTC)] days. Every refresh persists the upstream flow series into our own table, so the record survives the upstream.\n- Daily price (OHLC): Download: /api/zec/price.csv · Columns: day,open,high,low,close,volume,market_cap_usd · Cadence: one row per UTC day. Optional ?token=zec|bitcoin|ethereum (default zec) and ?from=YYYY-MM-DD&to=YYYY-MM-DD. · Coverage: ZEC from 2019-03-21 — the first daily close in our store — through yesterday. Bitcoin and Ethereum are available on the same endpoint via ?token= and start in March 2019, for normalising ZEC against the majors.\n\n> Why this page exists: A clean daily Sprout / Sapling / Orchard / Ironwood balance file was not published anywhere we could find — search for Zcash shielded-pool history and most results are about the unrelated “Zcash Shielded Asset” token, not the pools themselves. Researchers, journalists and anyone plotting Zcash privacy adoption had to scrape it themselves. Now they do not.\n\n## How far back each file actually goes\n\nCoverage is uneven, and pretending otherwise would make the files useless for research. Here is exactly what you get, as of [live: snapshot time (UTC)] UTC:\n\npools.csv — pool balances — First UTC day: 2026-07-30; Rows/day: 1; Origin: ZecStats snapshot archive\nflows.csv — shield/deshield — First UTC day: 2026-06-29; Rows/day: 1; Origin: Upstream flow series, persisted to our own store\nprice.csv — ZEC OHLC — First UTC day: 2019-03-21; Rows/day: 1; Origin: Binance daily closes + our own price snapshots\n\nThe pool-balance series is [live: snapshot time (UTC)] days long and growing. That is short — but it is ours. Every successful refresh writes the consensus pool balances into a ZecStats-owned store, in exact zatoshi, precisely so the historical record does not depend on one upstream operator continuing to exist, continuing to expose the same endpoint, or continuing to compute deltas the same way. We started that archive on 2026-07-30; it lengthens by one row every day and is never rewritten.\n\nThe flow series has the same shape of guarantee: the upstream provides the daily series, and every refresh persists it locally, so the file keeps working even if the source disappears. The price series is the oldest because it could be backfilled from an exchange's public daily-close archive — the pool balances could not, because nobody was publishing them.\n\n> Need a longer pool history?: We would like one too. Replaying pool balances from genesis needs a self-hosted node, which is on the roadmap — see about ZecStats. Until then, this page will keep saying exactly how many days it has rather than implying more.\n\n## Using this responsibly\n\nFour things to know before you plot or publish any of it.\n\n- Days are UTC days, and the date filters are inclusive. The day column is a UTC calendar day (YYYY-MM-DD), and the from / to query parameters are inclusive UTC days interpreted the same way (a malformed value is ignored, not rejected). If your analysis uses local-time days, re-bucket rather than assuming they line up — a Zcash day boundary in UTC will not match a US or Asian trading day.\n- A pool row is the last observation of that day, not a daily average. Pool balances are point-in-time snapshots. The row for a day is the last observation we took during that day, and the height column tells you which block it was taken at. It is not an average, not a close, and not an end-of-day chain state reconstructed after the fact. — That matters for differencing: a day-over-day change is the difference between two snapshots taken at whatever heights those columns say — so use height when you need the exact interval, especially around a reorg-adjacent or outage-adjacent day.\n- Amounts are ZEC, not zatoshi. Every ZEC-denominated column — pool balances, chain_supply, shield_zec, deshield_zec, net_zec — is ZEC as a decimal number, written to 8 decimal places (one zatoshi). The underlying store keeps exact zatoshi integers; multiply by 100,000,000 to recover them if you need integer arithmetic. The _tx columns are transaction counts, not amounts; price columns are USD (2 decimal places for volume and market_cap_usd).\n- An empty cell means “not observed” — never zero. If a value could not be observed for a day, the cell is empty. That is a deliberate choice: this project publishes null rather than a plausible-looking guess, on the site and in these files alike. Reading a blank as 0 will invent a collapse in a pool balance that never happened. — Missing rows are possible too — an outage day is simply absent, not interpolated. If you forward-fill or interpolate for a chart, say so in your methods. More on the withholding rules: methodology.\n\n## Licence, attribution & citation\n\nThese datasets are published under the Creative Commons Attribution 4.0 International licence (CC BY 4.0). Use them, reshape them, redistribute them, build a product on them — commercially or not — as long as you credit the source. The minimum credit line:\n\n```\nData: ZecStats (https://zecstats.org), CC BY 4.0\n```\n\nFor a paper, report or dataset citation:\n\n```\nZecStats. ([live: snapshot time (UTC)]). Zcash shielded pool balances, shield/deshield flows, and ZEC daily price [Data set].\n  ZecStats. https://zecstats.org/data (accessed YYYY-MM-DD). Licensed CC BY 4.0.\n```\n\nPlease cite the access date — the pool series grows daily, so the file you download tomorrow is longer than the one you download today. If you are automating the download, the API page documents the query parameters, headers and fair-use expectations. For what each number means and how it is sourced, read the methodology; for the pools themselves, the shielded pools page; and for how the Ironwood figures reconcile against Orchard, the Ironwood reconciliation.\n\n## Download FAQ\n\nQ: Where can I download historical Zcash shielded pool data?\nA: Right here: /api/zec/pools.csv gives one row per UTC day with the transparent, Sprout, Sapling, Orchard, Ironwood and lockbox balances plus chain supply, as a plain CSV with no signup. It is the file this page exists to publish, because a clean daily pool-balance CSV was not otherwise available anywhere.\n\nQ: How far back does each dataset go?\nA: Honestly: not equally far. ZEC daily price candles start 2019-03-21. Daily shield/deshield flows start 2026-06-29. Pool balances start 2026-07-30 — [live: snapshot time (UTC)] days as of this page load — because that is when our own snapshot archive began accumulating. The pool series grows by one row every day and never gets rewritten.\n\nQ: Do I need an account or an API key?\nA: No. There is no signup, no key and no rate-limit contract. The files are plain HTTP GETs, served with an hour of cache, and they are open to any origin so a browser page can read them directly.\n\nQ: Does an empty cell mean zero?\nA: No. An empty or null cell means the value was not observed for that day — a source outage, or a field that did not exist yet. Zero means an actual observed zero. Never fill blanks with 0, and if you forward-fill for charting, say so in your methods.\n\nQ: Are the amounts in ZEC or zatoshi?\nA: All amounts in these CSVs are ZEC as decimal numbers. Internally the snapshot store keeps exact zatoshi integers; multiply a CSV amount by 100,000,000 if you need the integer form.\n\nQ: Can I use this in a paper, an article, or a commercial product?\nA: Yes, under CC BY 4.0 — including commercially. Credit ZecStats and link to zecstats.org so your readers can re-derive the numbers. A suggested citation line is on this page.",
      "stats": {
        "words": 1404,
        "chars": 9271,
        "sections": 5,
        "faqs": 6,
        "live_spans": 7
      },
      "content_sha256": "fe1918516c90256dc06aa8f5a1804a364e0e1e565a7dd8d42ee0ecbbeab60ed2"
    },
    {
      "path": "/about",
      "url": "https://zecstats.org/about",
      "kind": "reference",
      "indexable": true,
      "title": "About ZecStats — Live Zcash Network Stats | ZecStats",
      "h1": "About ZecStats",
      "summary": "Who runs ZecStats and how to use the data",
      "description": "ZecStats is a free, live dashboard for the Zcash network — shielded pools, the Ironwood migration, flows, supply, halving, and price — built by the LeoDex team. Mission, roadmap (own zebrad node, whale tracking), and how to send feedback.",
      "sections": [
        {
          "id": "mission",
          "level": 2,
          "heading": "What ZecStats is",
          "origin": "code",
          "revision": null,
          "words": 242
        },
        {
          "id": "roadmap",
          "level": 2,
          "heading": "Roadmap",
          "origin": "code",
          "revision": null,
          "words": 51
        },
        {
          "id": "feedback",
          "level": 2,
          "heading": "Contact & feedback",
          "origin": "code",
          "revision": null,
          "words": 32
        }
      ],
      "faqs": [],
      "internal_links": [],
      "external_links": [
        {
          "url": "https://leodex.io/",
          "text": "LeoDex"
        },
        {
          "url": "https://x.com/zecstatsorg",
          "text": "@zecstatsorg"
        }
      ],
      "catalog": {
        "article": null,
        "enhancement": null,
        "page_copy": null
      },
      "placeholders": [
        {
          "token": "[live: ZEC price (USD)]",
          "fields": [
            "price.usd"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: share of sealed Orchard migrated]",
          "fields": [
            "ironwood.migrationPct"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: share of the 21M cap issued]",
          "fields": [
            "supply.pctIssued"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: shielded ZEC total]",
          "fields": [
            "pools.shieldedTotal"
          ],
          "derived": false,
          "count": 1
        }
      ],
      "text": "# About ZecStats\n\nA free, live dashboard for the Zcash network — every pool, flow, and countdown in one place, all cited, all refreshed continuously.\n\nshielded ZEC: [live: shielded ZEC total] ZEC\nironwood migration: [live: share of sealed Orchard migrated]\nsupply issued: [live: share of the 21M cap issued]\nZEC price: [live: ZEC price (USD)]\n\n## What ZecStats is\n\nZecStats (zecstats.org) is a live, comprehensive dashboard for the Zcash network: shielded pool balances, the Ironwood migration, shield/deshield flows, supply and halving countdown, price history, network health, and cross-chain ZEC activity — all server-rendered, all cited, all refreshed continuously.\n\n- One place for Zcash's most interesting numbers. It exists because Zcash's most interesting numbers — how much ZEC is shielded, how fast the sealed Orchard pool is migrating, what the lockbox holds — were scattered across explorers, forum posts, and one-off scripts. ZecStats puts them in one place and keeps its own history from day one, so the record does not depend on any single upstream.\n- Every figure is cited and cross-checked — or shown as “—”. ZecStats is a deterministic data pipeline with documented primaries, fallbacks, and cross-checks per metric. Missing data renders as “—”, never a guess; this page documents what every figure means.\n- Free, no ads — one disclosed LeoDex link. ZecStats is built by the team behind LeoDex, alongside sister stats sites for other ecosystems. The site is free, has no ads, and links to LeoDex for anyone who wants to actually swap ZEC cross-chain — that is the entire business model, disclosed here.\n\n> ~40 mechanical checks + 5 specialist AI auditors: The site is audited against independent sources: ~40 automated checks (internal math identities plus witnessed comparisons) and 5 specialist auditors covering pools & supply, price & market, flows & Ironwood, network & cross-chain, and market context. How it all works is documented right here on this page.\n\n## Roadmap\n\n- Own zebrad node: Replace the CipherScan dependency with self-hosted chain data and replay history from genesis.\n- Whale tracking: Large transparent movements and pool-boundary events, surfaced as they happen.\n- Deeper flow analytics: Turnstile-level migration series and shielded-adoption trendlines.\n- @zecstatsorg on X: Automated cards for milestones: migration marks, halving countdown, shielded records.\n\n## Contact & feedback\n\n> Spotted a wrong number? That is a bug.: Use the Feedback button on any page (it goes straight to the team) or reach out via @zecstatsorg. Data corrections ship fast.",
      "stats": {
        "words": 361,
        "chars": 2596,
        "sections": 3,
        "faqs": 0,
        "live_spans": 4
      },
      "content_sha256": "b2eca3ec756f1c3bc27afc665323ca4dd1fa53d2a281d7d59da7e8a186827b14"
    },
    {
      "path": "/search",
      "url": "https://zecstats.org/search",
      "kind": "search",
      "indexable": true,
      "title": "Search ZecStats — Zcash Stats & Answers",
      "h1": "Search ZecStats",
      "summary": "Instant, cited answers to Zcash questions across every ZecStats metric",
      "description": "Ask ZecStats anything about Zcash: shielded pools, the Ironwood migration, supply, halving, price, and how the network works. Instant answers with sources.",
      "sections": [
        {
          "id": "live-right-now",
          "level": 3,
          "heading": "Live right now",
          "origin": "code",
          "revision": null,
          "words": 16
        },
        {
          "id": "explore",
          "level": 3,
          "heading": "Explore",
          "origin": "code",
          "revision": null,
          "words": 41
        }
      ],
      "faqs": [],
      "internal_links": [
        "/shielded",
        "/ironwood",
        "/halving",
        "/search"
      ],
      "external_links": [],
      "catalog": {
        "article": null,
        "enhancement": null,
        "page_copy": null
      },
      "placeholders": [
        {
          "token": "[live: share of sealed Orchard migrated]",
          "fields": [
            "ironwood.migrationPct"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: shielded ZEC total]",
          "fields": [
            "pools.shieldedTotal"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: shielded share of supply]",
          "fields": [
            "pools.shieldedPct"
          ],
          "derived": false,
          "count": 1
        }
      ],
      "text": "# Search ZecStats\n\nAsk ZecStats anything about Zcash: shielded pools, the Ironwood migration, supply, halving, price, and how the network works. Instant answers with sources.\n\n### Live right now\n\n- Shielded ZEC · [live: shielded share of supply] of supply · [live: shielded ZEC total] ZEC\n- Ironwood migration · Orchard sealed · migrating · [live: share of sealed Orchard migrated]\n\n### Explore\n\n- Shielded pools · All five pools + flows\n- Ironwood migration · NU6.3 tracker\n- Halving countdown · Emission schedule\n- how much zec is shielded\n- ironwood migration progress\n- when is the halving\n- zec price\n- what is the lockbox\n- shielded flows 7d\n- is zcash traceable\n- zcash supply",
      "stats": {
        "words": 81,
        "chars": 683,
        "sections": 2,
        "faqs": 0,
        "live_spans": 3
      },
      "content_sha256": "cb4312d26df7e2a9c2b72e7a5c0cf255d207c4760b924b9c922021ccf9964fca"
    },
    {
      "path": "/insights",
      "url": "https://zecstats.org/insights",
      "kind": "insights-index",
      "indexable": true,
      "title": "Zcash Insights and Explainers | ZecStats",
      "h1": "Understand the numbers behind Zcash",
      "summary": "Source-linked Zcash explainers connected to the live network data and methodology",
      "description": "Source-linked Zcash explainers and analysis, connected to the live network data, shielded-pool figures, and methodology on ZecStats.",
      "sections": [
        {
          "id": "article-1",
          "level": 2,
          "heading": "What determines a Zcash transaction fee? ZIP 317, explained",
          "origin": "catalog:article",
          "revision": null,
          "words": 41
        },
        {
          "id": "article-2",
          "level": 2,
          "heading": "Ironwood quantum recoverability: what ZIP 2005 means",
          "origin": "catalog:article",
          "revision": null,
          "words": 32
        }
      ],
      "faqs": [],
      "internal_links": [
        "/insights/what-determines-a-zcash-transaction-fee",
        "/insights/ironwood-quantum-recoverability-explained"
      ],
      "external_links": [],
      "catalog": {
        "article": null,
        "enhancement": null,
        "page_copy": null
      },
      "placeholders": [],
      "text": "# Understand the numbers behind Zcash\n\nSource-linked Zcash explainers and analysis, connected to the live network data, shielded-pool figures, and methodology on ZecStats.\n\n## What determines a Zcash transaction fee? ZIP 317, explained\n\nHow the ZIP 317 conventional fee works: 5,000 zatoshis per logical action, a two-action grace floor, and why the fee is a wallet convention rather than a consensus rule.\n\nRead the explanation →\n\n## Ironwood quantum recoverability: what ZIP 2005 means\n\nUnderstand Ironwood quantum recoverability, why it is not quantum security, and what Proposed ZIP 2005 says about funds in older shielded pools.\n\nRead the explanation →",
      "stats": {
        "words": 95,
        "chars": 657,
        "sections": 2,
        "faqs": 0,
        "live_spans": 0
      },
      "content_sha256": "dc8b8884a375ae78d7c1a52465b39311fd79e9c4f9b0ea04ce1bbb3ad30e2fe9"
    },
    {
      "path": "/insights/ironwood-quantum-recoverability-explained",
      "url": "https://zecstats.org/insights/ironwood-quantum-recoverability-explained",
      "kind": "article",
      "indexable": true,
      "title": "Ironwood quantum recoverability: what ZIP 2005 means | ZecStats",
      "h1": "Ironwood quantum recoverability: what ZIP 2005 means",
      "summary": "Understand Ironwood quantum recoverability, why it is not quantum security, and what Proposed ZIP 2005 says about funds in older shielded pools.",
      "description": "Understand Ironwood quantum recoverability, why it is not quantum security, and what Proposed ZIP 2005 says about funds in older shielded pools.",
      "sections": [
        {
          "id": "section-1",
          "level": 2,
          "heading": "Ironwood activation and the recovery proposal",
          "origin": "catalog:article",
          "revision": "863597a55532dbc606d9f928d6f452f74107cb8bab1a0bb001544cfae8fc48f8",
          "words": 117
        },
        {
          "id": "section-2",
          "level": 2,
          "heading": "What quantum recoverability is designed to preserve",
          "origin": "catalog:article",
          "revision": "863597a55532dbc606d9f928d6f452f74107cb8bab1a0bb001544cfae8fc48f8",
          "words": 161
        },
        {
          "id": "section-3",
          "level": 2,
          "heading": "Why funds in older pools are different",
          "origin": "catalog:article",
          "revision": "863597a55532dbc606d9f928d6f452f74107cb8bab1a0bb001544cfae8fc48f8",
          "words": 107
        },
        {
          "id": "section-4",
          "level": 2,
          "heading": "Recoverability is not a blanket privacy guarantee",
          "origin": "catalog:article",
          "revision": "863597a55532dbc606d9f928d6f452f74107cb8bab1a0bb001544cfae8fc48f8",
          "words": 146
        },
        {
          "id": "explore-data",
          "level": 2,
          "heading": "See the data and methodology",
          "origin": "catalog:article",
          "revision": "863597a55532dbc606d9f928d6f452f74107cb8bab1a0bb001544cfae8fc48f8",
          "words": 11
        }
      ],
      "faqs": [],
      "internal_links": [
        "/ironwood",
        "/orchard-pool",
        "/insights"
      ],
      "external_links": [
        {
          "url": "https://zips.z.cash/zip-0258",
          "text": "ZIP 258: Deployment of the NU6.3 Network Upgrade — Draft"
        },
        {
          "url": "https://zips.z.cash/zip-2005",
          "text": "ZIP 2005: Ironwood Quantum Recoverability — Proposed"
        }
      ],
      "catalog": {
        "article": "863597a55532dbc606d9f928d6f452f74107cb8bab1a0bb001544cfae8fc48f8",
        "enhancement": null,
        "page_copy": null
      },
      "placeholders": [],
      "text": "# Ironwood quantum recoverability: what ZIP 2005 means\n\nQuantum recoverability is preparation for a possible future recovery process, not a claim that Zcash is quantum-secure. Proposed ZIP 2005 explains why Ironwood notes are designed for that transition and why funds left in older shielded pools would not have the same recovery path.\n\nZecStats · Published 2026-09-17 · Updated 2026-09-17\n\n## Ironwood activation and the recovery proposal\n\nZECStats tracks NU6.3 activation on July 28, 2026, at block 3,428,143, introducing the Ironwood shielded pool. ZIP 258 specifies that same mainnet activation height, but its document status is Draft. The activation date here comes from the site's tracked deployment record, not from treating a draft specification as deployment confirmation.\n\nZIP 2005, titled Ironwood Quantum Recoverability, is marked Proposed. It describes changes to the construction of Ironwood notes intended to support a future transition. Its central limitation is explicit: the change does not by itself make Zcash secure against quantum computers.\n\nSources: ZECStats Ironwood Migration Tracker · ZIP 258: Deployment of the NU6.3 Network Upgrade — Draft · ZIP 2005: Ironwood Quantum Recoverability — Proposed\n\n## What quantum recoverability is designed to preserve\n\nZIP 2005 describes a threat to the cryptography used by existing shielded protocols: an adversary able to solve the relevant discrete-logarithm problems could steal or forge funds. Quantum recoverability addresses how legitimate funds could be recovered if those protocols had to be disabled to prevent such attacks.\n\nThe proposal changes how notes are constructed for Ironwood so that a potential future Recovery Protocol could recover their funds into another shielded pool. That Recovery Protocol is outlined, not fully specified; many design decisions remain open. Preparing notes for recovery is therefore different from having a completed quantum-secure protocol available today.\n\nThe distinction matters because replacing the proof system alone would not solve every problem. ZIP 2005 explains that existing Sapling and Orchard note commitments are not post-quantum binding: a sufficiently capable adversary could forge spendable notes. The proposed note changes prepare for that problem before a later transition.\n\nSources: ZIP 2005: Ironwood Quantum Recoverability — Proposed\n\n## Why funds in older pools are different\n\nUnder the scenario described in ZIP 2005, funds still in Sprout, Sapling or Orchard would not be recoverable after their respective protocols were disabled. This is a conditional statement about a future security transition, not a claim that those funds are already inaccessible.\n\nThe proposal says those funds should be migrated to Ironwood to take advantage of the recoverability changes. Moving value to Ironwood and recovering it through a future Recovery Protocol are separate steps: the first prepares funds for the second. This explanation does not establish a migration deadline or wallet-specific procedure.\n\nSources: ZIP 2005: Ironwood Quantum Recoverability — Proposed\n\n## Recoverability is not a blanket privacy guarantee\n\nRecoverability concerns whether funds could survive a future cryptographic transition. Transaction privacy concerns what a transaction reveals. The word recoverable does not mean that balances identify their owners, nor does it justify describing every Ironwood transaction as quantum-proof.\n\nZIP 2005 discusses privacy under specific adversary assumptions, including whether an adversary knows a note's address. Those qualifications should not be replaced with an unconditional quantum-privacy claim. For migration itself, the ZECStats tracker separately explains that amounts crossing the Orchard-to-Ironwood boundary are public. That boundary disclosure and future fund recoverability answer different questions.\n\nUse the Ironwood migration tracker for migration progress and the Orchard pool page for the remaining balance. Those live quantities describe value in and between pools; they do not demonstrate that a future Recovery Protocol is complete.\n\nSources: ZIP 2005: Ironwood Quantum Recoverability — Proposed · ZECStats Ironwood Migration Tracker\n\n## See the data and methodology\n\n- ironwood\n- orchard pool\n\nAll ZecStats insights",
      "stats": {
        "words": 598,
        "chars": 4286,
        "sections": 5,
        "faqs": 0,
        "live_spans": 0
      },
      "content_sha256": "f49e95597d70dc5af2d67f0632052a13ead49e9ed4dcb9ca5813a259e20934d2"
    },
    {
      "path": "/insights/what-determines-a-zcash-transaction-fee",
      "url": "https://zecstats.org/insights/what-determines-a-zcash-transaction-fee",
      "kind": "article",
      "indexable": true,
      "title": "What determines a Zcash transaction fee? ZIP 317, explained | ZecStats",
      "h1": "What determines a Zcash transaction fee? ZIP 317, explained",
      "summary": "How the ZIP 317 conventional fee works: 5,000 zatoshis per logical action, a two-action grace floor, and why the fee is a wallet convention rather than a consensus rule.",
      "description": "How the ZIP 317 conventional fee works: 5,000 zatoshis per logical action, a two-action grace floor, and why the fee is a wallet convention rather than a consensus rule.",
      "sections": [
        {
          "id": "section-1",
          "level": 2,
          "heading": "Why Zcash replaced the flat fee",
          "origin": "catalog:article",
          "revision": "1d132ffee70850dc2ad6a17e9ece5f7142f8540f92a001d7f5fb74379c32815d",
          "words": 130
        },
        {
          "id": "section-2",
          "level": 2,
          "heading": "The conventional fee formula",
          "origin": "catalog:article",
          "revision": "1d132ffee70850dc2ad6a17e9ece5f7142f8540f92a001d7f5fb74379c32815d",
          "words": 163
        },
        {
          "id": "section-3",
          "level": 2,
          "heading": "How each pool counts toward logical actions",
          "origin": "catalog:article",
          "revision": "1d132ffee70850dc2ad6a17e9ece5f7142f8540f92a001d7f5fb74379c32815d",
          "words": 141
        },
        {
          "id": "section-4",
          "level": 2,
          "heading": "The grace floor exists to protect privacy padding",
          "origin": "catalog:article",
          "revision": "1d132ffee70850dc2ad6a17e9ece5f7142f8540f92a001d7f5fb74379c32815d",
          "words": 140
        },
        {
          "id": "section-5",
          "level": 2,
          "heading": "A convention wallets follow, not a consensus rule",
          "origin": "catalog:article",
          "revision": "1d132ffee70850dc2ad6a17e9ece5f7142f8540f92a001d7f5fb74379c32815d",
          "words": 180
        },
        {
          "id": "explore-data",
          "level": 2,
          "heading": "See the data and methodology",
          "origin": "catalog:article",
          "revision": "1d132ffee70850dc2ad6a17e9ece5f7142f8540f92a001d7f5fb74379c32815d",
          "words": 12
        }
      ],
      "faqs": [],
      "internal_links": [
        "/api/zec/summary",
        "/network",
        "/methodology",
        "/ironwood",
        "/shielded",
        "/insights"
      ],
      "external_links": [
        {
          "url": "https://z.cash/",
          "text": "Zcash: Privacy-protecting digital currency"
        },
        {
          "url": "https://zips.z.cash/zip-0317",
          "text": "ZIP 317: Proportional Transfer Fee Mechanism"
        }
      ],
      "catalog": {
        "article": "1d132ffee70850dc2ad6a17e9ece5f7142f8540f92a001d7f5fb74379c32815d",
        "enhancement": null,
        "page_copy": null
      },
      "placeholders": [],
      "text": "# What determines a Zcash transaction fee? ZIP 317, explained\n\nZcash fees are not fixed. ZIP 317 defines a conventional fee of 5,000 zatoshis per logical action with a two-action grace floor, so the smallest standard fee evaluates to 0.0001 ZEC. The count treats transparent, Sapling, Orchard and — in a draft revision — Ironwood components evenhandedly, never penalises privacy padding, and the whole scheme is a wallet convention, not a consensus rule.\n\nZecStats · Published 2026-10-02 · Updated 2026-10-02\n\n## Why Zcash replaced the flat fee\n\nZcash's official site tells newcomers that transaction fees are \"usually only a few cents\", but it does not explain how a fee is actually determined. The answer is ZIP 317, the Proportional Transfer Fee Mechanism, which obsoletes the earlier ZIP 313 convention of a flat 1,000 zatoshis (0.00001 ZEC) per transaction.\n\nThe motivation was fairness and abuse resistance. Under the flat fee, the network saw transactions with 1,100 outputs paying exactly what a 2-output payment paid. ZIP 317's stated objective is for fees to fairly reflect the processing costs that a transaction's inputs and outputs impose on network participants — discouraging intentional or unintentional denial-of-service usage patterns while keeping fees low for regular transactions.\n\nSources: Zcash: Privacy-protecting digital currency · ZIP 317: Proportional Transfer Fee Mechanism\n\n## The conventional fee formula\n\nZIP 317 defines a conventional fee: the amount wallets conventionally pay and that a user can reasonably expect miners to accept for including a transaction in a block. The formula, in zatoshis, is marginal_fee × max(grace_actions, logical_actions), with marginal_fee set at 5,000 zatoshis and grace_actions at 2. Logical actions are a count derived from the transaction's inputs and outputs across all of its components, and the specification's requirements include that the fee scale linearly with the number of inputs and/or outputs.\n\nEvaluating the formula at its floor gives the smallest conventional fee: max(2, logical_actions) is never below 2, so the minimum is 2 × 5,000 = 10,000 zatoshis — 0.0001 ZEC, using the specification's own equivalence of 1,000 zatoshis to 0.00001 ZEC. Transactions with more logical actions pay proportionally more. By requirement, the fee must be computable from only the public data of the transaction, so it does not leak private information used in constructing it.\n\nSources: ZIP 317: Proportional Transfer Fee Mechanism\n\n## How each pool counts toward logical actions\n\nEach component contributes to the count. Transparent inputs and outputs contribute the greater of two byte-size ceilings: total input size over the 150-byte standard P2PKH input size, and total output size over the 34-byte standard output size. Sapling contributes the greater of its spend and output counts, each legacy Sprout JoinSplit contributes 2, and Orchard contributes its number of Actions — an Orchard Action combines an input and an output in one structure.\n\nRevision 1 of the specification, tied to the NU6.3 upgrade that introduces the Ironwood pool, adds an identical contribution for Ironwood Actions, which use the same Action structure as Orchard's. A stated design requirement is that the formula should not favour or discriminate against transactions involving any of the Ironwood, Orchard, Sapling, or transparent pools.\n\nSources: ZIP 317: Proportional Transfer Fee Mechanism\n\n## The grace floor exists to protect privacy padding\n\nThe two-action grace floor ensures there is no penalty for padding a one-action transaction up to two actions. Padding matters because the number of inputs and outputs is public: uniform transaction shapes reduce what that arity reveals. ZIP 317 notes that the default policy of zcashd and the mobile SDKs pads to two inputs and two outputs for each shielded pool a transaction uses, and it requires that users not be penalised for padding of this kind.\n\nThe same reasoning produced the logical-actions definition itself. An earlier proposal counted inputs plus outputs, which would have disadvantaged Orchard: because an Action combines an input and an output, Orchard requires padding inputs or outputs to equal numbers, so an inputs-plus-outputs fee would have effectively discriminated against it.\n\nSources: ZIP 317: Proportional Transfer Fee Mechanism\n\n## A convention wallets follow, not a consensus rule\n\nZIP 317 is explicit on its own limits: \"It is not a consensus requirement that fees follow this formula; however, wallets SHOULD create transactions that pay this fee, in order to reduce information leakage, unless overridden by the user.\" Paying the conventional amount keeps a transaction's fee from becoming a distinguishing mark, which is itself a privacy measure.\n\nRevision status matters when reading the document. As of its June 26, 2026 update, ZIP 317 lists Revision 0 as Active, Revision 1 — the Ironwood contribution — as Draft for NU6.3, and Revision 2, which would add memo-bundle fee handling and depends on the not-yet-deployed ZIP 248, as Draft. Separately, ZECStats observes on-chain that the Ironwood pool activated on July 28, 2026 at block height 3,428,143. This page describes what the specification says; it does not establish which revision any particular wallet implements or what every transaction actually pays. For the live state of the pools the formula names, see the related ZECStats pages below.\n\nSources: ZIP 317: Proportional Transfer Fee Mechanism · ZECStats live summary\n\n## See the data and methodology\n\n- network\n- methodology\n- ironwood\n- shielded\n\nAll ZecStats insights",
      "stats": {
        "words": 841,
        "chars": 5618,
        "sections": 6,
        "faqs": 0,
        "live_spans": 0
      },
      "content_sha256": "11ca0ada0be4b04ffd59a539a6b3f6c96ec37b4ba39c630960bb1338f26fe473"
    },
    {
      "path": "/share",
      "url": "https://zecstats.org/share",
      "kind": "share",
      "indexable": true,
      "title": "ZecStats | Live Zcash Network Stats",
      "h1": "ZecStats | Live Zcash Network Stats",
      "summary": "The main live Zcash stats card, ready to share",
      "description": "Track Zcash live: [live: shielded ZEC total] ZEC shielded ([live: shielded share of supply] of supply), the Ironwood migration, flows, supply, halving countdown, and ZEC price.",
      "sections": [],
      "faqs": [],
      "internal_links": [],
      "external_links": [],
      "catalog": {
        "article": null,
        "enhancement": null,
        "page_copy": null
      },
      "placeholders": [
        {
          "token": "[live: ZEC issued supply]",
          "fields": [
            "supply.total"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: ZEC price (USD)]",
          "fields": [
            "price.usd"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: block height]",
          "fields": [
            "network.height"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: blocks until the halving]",
          "fields": [
            "halving.blocksRemaining"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: shielded ZEC total]",
          "fields": [
            "pools.shieldedTotal"
          ],
          "derived": false,
          "count": 4
        },
        {
          "token": "[live: shielded share of supply]",
          "fields": [
            "pools.shieldedPct"
          ],
          "derived": false,
          "count": 4
        },
        {
          "token": "[live: snapshot time (UTC)]",
          "fields": [
            "generatedAt"
          ],
          "derived": false,
          "count": 1
        }
      ],
      "text": "# ZecStats | Live Zcash Network Stats\n\nTrack Zcash live: [live: shielded ZEC total] ZEC shielded ([live: shielded share of supply] of supply), the Ironwood migration, flows, supply, halving countdown, and ZEC price.\n\n[live: shielded ZEC total] ZEC of ZEC is shielded ([live: shielded share of supply] of supply) as of [live: snapshot time (UTC)] UTC.\n\nZEC price: [live: ZEC price (USD)]\nShielded ZEC: [live: shielded ZEC total] ZEC\nShielded % of supply: [live: shielded share of supply]\nTotal supply: [live: ZEC issued supply] ZEC of 21M\nBlock height: [live: block height]\nBlocks to halving: [live: blocks until the halving]",
      "stats": {
        "words": 61,
        "chars": 624,
        "sections": 0,
        "faqs": 0,
        "live_spans": 13
      },
      "content_sha256": "cdacb669a0ffbe3a57684022a5bd23a724fad5490eb3b4a6ca6a56c29e3163b3"
    },
    {
      "path": "/share/shielded",
      "url": "https://zecstats.org/share/shielded",
      "kind": "share",
      "indexable": true,
      "title": "Zcash Shielded Pools — [live: shielded ZEC total] ZEC | ZecStats",
      "h1": "Zcash Shielded Pools — [live: shielded ZEC total] ZEC",
      "summary": "Where ZEC lives: every value pool and the shielded share of supply",
      "description": "Where ZEC lives: all five value pools plus the lockbox, [live: shielded share of supply] of supply shielded, and the 24h net shielded flow.",
      "sections": [],
      "faqs": [],
      "internal_links": [],
      "external_links": [],
      "catalog": {
        "article": null,
        "enhancement": null,
        "page_copy": null
      },
      "placeholders": [
        {
          "token": "[live: Ironwood pool balance]",
          "fields": [
            "pools.ironwood"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: Orchard pool balance]",
          "fields": [
            "pools.orchard"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: Sapling pool balance]",
          "fields": [
            "pools.sapling"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: Sprout pool balance]",
          "fields": [
            "pools.sprout"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: lockbox balance]",
          "fields": [
            "pools.lockbox"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: shielded ZEC total]",
          "fields": [
            "pools.shieldedTotal"
          ],
          "derived": false,
          "count": 3
        },
        {
          "token": "[live: shielded share of supply]",
          "fields": [
            "pools.shieldedPct"
          ],
          "derived": false,
          "count": 3
        },
        {
          "token": "[live: snapshot time (UTC)]",
          "fields": [
            "generatedAt"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: transparent pool balance]",
          "fields": [
            "pools.transparent"
          ],
          "derived": false,
          "count": 1
        }
      ],
      "text": "# Zcash Shielded Pools — [live: shielded ZEC total] ZEC\n\nWhere ZEC lives: all five value pools plus the lockbox, [live: shielded share of supply] of supply shielded, and the 24h net shielded flow.\n\nZcash shielded pools hold [live: shielded ZEC total] ZEC — [live: shielded share of supply] of all ZEC (as of [live: snapshot time (UTC)] UTC).\n\nTransparent — Status: open; Balance: [live: transparent pool balance] ZEC\nSprout — Status: closing; Balance: [live: Sprout pool balance] ZEC\nSapling — Status: open; Balance: [live: Sapling pool balance] ZEC\nOrchard — Status: sealed (migrating); Balance: [live: Orchard pool balance] ZEC\nIronwood — Status: open; Balance: [live: Ironwood pool balance] ZEC\nLockbox — Status: accruing; Balance: [live: lockbox balance] ZEC",
      "stats": {
        "words": 76,
        "chars": 762,
        "sections": 0,
        "faqs": 0,
        "live_spans": 13
      },
      "content_sha256": "5a10b99044cf4d2e5f27bec3cabff33e59ba1c51552158ccdec6df2d51620cdc"
    },
    {
      "path": "/share/ironwood",
      "url": "https://zecstats.org/share/ironwood",
      "kind": "share",
      "indexable": true,
      "title": "Ironwood Migration — [live: share of sealed Orchard migrated] Complete | ZecStats",
      "h1": "Ironwood Migration — [live: share of sealed Orchard migrated] Complete",
      "summary": "Live Ironwood migration progress, balances and the daily migrated volume",
      "description": "Orchard is sealed and migrating to Ironwood, Zcash's fifth shielded pool (NU6.3). Live migration progress, balances, and the 24h migrated volume.",
      "sections": [],
      "faqs": [],
      "internal_links": [],
      "external_links": [],
      "catalog": {
        "article": null,
        "enhancement": null,
        "page_copy": null
      },
      "placeholders": [
        {
          "token": "[live: Ironwood balance (migration tracker)]",
          "fields": [
            "ironwood.ironwoodZec"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: Orchard balance still to migrate]",
          "fields": [
            "ironwood.orchardRemainingZec"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: ZEC migrated out of Orchard in 24h]",
          "fields": [
            "ironwood.orchardMigrated24hZec"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: share of sealed Orchard migrated]",
          "fields": [
            "ironwood.migrationPct"
          ],
          "derived": false,
          "count": 4
        },
        {
          "token": "[live: snapshot time (UTC)]",
          "fields": [
            "generatedAt"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: total ZEC ever migrated into Ironwood]",
          "fields": [
            "ironwood.totalInflowZec"
          ],
          "derived": false,
          "count": 1
        }
      ],
      "text": "# Ironwood Migration — [live: share of sealed Orchard migrated] Complete\n\nOrchard is sealed and migrating to Ironwood, Zcash's fifth shielded pool (NU6.3). Live migration progress, balances, and the 24h migrated volume.\n\n[live: share of sealed Orchard migrated] of the sealed Orchard pool has migrated to Ironwood — Orchard is sealed and migrating into Zcash's fifth shielded pool (as of [live: snapshot time (UTC)] UTC).\n\nOrchard migrated: [live: share of sealed Orchard migrated]\nOrchard remaining (sealed): [live: Orchard balance still to migrate] ZEC\nIronwood balance: [live: Ironwood balance (migration tracker)] ZEC\nTotal ever migrated in: [live: total ZEC ever migrated into Ironwood] ZEC\nMigrated from Orchard · 24h: [live: ZEC migrated out of Orchard in 24h] ZEC\nActivation height: 3,428,143",
      "stats": {
        "words": 76,
        "chars": 800,
        "sections": 0,
        "faqs": 0,
        "live_spans": 9
      },
      "content_sha256": "93ba2c66bd352766ebb1b00d20a585e188e4eb6fddf1701c63329938264fed8c"
    },
    {
      "path": "/share/flows",
      "url": "https://zecstats.org/share/flows",
      "kind": "share",
      "indexable": true,
      "title": "Zcash Shielded Flows — 30 Days | ZecStats",
      "h1": "Zcash Shielded Flows — 30 Days",
      "summary": "Daily shield versus deshield volume over the last month",
      "description": "Daily shield (t → z) vs deshield (z → t) volume over the last 30 days, plus the trailing-24h totals.",
      "sections": [],
      "faqs": [],
      "internal_links": [],
      "external_links": [],
      "catalog": {
        "article": null,
        "enhancement": null,
        "page_copy": null
      },
      "placeholders": [
        {
          "token": "[live: ZEC deshielded in the last 24h]",
          "fields": [
            "flows.last24h.deshield"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: ZEC shielded in the last 24h]",
          "fields": [
            "flows.last24h.shield"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: net shielded flow, last 24h]",
          "fields": [
            "flows.last24h.net"
          ],
          "derived": false,
          "count": 2
        },
        {
          "token": "[live: snapshot time (UTC)]",
          "fields": [
            "generatedAt"
          ],
          "derived": false,
          "count": 1
        }
      ],
      "text": "# Zcash Shielded Flows — 30 Days\n\nDaily shield (t → z) vs deshield (z → t) volume over the last 30 days, plus the trailing-24h totals.\n\nNet shielded flow over the last 24h: [live: net shielded flow, last 24h] ZEC (as of [live: snapshot time (UTC)] UTC).\n\nShielded (t → z): [live: ZEC shielded in the last 24h] ZEC\nDeshielded (z → t): [live: ZEC deshielded in the last 24h] ZEC\nNet into shielded pools: [live: net shielded flow, last 24h] ZEC",
      "stats": {
        "words": 52,
        "chars": 441,
        "sections": 0,
        "faqs": 0,
        "live_spans": 5
      },
      "content_sha256": "ab69482b4c805fe11c9a6ba05ba9f65caff0aef29f96ca05888c1d6447c7a770"
    },
    {
      "path": "/share/halving",
      "url": "https://zecstats.org/share/halving",
      "kind": "share",
      "indexable": true,
      "title": "Zcash Halving Countdown — [live: blocks until the halving] Blocks | ZecStats",
      "h1": "Zcash Halving Countdown — [live: blocks until the halving] Blocks",
      "summary": "Blocks remaining to the next halving, the subsidy drop and daily emission",
      "description": "Blocks remaining to the next halving, the 1.5625 → 0.78125 ZEC subsidy drop, estimated date, and daily emission.",
      "sections": [],
      "faqs": [],
      "internal_links": [],
      "external_links": [],
      "catalog": {
        "article": null,
        "enhancement": null,
        "page_copy": null
      },
      "placeholders": [
        {
          "token": "[live: ZEC emitted per day]",
          "fields": [
            "supply.emissionPerDayZec"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: blocks until the halving]",
          "fields": [
            "halving.blocksRemaining"
          ],
          "derived": false,
          "count": 4
        },
        {
          "token": "[live: estimated halving date]",
          "fields": [
            "halving.estimatedDate"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: snapshot time (UTC)]",
          "fields": [
            "generatedAt"
          ],
          "derived": false,
          "count": 1
        }
      ],
      "text": "# Zcash Halving Countdown — [live: blocks until the halving] Blocks\n\nBlocks remaining to the next halving, the 1.5625 → 0.78125 ZEC subsidy drop, estimated date, and daily emission.\n\n[live: blocks until the halving] blocks until the next Zcash halving — the subsidy drops from 1.5625 to 0.78125 ZEC (as of [live: snapshot time (UTC)] UTC).\n\nHalving block: 4,406,400\nBlocks remaining: [live: blocks until the halving]\nEstimated date: [live: estimated halving date]\nSubsidy change: 1.5625 → 0.78125 ZEC\nEmission per day: [live: ZEC emitted per day] ZEC",
      "stats": {
        "words": 60,
        "chars": 550,
        "sections": 0,
        "faqs": 0,
        "live_spans": 7
      },
      "content_sha256": "b8448648a09c14fd5cd7c4eeef235cbe48653f6471b23438fcb2564ed50ec2d1"
    },
    {
      "path": "/share/price",
      "url": "https://zecstats.org/share/price",
      "kind": "share",
      "indexable": true,
      "title": "ZEC Price Today | ZecStats",
      "h1": "ZEC Price Today",
      "summary": "Live ZEC price with its daily sparkline and recent returns",
      "description": "Live ZEC price with a bold 24-hour sparkline and focused 7D, 30D, and YTD returns.",
      "sections": [],
      "faqs": [],
      "internal_links": [],
      "external_links": [],
      "catalog": {
        "article": null,
        "enhancement": null,
        "page_copy": null
      },
      "placeholders": [
        {
          "token": "[live: ZEC 24h price change]",
          "fields": [
            "price.change24hPct"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: ZEC market cap (USD)]",
          "fields": [
            "price.marketCapUsd"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: ZEC price (USD)]",
          "fields": [
            "price.usd"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: shielded value (USD)]",
          "fields": [
            "pools.shieldedUsd"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: snapshot time (UTC)]",
          "fields": [
            "generatedAt"
          ],
          "derived": false,
          "count": 1
        }
      ],
      "text": "# ZEC Price Today\n\nLive ZEC price with a bold 24-hour sparkline and focused 7D, 30D, and YTD returns.\n\nZEC price: [live: ZEC price (USD)]\n24h change: [live: ZEC 24h price change]\nMarket cap: [live: ZEC market cap (USD)]\nShielded value: [live: shielded value (USD)]\n\nAs of [live: snapshot time (UTC)] UTC · sources: ZecStats price store (Binance daily closes since March 2019), CoinGecko market data.",
      "stats": {
        "words": 47,
        "chars": 399,
        "sections": 0,
        "faqs": 0,
        "live_spans": 5
      },
      "content_sha256": "f55ef07477c8e22fe7da62586b45929921449159a2c8fb9820ed7811c16790f3"
    },
    {
      "path": "/share/price-ath",
      "url": "https://zecstats.org/share/price-ath",
      "kind": "share",
      "indexable": true,
      "title": "ZEC vs All-Time High | ZecStats",
      "h1": "ZEC vs All-Time High",
      "summary": "How far ZEC sits below its recorded peak, and the move needed to reclaim it",
      "description": "How far ZEC sits below its recorded peak — drawdown, reclaim multiple, and the full history chart.",
      "sections": [],
      "faqs": [],
      "internal_links": [],
      "external_links": [],
      "catalog": {
        "article": null,
        "enhancement": null,
        "page_copy": null
      },
      "placeholders": [
        {
          "token": "[live: ZEC 24h price change]",
          "fields": [
            "price.change24hPct"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: ZEC market cap (USD)]",
          "fields": [
            "price.marketCapUsd"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: ZEC price (USD)]",
          "fields": [
            "price.usd"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: shielded value (USD)]",
          "fields": [
            "pools.shieldedUsd"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: snapshot time (UTC)]",
          "fields": [
            "generatedAt"
          ],
          "derived": false,
          "count": 1
        }
      ],
      "text": "# ZEC vs All-Time High\n\nHow far ZEC sits below its recorded peak — drawdown, reclaim multiple, and the full history chart.\n\nZEC price: [live: ZEC price (USD)]\n24h change: [live: ZEC 24h price change]\nMarket cap: [live: ZEC market cap (USD)]\nShielded value: [live: shielded value (USD)]\n\nAs of [live: snapshot time (UTC)] UTC · sources: ZecStats price store (Binance daily closes since March 2019), CoinGecko market data.",
      "stats": {
        "words": 49,
        "chars": 420,
        "sections": 0,
        "faqs": 0,
        "live_spans": 5
      },
      "content_sha256": "22a1214d8d65a2d20ae82143adb2f591342118e1944199ee97abd762c8c447dd"
    },
    {
      "path": "/share/price-performance",
      "url": "https://zecstats.org/share/price-performance",
      "kind": "share",
      "indexable": true,
      "title": "ZEC vs BTC vs ETH | ZecStats",
      "h1": "ZEC vs BTC vs ETH",
      "summary": "Normalized ZEC, Bitcoin and Ethereum price performance on one axis",
      "description": "Normalized one-year ZEC, BTC, and ETH price lines on one shared percentage-change axis.",
      "sections": [],
      "faqs": [],
      "internal_links": [],
      "external_links": [],
      "catalog": {
        "article": null,
        "enhancement": null,
        "page_copy": null
      },
      "placeholders": [
        {
          "token": "[live: ZEC 24h price change]",
          "fields": [
            "price.change24hPct"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: ZEC market cap (USD)]",
          "fields": [
            "price.marketCapUsd"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: ZEC price (USD)]",
          "fields": [
            "price.usd"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: shielded value (USD)]",
          "fields": [
            "pools.shieldedUsd"
          ],
          "derived": false,
          "count": 1
        },
        {
          "token": "[live: snapshot time (UTC)]",
          "fields": [
            "generatedAt"
          ],
          "derived": false,
          "count": 1
        }
      ],
      "text": "# ZEC vs BTC vs ETH\n\nNormalized one-year ZEC, BTC, and ETH price lines on one shared percentage-change axis.\n\nZEC price: [live: ZEC price (USD)]\n24h change: [live: ZEC 24h price change]\nMarket cap: [live: ZEC market cap (USD)]\nShielded value: [live: shielded value (USD)]\n\nAs of [live: snapshot time (UTC)] UTC · sources: ZecStats price store (Binance daily closes since March 2019), CoinGecko market data.",
      "stats": {
        "words": 47,
        "chars": 406,
        "sections": 0,
        "faqs": 0,
        "live_spans": 5
      },
      "content_sha256": "a363f5894b8114d72dce69577ef64bf8f0d1d14516904ddb26a2a975803f7892"
    },
    {
      "path": "/share/shield-leaderboard",
      "url": "https://zecstats.org/share/shield-leaderboard",
      "kind": "share",
      "indexable": true,
      "title": "Biggest Zcash Shields — Last 24h | ZecStats",
      "h1": "Biggest Zcash Shields — Last 24h",
      "summary": "The largest moves into and out of the shielded pools over the last day",
      "description": "The largest individual moves into and out of Zcash's shielded pools over the last 24 hours, with the net flow across the whole anonymity set.",
      "sections": [],
      "faqs": [],
      "internal_links": [],
      "external_links": [],
      "catalog": {
        "article": null,
        "enhancement": null,
        "page_copy": null
      },
      "placeholders": [],
      "text": "# Biggest Zcash Shields — Last 24h\n\nThe largest individual moves into and out of Zcash's shielded pools over the last 24 hours, with the net flow across the whole anonymity set.",
      "stats": {
        "words": 30,
        "chars": 177,
        "sections": 0,
        "faqs": 0,
        "live_spans": 0
      },
      "content_sha256": "a4f7758dc2862f356dd0075af00fe3539843dfc9714e7f28417ae7b0bda5683a"
    },
    {
      "path": "/share/perps-pulse",
      "url": "https://zecstats.org/share/perps-pulse",
      "kind": "share",
      "indexable": true,
      "title": "ZEC Perps Open Interest | ZecStats",
      "h1": "ZEC Perps Open Interest",
      "summary": "ZEC perpetual-futures open interest by venue, funding and long/short ratio",
      "description": "ZEC perpetual-futures open interest by venue (Hyperliquid, OKX, Bitget, KuCoin, Gate, dYdX), 24h change, funding and long/short ratio.",
      "sections": [],
      "faqs": [],
      "internal_links": [],
      "external_links": [],
      "catalog": {
        "article": null,
        "enhancement": null,
        "page_copy": null
      },
      "placeholders": [],
      "text": "# ZEC Perps Open Interest\n\nZEC perpetual-futures open interest by venue (Hyperliquid, OKX, Bitget, KuCoin, Gate, dYdX), 24h change, funding and long/short ratio.",
      "stats": {
        "words": 22,
        "chars": 161,
        "sections": 0,
        "faqs": 0,
        "live_spans": 0
      },
      "content_sha256": "ffec8460bb020e4123cd5159a81a69afa43ae7c1a8624fcb4b070d3a7aeb2d31"
    },
    {
      "path": "/share/perps-leaderboard",
      "url": "https://zecstats.org/share/perps-leaderboard",
      "kind": "share",
      "indexable": true,
      "title": "Biggest ZEC Positions on Hyperliquid | ZecStats",
      "h1": "Biggest ZEC Positions on Hyperliquid",
      "summary": "The largest open ZEC longs and shorts among tracked Hyperliquid accounts",
      "description": "The largest open ZEC longs and shorts among Hyperliquid's top accounts, with leverage, entry and unrealized PnL.",
      "sections": [],
      "faqs": [],
      "internal_links": [],
      "external_links": [],
      "catalog": {
        "article": null,
        "enhancement": null,
        "page_copy": null
      },
      "placeholders": [],
      "text": "# Biggest ZEC Positions on Hyperliquid\n\nThe largest open ZEC longs and shorts among Hyperliquid's top accounts, with leverage, entry and unrealized PnL.",
      "stats": {
        "words": 22,
        "chars": 152,
        "sections": 0,
        "faqs": 0,
        "live_spans": 0
      },
      "content_sha256": "39eef4e94890377890f234705076e28559fe741479be4ff34bfdcc5a1c8a88ed"
    }
  ]
}
