@mdr0id mdr0id released this Oct 15, 2018 · 40 commits to master since this release

Assets 2

This release is the first Sapling RPC supported version of the Zcash node software!

Sapling Activation

Mainnet

This release is consensus-compatible with the Sapling network upgrade and adds significant support in the zcashd wallet RPC. We’re encouraging all users and miners to upgrade as soon as possible. The first block of Sapling will be block 419200, which is expected to be mined on the 28th of October 2018, the second anniversary of Zcash’s official launch. More information on the upcoming Sapling network upgrade can be found below:

Testnet

Sapling has activated on the testnet at block 280000. If you are running a v2.0.1 node, you no longer need to specify -experimentalfeatures and -developersapling to use Sapling functionality on testnet. If you are running an older v2.0.0 node, please upgrade to version v2.0.1 which introduced a consensus rule change to allow min difficulty blocks to be mined from block 299188, thereby splitting the chain.

Other Notable Changes

Sapling RPC Support

This release contains support for Sapling RPC functionality on mainnet, enabling the sending of Sapling shielded funds.

Hierarchical Deterministic Key Generation

All Sapling addresses will use hierarchical deterministic key generation according to ZIP 32 (keypath m/32'/133'/k' on mainnet). Transparent and Sprout addresses will still use traditional key generation.

Backups of HD wallets, regardless of when they have been created, can therefore be used to re-generate all possible Sapling private keys, even the ones which haven't already been generated during the time of the backup. Regular backups are still necessary, however, in order to ensure that transparent and Sprout addresses are not lost.

A future release will support the importing and restoration of HD wallets.

Fix Signing Raw Transactions with Unsynced Offline Nodes

In signrawtransaction we determine the consensus branch ID (which we then later use to construct the transaction) using the chain height. We now also consider the APPROX_RELEASE_HEIGHT , as this is a better estimation than 0 for the height of the chain if we are unsynced. We have also added an additional parameter to signrawtransaction to allow manually overriding the consensus branch ID that zcashd determines we are on.

Summary of the Changes Included in this Release

  1. Allow minimum-difficulty blocks on testnet (#3559)
  2. Enable Sapling features on mainnet (#3537)
  3. Use ZIP 32 for all Sapling spending keys (#3492)
  4. Fix signing raw transaction with unsynced offline node (#3520)
  5. Sapling support for persisting wallet to disk (#3517)
  6. Add Sapling RPC support to z_shieldcoinbase (#3518)
  7. Add Sapling RPC support to z_listunspent (#3510)
  8. Add Sapling RPC support to z_listreceivedbyaddress (#3499)
  9. Add Sapling RPC support to z_importwallet and z_exportwallet (#3491)
  10. Add Sapling RPC support to z_sendmany (#3489)
  11. Add Sapling RPC support to z_getbalance and z_gettotalbalance (#3436)
  12. Track Sapling notes and nullifiers in the wallet (in-memory only, no persistence to disk) (#3422)
  13. Make NU peer management logic upgrade-agnostic (#3512)
  14. Generate an ovk to encrypt outCiphertext for Sapling t-addr senders (#3516)
  15. Windows cross-compile support (#3172)

For a more complete list of changes, please see the 2.0.1 milestone.

For information on specific Sapling RPC parameter changes, please see the Network Upgrade Developer guide on using zcashd unmodified .