The CLI

One install, eight commands, no account. Every transcript below is real output, captured from the network.

Install

global
npm install -g zectools
zec watch --alert
or without installing
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.

zec info

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.

zec info
                      .=.-+++++=-:::..
                      :***++***+=---::::..
                      =***==++***+=--::.
                      :#*++==+++*++=--:::.
                      -#*=.-+=+==++=----:-=-:.
                      :==--++==+=++++==-::....
                ..   ...=++++===+=+---:
             .-++++===+++=+*+==+#++=
           .-++++==++==+++++===+#=++
          -=*+=+::++*=-====+*=====+.
          .:=**-.+=*+=-=====+*+==*.
            .-: .+++-==--+: .+*=*=
                -*+-  ===+::+=.+*.
               -*+:  :===.:+- .**.
              .*+:  .=++.      ++
              =*.     :=+:    .*+
             =*:       :++=:=-=*#-
            .#*...  :==+========++==:
          .-+++========--===------==+=
        .-======-===--====--=========+=-.
  ...:::=------------------------------==:..:.
 ...:::::........::::::::..::::::..:....::::::..
       ... .....::::::::::::::::....
               .....  ....:.....

  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

zec watch

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.

watch
zec watch --alert --min 150

zec pools

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.

zec pools
                      .=.-+++++=-:::..
                      :***++***+=---::::..
                      =***==++***+=--::.
                      :#*++==+++*++=--:::.
                      -#*=.-+=+==++=----:-=-:.
                      :==--++==+=++++==-::....
                ..   ...=++++===+=+---:
             .-++++===+++=+*+==+#++=
           .-++++==++==+++++===+#=++
          -=*+=+::++*=-====+*=====+.
          .:=**-.+=*+=-=====+*+==*.
            .-: .+++-==--+: .+*=*=
                -*+-  ===+::+=.+*.
               -*+:  :===.:+- .**.
              .*+:  .=++.      ++
              =*.     :=+:    .*+
             =*:       :++=:=-=*#-
            .#*...  :==+========++==:
          .-+++========--===------==+=
        .-======-===--====--=========+=-.
  ...:::=------------------------------==:..:.
 ...:::::........::::::::..::::::..:....::::::..
       ... .....::::::::::::::::....
               .....  ....:.....

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

zec block [height]

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.

zec block --limit 8
            -=+++=::..
            +#=++++-::.
            =+:=+=+=---:.
        .:..-=++=++--.
     .:=+=+=++*+=*+:
     .=*--*=-==++==
       . +=:==:-=+.
        += :+:::.+
       -=   -=..-*
      :*:::--+===+=-.
    .-=======-----===:
 ..:::::::::::::::::::::..
      ........:....

  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

zec mempool

What is waiting to be mined, split by whether it touches a pool.

zec mempool
            -=+++=::..
            +#=++++-::.
            =+:=+=+=---:.
        .:..-=++=++--.
     .:=+=+=++*+=*+:
     .=*--*=-==++==
       . +=:==:-=+.
        += :+:::.+
       -=   -=..-*
      :*:::--+===+=-.
    .-=======-----===:
 ..:::::::::::::::::::::..
      ........:....

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

zec upgrades

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.

zec upgrades
            -=+++=::..
            +#=++++-::.
            =+:=+=+=---:.
        .:..-=++=++--.
     .:=+=+=++*+=*+:
     .=*--*=-==++==
       . +=:==:-=+.
        += :+:::.+
       -=   -=..-*
      :*:::--+===+=-.
    .-=======-----===:
 ..:::::::::::::::::::::..
      ........:....

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

zec supply

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.

zec supply
            -=+++=::..
            +#=++++-::.
            =+:=+=+=---:.
        .:..-=++=++--.
     .:=+=+=++*+=*+:
     .=*--*=-==++==
       . +=:==:-=+.
        += :+:::.+
       -=   -=..-*
      :*:::--+===+=-.
    .-=======-----===:
 ..:::::::::::::::::::::..
      ........:....

  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.

zec check <address>

A transparent address gets its balance and unspent outputs. A shielded one gets the kind it is and why nothing else can be read.

zec check t1…
            -=+++=::..
            +#=++++-::.
            =+:=+=+=---:.
        .:..-=++=++--.
     .:=+=+=++*+=*+:
     .=*--*=-==++==
       . +=:==:-=+.
        += :+:::.+
       -=   -=..-*
      :*:::--+===+=-.
    .-=======-----===:
 ..:::::::::::::::::::::..
      ........:....

  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
zec check u1…
            -=+++=::..
            +#=++++-::.
            =+:=+=+=---:.
        .:..-=++=++--.
     .:=+=+=++*+=*+:
     .=*--*=-==++==
       . +=:==:-=+.
        += :+:::.+
       -=   -=..-*
      :*:::--+===+=-.
    .-=======-----===:
 ..:::::::::::::::::::::..
      ........:....

  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.

Options

FlagCommandWhat it does
--alertwatchdesktop notification on a block with many shielded notes
--min <notes>watchnotes in one block that trigger the alert, default 200
--poll <seconds>watchhow often to ask the server, default 20
--window <blocks>poolshow far back to look, default 200 (about four hours)
--limit <n>block, checkrows to print
--lwd <host:port>allanother lightwalletd, or set ZEC_LWD
--jsonallmachine-readable output
NO_COLOR=1allplain text, for pipes and CI

How it reads the chain

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.