Install
One install, eight commands, no account. Every transcript below is real output, captured from the network.
npm install -g zectools zec watch --alert
npx zectools info
Node 20 or newer. The dependencies are the gRPC client and the protobuf loader, nothing
else. No key, no account, no telemetry: the CLI talks to zec.rocks:443 and,
for pool balances only, to a public full node.
The network right now: height, the consensus branch and the upgrade it belongs to, whether one is pending, the subsidy, the next halving, and which server answered.
.=.-+++++=-:::.. :***++***+=---::::.. =***==++***+=--::. :#*++==+++*++=--:::. -#*=.-+=+==++=----:-=-:. :==--++==+=++++==-::.... .. ...=++++===+=+---: .-++++===+++=+*+==+#++= .-++++==++==+++++===+#=++ -=*+=+::++*=-====+*=====+. .:=**-.+=*+=-=====+*+==*. .-: .+++-==--+: .+*=*= -*+- ===+::+=.+*. -*+: :===.:+- .**. .*+: .=++. ++ =*. :=+: .*+ =*: :++=:=-=*#- .#*... :==+========++==: .-+++========--===------==+= .-======-===--====--=========+=-. ...:::=------------------------------==:..:. ...:::::........::::::::..::::::..:....::::::.. ... .....::::::::::::::::.... ..... ....:..... network Zcash mainnet via zec.rocks:443 height 3,492,480 2026-09-22 16:52Z · 5m ago tip 000000000068297fc0641fb193e70efc69200c408e4956462cbc4c9aa6b8ee2d consensus branch 37a5165b NU6.3 next upgrade none scheduled by the server block subsidy 1.56250 ZEC every 75s next halving block 4,406,400 913,920 blocks · 2y 62d server ECC LightWalletD v0.5.3 over Zebra:6.3.0 the server is 4 blocks behind its own estimate of the tip
A live tail. One line per block: transactions, how many touched a pool, notes per pool
and the spacing since the previous block. --alert raises a desktop
notification when a block carries at least --min shielded notes. It polls,
every 20 seconds by default, against a 75-second target spacing.
zec watch --alert --min 150
Each pool by its own note commitment tree: how many notes it has ever received, how many in the last window, and whether the tree grew by exactly what the blocks carried. With a node answering, how much ZEC each pool holds.
.=.-+++++=-:::.. :***++***+=---::::.. =***==++***+=--::. :#*++==+++*++=--:::. -#*=.-+=+==++=----:-=-:. :==--++==+=++++==-::.... .. ...=++++===+=+---: .-++++===+++=+*+==+#++= .-++++==++==+++++===+#=++ -=*+=+::++*=-====+*=====+. .:=**-.+=*+=-=====+*+==*. .-: .+++-==--+: .+*=*= -*+- ===+::+=.+*. -*+: :===.:+- .**. .*+: .=++. ++ =*. :=+: .*+ =*: :++=:=-=*#- .#*... :==+========++==: .-+++========--===------==+= .-======-===--====--=========+=-. ...:::=------------------------------==:..:. ...:::::........::::::::..::::::..:....::::::.. ... .....::::::::::::::::.... ..... ....:..... POOL HOLDS NOTES EVER + LAST 200 BLOCKS PER HOUR CHECK sapling 503,130.51 ZEC 73,971,813 +284 70 replays orchard 392,634.55 ZEC 50,466,384 +121 30 replays ironwood 3,994,347.17 ZEC 554,487 +5,041 1,238 replays ──────────────────────────────────────────────────────────────── 2,231 of 3,457 transactions in the last 4h 4m touched a shielded pool (64.5%) blocks 3,492,281 to 3,492,480 · 2026-09-22 12:47Z to 2026-09-22 16:52Z 4,912,591.19 ZEC shielded across four pools (28.98% of 16,946,632.97 ZEC in existence; sprout holds 22,478.94, withdraw-only) pool balances from mainnet.zcashexplorer.app at height 3492480; notes and growth from lightwalletd's own compact blocks a note is one shielded output; the count is what the chain's commitment trees say, not an estimate
One block, transaction by transaction: transparent inputs and outputs, Sapling spends and outputs, Orchard and Ironwood actions. The latest block when no height is given.
-=+++=::.. +#=++++-::. =+:=+=+=---:. .:..-=++=++--. .:=+=+=++*+=*+: .=*--*=-==++== . +=:==:-=+. += :+:::.+ -= -=..-* :*:::--+===+=-. .-=======-----===: ..:::::::::::::::::::::.. ........:.... block 3,492,480 2026-09-22 16:52Z · 5m ago hash 000000000068297fc0641fb193e70efc69200c408e4956462cbc4c9aa6b8ee2d transactions 16 9 touch a shielded pool · 7 fully transparent sapling 0 outputs · 0 spends orchard 0 actions ironwood 29 actions notes ever sapling 73,971,813 · orchard 50,466,384 · ironwood 554,487 subsidy 1.56250 ZEC rules: NU6.3 # KIND TRANSPARENT SAPLING ORCHARD IRONWOOD TXID 0 transparent 0 in / 2 out — — — 4ccb8f9ebc7514b3… 1 shielded — — — 2 44b1834c76855684… 2 mixed 0 in / 1 out — — 2 2333d7bbb7a44866… 3 shielded — — — 2 fa07315e7f4c0095… 4 mixed 0 in / 1 out — — 8 55a833cd65b4d5e8… 5 transparent 1 in / 1 out — — — b65f6ffaee5d8dd3… 6 shielded — — — 2 054c009e2e7019a6… 7 mixed 0 in / 1 out — — 7 dd63f270b5f3a91e… ──────────────────────────────────────────────────────────────── 8 of 16 shown · 29 shielded notes created in this block · --limit to see more
What is waiting to be mined, split by whether it touches a pool.
-=+++=::.. +#=++++-::. =+:=+=+=---:. .:..-=++=++--. .:=+=+=++*+=*+: .=*--*=-==++== . +=:==:-=+. += :+:::.+ -= -=..-* :*:::--+===+=-. .-=======-----===: ..:::::::::::::::::::::.. ........:.... WAITING COUNT shielded 44 every input and output in a pool mixed 0 crosses the turnstile between transparent and shielded transparent 0 plain, bitcoin-style ──────────────────────────────────────────────────────────────── 44 transactions waiting above block 3,492,480 · 13 sapling outputs, 0 orchard and 100 ironwood actions pending
Every network upgrade with its activation height and consensus branch id, next to the branch the server reports right now. If the network is ever on a branch this build does not know, the command says that rather than picking the nearest name.
-=+++=::.. +#=++++-::. =+:=+=+=---:. .:..-=++=++--. .:=+=+=++*+=*+: .=*--*=-==++== . +=:==:-=+. += :+:::.+ -= -=..-* :*:::--+===+=-. .-=======-----===: ..:::::::::::::::::::::.. ........:.... UPGRADE HEIGHT DATE BRANCH STATE Sprout 0 2016-10-28 00000000 active launch; the Sprout shielded pool Overwinter 347,500 2018-06-26 5ba81b19 active transaction expiry, replay protection, versioning Sapling 419,200 2018-10-28 76b809bb active the Sapling shielded pool; fast, mobile-sized proofs Blossom 653,600 2019-12-11 2bb40e60 active 75-second blocks; subsidy halved per block to keep issuance Heartwood 903,000 2020-07-16 f5b9230b active shielded coinbase; flyclient-friendly headers Canopy 1,046,400 2020-11-18 e9ff75a6 active first halving; Founders' Reward ends, dev fund begins NU5 1,687,104 2022-05-31 c2d6d0b4 active the Orchard shielded pool, Halo 2, unified addresses NU6 2,726,400 2024-11-23 c8e71055 active second halving; lockbox dev fund NU6.1 3,146,400 2025-11-24 4dec4df0 active one-time lockbox disbursement (ZIP 271); coin-holder funding model NU6.2 3,364,600 2026-06-03 5437f330 active Orchard circuit soundness fix after the May 2026 emergency NU6.3 3,428,143 2026-07-28 37a5165b active Ironwood: the new shielded pool; Orchard becomes spend-only; v6 transactions ──────────────────────────────────────────────────────────────── the network reports branch 37a5165b at height 3,492,480: NU6.3 no upgrade is scheduled by the server
The block subsidy at this height, the total the schedule has issued, the halvings past and next. Issuance is computed from the height with the specification's formula, then put next to what a node reports as the chain's supply; the gap is subsidy miners never claimed.
-=+++=::.. +#=++++-::. =+:=+=+=---:. .:..-=++=++--. .:=+=+=++*+=*+: .=*--*=-==++== . +=:==:-=+. += :+:::.+ -= -=..-* :*:::--+===+=-. .-=======-----===: ..:::::::::::::::::::::.. ........:.... height 3,492,480 block subsidy 1.56250 ZEC × 1152 blocks a day = 1,800 ZEC/day issued by schedule 16,947,001.56 ZEC of 21,000,000 · 80.70% still to issue 4,052,998.43 ZEC a node says 16,946,632.97 ZEC in existence at 3,492,480 via mainnet.zcashexplorer.app · 368.58 ZEC never claimed by miners · lockbox 64,890.18 halvings so far 2 next halving block 4,406,400 913,920 blocks · 2y 62d · subsidy to 0.78125 ZEC HALVING HEIGHT SUBSIDY AFTER STATE ETA 1 1,046,400 3.12500 ZEC done — 2 2,726,400 1.56250 ZEC done — 3 4,406,400 0.78125 ZEC next 2y 62d 4 6,086,400 0.39062 ZEC later 6y 60d 5 7,766,400 0.19531 ZEC later 10y 57d ──────────────────────────────────────────────────────────────── issued-by-schedule is what the subsidy rules have paid out at this height. the actual supply can only be lower: a miner may claim less than the subsidy, never more.
A transparent address gets its balance and unspent outputs. A shielded one gets the kind it is and why nothing else can be read.
-=+++=::.. +#=++++-::. =+:=+=+=---:. .:..-=++=++--. .:=+=+=++*+=*+: .=*--*=-==++== . +=:==:-=+. += :+:::.+ -= -=..-* :*:::--+===+=-. .-=======-----===: ..:::::::::::::::::::::.. ........:.... address t1cpC3SS8okUsMQwTqWgzyA1k237B3WCeco type P2PKH (t1…) transparent: the chain shows everything balance 313,848.31805000 ZEC 52 unspent outputs HEIGHT VALUE OUTPOINT 3,487,251 0.99990000 9c4cbbbf1a1ad39e…:1 3,486,912 0.99990000 37b1da70e9e75b62…:1 3,486,900 0.99990000 87d146da653b9171…:1 3,486,860 0.99990000 46e697903886142b…:1 ──────────────────────────────────────────────────────────────── read at height 3,492,480 · shield it and this command has nothing left to say
-=+++=::.. +#=++++-::. =+:=+=+=---:. .:..-=++=++--. .:=+=+=++*+=*+: .=*--*=-==++== . +=:==:-=+. += :+:::.+ -= -=..-* :*:::--+===+=-. .-=======-----===: ..:::::::::::::::::::::.. ........:.... address u157q45z9fwy7349t5r7w4d0tpmdzhw6xvuwm4ucqq80ysftk9wxryrru0l7puxpdlujnkmj5d9ewzaxz5x6slfg3xys4egayx7vry57wd type Unified (u1…), ZIP 316 shielded a unified address. it bundles receivers for several pools, and each shielded one is unreadable without its viewing key that is the point. the chain records that a note exists, not who it belongs to or what it holds.
| Flag | Command | What it does |
|---|---|---|
--alert | watch | desktop notification on a block with many shielded notes |
--min <notes> | watch | notes in one block that trigger the alert, default 200 |
--poll <seconds> | watch | how often to ask the server, default 20 |
--window <blocks> | pools | how far back to look, default 200 (about four hours) |
--limit <n> | block, check | rows to print |
--lwd <host:port> | all | another lightwalletd, or set ZEC_LWD |
--json | all | machine-readable output |
NO_COLOR=1 | all | plain text, for pipes and CI |
A compact block is what a light wallet downloads: for every transaction, the nullifiers and note commitments of its shielded components and its transparent inputs and outputs, plus, on the block, the size of each note commitment tree. That is enough to count and nothing more: no amounts, no addresses, no memos for anything shielded. The CLI asks for every pool type explicitly, because by default the server omits transactions that are purely transparent.
A day of blocks streams in about a second. There is no pagination because a block range is a stream, and no list to fall behind, because the chain metadata is on every block.