New Release: 1.1.1

Zcash 1.1.1 has arrived!  This release is an Overwinter-compatible version of the Zcash node software, with initial support for Sapling consensus rules and a Sapling testnet activation height set to block 252500.

Overwinter network upgrade

The first block of Overwinter will be block 347500, which is expected to be mined on the 25th of June 2018. Please upgrade to this release, or any release from v1.1.0 onwards, in order to follow the Overwinter network upgrade. See our previous blog post and the Overwinter Network Upgrade page for more information.

Developers preparing for Sapling

Sapling network upgrade

The consensus code preparations for the Sapling network upgrade, as described in ZIP 243 and the Sapling spec are finished and included in this release. Sapling support in the wallet and RPC is ongoing, and is expected to land in master over the next few weeks.

The Sapling MPC is currently working on producing the final Sapling parameters. In the meantime, Sapling will activate on testnet with dummy Sapling parameters at height 252500. This activation will be temporary, and the testnet will be rolled back by version 2.0.0 so that both mainnet and testnet will be using the same parameters. Users who want to continue testing Overwinter should continue to run version 1.1.0 on testnet, and then upgrade to 2.0.0 (which will be released after Overwinter activates).

Sapling can also be activated at a specific height in regtest mode by setting the config options -nuparams=5ba81b19:HEIGHT -nuparams=76b809bb:HEIGHT. These config options will change when the testnet is rolled back for 2.0.0 (because the branch ID for Sapling will change, due to us following the safe upgrade conventions we introduced in Overwinter).

Users running testnet or regtest nodes will need to run ./zcutil/fetch-params.sh --testnet (for users building from source) or zcash-fetch-params --testnet (for binary / Debian users).

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

Sapling transaction format

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

Other notable changes

zcash-cli: arguments privacy

The RPC command line client gained a new argument, -stdin to read extra arguments from standard input, one per line until EOF/Ctrl-D.  For example:

$ src/zcash-cli -stdin z_importkey
mysecretzkey
yes
200000
^D (Ctrl-D)

It is recommended to use this for sensitive information such as private keys, as command-line arguments can usually be read from the process table by any user on the system.

Asm representations of scriptSig signatures now contain SIGHASH type decodes

The asm property of each scriptSig now contains the decoded signature hash
type for each signature that provides a valid defined hash type.

The following items contain assembly representations of scriptSig signatures
and are affected by this change:

  • RPC getrawtransaction
  • RPC decoderawtransaction
  • REST /rest/tx/ (JSON format)
  • REST /rest/block/ (JSON format when including extended tx details)
  • zcash-tx -json

For example, the scriptSig.asm property of a transaction input that
previously showed an assembly representation of:

304502207fa7a6d1e0ee81132a269ad84e68d695483745cde8b541e3bf630749894e342a022100c1f7ab20e13e22fb95281a870f3dcf38d782e53023ee313d741ad0cfbc0c509001

now shows as:

304502207fa7a6d1e0ee81132a269ad84e68d695483745cde8b541e3bf630749894e342a022100c1f7ab20e13e22fb95281a870f3dcf38d782e53023ee313d741ad0cfbc0c5090[ALL]

Note that the output of the RPC decodescript did not change because it is
configured specifically to process scriptPubKey and not scriptSig scripts.

Summary of the changes included in this release

  1. We set the Sapling testnet activation height to block 252500. (#3305)
  2. We removed the 100kB transaction size limit from Sapling activation. (#3212)
  3. We implemented Sapling consensus rules. (#3207#3220#3232#3255#3275)
  4. We implemented Sapling merkle tree, nullifiers and added supported for v4 transactions and loading Sapling parameters. (#3170#3191#3197#3169#3185)
  5. We implemented ZIP 243 for Sapling signature hashing. (#3233)
  6. We updated support for Sprout shielded transactions to use the Groth16 proving system when Sapling activates. (#3251)
  7. We backported transparent address refactors, and are in the process of adding support for Sapling keys, addresses and notes. (#3206#3234#3123#3228#3202#3242)
  8. We extended a mempool eviction RPC test to cover Sapling activation. (#3074)
  9. We backported improvements to RPC call getblock. (#3179)
  10. We updated the Payment API documentation. (#3264)
  11. We resolved Least Authority auditor issues C, D and E. (#3160#3181#3183)
  12. We updated the build process to use Rust 1.26 stable. (#3271)
  13. We fixed bugs on several unsupported platforms. (#2784#3153#3227)
  14. We extended Sprout tests to other epochs. (#3157)
  15. We backported improvements to zcash-cli, serialization, out-of-memory error reporting and the configuration option uacomment. (#3086#3180#3193#2813)

We’re encouraging all users and miners to update to this version. See the download page and 1.0 User Guide for more information.

For a more complete list of changes, see the 1.1.1 GitHub milestone. To follow our progress, watch the GitHub project and join the forum.