Today we're announcing the release of Zcash 1.0.14, which contains new features, bug fixes, and documentation improvements.
Incoming viewing keys
Support for incoming viewing keys, as described in the Zcash protocol spec, has been added to the wallet.
Use the z_exportviewingkey RPC method to obtain the incoming viewing key for a z-address in a node's wallet. For Sprout z-addresses, these always begin with "ZiVK" (or "ZiVt" for testnet z-addresses). Use z_importviewingkey to import these into another node.
A node that possesses an incoming viewing key for a z-address can view all past transactions received by that address, as well as all future transactions sent to it, by using z_listreceivedbyaddress. They cannot spend any funds from the address. This is similar to the behaviour of "watch-only" t-addresses.
z_gettotalbalance now has an additional boolean parameter for including the balance of "watch-only" addresses (both transparent and shielded), which is set to false by default. z_getbalance has also been updated to work with watch-only addresses.
- Caution: for z-addresses, these balances will not be accurate if any funds have been sent from the address. This is because incoming viewing keys cannot detect spends, and so the "balance" is just the sum of all received notes, including ones that have been spent. Some future use-cases for incoming viewing keys will include synchronization data to keep their balances accurate (e.g. #2542).
Sprout circuit value tracking
Nodes can now track the total amount of shielded ZEC inside the Sprout circuit. This is measured by adding up the ZEC moving between the Transparent Value Pool and JoinSplits (see Anatomy of a Zcash Transaction). getblockchaininfo shows the total for the entire chain, while getblock will show the total as of a specific block.
To enable this monitoring on a specific node, it must be re-indexed. This will take several hours to complete, but otherwise will not affect any other node data.
Summary of the changes included in this release
- We fixed a non-exploitable buffer overflow in libsnark. (#2800)
- We added support for incoming viewing keys. (#2143)
- We added tracking of the total shielded value inside the Sprout circuit, which can be enabled by re-indexing. (#2795)
- We modified dumpwallet and z_exportwallet to prevent them overwriting existing files. (#2741)
- We fixed bugs on several unsupported platforms. (#2700, #2752, #2786)
- We improved various parts of the help text and documentation. (#2724, #2744)