Heartwood testnet activation
This release supports the activation of Heartwood on testnet, with an activation height of 903800, slated to occur on May 6, 2020. Please upgrade to this release, or any subsequent release, in order to follow the Heartwood network upgrade on testnet.
This release does not support activation of Heartwood on mainnet. In order to follow the Heartwood upgrade on mainnet you will still need to upgrade to 3.0.0 (or a later version) when it is released in the coming month.
The Heartwood network upgrade deploys ZIP 213, which allows miners to mine directly into shielded addresses. It also deploys ZIP 221, enabling Flyclient support by changing the semantics of existing block header fields. The deployment process for the Heartwood upgrade is described in ZIP 250.
Testnet: Mining to Sapling addresses
After the activation of Heartwood on testnet, miners will be able to immediately shield funds to Sapling addresses in the coinbase transactions which mint new testnet coins (TAZ).
This release provides the ability for miners to specify mineraddress=SAPLING_ADDRESS
in their zcash.conf
file, where SAPLING_ADDRESS
is a Sapling payment address that they can obtain using z_getnewaddress
. However, miners should wait until Heartwood has activated on testnet before making this change to their configuration file, or else getblocktemplate
will return block templates that cannot be mined.
Sapling viewing key support
This release provides support for Sapling viewing keys (specifically, the extended viewing keys described in ZIP 32) in the wallet. Nodes will track both sent and received transactions for any Sapling addresses associated with the Sapling viewing keys that have been imported into the wallet.
- Use the
z_exportviewingkey
RPC method to obtain the viewing key for a shielded address in a node’s wallet. For Sapling addresses, these always begin with “zxviews” (or “zxviewtestsapling” for testnet addresses). - Use
z_importviewingkey
to import a viewing key into another node. Imported Sapling viewing keys will be stored in the wallet, and remembered across restarts. z_getbalance
will show the balance of a Sapling address associated with an imported Sapling viewing key. Balances for Sapling viewing keys will be included in the output ofz_gettotalbalance
when theincludeWatchonly
parameter is set totrue
.- RPC methods for viewing shielded transaction information (such as
z_listreceivedbyaddress
) will return information for Sapling addresses associated with imported Sapling viewing keys.
Details about what information can be viewed with these Sapling viewing keys, and what guarantees you have about that information, can be found in ZIP 310.
View shielded information in wallet transactions
This release introduces the z_viewtransaction
RPC command. This command, given a transaction ID, will decrypt the transaction with all Sapling keys in the local wallet and return the shielded information that it can recover, including
- The address that each note belongs to
- Values in both decimal ZEC/TAZ and zatoshis
- The ID of the transaction that each spent note was received in
- An
outgoing
flag on each new note, which will betrue
if the output is not for an address in the wallet - A
memoStr
field for each new note, containing its text memo (if its memo field contains a valid UTF-8 string)
Other changes
- The
-maxtimeadjustment
option has been removed; node operators should ensure their node’s local time is configured properly. - Error messages for transactions that are rejected during network upgrades are more clear.
- We’ve introduced a
-txexpirynotify
option which, similar to the-blocknotify
config option, will perform the configured command whenever a transaction expires in the mempool. - The
z_importkey
andz_importviewingkey
RPC methods now return the type of the imported spending or viewing key (Sprout or Sapling) and the corresponding payment address. - Negative heights are now permitted in
getblock
andgetblockhash
, to select blocks backwards from the chain tip. A height of-1
corresponds to the last known valid block on the main chain. - A new RPC method
getexperimentalfeatures
returns the list of enabled experimental features.
More details about the changes in this release can be found in the release notes.