New Release: 1.0.15

Today we’re announcing the release of Zcash 1.0.15, which contains the Overwinter consensus rules with a testnet activation height. It also includes various bug fixes, and adds an experimental RPC method for merging UTXOs and notes.

Notable changes

Overwinter network upgrade

The code preparations for the Overwinter network upgrade, as described in ZIP 200, ZIP 201, ZIP 202, ZIP 203, and ZIP 143 are finished and included in this release. Overwinter will activate on testnet at height 207500, and can also be activated at a specific height in regtest mode by setting the config option -nuparams=5ba81b19:HEIGHT.

However, because the Overwinter activation height is not yet specified for mainnet, version 1.0.15 will behave similarly as other pre-Overwinter releases even after a future activation of Overwinter on the network. Upgrading from 1.0.15 will be required in order to follow the Overwinter network upgrade on mainnet.

Overwinter transaction format

Once Overwinter has activated, transactions must use the new v3 format (including coinbase transactions). All RPC methods that create new transactions (such as createrawtransaction and getblocktemplate) will create v3 transactions once the Overwinter activation height has been reached.

Overwinter transaction expiry

Overwinter transactions created by zcashd will also have a default expiry height set (the block height after which the transaction becomes invalid) of 20 blocks after the height of the next block. This can be configured with the config option -txexpirydelta.

UTXO and note merging

In order to simplify the process of combining many small UTXOs and notes into a few larger ones, a new RPC method z_mergetoaddress has been added as an experimental feature. It merges funds from t-addresses, z-addresses, or both, and sends them to a single t-address or z-address. To test it out, set the config option -zmergetoaddress (as well as enabling experimental features). We encourage mining pools and exchanges to test it out over the next few weeks, and give feedback, before we make it a fully-supported RPC method in an upcoming release.

Unlike most other RPC methods, z_mergetoaddress operates over a particular quantity of UTXOs and notes, instead of a particular amount of ZEC. By default, it will merge 50 UTXOs and 10 notes at a time; these limits can be adjusted with the parameters transparent_limit and shielded_limit.

z_mergetoaddress also returns the number of UTXOs and notes remaining in the given addresses, which can be used to automate the merging process (for example, merging until the number of UTXOs falls below some value).

UTXO memory accounting

The default -dbcache has been changed in this release to 450MiB. Users can set -dbcache to a higher value (e.g. to keep the UTXO set more fully cached in memory). Users on low-memory systems (such as systems with 1GB or less) should consider specifying a lower value for this parameter.

Additional information relating to running on low-memory systems can be found here: reducing-memory-usage.md.

Summary of the changes included in this release

  1. We implemented the Overwinter network upgrade consensus rules and transaction version. (#2874, #2898, #2903, #2925, #3002)
  2. We added logic to the mempool to evict transactions that can’t be mined into the current branch. (#2940)
  3. We added logic to preferentially evict pre-Overwinter nodes shortly before activation, and disconnect from them after activation. (#2919)
  4. We added information about network upgrades and version deprecation to the RPC interface. (#2808, #2839)
  5. We fixed a bug where a block index field was not being read from disk. (#2931, #2977, #2993)
  6. We implemented a roll-back limit for reorganization and branch rewinding of 100 blocks. (#2463)
  7. We added z_mergetoaddress as an experimental feature. (#2797)
  8. We increased the default value of -dbcache. (#2873)