zcashd/doc/release-notes.md

4.8 KiB
Raw Blame History

(note: this is a temporary file, to be added-to by anybody, and moved to release-notes at release time)

Notable changes

Fixes

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 -rescan."

Transparent pool and chain supply tracking

Since v2.0.0, 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 -reindex option.

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:

  • (gauge) zcashd.wallet.batchscanner.usage.bytes

RPC Changes

  • 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 didnt match. When coinbase notes were selected in this case, they would (properly) require that the transaction didnt have any change, but this could be confusing, as the documentation stated that these two conditions (using "ANY_TADDR" and disallowing change) wouldnt coincide.
  • A new value pool object with "id": "transparent" has been added to the valuePools list in getblockchaininfo and getblock.
  • A new chainSupply key has been added to getblockchaininfo and 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).

Mining

  • 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 getblocktemplate calls).

Deprecations

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:

  • gbt_oldhashes: the finalsaplingroothash, lightclientroothash, and blockcommitmentshash fields in the output of getblocktemplate have been replaced by the defaultroots field.

The following previously-deprecated features have been disabled by default, and will be removed in 18 weeks:

  • legacy_privacy
  • getnewaddress
  • getrawchangeaddress
  • z_getnewaddress
  • z_listaddresses
  • addrtype
  • wallettxvjoinsplit

The following previously-deprecated features have been removed:

  • dumpwallet
  • zcrawreceive
  • zcrawjoinsplit
  • zcrawkeygen

Platform Support

  • 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.