Skip to content

@daira daira released this Dec 21, 2020 · 49 commits to master since this release

Notable changes

Switch to ed25519-zebra for consensus signature checks

This removes the zcashd dependency upon libsodium for ed25519 signature checks and instead uses the Rust implementation in ed25519-zebra, which has been active for signature verification since the Canopy upgrade. For more information on the conditions that led to this change see https://hdevalence.ca/blog/2020-10-04-its-25519am.

Update default fees according to ZIP-313

Reduce default fees to 0.00001 ZEC as specified in ZIP-313 and ensure that transactions paying at least the new minimum fee meet the transaction relay threshold irrespective of transaction size.

Improve getblocktemplate rpc performance when using shielded coinbase

This change precomputes future block templates to permit miners to begin working atop newly arrived blocks as quickly as possible, rather than waiting for a new template to be generated after a block has arrived. It also reduces the initial wait time for incorporating new mempool transactions into a block from 1 minute to 10 seconds; the previous value was inherited from the upstream bitcoin codebase but is inappropriate for our block timing.

Migrate from rpc-tests.sh to rpc-tests.py

This unifies and simplifies the RPC testing framework, as has been done in the upstream Bitcoin codebase.

Assets 2
Dec 19, 2020
Release v4.2.0-rc1
Notable changes
===============

Switch to ed25519-zebra for consensus signature checks
------------------------------------------------------
This removes the zcashd dependency upon libsodium for ed25519
signature checks and instead uses the Rust implementation in
ed25519-zebra, which has been active for signature verification
since the Canopy upgrade. For more information on the conditions
that led to this change see https://hdevalence.ca/blog/2020-10-04-its-25519am

Update default fees according to ZIP-313
----------------------------------------
Reduce default fees to 0.00001 ZEC as specified in ZIP-313 and
ensure that transactions paying at least the new minimum fee meet
the transaction relay threshold irrespective of transaction size.

Improve getblocktemplate rpc performance when using shielded coinbase
---------------------------------------------------------------------
This change precomputes future block templates to permit miners to
begin working atop newly arrived blocks as quickly as possible, rather
than waiting for a new template to be generated after a block has arrived.
It also reduces the initial the wait time for incorporating new mempool
transactions into a block from 1 minute to 10 seconds; the previous value
was inherited from the upstream bitcoin codebase but is inappropriate for
our block timing.

Migrate from rpc-tests.sh to rpc-tests.py
-----------------------------------------
This unifies and simplifies the RPC testing framework, as has
been done in the upstream Bitcoin codebase.

@daira daira released this Nov 17, 2020 · 231 commits to master since this release

Notable changes

This release is a hotfix release that addresses a performance regression in v4.1.0. It is recommended that either v4.0.0 or this release, v4.1.1 be used for Canopy activation.

Optimize release build

The release build now sets CFLAGS/CXXFLAGS to use the -O3 optimization option, which turns on more optimization flags than the previously used -O1. This produces a faster build, addressing a performance regression in v4.1.0.

Correctly report Founders' Reward amount in getblocktemplate

This release correctly returns the foundersreward field from getblocktemplate output pre-Canopy and removes the field post-Canopy. (The Founders' Reward will expire exactly as Canopy activates, as specified in ZIP 207.) To obtain information about funding stream amounts, use getblocksubsidy HEIGHT, passing in the height returned by the getblocktemplate API.

Assets 2

@therealyingtong therealyingtong released this Nov 10, 2020 · 329 commits to master since this release

Notable changes

Migration to Clang and static libc++

zcashd now builds its C++ (and C) dependencies entirely with a pinned version
of Clang, and statically links libc++ instead of dynamically linking libstdc++.
This migration enables us to reliably use newer C++ features while supporting
older LTS platforms, be more confident in the compiler's optimisations, and
leverage security features such as sanitisers and efficient fuzzing. In future,
this will also allow optimizing across the boundary between Rust and C++.

The system compiler is still used to compile a few native dependencies (used by
the build machine to then compile zcashd for the target machine). These will
likely also be migrated to use the pinned Clang in a future release.

Fast sync for initial block download

The -ibdskiptxverification flag allows faster synchronization during initial
block sync, by skipping transaction verification and instead verifying only PoW.
Note that this mode requires checkpoints to be enabled, to make sure that each
block under inspection is an ancestor of the latest checkpoint.

Convenient testing for invalid note plaintexts

After the mainnet activation of Canopy (block 1046400), correct wallet software
will no longer produce v1 note plaintexts (with a lead byte of 0x01). However,
v1 note plaintexts will continue to be accepted for a grace period of 32256
blocks (about 4 weeks), as specified in ZIP 212.
The new receiveunsafe log category complains if an invalid note plaintext is
received.

Additional lightwalletd and light client RPCs

  • lightwalletd is now able to retrieve all UTXOs related to a t-address through
    the getaddressutxos RPC. (Previously, this was only available to the Insight
    Explorer.)
  • The new z_gettreestate RPC returns the Sprout and Sapling treestate at a
    given block height or block hash. This makes it easier for light clients to
    generate checkpoints.

Update/removal of several cryptographic dependencies

This release updates secp256k1 to enable the GLV endomorphism optimisation by
default, after the recent expiry of the GLV patents. It also removes OpenSSL,
and replaces libsodium BLAKE2b usage with the blake2b_simd Rust crate.

Assets 2
Oct 27, 2020

@ebfull ebfull released this Sep 1, 2020 · 670 commits to master since this release

Notable changes

The mainnet activation of the Canopy network upgrade is supported by the 4.0.0
release, with an activation height of 1046400, which should occur roughly in the
middle of November — following the targeted EOS halt of our 3.1.0 release.
Please upgrade to this release, or any subsequent release, in order to follow
the Canopy network upgrade.

The following ZIPs are being deployed as part of this upgrade:

In order to help the ecosystem prepare for the mainnet activiation, Canopy has
already been activated on the Zcash testnet. Any node version 3.1.0 or higher,
including this release, supports the Canopy activation on testnet.

Disabling new value in the Sprout value pool

After the mainnet activation of Canopy, it will not be possible to send funds to
Sprout z-addresses from any other kind of address, as described in ZIP 211.
It will still be possible to send funds from a Sprout z-address and to send
funds between Sprout addresses. Users of Sprout z-addresses are encouraged to
use Sapling z-addresses instead, and to migrate their remaining Sprout funds
into a Sapling z-address using the migration utility in zcashd: set migrate=1
in your zcash.conf file, or use the z_setmigration RPC.

New logging system

The zcashd logging system is now powered by the Rust tracing crate. This
has two main benefits:

  • tracing supports the concept of "spans", which represent periods of time
    with a beginning and end. These enable logging additional information about
    temporality and causality of events. (Regular log lines, which represent
    moments in time, are called events in tracing.)
  • Spans and events are structured, and can record typed data in addition to text
    messages. This structure can then be filtered dynamically.

The existing -debug=target config flags are mapped to tracing log filters,
and will continue to correctly enable additional logging when starting zcashd.
A new setlogfilter RPC method has been introduced that enables reconfiguring
the log filter at runtime. See zcash-cli help setlogfilter for its syntax.

As a minor note, zcashd no longer reopens the debug.log file on SIGHUP.
This behaviour was originally introduced in upstream Bitcoin Core to support log
rotation using external tools. tracing supports log rotation internally (which
is currently disabled), as well as a variety of interesting backends (such as
journald and OpenTelemetry integration); we are investigating how these might
be exposed in future releases.

Compatibility

macOS versions earlier than 10.12 (Sierra) are no longer supported.

Assets 2
Aug 27, 2020
Release v4.0.0-rc1

@therealyingtong therealyingtong released this Jul 28, 2020 · 893 commits to master since this release

Notable changes

Network Upgrade 4: Canopy

The code preparations for the Canopy network upgrade are finished and included in this release. The following ZIPs are being deployed:

Canopy will activate on testnet at height 1028500, and can also be activated at a specific height in regtest mode by setting the config option -nuparams=0xe9ff75a6:HEIGHT. Note that v3.1.0 enables Canopy support on the testnet.

Canopy will activate on mainnet at height 1046400.

See ZIP 251 for additional information about the deployment process for Canopy.

Debian 8 "Jessie" will no longer be supported after v3.1.0, due to its end-of-life on June 30th, 2020. This will allow us to direct more resources to supporting Debian 10 Buster, other Linux distributions, and other platforms such as Windows and macOS.

Flush witness data to disk only when it's consistent

This fix prevents the wallet database from getting into an inconsistent state. By flushing witness data to disk from the wallet thread instead of the main thread, we ensure that the on-disk block height is always the same as the witness data height. Previously, the database occasionally got into a state where the latest block height was one ahead of the witness data. This then triggered an assertion failure in CWallet::IncrementNoteWitnesses() upon restarting after a zcashd shutdown.

Note that this code change will not automatically repair a data directory that has been affected by this problem; that requires starting zcashd with the -rescan or -reindex options.

New DNS seeders

DNS seeders hosted at "zfnd.org" and "yolo.money" have been added to the list in chainparams.cpp. They're running CoreDNS with a Zcash crawler plugin, the result of a Zcash Foundation in-house development effort to replace zcash-seeder with something memory-safe and easier to maintain.

These are validly operated seeders per the existing policy. For general questions related to either seeder, contact george@zfnd.org or mention @gtank in the Zcash Foundation's Discord. For bug reports, open an issue on the dnsseeder repo.

Changed command-line options

  • -debuglogfile=<file> can be used to specify an alternative debug logging file.

RPC methods

  • joinSplitPubKey and joinSplitSig have been added to verbose transaction outputs. This enables the transaction's binary form to be fully reconstructed from the RPC output.
  • The output of getblockchaininfo now includes an estimatedheight parameter. This can be shown in UIs as an indication of the current chain height while zcashd is syncing, but should not be relied upon when creating transactions.

Metrics screen

  • A progress bar is now visible when in Initial Block Download mode, showing both the prefetched headers and validated blocks. It is only printed for TTY output. Additionally, the "not mining" message is no longer shown on mainnet, as the built-in CPU miner is not effective at the current network difficulty.
  • The number of block headers prefetched during Initial Block Download is now displayed alongside the number of validated blocks. With current compile-time defaults, a Zcash node prefetches up to 160 block headers per request without a limit on how far it can prefetch, but only up to 16 full blocks at a time.
Assets 2
Jul 15, 2020
Release v3.1.0-rc2
Jul 14, 2020
Release v3.1.0-rc1
You can’t perform that action at this time.