This release of Zcashd v2.0.4 fixes a Sprout wallet security bug, fixes miner address selection behaviour and introduces a new consensus rule on testnet to reject blocks that violate turnstiles. Zcashd v2.0.4 will be supported until block 569112, expected to arrive around July 15th, 2019, at which point the software will end-of-support halt and shut down.
Notable Changes in this Release
Sprout note validation bug fixed in wallet
We include a fix for a bug in the Zcashd wallet which could result in Sprout z-addresses displaying an incorrect balance. Sapling z-addresses are not impacted by this issue.
This bug would occur if someone sending funds to a Sprout z-address intentionally sent a different amount in the note commitment of a Sprout output than the value provided in the ciphertext (the encrypted message from the sender). A symptom of this bug is the error message “logic error: witness of wrong element for joinsplit input” when attempting to send Sprout funds.
Users should install this update and then rescan the blockchain by invoking zcashd -rescan
. Sprout address balances shown by the zcashd wallet should then be correct.
Thank you to Alexis Enston for bringing this to our attention.
Security Announcement 2019-03-19
Miner address selection behaviour fixed
Zcash inherited a bug from upstream Bitcoin Core where both the internal miner and RPC call getblocktemplate
would use a fixed transparent address, until RPC getnewaddress
was called, instead of using a new transparent address for each mined block. This was fixed in Bitcoin 0.12 and we have now merged the change.
Miners who wish to use the same address for every mined block, should use the -mineraddress
option.
New consensus rule: Reject blocks that violate turnstile (Testnet only)
Testnet nodes will now enforce a consensus rule which marks blocks as invalid if they would lead to a turnstile violation in the Sprout or Sapling value pools. The motivations and deployment details can be found in the accompanying ZIP.
The consensus rule will be enforced on mainnet in a future release.
Summary of the Changes Included in this Release
- Fix Sprout note validation bug in wallet (#3897)
- Fix default miner address behaviour (#3762)
- Add consensus rule on testnet to reject blocks that violate turnstile (#3885)
- Sapling benchmarks updated (#3657, #3843)
- Boost, OpenSSL, Rust and Proton dependencies updated (#3809). AMQP users should review the Proton security fixes.
- Backported ‘size_on_disk’ field to RPC call ‘getblockchaininfo’ (#3639)
- Docs folder updated (#3819, #3846)
- Security related documentation updated (#3890, #3892)
For a more complete list of changes, please see the 2.0.4 milestone.