This release fixes an issue that could potentially cause a node to crash with the log message "The wallet's best block hash
<hash> was not detected in restored chain state. Giving up; please restart with
Additionally, a bug that could cause an assertion failure during reindexing has been fixed. See #6387 for details.
zcashd is started with
-reindex, until the node's chain tip catches back up to the main chain, RPC calls might block for long periods of time (or time out), and the wallet's view of the chain may lag significantly behind the node's chain tip. See #6406 for details and the fix (which will be included in the next release).
Transparent pool and chain supply tracking
zcashd has tracked the change in value within the Sprout and Sapling shielded pools for each block; v5.0.0 added the Orchard pool. This release completes the set, by tracking the change in value within the "transparent" pool (more precisely, the value stored in Bitcoin-style UTXOs).
zcashd also now tracks the change in "chain supply" for each block, defined as the sum of coinbase output values, minus unclaimed fees. This is precisely equal to the sum of the value in the transparent and shielded pools, and equivalent to the sum of all unspent coins/notes on the chain. It is bounded above by the theoretical maximum supply, but in practice is lower due to, for example, miners not claiming transaction fees.
Bitcoin-style consensus rules implement fees as an imbalance between spent coins/notes and newly-created coins/notes. The consensus rules require that a coinbase transaction's outputs have a total value no greater than the sum of that block's subsidy and the fees made available by the transactions in the block. However, the consensus rules do not require that all of the available funds are claimed, and a miner can create coinbase transactions with lower value in the outputs (though in the case of Zcash, the consensus rules do require the transaction to include ZIP 1014 Funding Stream outputs).
After upgrading to v5.4.0,
zcashd will start tracking changes in transparent pool value and chain supply from the height at which it is restarted. Block heights prior to this will not have any information recorded. To track changes from genesis, and thus monitor the total transparent pool size and chain supply, you would need to restart your node with the
Wallet Performance Fixes
The 100MiB memory limit for the batch scanner has been replaced by a 1000-block limit. This eliminates an expensive call to determine the current memory usage of the batch scanner.
The following associated metric has been removed from the set of metrics reported when
-prometheusport is set:
z_sendmany will no longer select transparent coinbase when "ANY_TADDR" is used as the
fromaddress. It was already documented to do this, but the previous behavior didn’t match. When coinbase notes were selected in this case, they would (properly) require that the transaction didn’t have any change, but this could be confusing, as the documentation stated that these two conditions (using "ANY_TADDR" and disallowing change) wouldn’t coincide.
- A new value pool object with
"id": "transparent" has been added to the
valuePools list in
- A new
chainSupply key has been added to
getblock to report the total chain supply as of that block height (if tracked), and the change in chain supply caused by the block (for
getblock, if measured).
- Changes to
getblocktemplate have been backported from upstream Bitcoin Core, to significantly improve its performance by doing more work ahead of time in the mempool (and reusing the work across multiple
The following features have been deprecated, but remain available by default. These features may be disabled by setting
-allowdeprecated=none. 18 weeks after this release, these features will be disabled by default and the following flags to
-allowdeprecated will be required to permit their continued use:
blockcommitmentshash fields in the output of
getblocktemplate have been replaced by the
The following previously-deprecated features have been disabled by default, and will be removed in 18 weeks:
The following previously-deprecated features have been removed:
- CentOS 8 has been removed from the list of supported platforms. It reached EoL on December 31st 2021, and does not satisfy our Tier 2 policy requirements.