From e8096841a3dc8db49a9bd332d66b2166d4f6d5d8 Mon Sep 17 00:00:00 2001 From: Jack Grigg Date: Fri, 19 Feb 2021 21:51:00 +0000 Subject: [PATCH 1/3] make-release.py: Versioning changes for 4.3.0-rc1. --- README.md | 2 +- configure.ac | 4 ++-- contrib/gitian-descriptors/gitian-linux.yml | 2 +- src/clientversion.h | 4 ++-- src/deprecation.h | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index be9b58956..3315e0cc7 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -Zcash 4.2.0 +Zcash 4.3.0-rc1 =========== diff --git a/configure.ac b/configure.ac index d9b8ddbea..34a69e3ce 100644 --- a/configure.ac +++ b/configure.ac @@ -1,9 +1,9 @@ dnl require autoconf 2.60 (AS_ECHO/AS_ECHO_N) AC_PREREQ([2.60]) define(_CLIENT_VERSION_MAJOR, 4) -define(_CLIENT_VERSION_MINOR, 2) +define(_CLIENT_VERSION_MINOR, 3) define(_CLIENT_VERSION_REVISION, 0) -define(_CLIENT_VERSION_BUILD, 50) +define(_CLIENT_VERSION_BUILD, 25) define(_ZC_BUILD_VAL, m4_if(m4_eval(_CLIENT_VERSION_BUILD < 25), 1, m4_incr(_CLIENT_VERSION_BUILD), m4_eval(_CLIENT_VERSION_BUILD < 50), 1, m4_eval(_CLIENT_VERSION_BUILD - 24), m4_eval(_CLIENT_VERSION_BUILD == 50), 1, , m4_eval(_CLIENT_VERSION_BUILD - 50))) define(_CLIENT_VERSION_SUFFIX, m4_if(m4_eval(_CLIENT_VERSION_BUILD < 25), 1, _CLIENT_VERSION_REVISION-beta$1, m4_eval(_CLIENT_VERSION_BUILD < 50), 1, _CLIENT_VERSION_REVISION-rc$1, m4_eval(_CLIENT_VERSION_BUILD == 50), 1, _CLIENT_VERSION_REVISION, _CLIENT_VERSION_REVISION-$1))) define(_CLIENT_VERSION_IS_RELEASE, true) diff --git a/contrib/gitian-descriptors/gitian-linux.yml b/contrib/gitian-descriptors/gitian-linux.yml index abd5beb2a..88a5ab094 100644 --- a/contrib/gitian-descriptors/gitian-linux.yml +++ b/contrib/gitian-descriptors/gitian-linux.yml @@ -1,5 +1,5 @@ --- -name: "zcash-4.2.0" +name: "zcash-4.3.0-rc1" enable_cache: true distro: "debian" suites: diff --git a/src/clientversion.h b/src/clientversion.h index 86e276bb5..71d30a4ba 100644 --- a/src/clientversion.h +++ b/src/clientversion.h @@ -16,9 +16,9 @@ //! These need to be macros, as clientversion.cpp's and bitcoin*-res.rc's voodoo requires it #define CLIENT_VERSION_MAJOR 4 -#define CLIENT_VERSION_MINOR 2 +#define CLIENT_VERSION_MINOR 3 #define CLIENT_VERSION_REVISION 0 -#define CLIENT_VERSION_BUILD 50 +#define CLIENT_VERSION_BUILD 25 //! Set to true for release, false for prerelease or test build #define CLIENT_VERSION_IS_RELEASE true diff --git a/src/deprecation.h b/src/deprecation.h index 546b49360..47c3d3b7e 100644 --- a/src/deprecation.h +++ b/src/deprecation.h @@ -10,7 +10,7 @@ // Per https://zips.z.cash/zip-0200 // Shut down nodes running this version of code, 16 weeks' worth of blocks after the estimated // release block height. A warning is shown during the 14 days' worth of blocks prior to shut down. -static const int APPROX_RELEASE_HEIGHT = 1084650; +static const int APPROX_RELEASE_HEIGHT = 1154000; static const int RELEASE_TO_DEPRECATION_WEEKS = 16; static const int EXPECTED_BLOCKS_PER_HOUR = 3600 / Consensus::POST_BLOSSOM_POW_TARGET_SPACING; static_assert(EXPECTED_BLOCKS_PER_HOUR == 48, "The value of Consensus::POST_BLOSSOM_POW_TARGET_SPACING was chosen such that this assertion holds."); From 1e12f4b00e5f3dbd61555f56869b16fb8646e9ce Mon Sep 17 00:00:00 2001 From: Jack Grigg Date: Fri, 19 Feb 2021 22:05:05 +0000 Subject: [PATCH 2/3] make-release.py: Updated manpages for 4.3.0-rc1. --- doc/man/zcash-cli.1 | 22 ++++++++++++---------- doc/man/zcash-tx.1 | 10 +++++----- doc/man/zcashd.1 | 17 +++++++++++------ 3 files changed, 28 insertions(+), 21 deletions(-) diff --git a/doc/man/zcash-cli.1 b/doc/man/zcash-cli.1 index 5b9b9dcf0..deb79c172 100644 --- a/doc/man/zcash-cli.1 +++ b/doc/man/zcash-cli.1 @@ -1,9 +1,9 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.13. -.TH ZCASH-CLI "1" "December 2020" "zcash-cli v4.2.0" "User Commands" +.TH ZCASH-CLI "1" "February 2021" "zcash-cli v4.3.0-rc1" "User Commands" .SH NAME -zcash-cli \- manual page for zcash-cli v4.2.0 +zcash-cli \- manual page for zcash-cli v4.3.0-rc1 .SH DESCRIPTION -Zcash RPC client version v4.2.0 +Zcash RPC client version v4.3.0\-rc1 .PP In order to ensure you are adequately protecting your privacy when using Zcash, please see . @@ -30,6 +30,13 @@ Specify configuration file (default: zcash.conf) \fB\-datadir=\fR .IP Specify data directory +.HP +\fB\-stdin\fR +.IP +Read extra arguments from standard input, one per line until EOF/Ctrl\-D +(recommended for sensitive information such as passphrases). If first +extra argument is `walletpassphrase` then the first line(password) will +not be echoed. .PP Chain selection options: .HP @@ -67,18 +74,13 @@ Password for JSON\-RPC connections .IP Timeout in seconds during HTTP requests, or 0 for no timeout. (default: 900) -.HP -\fB\-stdin\fR -.IP -Read extra arguments from standard input, one per line until EOF/Ctrl\-D -(recommended for sensitive information such as passphrases) .SH COPYRIGHT In order to ensure you are adequately protecting your privacy when using Zcash, please see . -Copyright (C) 2009-2020 The Bitcoin Core Developers -Copyright (C) 2015-2020 The Zcash Developers +Copyright (C) 2009-2021 The Bitcoin Core Developers +Copyright (C) 2015-2021 The Zcash Developers This is experimental software. diff --git a/doc/man/zcash-tx.1 b/doc/man/zcash-tx.1 index 2a681b2ee..a7cabe0ed 100644 --- a/doc/man/zcash-tx.1 +++ b/doc/man/zcash-tx.1 @@ -1,9 +1,9 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.13. -.TH ZCASH-TX "1" "December 2020" "zcash-tx v4.2.0" "User Commands" +.TH ZCASH-TX "1" "February 2021" "zcash-tx v4.3.0-rc1" "User Commands" .SH NAME -zcash-tx \- manual page for zcash-tx v4.2.0 +zcash-tx \- manual page for zcash-tx v4.3.0-rc1 .SH DESCRIPTION -Zcash zcash\-tx utility version v4.2.0 +Zcash zcash\-tx utility version v4.3.0\-rc1 .SS "Usage:" .TP zcash\-tx [options] [commands] @@ -91,8 +91,8 @@ Set register NAME to given JSON\-STRING In order to ensure you are adequately protecting your privacy when using Zcash, please see . -Copyright (C) 2009-2020 The Bitcoin Core Developers -Copyright (C) 2015-2020 The Zcash Developers +Copyright (C) 2009-2021 The Bitcoin Core Developers +Copyright (C) 2015-2021 The Zcash Developers This is experimental software. diff --git a/doc/man/zcashd.1 b/doc/man/zcashd.1 index 09e142cf6..e811a43f0 100644 --- a/doc/man/zcashd.1 +++ b/doc/man/zcashd.1 @@ -1,9 +1,9 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.13. -.TH ZCASHD "1" "December 2020" "zcashd v4.2.0" "User Commands" +.TH ZCASHD "1" "February 2021" "zcashd v4.3.0-rc1" "User Commands" .SH NAME -zcashd \- manual page for zcashd v4.2.0 +zcashd \- manual page for zcashd v4.3.0-rc1 .SH DESCRIPTION -Zcash Daemon version v4.2.0 +Zcash Daemon version v4.3.0\-rc1 .PP In order to ensure you are adequately protecting your privacy when using Zcash, please see . @@ -84,7 +84,7 @@ Keep at most unconnectable transactions in memory (default: 100) .HP \fB\-par=\fR .IP -Set the number of script verification threads (\fB\-4\fR to 16, 0 = auto, <0 = +Set the number of script verification threads (\fB\-6\fR to 16, 0 = auto, <0 = leave that many cores free, default: 0) .HP \fB\-pid=\fR @@ -255,6 +255,11 @@ Whitelist peers connecting from the given netmask or IP address. Can be specified multiple times. Whitelisted peers cannot be DoS banned and their transactions are always relayed, even if they are already in the mempool, useful e.g. for a gateway +.HP +\fB\-maxuploadtarget=\fR +.IP +Tries to keep outbound traffic under the given target (in MiB per 24h), +0 = no limit (default: 0) .PP Wallet options: .HP @@ -518,8 +523,8 @@ console, 600 otherwise) In order to ensure you are adequately protecting your privacy when using Zcash, please see . -Copyright (C) 2009-2020 The Bitcoin Core Developers -Copyright (C) 2015-2020 The Zcash Developers +Copyright (C) 2009-2021 The Bitcoin Core Developers +Copyright (C) 2015-2021 The Zcash Developers This is experimental software. From 6052843b6fc927dbf5f1ff73d70385b315ec07db Mon Sep 17 00:00:00 2001 From: Jack Grigg Date: Fri, 19 Feb 2021 22:05:06 +0000 Subject: [PATCH 3/3] make-release.py: Updated release notes and changelog for 4.3.0-rc1. --- contrib/debian/changelog | 6 + doc/release-notes/release-notes-4.3.0-rc1.md | 320 +++++++++++++++++++ 2 files changed, 326 insertions(+) create mode 100644 doc/release-notes/release-notes-4.3.0-rc1.md diff --git a/contrib/debian/changelog b/contrib/debian/changelog index 83fc6985a..15b1c3366 100644 --- a/contrib/debian/changelog +++ b/contrib/debian/changelog @@ -1,3 +1,9 @@ +zcash (4.3.0~rc1) stable; urgency=medium + + * 4.3.0-rc1 release. + + -- Electric Coin Company Fri, 19 Feb 2021 22:05:06 +0000 + zcash (4.2.0) stable; urgency=medium * 4.2.0 release. diff --git a/doc/release-notes/release-notes-4.3.0-rc1.md b/doc/release-notes/release-notes-4.3.0-rc1.md new file mode 100644 index 000000000..bb43600e5 --- /dev/null +++ b/doc/release-notes/release-notes-4.3.0-rc1.md @@ -0,0 +1,320 @@ +Notable changes +=============== + +Reduce download traffic +----------------------- + +We have made several changes to reduce the amount of data downloaded by `zcashd` +during initial block download (IBD): + +- Significant time and bandwidth is spent in issuing `getheaders` P2P requests. + This results in noticeable bandwidth usage due to the large size of Zcash + block headers. + + We now eliminate redundant requests in cases where we already know the last + header in the message. This optimization is enabled by default, but can be + disabled by setting the config option `-no-optimize-getheaders`. + +- Transactions in the mempool are no longer downloaded during IBD (`zcashd` will + only request block data). + +Reduce upload traffic +--------------------- + +A major part of the outbound traffic is caused by serving historic blocks to +other nodes in initial block download state. + +It is now possible to reduce the total upload traffic via the `-maxuploadtarget` +parameter. This is *not* a hard limit but a threshold to minimize the outbound +traffic. When the limit is about to be reached, the uploaded data is cut by not +serving historic blocks (blocks older than one week). +Moreover, any SPV peer is disconnected when they request a filtered block. + +This option can be specified in MiB per day and is turned off by default +(`-maxuploadtarget=0`). +The recommended minimum is 1152 * MAX_BLOCK_SIZE (currently 2304MB) per day. + +Whitelisted peers will never be disconnected, although their traffic counts for +calculating the target. + +A more detailed documentation about keeping traffic low can be found in +[/doc/reduce-traffic.md](/doc/reduce-traffic.md). + +`libzcashconsensus` replaced by `libzcash_script` +------------------------------------------------- + +The `libzcashconsensus` library inherited from upstream has been unusable since +the Overwinter network upgrade in 2018. We made changes to signature digests +similar to those made in Bitcoin's SegWit, which required additional per-input +data that could not be added to the existing APIs without breaking backwards +compatibility. + +Additionally, it has become increasingly inaccurately named; it only covers +(Zcash's subset of) the Bitcoin scripting system, and not the myriad of other +consensus changes: in particular, Zcash's shielded pools. + +We have now renamed the library to `libzcash_script`, and reworked it to instead +focus on transparent script verification: + +- The script verification APIs are altered to take `consensusBranchId` and + `amount` fields. +- New precomputing APIs have been added that enable multiple transparent inputs + on a single transaction to be verified more efficiently. +- Equihash has been removed from the compiled library. The canonical Equihash + validator is the [`equihash` Rust crate](https://crates.io/crates/equihash) + since v3.1.0. + +The C++ library can be built by compiling `zcashd` with the environment variable +`CONFIGURE_FLAGS=--with-libs`. It is also wrapped as the +[`zcash_script` Rust crate](https://crates.io/crates/zcash_script) +(maintained by the Zcash Foundation for use in `zebrad`). + +Other P2P Changes +----------------- + +The list of banned peers is now stored on disk rather than in memory. Restarting +`zcashd` will no longer clear out the list of banned peers; instead the +`clearbanned` RPC call can be used to manually clear the list. The `setban` RPC +call can also be used to manually ban or unban a peer. + +Build system updates +-------------------- + +- We now build with Clang 11 and Rust 1.49. +- We have downgraded Boost to 1.74 to mitigate `statx`-related breakage in some + container environments. + +Changelog +========= + +Alex Wied (3): + Add support for FreeBSD 12 + Set rust_target for all FreeBSD versions + Use parentheses for defined in windows-unused-variables.diff + +Alfredo Garcia (3): + split wallet.py tests + hide password in -stdin `walletpassphrase` command + Apply suggestions from code review + +Bernhard M. Wiedemann (1): + Make tests pass after 2020 + +BtcDrak (1): + Remove bad chain alert partition check + +Carl Dong (13): + build: Add variable printing target to Makefiles + depends: Propagate well-known vars into depends + depends: boost: Specify toolset to bootstrap.sh + depends: boost: Split target-os from toolset + depends: boost: Use clang toolset if clang in CXX + depends: Propagate only specific CLI variables to sub-makes + depends: boost: Refer to version in URL + depends: boost: Split into non-/native packages + depends: boost: Disable all compression + depends: boost: Cleanup architecture/address-model + depends: boost: Cleanup toolset selection + depends: boost: Remove unnecessary _archiver_ + depends: boost: Specify cflags+compileflags + +Casey Rodarmor (3): + Make limited map actually respect max size + Disallow unlimited limited maps + Add limitedmap test + +Cory Fields (6): + depends: fix boost mac cross build with clang 9+ + build: add missing leveldb defines + net: make Ban/Unban/ClearBan functionality consistent + net: No need to export DumpBanlist + net: move CBanDB and CAddrDB out of net.h/cpp + net: Drop CNodeRef for AttemptToEvictConnection + +Daira Hopwood (2): + qa/zcash/updatecheck.py: remove dead code; print instructions to run `cargo outdated` and `cargo update`. + Ensure that `CONFIGURE_FLAGS=--enable-debug` correctly uses -O0 for dependencies and main build. + +Daniel Kraft (1): + doc: add comment explaining initial header request + +Dimitris Apostolou (1): + Discord invite instead of direct link + +Ethan Heilman (1): + Fix de-serialization bug where AddrMan is corrupted after exception * CAddrDB modified so that when de-serialization code throws an exception Addrman is reset to a clean state * CAddrDB modified to make unit tests possible * Regression test created to ensure bug is fixed * StartNode modifed to clear adrman if CAddrDB::Read returns an error code. + +Gregory Maxwell (2): + Return early in IsBanned. + Disconnect on mempool requests from peers when over the upload limit. + +Igor Cota (1): + Define TARGET_OS when host is android + +Jack Grigg (41): + Add JSDescriptionInfo for constructing JSDescriptions + Remove JSDescription::h_sig + prevector: Terminate without logging on failed allocation + Remove init_and_check_sodium from crypto/common.h + Store inputs and outputs by reference in JSDescriptionInfo + depends: Update Rust to 1.49.0 + rust: Use renamed broken_intra_doc_links lint + depends: cargo update + depends: Move to Clang 11 + depends: Fix Boost warnings under Clang 11 + depends: Allow per-host package download paths + depends: Ensure the native_clang download path is for the builder + Revert "Update boost to 1.75, postpone other updates." + qa: Postpone Boost and native_b2 updates + QA: Remove unused update postponements + QA: Postpone BDB update again + depends: ZeroMQ 4.3.4 + depends: Postpone updates that require adding CMake + cargo update + Squashed 'src/univalue/' changes from 9ef5b78c1..98fadc090 + Remove crypto/equihash from libzcashconsensus + Add amount and consensus branch ID to zcashconsensus_verify_script + Rename src/script/zcashconsensus.* -> src/script/zcash_script.* + Rename zcashconsensus_* -> zcash_script_* in APIs + Rename libzcashconsensus.la -> libzcash_script.la + Set up an mdbook in which we can document zcashd's architecture design + Actions: Add a workflow to deploy the zcashd book + Show README as root of zcashd book + Link to zips.z.cash for protocol spec + test: Convert Bech32 test vectors into known-answer test vectors + zcash_script: Add API to verify scripts with precomputed tx data + test: Migrate maxuploadtarget.py to Python 3 + Pass current PoWTargetSpacing() into CNode::OutboundTargetReached() + init: Pass post-Blossom spacing into CNode::SetMaxOutboundTarget() + Fix some typos + zcash_script: Clarify return values in docs + Rename responsible_disclosure.md to SECURITY.md + Add IBD download traffic reduction to release notes + Fill out the rest of the 4.3.0 release notes + make-release.py: Versioning changes for 4.3.0-rc1. + make-release.py: Updated manpages for 4.3.0-rc1. + +Jeremy Rubin (1): + Minimal fix to slow prevector tests as stopgap measure + +Jonas Schnelli (14): + banlist.dat: store banlist on disk + CAddrDB/CBanDB: change filesize variables from int to uint64_t + use CBanEntry as object container for banned nodes + Adding CSubNet constructor over a single CNetAddr + [Qt] add ui signal for banlist changes + [Qt] banlist, UI optimizing and better signal handling + net: use CIDR notation in CSubNet::ToString() + [QA] fix netbase tests because of new CSubNet::ToString() output + Introduce -maxuploadtarget + [doc] add documentation how to reduce traffic + don't enforce maxuploadtargets disconnect for whitelisted peers + [docs] rename reducetraffic.md to reduce-traffic.md + add documentation for exluding whitelistes peer from maxuploadtarget + add (max)uploadtarget infos to getnettotals RPC help + +Josh Lehan (1): + Re-organize -maxconnections option handling + +Karel Bilek (1): + scripted-diff: Use UniValue.pushKV instead of push_back(Pair()) + +Kaz Wesley (4): + fix race that could fail to persist a ban + prevector: destroy elements only via erase() + test prevector::swap + prevector::swap: fix (unreached) data corruption + +Kris Nuttycombe (4): + Skip "tx" messages during initial block download. + Fix pyflakes complaints + Whitespace-only fix in chainparams.cpp + Update the maxuploadtarget.py tests to accommodate zcash. + +Larry Ruane (1): + #4624 improve IBD sync by eliminating getheaders requests + +Marco Falke (3): + [net] Cleanup maxuploadtarget + [doc] Add -maxuploadtarget release notes + [walletdb] Add missing LOCK() in Recover() for dummyWallet + +Marius Kjærstad (3): + Update _COPYRIGHT_YEAR in configure.ac to 2021 + Update COPYRIGHT_YEAR in clientversion.h to 2021 + Update of copyright year to 2021 + +Matt Corallo (6): + Default to defining endian-conversion DECLs in compat w/o config + Make fDisconnect an std::atomic + Make fImporting an std::atomic + Fix AddrMan locking + Remove double brackets in addrman + Fix unlocked access to vNodes.size() + +Patrick Strateman (1): + Avoid recalculating vchKeyedNetGroup in eviction logic. + +Peter Bushnell (1): + depends: Consistent use of package variable + +Peter Todd (1): + Remove LOCK(cs_main) from decodescript + +Philip Kaufmann (4): + banlist: update set dirty to be more fine grained + banlist: better handling of banlist in StartNode() + banlist: add more banlist infos to log / add GUI signal + banlist (bugfix): allow CNode::SweepBanned() to run on interval + +Pieter Wuille (11): + Add SipHash-2-4 primitives to hash + Use SipHash-2-4 for CCoinsCache index + Switch CTxMempool::mapTx to use a hash index for txids + Use SipHash-2-4 for address relay selection + Add extra message to avoid a long 'Loading banlist' + Support SipHash with arbitrary byte writes + Use 64-bit SipHash of netgroups in eviction + Use C++11 thread-safe static initializers + Add ChaCha20 + Switch FastRandomContext to ChaCha20 + Add a FastRandomContext::randrange and use it + +Suhas Daftuar (1): + Add RPC test for -maxuploadtarget + +Taylor Hornby (2): + Move the github API token out of updatecheck.py into an untracked file. + Document the required .updatecheck-token file in the release docs + +Wladimir J. van der Laan (6): + build: Updates for OpenBSD + net: Fix CIDR notation in ToString() + test: Add more test vectors for siphash + timedata: Prevent warning overkill + Always allow getheaders from whitelisted peers + rpc: remove cs_main lock from `createrawtransaction` + +fanquake (2): + [build] Add NETBSD leveldb target to configure.ac + [doc] Improve lanaguge in reducetraffic.md + +kirkalx (1): + peers.dat, banlist.dat recreated when missing + +randy-waterhouse (1): + Re-instate TARGET_OS=linux in configure.ac. Removed by 351abf9e035. + +Jack Grigg (1): + Update URL for Zcash Foundation security policy + +Ying Tong Lai (2): + Cargo update + Postpone dependencies + +tulip (1): + Move time data log print to 'net' category to reduce log noise + +Benjamin Winston (1): + Added foundation to responsible_disclosure.md +