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 +