New Release 3.1.0

Network Upgrade 4: Canopy

The code preparations for the Canopy network upgrade are finished and included in this release. The following ZIPs are being deployed:

Canopy will activate on testnet at height 1028500 (around August 5) and can also be activated at a specific height in regtest mode by setting the config option -nuparams=0xe9ff75a6:HEIGHT. Note that v3.1.0 enables Canopy support on the testnet.

Canopy will activate on mainnet at height 1046400 (mid-November).

See ZIP 251 for additional information about the deployment process for Canopy.

Debian 8 “Jessie” will no longer be supported after v3.1.0, due to its end-of-life on June 30, 2020. This will allow us to direct more resources to supporting Debian 10 Buster, other Linux distributions, and other platforms such as Windows and macOS.

Flush witness data to disk only when it’s consistent

This fix prevents the wallet database from getting into an inconsistent state. By flushing witness data to disk from the wallet thread, instead of the main thread, we ensure that the on-disk block height is always the same as the witness data height. Previously, the database occasionally got into a state where the latest block height was one ahead of the witness data. This then triggered an assertion failure in CWallet::IncrementNoteWitnesses() upon restarting after a zcashd shutdown.

Note that this code change will not automatically repair a data directory that has been affected by this problem; that requires starting zcashd with the -rescan or -reindex options.

New DNS seeders

DNS seeders hosted at “” and “” have been added to the list in chainparams.cpp. They’re running CoreDNS with a Zcash crawler plugin, the result of a Zcash Foundation in-house development effort to replace zcash-seeder with something memory-safe and easier to maintain. These are validly operated seeders per the existing policy. For general questions related to either seeder, contact [email protected] or mention @gtank in the Zcash Foundation’s Discord. For bug reports, open an issue on the dnsseeder repo.

Changed command-line options

  • -debuglogfile=<file> can be used to specify an alternative debug logging file.

RPC methods

  • joinSplitPubKey and joinSplitSig have been added to verbose transaction outputs. This enables the transaction’s binary form to be fully reconstructed from the RPC output.
  • The output of getblockchaininfo now includes an estimatedheight parameter. This can be shown in UIs as an indication of the current chain height while zcashd is syncing, but should not be relied upon when creating transactions.

Metrics screen

  • A progress bar is now visible when in Initial Block Download mode, showing both the prefetched headers and validated blocks. It is only printed for TTY output. Additionally, the “not mining” message is no longer shown on mainnet, as the built-in CPU miner is not effective at the current network difficulty.
  • The number of block headers prefetched during Initial Block Download is now displayed alongside the number of validated blocks. With current compile-time defaults, a Zcash node prefetches up to 160 block headers per request without a limit on how far it can prefetch, but only up to 16 full blocks at a time.