Skip to main content
Burnwood

How we count

Every number on Burnwood comes from public Zcash chain data. This page shows exactly how each one is calculated, where the data comes from and what can make it imperfect.

What Burnwood measures

NU7Network Upgrade 7, the next Zcash protocol upgrade. It brings 25-second blocks and the Network Sustainability Mechanism.More on /method → is the next network upgrade of Zcash. ZIPA Zcash Improvement Proposal: the public documents that define protocol changes.More on /method → (a draft) defines what it deploys: 25-second blocks (ZIP 218), halving-preserving issuance from the NSM reserve (ZIP 237) and disallowing v4 transactionAn older Zcash transaction format. NU7 stops accepting it (ZIP 2003).More on /method → (ZIP 2003). Together they start the Network Sustainability Mechanism (NSMThe Network Sustainability Mechanism. From NU7 on, it moves 60% of each block's fees into the NSM reserve.More on /method →). From the NU7 activation block on, 60% of each block's transaction fees don't go to the miner (ZIP 235, applied as modified by ZIP 259). They move into the NSM reserveA balance held by the protocol, outside circulating supply. It's paid out again as extra block rewards from about 2031.More on /method →, a balance held by the protocol that isn't part of the circulating supply.

The reserve comes back. Under ZIP 237 (also a draft), it's paid out again as extra block rewards, gradually: about half of the reserve in each HalvingThe block subsidy is cut in half about every four years, on a fixed schedule. After NU7, blocks come three times as often and each carries a third of the subsidy, so halvings keep the same calendar rhythm.More on /method → period. On mainnet that starts around February 2031. Testnet has its own start block, so for testnet we give the block only, never a date.

The exact start height hasn't been assigned yet. Until it is, we use the height where ZIP 237's reissuance starts, as Zcash node software computes it:

  • mainnet: block 16,026,474 − 2 × A
  • testnet: block 16,235,274 − 2 × A

A is the NU7 Activation heightThe block number at which NU7's rules start. The network sets it; Burnwood reads it from the nodes.More on /method →. It's an estimate, and it will change if the proposals change.

ZIP 259 currently labels this height "February 2031" on both networks. For testnet that label is an error, and a correction has been proposed.

Why the name says "burn"

When Burnwood says "removed from circulation", it means "set aside in the NSM reserve until reissuance starts". "Burnwood" and "burn meter" are shorthand for exactly that.

What burns today regrows in 2031.

Burnwood has three phases, chosen by chain data rather than the calendar: a countdown to NU7, a live view of the activation, and afterwards a meter of the ZEC set aside since NU7. Throughout, it also shows how much ZEC is ShieldedZEC held in Zcash's private pools, where amounts and addresses are encrypted.More on /method → (held in Zcash's private pools).

When NU7 isn't scheduled on the network (no activation height, or the height was withdrawn), Burnwood waits and says so. It never guesses a date.

Exact formulas

All amounts are integers in zatoshiThe smallest unit of ZEC: 1 ZEC = 100,000,000 zatoshi. All Burnwood maths is done in whole zatoshi.More on /method → (1 ZEC = 100,000,000 zatoshi). No floating-point maths is used for money. Displayed ZEC values are truncated (never rounded up), so we never overstate.

Blocks remaining

blocks remaining = A − tip height

where A is the activation height reported by the network's nodes. The height is never hard-coded; if the network changes it, the countdown follows.

Estimated time of activation (ETA) and range

  • Window: the last W = min(576, available) blocks (576 blocks ≈ 12 hours at 75 s). Below 48 blocks there's no ETA.
  • Average interval: t̄ = (time(tip) − time(tip − W)) ÷ W. Only the first and last timestamps matter, so one odd timestamp can't distort it.
  • ETA = seen time of the tip + blocks remaining × t̄.
  • Range: the window is split into stretches of 48 blocks (about an hour each). Each stretch's average interval is computed the same way. The range uses the 10th and 90th percentile of those averages: earliest = seen + remaining × P10, latest = seen + remaining × P90.
  • In plain words: "if blocks keep coming at the pace of the last 12 hours, NU7 arrives around here; the range shows how much that pace has varied hour to hour." We use hourly averages rather than single block times, because single intervals vary wildly (from seconds to several minutes) and would give a range several days wide.
  • After activation there's no ETA.

Block interval

interval(h) = time(h) − time(h − 1)

using the Miner time / seen timeMiner time is the timestamp inside the block. Seen time is when Burnwood first saw it.More on /method →. Miner clocks are loose, so an Block intervalThe time between two blocks, from the timestamps miners write into them. Miner clocks are loose, so single intervals are noisy.More on /method → can be zero or negative. We display at least 1 s and mark it "clock skew"; the raw value is in the block's details. We never use a single interval as a headline; headline block times are averages.

Time windows (last hour / 24 h / 7 days / 30 days): a window ends at the last checked block and covers the blocks since the chain's clock was that far behind it. The chain's clock is the latest block timestamp seen so far, because miners' clocks can be slightly out of order. So a window is always an unbroken run of blocks, and no block inside it is left out. Daily history uses the same clock: a block counts on the UTC day of the latest block timestamp seen so far, so each day is also an unbroken run of blocks.

Average block time (1 h / 24 h): the same telescoping average over the blocks in the last hour or 24 hours. Blocks in the last hour counts the blocks in that window; after NU7 the target is 144 (3,600 s ÷ 25 s).

Fees per block

  • Primary: the block's total fees as reported by CipherScan.
  • Second path (from a ZebraZcash node software developed by the Zcash Foundation. QuickNode and Tatum host the Zebra nodes Burnwood can read the chain from.More on /method → node): a cross-check before NU7, and a fallback when CipherScan is unavailable.
    • before NU7: fees = coinbase transparent outputs − (block subsidy − Lockbox share). The LockboxA protocol-held fund that receives part of every block reward (0.06249999 ZEC from NU7 until the current funding streams end). It isn't in circulation, so it's left out of the shielded share.More on /method → share is the only part of the Block subsidyThe new ZEC created with each block, split between the miner, ZCG and the Lockbox. From NU7 until the next halving it's 0.52083333 ZEC per block.More on /method → that isn't paid out in the coinbase, and the miner claims every fee there, so this is exact and independent of CipherScan.
    • after NU7 (provisional, pending the specification text for the NU7 coinbase total): the miner receives only 40% of fees, so fees = removed(h) + (coinbase transparent outputs − (block subsidy − Lockbox share)). It reuses removed(h), so it isn't an independent check. We use it only to fill in a fee when CipherScan is unavailable.
    • Correction note: an early version of our spec used "coinbase outputs − subsidy" after NU7 as well. That would count only 40% of fees.
    • When the coinbase has shielded outputs this path can't see the amounts, and it reports no value.
  • SproutZcash's first shielded pool, from 2016. NU7 disables spending from it; its funds stay in the pool.More on /method → before NU7: CipherScan can't see Sprout JoinSplits (transactions that move ZEC in or out of the Sprout pool). For a block that contains them, the fee comes from the second path, and those transactions are left out of the median fee per transaction. From NU7 on, no transaction can carry a JoinSplit (ZIP 2003).

ZEC removed per block (from the NU7 activation block on). Three methods, all in zatoshi, used in this order:

  1. NSM reserve change (first): removed(h) = reserve(h) − reserve(h − 1), reading the reserve balance directly from a node that reports it (CipherScan's ZakuraA Zcash full node that started as a fork of Zebra and is now developed by a separate team. CipherScan runs a Zakura node, which Burnwood can read blocks, fees and the NSM reserve balance from.More on /method → node, ≥ 1.5.0) at two consecutive blocks. At block A the previous reading is the seed, so the seed is left out automatically.
  2. Pool delta (second, when a reserve reading is missing): removed(h) = block subsidy(h) − Σ change in every value pool at h, from our Zebra node. The subsidy and fees that didn't land in any pool went to the reserve. Valid until reissuance starts (the start block is under "What Burnwood measures"; ≈ 2031 on mainnet).
  3. Fee share (the check): removed(h) = floor(fees(h) × 6 ÷ 10). Rounded down once per block, in the miner's favour (ZIP 235, applied as modified by ZIP 259). Example: fees of 1,002 zatoshi → 601 zatoshi removed. It checks the other two. It only produces the headline when neither the reserve nor our Zebra node is available, or to split a gap of several blocks between two reserve readings, and then only if the parts add up exactly to the reserve change.

From NU7 until the next halving, the block subsidy is 0.52083333 ZEC: 0.41666668 to the miner (plus 40% of fees), 0.04166666 to ZCGZcash Community Grants, which receives 0.04166666 ZEC of every block reward from NU7 until the current funding streams end.More on /method → and 0.06249999 to the Lockbox. The ZCG and Lockbox shares apply from NU7 until the current funding streams end.

ZEC removed since NU7

removed since NU7 = reserve(throughHeight) − seed

which equals Σ removed(h) for every block from A up to the last checked block (throughHeight). Every time we read the reserve, we check that the two agree. If they don't, the headline stops at the last block where they did.

The SeedThe block subsidy and fees that miners left unclaimed before the NU6 upgrade, placed in the NSM reserve when NU7 activates. Burnwood reads the exact amount from the chain and doesn't count it as removed.More on /method → is never counted. The reserve starts with a one-off amount: the block rewards and fees that miners left unclaimed beforeNU6A Zcash network upgrade that started the current funding streams and the Lockbox.More on /method →. It's placed in the reserve at NU7, so it isn't fee removal, and it's excluded. We don't hard-code it. ZIP 237 sets it as the reserve balance at block A−1, the block just before NU7, so we read it from the reserve at block A−1 and lock it once that block has 10 ConfirmationEach block added on top of a block is one confirmation. More confirmations mean the block is very unlikely to change.More on /method →. If we couldn't read block A−1 (for example, because a source was down), we work out an implied seed, reserve − Σ removed after activation. It's shown as provisional and serves only as a check until a seed is locked. The "Method in use right now" box below shows the seed's exact value once it has been measured.

Rates: last 24 h / 7 days / 30 days = the sum of removed(h) for the blocks in that time window (see "Time windows" above). Average per block (24 h) = last 24 h ÷ number of blocks in that window, rounded down.

Shielded actions per block = SaplingThe shielded pool introduced in 2018.More on /method → spends + Sapling outputs + OrchardThe shielded pool introduced in 2022. Since NU6.3 (block 3,428,143) it can only be spent from, not added to, so funds are moving from it to Ironwood.More on /method → actions + IronwoodZcash's newest shielded pool, added in NU6.3. The Ironwood share is Ironwood's part of Orchard plus Ironwood, a gauge of the move away from Orchard.More on /method → actions + Sprout JoinSplits, counted over all the block's transactions, the coinbase included. Shown as "—" only when no source returned the transaction details for that block.

Fees (24 h) = sum of block fees in the window (shown as "—" if any block in it lacks a fee value). Median fee per transaction = the lower median of fees paid by non-coinbase transactions in the last 24 h whose fee is known exactly (see the Sprout note under "Fees per block").

Shielded share

shielded % = (Sprout + Sapling + Orchard + Ironwood) ÷ (Transparent + Sprout + Sapling + Orchard + Ironwood) × 100

Sprout still counts as shielded after NU7: NU7 disables spending from it, but its funds stay in the pool and remain shielded. The Lockbox and the NSM reserve are shown separately and are excluded: neither is part of the circulating supply.

Ironwood share

Ironwood share = Ironwood ÷ (Ironwood + Orchard) × 100

a gauge of the move from Orchard to Ironwood. Since NU6.3The previous Zcash network upgrade, activated at block 3,428,143. The progress ring starts there.More on /method →, Orchard can only be spent from, not added to.

Progress ring: the share of the way from the previous upgrade's activation height (NU6.3, block 3,428,143) to A.

Activation: Burnwood only says "NU7 is live" when the tip is at or past A and the node reports that the chain tip follows NU7's consensus rules (branch id 77190ad9). The height alone is never enough.

Method in use right now

Which of the three methods produces the headline, and whether our checks agree, right now. Updated every minute.

Loading the live method…

What the methods mean, in the order we use them:

  1. NSM reserve: used first, whenever a node reports the reserve and the reserve check agrees. The headline is the reserve minus the seed. This includes CipherScan-only mode: if our Zebra node is down, the headline still comes from the reserve and is marked "Single source".
  2. Pool delta: used second, when the reserve isn't reported. Exact on its own.
  3. Fee share: a check on the other two. It produces the headline only when neither the reserve nor our Zebra node is available. Exact on its own.

When all three are available, they must agree to the zatoshi. If they don't, the headline stops at the last block they agreed on, and we investigate.

Data sources and cross-checks

  • Primary: a hosted ZebraZcash node software developed by the Zcash Foundation. QuickNode and Tatum host the Zebra nodes Burnwood can read the chain from.More on /method → node (QuickNode, or Tatum as the alternative): the chain tip, blocks, value pools and block subsidy.
  • Backup: CipherScan (ZakuraA Zcash full node that started as a fork of Zebra and is now developed by a separate team. CipherScan runs a Zakura node, which Burnwood can read blocks, fees and the NSM reserve balance from.More on /method → node, api.cipherscan.app), when configured: a second opinion on every block, plus block fees and the NSM reserve balance. Thank you, CipherScan.
  • Standby: any other configured provider, ready in case a source can't follow NU7.
  • The providers in use right now, and the role of each, are in the live box above (the "Sources" row) and in the "Chain data" line at the bottom of the page.
  • ZecStats (mainnet only) cross-checks the shielded share and the Ironwood share. At most once a minute, we apply our own formulas to ZecStats' pool values and compare the result with ours at the same block; the live box above shows whether they agree. We publish only that result and our own figures, never ZecStats' numbers. ZecStats uses CipherScan's data, so we don't count it as an independent source, and it never changes our numbers. Attribution wherever ZecStats is cited: Data: ZecStats — CC BY 4.0.

Burnwood never runs a wallet, holds keys or sends transactions. Your browser only downloads our published JSON files; it never contacts these providers.

How each block is checked

StatusMeaning
ConfirmedBoth sources report the same block, and the removal methods agree
ConfirmingOur second data source hasn't reported this block yet, so it isn't cross-checked. That usually takes seconds.More on /method →The second source hasn't reported this block yet (usually seconds)
Single sourceOnly one of our two data sources is working right now. Numbers are still exact, but not cross-checked.More on /method →Only one source is healthy. Numbers are still exact, but not cross-checked
DisputedThe sources disagree about a block or an amount. The headline freezes at the last agreed block until it's resolved

The countdown, the block list and block times keep moving during a dispute: they come from the primary source and aren't amounts of ZEC.

Pool figures that aren't confirmed yet. Pool figures are checked the same way: both sources must report the same balances at the same block. If they disagree, the shielded meter shows the last figures they both confirmed. If they haven't agreed even once yet (for example, just after Burnwood starts watching a network), there's nothing confirmed to fall back on. The meter then shows the figures from our current main source, marked "Unconfirmed", until the sources agree.

Freshness. The dot in the header measures our data, not the network: "Live" when our data is under 3 minutes old, "Delayed" (amber) from 3 minutes, "Stale" (red) from 10 minutes. It also follows our data sources, even when our data was updated moments ago: "Delayed" when the source we're reading from is having trouble, and "Stale" when none of our sources can deliver new blocks. A problem with any other source doesn't change the dot; it shows as "Single source" or "Sources disagree" on the figures it affects. When data is delayed or stale, numbers are labelled "as of block N". When it's stale, they're dimmed and nothing animates.

Caveats

  • Timestamps are noisy. Miners set block times loosely, so single intervals can look odd. We show averages and clamp displayed intervals to at least 1 s.
  • Difficulty needs time to settle. After NU7, mining DifficultyHow hard it is to mine a block. The network adjusts it so blocks keep arriving at the target pace.More on /method → averages over the last 102 blocks (up from 17; ZIP 218), about 42.5 minutes at 25 seconds per block. So it needs time to settle, and the first intervals after activation are noisy.
  • Fees are small today, so the removal is small. We count it exactly anyway, to the zatoshi.
  • Pool history can start later than the rest of the history. The daily history goes back to the first block Burnwood read, but pool balances are only recorded from the moment Burnwood started watching the network. Earlier days have no shielded share, so the shielded-share chart starts on the first day that has one.
  • Reorganisations. The chain can briefly rewrite its latest blocks. We treat the last 600 blocks as provisional (after NU7, nodes accept ReorgA chain reorganisation: the network briefly replaces its latest blocks with a different version. Burnwood recomputes when that happens.More on /method → up to 600 blocks deep, ZIP 218) and recompute when that happens. Daily history only uses blocks with at least 10 confirmations. Milestones show "confirming" until they have 10.
  • Time windows follow the chain's clock, not ours. "Last 24 h" means the blocks since the chain's clock was 24 hours behind the last checked block. We use the latest block timestamp seen so far, because miners' clocks can be slightly out of order, so no block is skipped. Daily rows use the same chain clock: a block counts on the UTC day of the latest block timestamp seen up to it, so each day is an unbroken run of blocks. The result can be off from real time by up to about 90 minutes.
  • Estimates stay estimates. The ETA rangeThe window NU7 will most likely land in, based on how the pace of blocks has varied hour to hour recently.More on /method → and the reissuance height can move.

Independence and licences

Burnwood is an independent community tool. It is not affiliated with the Zcash Foundation, ZODL, Shielded Labs or ECC.

The data is free to use under CC0. You can check every number yourself: the formulas are above, and the raw data is in the open API.

Privacy and analytics

Burnwood counts visits with PostHog Cloud, in its EU region. The counts are anonymous: they tell us how many pages were viewed and cards were shared, not who you are.

What is sent

Only these four events, each marked with the network you're viewing (mainnet or testnet):

  • pageview: when a page loads. It carries the page's address with no query except ?net=, and, if you followed a link here, only the domain of the page that linked.
  • share-click: when you press Share. It carries the page's stage: A (NU7 not scheduled yet), B (countdown), C (activation) or D (counting since NU7).
  • share-result: when a share finishes. It carries the outcome: shared with the image, shared as a link, card downloaded, link copied, or failed.
  • card-download: when you download a card. It carries the card's kind, for example the countdown card or the activation card.

PostHog's code adds basic technical details to every event, such as browser and operating system, device type, screen and window size, language, time zone, and random identifiers that exist only in memory for that one page load. So every page load counts as a new, separate visit, and your visits aren't linked together.

PostHog looks up your country from your IP address as each event arrives, then discards the address. Only the country and continent are kept.

What isn't collected

  • No cookies. The analytics store nothing in your browser. Burnwood itself keeps only its own display settings there: your theme, a note that the site's fonts are already downloaded (so your next visit can show them straight away) and, for the current tab only, details such as whether announcements are paused. None of them is used for analytics or sent anywhere.
  • No stored IP addresses.
  • No profiles. Events aren't tied to a person or to earlier visits.
  • No session recording, no heatmaps and no automatic click tracking. Only the four events above are sent.
  • No fingerprinting. We don't try to recognise returning visitors.

Your choices

If your browser sends Do Not Track or Global Privacy Control (privacy signals your browser can send for you), PostHog's code isn't loaded and nothing is sent.

The analytics code is part of Burnwood and comes from our own site. It starts only after the page has finished loading, so it doesn't hold up the page, and it sends events to PostHog's EU servers (eu.i.posthog.com). Many ad blockers block it. The site works the same either way, and our page-view counts are lower than the real number.