Canopy will activate on testnet at height 1028500, 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.
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 "zfnd.org" and "yolo.money" have been added to the list in `chainparams.cpp`. They're running [CoreDNS](https://coredns.io) with a [Zcash crawler plugin](https://github.com/ZcashFoundation/dnsseeder), 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](https://zcash.readthedocs.io/en/latest/rtd_pages/dnsseed_policy.html). For general questions related to either seeder, contact george@zfnd.org or mention @gtank in the Zcash Foundation's Discord. For bug reports, open an issue on the [dnsseeder](https://github.com/ZcashFoundation/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.
Changelog
=========
Alfredo Garcia (28):
add estimatedheight to getblockchaininfo
add documentation and command line parsing to afl scripts
get fuzzing options from directory
add bool argument to get balance in satoshis to rpc getreceivedbyaddress
add documentation to flag
change argument name
add boolean inZat to getreceivedbyaccount
add boolean inZat to getbalance
add boolean inZat to z_getbalance
add amountZat field to listreceivedbyaddress and listreceivedbyaccount
add amountZat field to listtransactions, gettransaction and listsinceblock
add amountZat field to listunspent
add amountZat field to z_listreceivedbyaddress
replace with AssertionError assert_equal in receivedby.py
Fix casting in wallet.py
simplify inzat balances logic
Fix casting in listtransactions.py
add MINOR_CURRENCY_UNIT
remove additional not needed casts from py tests
change name of harden option
fix test cases
fix sort of options
remove not needed comments from wallet.py
update docs
add new parameters to rpc client and fix some bugs
initialize size_t
fix/improve docs
add log aporximation to metrics solution rates
Anthony Towns (1):
test: Add tests for `-debuglogfile` with subdirs
Daira Hopwood (24):
Rename NU4 to Canopy in constant and function names.
Rename golden/nu4.tar.gz to canopy.tar.gz.
Missing NU4->Canopy renames.
Remove unused import in qa/rpc-tests/listtransactions.py
Remove an unused CCriticalSection.
Add GetActiveFundingStreams function.
Tests for changes to getblocksubsidy.
Change getblocksubsidy RPC to take into account funding streams.
Use ValueFromAmount instead of double arithmetic, and improve variable names.
Cosmetic spacing changes.
Apply suggestions from code review
Change the format of `getblocksubsidy` output to use an array of funding stream objects.
Clean up some iterator usage.
Remove an unnecessary iterator increment.
Another cleanup.
Add key_constants.h to src/Makefile.am.
Fix an unintended consensus change in decryption of coinbase outputs.
More iterator cleanups.
src/metrics.cpp: cosmetic whitespace changes.
Metrics screen: display hash rates using SI prefixes rather than as powers of 2.
Add unit tests for DisplayDuration, DisplaySize, and DisplayHashRate.