From 2e6a6572baca7217b2a2b630b6bfe6eda4ef0490 Mon Sep 17 00:00:00 2001 From: Jack Grigg Date: Tue, 5 Jul 2022 20:43:26 +0000 Subject: [PATCH 1/6] qa: Postpone dependency updates --- qa/zcash/postponed-updates.txt | 55 ++++++++++++++++++++-------------- 1 file changed, 33 insertions(+), 22 deletions(-) diff --git a/qa/zcash/postponed-updates.txt b/qa/zcash/postponed-updates.txt index 423e1c2f7..859edaa92 100644 --- a/qa/zcash/postponed-updates.txt +++ b/qa/zcash/postponed-updates.txt @@ -5,32 +5,43 @@ # # Ccache 4.0 requires adding CMake to the depends system. -native_ccache 4.0 2022-06-01 -native_ccache 4.1 2022-06-01 -native_ccache 4.2 2022-06-01 -native_ccache 4.2.1 2022-06-01 -native_ccache 4.3 2022-06-01 -native_ccache 4.4 2022-06-01 -native_ccache 4.4.1 2022-06-01 -native_ccache 4.4.2 2022-06-01 -native_ccache 4.5 2022-06-01 -native_ccache 4.5.1 2022-06-01 -native_ccache 4.6 2022-06-01 +native_ccache 4.0 2022-09-01 +native_ccache 4.1 2022-09-01 +native_ccache 4.2 2022-09-01 +native_ccache 4.2.1 2022-09-01 +native_ccache 4.3 2022-09-01 +native_ccache 4.4 2022-09-01 +native_ccache 4.4.1 2022-09-01 +native_ccache 4.4.2 2022-09-01 +native_ccache 4.5 2022-09-01 +native_ccache 4.5.1 2022-09-01 +native_ccache 4.6 2022-09-01 +native_ccache 4.6.1 2022-09-01 # Clang and Rust are currently pinned to LLVM 13 -native_clang 14.0.0 2022-06-01 -native_clang 14.0.1 2022-06-01 -native_clang 14.0.2 2022-06-01 -native_clang 14.0.3 2022-06-01 -libcxx 14.0.0 2022-06-01 -libcxx 14.0.1 2022-06-01 -libcxx 14.0.2 2022-06-01 -libcxx 14.0.3 2022-06-01 -native_rust 1.60.0 2022-06-01 +native_clang 14.0.0 2022-09-01 +native_clang 14.0.1 2022-09-01 +native_clang 14.0.2 2022-09-01 +native_clang 14.0.3 2022-09-01 +native_clang 14.0.4 2022-09-01 +native_clang 14.0.5 2022-09-01 +native_clang 14.0.6 2022-09-01 +libcxx 14.0.0 2022-09-01 +libcxx 14.0.1 2022-09-01 +libcxx 14.0.2 2022-09-01 +libcxx 14.0.3 2022-09-01 +libcxx 14.0.4 2022-09-01 +libcxx 14.0.5 2022-09-01 +libcxx 14.0.6 2022-09-01 +native_rust 1.60.0 2022-09-01 +native_rust 1.61.0 2022-09-01 +native_rust 1.62.0 2022-09-01 # We're never updating to this version bdb 18.1.40 2024-02-01 # Google Test 1.10.0 requires adding CMake to the depends system. -googletest 1.10.0 2022-06-01 -googletest 1.11.0 2022-06-01 +googletest 1.10.0 2022-09-01 +googletest 1.11.0 2022-09-01 +googletest 1.12.0 2022-09-01 +googletest 1.12.1 2022-09-01 From cb5a4acca91c1b57adf4d5c0a39c0c9b48dc01eb Mon Sep 17 00:00:00 2001 From: Jack Grigg Date: Tue, 5 Jul 2022 21:36:45 +0000 Subject: [PATCH 2/6] Update release notes --- doc/release-notes.md | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/doc/release-notes.md b/doc/release-notes.md index fd5ff77c9..621f12a95 100644 --- a/doc/release-notes.md +++ b/doc/release-notes.md @@ -4,6 +4,33 @@ release-notes at release time) Notable changes =============== +Faster block validation for Sapling and Orchard transactions +------------------------------------------------------------ + +Block validation in `zcashd` is a mostly single-threaded process, due to how the +chain update logic inherited from Bitcoin Core is written. However, certain more +computationally intensive checks are performed more efficiently than checking +everything individually: + +- ECDSA signatures on transparent inputs are checked via multithreading. +- RedPallas signatures on Orchard actions are checked via batch validation. + +As of this release, `zcashd` applies these techniques to more Sapling and +Orchard components: + +- RedJubjub signatures on Sapling Spends are checked via batch validation. +- Groth16 proofs for Sapling Spends and Outputs are checked via batch validation + and multithreading. +- Halo 2 proofs for Orchard Actions are checked via batch validation and + multithreading. + +This reduces worst-case block validation times for observed historic blocks by +around 80% on a Ryzen 9 5950X CPU. + +The number of threads used for checking Groth16 and Halo 2 proofs (as well as +for creating them when spending funds) can be set via the `RAYON_NUM_THREADS` +environment variable. + Option handling --------------- @@ -15,6 +42,12 @@ Option handling helpful if recipients of transactions are likely to be using legacy wallets that have not yet been upgraded to support parsing V5 transactions. +RPC interface +------------- + +- The `getrawtransaction` RPC method now includes details about Orchard actions + within transactions. + Deprecated ---------- From 343ddc1752d52e51d5762d6ba3b142fc82603039 Mon Sep 17 00:00:00 2001 From: Jack Grigg Date: Tue, 5 Jul 2022 21:45:59 +0000 Subject: [PATCH 3/6] qa: Add native_cxxbridge and rustcxx to update checker --- qa/zcash/postponed-updates.txt | 5 +++++ qa/zcash/updatecheck.py | 9 +++++++++ 2 files changed, 14 insertions(+) diff --git a/qa/zcash/postponed-updates.txt b/qa/zcash/postponed-updates.txt index 859edaa92..d48b7b3cf 100644 --- a/qa/zcash/postponed-updates.txt +++ b/qa/zcash/postponed-updates.txt @@ -4,6 +4,11 @@ # bdb 18.1.40 2020-09-01 # +native_cxxbridge 1.0.69 2022-09-01 +native_cxxbridge 1.0.70 2022-09-01 +rustcxx 1.0.69 2022-09-01 +rustcxx 1.0.70 2022-09-01 + # Ccache 4.0 requires adding CMake to the depends system. native_ccache 4.0 2022-09-01 native_ccache 4.1 2022-09-01 diff --git a/qa/zcash/updatecheck.py b/qa/zcash/updatecheck.py index ba0d79a30..75d903aee 100755 --- a/qa/zcash/updatecheck.py +++ b/qa/zcash/updatecheck.py @@ -79,10 +79,19 @@ def get_dependency_list(): GithubTagReleaseLister("llvm", "llvm-project", "^llvmorg-(\d+)\.(\d+).(\d+)$", { "llvmorg-11.0.0": (11, 0, 0), "llvmorg-9.0.1-rc3": None}), DependsVersionGetter("native_clang")), + Dependency("native_cxxbridge", + GithubTagReleaseLister("dtolnay", "cxx", "^(\d+)\.(\d+)\.(\d+)$", + { "1.0.17": (1, 0, 17) }), + DependsVersionGetter("native_cxxbridge")), Dependency("native_rust", GithubTagReleaseLister("rust-lang", "rust", "^(\d+)\.(\d+)(?:\.(\d+))?$", { "1.33.0": (1, 33, 0), "0.9": (0, 9) }), DependsVersionGetter("native_rust")), + # rustcxx matches the cxxbridge version + Dependency("rustcxx", + GithubTagReleaseLister("dtolnay", "cxx", "^(\d+)\.(\d+)\.(\d+)$", + { "1.0.17": (1, 0, 17) }), + DependsVersionGetter("native_cxxbridge")), Dependency("zeromq", GithubTagReleaseLister("zeromq", "libzmq", "^v(\d+)\.(\d+)(?:\.(\d+))?$", { "v4.3.1": (4, 3, 1), "v4.2.0-rc1": None }), From 1d996a080b5359fb72bf7b9df59cc91de82a4109 Mon Sep 17 00:00:00 2001 From: sasha Date: Tue, 5 Jul 2022 22:11:55 +0000 Subject: [PATCH 4/6] make-release.py: Versioning changes for 5.1.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 016b0b7a2..d8b7dfd62 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -Zcash 5.0.0 +Zcash 5.1.0-rc1 =========== diff --git a/configure.ac b/configure.ac index 8ca1b9120..342ef0ba2 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, 5) -define(_CLIENT_VERSION_MINOR, 0) +define(_CLIENT_VERSION_MINOR, 1) 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 9e03c1767..792392c09 100644 --- a/contrib/gitian-descriptors/gitian-linux.yml +++ b/contrib/gitian-descriptors/gitian-linux.yml @@ -1,5 +1,5 @@ --- -name: "zcash-5.0.0" +name: "zcash-5.1.0-rc1" enable_cache: true distro: "debian" suites: diff --git a/src/clientversion.h b/src/clientversion.h index 8c436b625..926bd8e8a 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 5 -#define CLIENT_VERSION_MINOR 0 +#define CLIENT_VERSION_MINOR 1 #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 afbd286f9..21e2ea91f 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 = 1663550; +static const int APPROX_RELEASE_HEIGHT = 1727474; 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 14b3c21f4a7a4e22d5746c71a82be83121d030f0 Mon Sep 17 00:00:00 2001 From: sasha Date: Tue, 5 Jul 2022 22:25:25 +0000 Subject: [PATCH 5/6] make-release.py: Updated manpages for 5.1.0-rc1. --- doc/man/zcash-cli.1 | 8 ++++---- doc/man/zcash-tx.1 | 8 ++++---- doc/man/zcashd-wallet-tool.1 | 6 +++--- doc/man/zcashd.1 | 30 ++++++++++++++++++------------ 4 files changed, 29 insertions(+), 23 deletions(-) diff --git a/doc/man/zcash-cli.1 b/doc/man/zcash-cli.1 index 38c89ee81..40827a9da 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.49.1. -.TH ZCASH-CLI "1" "May 2022" "zcash-cli v5.0.0" "User Commands" +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.48.1. +.TH ZCASH-CLI "1" "July 2022" "zcash-cli v5.1.0-rc1" "User Commands" .SH NAME -zcash-cli \- manual page for zcash-cli v5.0.0 +zcash-cli \- manual page for zcash-cli v5.1.0-rc1 .SH DESCRIPTION -Zcash RPC client version v5.0.0 +Zcash RPC client version v5.1.0\-rc1 .PP In order to ensure you are adequately protecting your privacy when using Zcash, please see . diff --git a/doc/man/zcash-tx.1 b/doc/man/zcash-tx.1 index 79863fa8d..95d86bc37 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.49.1. -.TH ZCASH-TX "1" "May 2022" "zcash-tx v5.0.0" "User Commands" +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.48.1. +.TH ZCASH-TX "1" "July 2022" "zcash-tx v5.1.0-rc1" "User Commands" .SH NAME -zcash-tx \- manual page for zcash-tx v5.0.0 +zcash-tx \- manual page for zcash-tx v5.1.0-rc1 .SH DESCRIPTION -Zcash zcash\-tx utility version v5.0.0 +Zcash zcash\-tx utility version v5.1.0\-rc1 .SS "Usage:" .TP zcash\-tx [options] [commands] diff --git a/doc/man/zcashd-wallet-tool.1 b/doc/man/zcashd-wallet-tool.1 index 4adf72a35..fae8d3571 100644 --- a/doc/man/zcashd-wallet-tool.1 +++ b/doc/man/zcashd-wallet-tool.1 @@ -1,7 +1,7 @@ -.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.1. -.TH ZCASHD-WALLET-TOOL "1" "May 2022" "zcashd-wallet-tool v5.0.0" "User Commands" +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.48.1. +.TH ZCASHD-WALLET-TOOL "1" "July 2022" "zcashd-wallet-tool v5.1.0-rc1" "User Commands" .SH NAME -zcashd-wallet-tool \- manual page for zcashd-wallet-tool v5.0.0 +zcashd-wallet-tool \- manual page for zcashd-wallet-tool v5.1.0-rc1 .SH SYNOPSIS .B zcashd-wallet-tool [\fI\,OPTIONS\/\fR] diff --git a/doc/man/zcashd.1 b/doc/man/zcashd.1 index 186b1518a..706ccd935 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.49.1. -.TH ZCASHD "1" "May 2022" "zcashd v5.0.0" "User Commands" +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.48.1. +.TH ZCASHD "1" "July 2022" "zcashd v5.1.0-rc1" "User Commands" .SH NAME -zcashd \- manual page for zcashd v5.0.0 +zcashd \- manual page for zcashd v5.1.0-rc1 .SH DESCRIPTION -Zcash Daemon version v5.0.0 +Zcash Daemon version v5.1.0\-rc1 .PP In order to ensure you are adequately protecting your privacy when using Zcash, please see . @@ -31,9 +31,10 @@ long fork (%s in cmd is replaced by message) Explicitly allow the use of the specified deprecated feature. Multiple instances of this parameter are permitted; values for must be selected from among {"none", "addrtype", "getnewaddress", -"getrawchangeaddress", "legacy_privacy", "z_getbalance", -"z_getnewaddress", "z_gettotalbalance", "z_listaddresses", -"zcrawjoinsplit", "zcrawkeygen", "zcrawreceive"} +"getrawchangeaddress", "legacy_privacy", "wallettxvjoinsplit", +"z_getbalance", "z_getnewaddress", "z_gettotalbalance", +"z_listaddresses", "dumpwallet", "zcrawjoinsplit", "zcrawkeygen", +"zcrawreceive"} .HP \fB\-blocknotify=\fR .IP @@ -93,7 +94,7 @@ Keep at most unconnectable transactions in memory (default: 100) .HP \fB\-par=\fR .IP -Set the number of script verification threads (\fB\-16\fR to 16, 0 = auto, <0 = +Set the number of script verification threads (\fB\-8\fR to 16, 0 = auto, <0 = leave that many cores free, default: 0) .HP \fB\-pid=\fR @@ -110,14 +111,12 @@ for block files) .HP \fB\-reindex\-chainstate\fR .IP -Rebuild chain state from the currently indexed blocks (implies \fB\-rescan\fR -unless pruning or unless \fB\-rescan\fR=\fI\,0\/\fR is explicitly specified) +Rebuild chain state from the currently indexed blocks (implies \fB\-rescan\fR) .HP \fB\-reindex\fR .IP Rebuild chain state and block index from the blk*.dat files on disk -(implies \fB\-rescan\fR unless pruning or unless \fB\-rescan\fR=\fI\,0\/\fR is explicitly -specified) +(implies \fB\-rescan\fR) .HP \fB\-sysperms\fR .IP @@ -579,6 +578,13 @@ output (default: 1 if running in a console, 0 otherwise) .IP Number of seconds between metrics refreshes (default: 1 if running in a console, 600 otherwise) +.PP +Compatibility options: +.HP +\fB\-preferredtxversion\fR +.IP +Preferentially create transactions having the specified version when +possible (default: 4) .SH COPYRIGHT In order to ensure you are adequately protecting your privacy when using Zcash, From eb43bc5c026b41cf57f2ef3ee567c095642dbaad Mon Sep 17 00:00:00 2001 From: sasha Date: Tue, 5 Jul 2022 22:25:25 +0000 Subject: [PATCH 6/6] make-release.py: Updated release notes and changelog for 5.1.0-rc1. --- contrib/debian/changelog | 6 + doc/release-notes/release-notes-5.1.0-rc1.md | 222 +++++++++++++++++++ 2 files changed, 228 insertions(+) create mode 100644 doc/release-notes/release-notes-5.1.0-rc1.md diff --git a/contrib/debian/changelog b/contrib/debian/changelog index 00834e186..e9ccaab99 100644 --- a/contrib/debian/changelog +++ b/contrib/debian/changelog @@ -1,3 +1,9 @@ +zcash (5.1.0~rc1) stable; urgency=medium + + * 5.1.0-rc1 release. + + -- Electric Coin Company Tue, 05 Jul 2022 22:25:25 +0000 + zcash (5.0.0) stable; urgency=medium * 5.0.0 release. diff --git a/doc/release-notes/release-notes-5.1.0-rc1.md b/doc/release-notes/release-notes-5.1.0-rc1.md new file mode 100644 index 000000000..6c8e4f223 --- /dev/null +++ b/doc/release-notes/release-notes-5.1.0-rc1.md @@ -0,0 +1,222 @@ +Notable changes +=============== + +Faster block validation for Sapling and Orchard transactions +------------------------------------------------------------ + +Block validation in `zcashd` is a mostly single-threaded process, due to how the +chain update logic inherited from Bitcoin Core is written. However, certain more +computationally intensive checks are performed more efficiently than checking +everything individually: + +- ECDSA signatures on transparent inputs are checked via multithreading. +- RedPallas signatures on Orchard actions are checked via batch validation. + +As of this release, `zcashd` applies these techniques to more Sapling and +Orchard components: + +- RedJubjub signatures on Sapling Spends are checked via batch validation. +- Groth16 proofs for Sapling Spends and Outputs are checked via batch validation + and multithreading. +- Halo 2 proofs for Orchard Actions are checked via batch validation and + multithreading. + +This reduces worst-case block validation times for observed historic blocks by +around 80% on a Ryzen 9 5950X CPU. + +The number of threads used for checking Groth16 and Halo 2 proofs (as well as +for creating them when spending funds) can be set via the `RAYON_NUM_THREADS` +environment variable. + +Option handling +--------------- + +- A new `-preferredtxversion` argument allows the node to preferentially create + transactions of a specified version, if a transaction does not contain + components that necessitate creation with a specific version. For example, + setting `-preferredtxversion=4` will cause the node to create V4 transactions + whenever the transaction does not contain Orchard components. This can be + helpful if recipients of transactions are likely to be using legacy wallets + that have not yet been upgraded to support parsing V5 transactions. + +RPC interface +------------- + +- The `getrawtransaction` RPC method now includes details about Orchard actions + within transactions. + +Deprecated +---------- + +As of this release, the following previously deprecated features are disabled +by default, but may be be reenabled using `-allowdeprecated=`. + + - The `dumpwallet` RPC method is disabled. It may be reenabled with + `allowdeprecated=dumpwallet`. `dumpwallet` should not be used; it is + unsafe for backup purposes as it does not return any key information + for keys used to derive shielded addresses. Use `z_exportwallet` instead. + +As of this release, the following features are deprecated, but remain available +by default. These features may be disabled by setting `-allowdeprecated=none`. +After at least 3 minor-version releases, these features will be disabled by +default and the following flags to `-allowdeprecated` will be required to +permit their continued use: + + - `wallettxvjoinsplit` - controls availability of the deprecated `vjoinsplit` + attribute returned by the `gettransaction` RPC method. + +Changelog +========= + +Brian Stafford (2): + rpc: Add missing fields to getrawtransaction help text + rpc: add valueBalanceOrchard to getrawtransaction output + +Chun Kuan Lee (1): + break circular dependency: random/sync -> util -> random/sync + +Cory Fields (1): + threads: add a thread_local autoconf check + +Daira Hopwood (4): + halo2 is now under MIT/Apache-2.0, so does not need a declaration in `contrib/debian/copyright`. fixes #5203 + COPYING: Address feedback about the use of "permissive". Also refer to zcashd instead of "Zcash". + Upgrade to metrics 0.19.x and metrics-exporter-prometheus 0.10.x. + Apply cosmetic suggestions + +Jack Grigg (39): + book: Add platform support information and tier policy + lint: Fix cargo patches linter when no patches are present + Shorten thread name prefix + Name currently-unnamed threads that we can rename + book: Capitalize key words in platform tier policy + book: Add FreeBSD to tier 3 platforms list + depends: Add cxx crate to dependencies + depends: Add cxxbridge command to dependencies + build: Pass `CC` etc. flags through to `cargo build` + build: Add non-verbose output for `cargo build` + depends: Add `rust/cxx.h` header as a dependency + Migrate Equihash Rust FFI to `cxx` + Migrate BLAKE2b Rust FFI to `cxx` + depends: Vendor dependencies of native_cxxbuild + Revert "Switched sync.{cpp,h} to std threading primitives." + qa: Fix sprout_sapling_migration RPC test to handle wallet RPC change + wallet: Clear witness caches on load if reindexing + Document that `-reindex` and `-salvagewallet` both imply `-rescan` + Update orchard license with current exception text + Note dependence on BOSL in COPYING + qa: `cargo vet init` + qa: Add `crypto-reviewed` and `license-reviewed` criteria for `cargo vet` + CI: Add workflow that runs `cargo vet --locked` + qa: Add audits for the crates directly maintained by the ECC core team + book: Add section about auditing Rust dependencies + qa: Fix `qa/zcash/create_benchmark_archive.py` script + qa: Generalise `extract_benchmark_data` in `performance-measurements.sh` + bench: Support multiple trees in FakeCoinsViewDB + bench: Add `ConnectBlock` benchmark using block 1708048 + cargo vet fmt + Upgrade to `orchard 0.2.0` + Batch-validate Orchard proofs as well as Orchard signatures + test: Load the proof verification keys in Boost tests + bench: Add `ConnectBlock` benchmark using block 1723244 + Use batch validation for Sapling proofs and signatures + qa: Reformat for latest cargo-vet + qa: Postpone dependency updates + Update release notes + qa: Add native_cxxbridge and rustcxx to update checker + +Jesse Cohen (1): + Annotate AssertLockHeld() with ASSERT_CAPABILITY() for thread safety analysis + +John Newbery (1): + [logging] Comment all continuing logs. + +João Barbosa (1): + Remove unused fTry from push_lock + +Kris Nuttycombe (27): + Fix incorrect links in 5.0.0 release notes. + Fix inconsistent caplitalization in copyright notices. + scripted-diff: Update Zcash copyrights to 2022 + scripted-diff: Add 2016-2022 copyright headers for files added/modified in 2016 + scripted-diff: Add 2017-2022 copyright headers for files added/modified in 2017 + scripted-diff: Add 2018-2022 copyright headers for files added/modified in 2018 + scripted-diff: Add 2019-2022 copyright headers for files added/modified in 2019 + scripted-diff: Add 2020-2022 copyright headers for files added/modified in 2020 + scripted-diff: Add 2021-2022 copyright headers for files added/modified in 2021 + Ensure that anchor depth is > 0 when selecting an Orchard anchor. + Add configure~ to .gitignore + Return an error if attempting to use z_shieldcoinbase for Orchard shielding. + Only return active protocol components from z_gettreestate. + Revert "Only return active protocol components from z_gettreestate." + Only return `skipHash` for Orchard & Sapling roots at heights >= activation. + Add a CLI flag to preferentially send V4 tx. + Revert "Make `-reindex` and `-reindex-chainstate` imply `-rescan`" + Do not attempt to begin a rescan if reindexing. + Disable wallet commands that are unavailable in safe mode during -reindex + Guard map accesses. + Mark the `dumpwallet` RPC method as disabled. + Add a clock for testing with an offset from the system clock. + Apply suggestions from code review + Note that `gettransaction` doesn't provide shielded info in RPC help. + Deprecate the `vjoinsplit` field of `gettransaction` results. + Revert "Merge pull request #6037 from nuttycom/feature/clock_capability" + Replace "Disabled" Orchard AuthValidator with std::nullopt + +Marco Falke (3): + qa: Initialize lockstack to prevent null pointer deref + sync: Add RecursiveMutex type alias + doc: Add comment to cs_main and mempool::cs + +Matt Corallo (8): + Split CNode::cs_vSend: message processing and message sending + Make the cs_sendProcessing a LOCK instead of a TRY_LOCK + Lock cs_vSend and cs_inventory in a consistent order even in TRY + Always enforce lock strict lock ordering (try or not) + Fixup style a bit by moving { to the same line as if statements + Further-enforce lockordering by enforcing directly after TRY_LOCKs + Fix -Wthread-safety-analysis warnings. Change the sync.h primitives to std from boost. + Fix fast-shutdown hang on ThreadImport+GenesisWait + +Pieter Wuille (2): + Use a signal to continue init after genesis activation + Do diskspace check before import thread is started + +Russell Yanofsky (5): + Add unit test for DEBUG_LOCKORDER code + MOVEONLY Move AnnotatedMixin declaration + Make LOCK, LOCK2, TRY_LOCK work with CWaitableCriticalSection + Use LOCK macros for non-recursive locks + scripted-diff: Small locking rename + +Sean Bowe (8): + Fix "transparent" example that should be "p2pkh" + Make shielded requirements error "debug" level rather than an error. + Introduce new Sapling verification API via cxx and switch consensus rules to use the new API. + Enable ZIP 216 for blocks prior to NU5 activation + Remove the old Sapling verification FFI APIs. + cargo fmt + Address clippy lints. + Update minimum chain work and set NU5 activation block hash for mainnet + +Thomas Snider (1): + Switched sync.{cpp,h} to std threading primitives. + +Marshall Gaucher (2): + add rpc parallel test group logic + Update walletbackup.py + +practicalswift (3): + Remove unused code + Use -Wthread-safety-analysis if available (+ -Werror=thread-safety-analysis if --enable-werror) + Fix typos + +sasha (2): + make-release.py: Versioning changes for 5.1.0-rc1. + make-release.py: Updated manpages for 5.1.0-rc1. + +Ying Tong Lai (3): + Add orchard_bundle FFI. + Use orchard_bundle ffi in getrawtransaction. + Test getrawtransaction in wallet_orchard.py +