From 0c59fd9a20dc0c9382342eb38e84b9e22c630567 Mon Sep 17 00:00:00 2001 From: Kris Nuttycombe Date: Thu, 5 May 2022 07:43:08 -0600 Subject: [PATCH 01/20] Add z_get(total)balance to deprecation flags. --- doc/book/src/user/deprecation.md | 2 ++ doc/release-notes.md | 2 ++ src/deprecation.cpp | 4 ++++ src/deprecation.h | 4 ++++ src/wallet/rpcwallet.cpp | 16 +++++++++++++++- 5 files changed, 27 insertions(+), 1 deletion(-) diff --git a/doc/book/src/user/deprecation.md b/doc/book/src/user/deprecation.md index 12bd7f2b4..3ecffd74c 100644 --- a/doc/book/src/user/deprecation.md +++ b/doc/book/src/user/deprecation.md @@ -45,6 +45,8 @@ default as of release 5.3.0. conform to the `FullPrivacy` directive in all cases instead of just for transactions involving unified addresses. - `getnewaddress` - The `getnewaddress` RPC method is deprecated. + - `z_getbalance` - The `z_getbalance` RPC method is deprecated. + - `z_gettotalbalance` - The `z_gettotalbalance` RPC method is deprecated. - `z_getnewaddress` - The `z_getnewaddress` RPC method is deprecated. - `addrtype` - The `type` attribute is deprecated in the results of RPC methods that return address metadata. It is recommended that applications diff --git a/doc/release-notes.md b/doc/release-notes.md index 951b77e15..3253717f6 100644 --- a/doc/release-notes.md +++ b/doc/release-notes.md @@ -37,6 +37,8 @@ be required to permit their continued use: conform to the `FullPrivacy` directive (introduced in 4.7.0) in all cases instead of just for transactions involving unified addresses. - `getnewaddress` - controls availability of the `getnewaddress` RPC method. + - `z_getbalance` - controls availability of the `z_getbalance` RPC method. + - `z_gettotalbalance` - controls availability of the `z_gettotalbalance` RPC method. - `z_getnewaddress` - controls availability of the `z_getnewaddress` RPC method. - `addrtype` - controls availability of the deprecated `type` attribute returned by RPC methods that return address metadata. diff --git a/src/deprecation.cpp b/src/deprecation.cpp index bd8ec28ce..fbc6e82bb 100644 --- a/src/deprecation.cpp +++ b/src/deprecation.cpp @@ -15,6 +15,8 @@ #ifdef ENABLE_WALLET bool fEnableGetNewAddress = true; bool fEnableZGetNewAddress = true; +bool fEnableZGetBalance = true; +bool fEnableZGetTotalBalance = true; bool fEnableLegacyPrivacyStrategy = true; bool fEnableZCRawReceive = true; bool fEnableZCRawJoinSplit = true; @@ -93,6 +95,8 @@ std::optional SetAllowedDeprecatedFeaturesFromCLIArgs() { fEnableLegacyPrivacyStrategy = allowdeprecated.count("legacy_privacy") > 0; fEnableGetNewAddress = allowdeprecated.count("getnewaddress") > 0; fEnableZGetNewAddress = allowdeprecated.count("z_getnewaddress") > 0; + fEnableZGetBalance = allowdeprecated.count("z_getbalance") > 0; + fEnableZGetTotalBalance = allowdeprecated.count("z_gettotalbalance") > 0; fEnableZCRawReceive = allowdeprecated.count("zcrawreceive") > 0; fEnableZCRawJoinSplit = allowdeprecated.count("zcrawjoinsplit") > 0; fEnableZCRawKeygen = allowdeprecated.count("zcrawkeygen") > 0; diff --git a/src/deprecation.h b/src/deprecation.h index a28d37f73..2f8b1a666 100644 --- a/src/deprecation.h +++ b/src/deprecation.h @@ -29,6 +29,8 @@ static const std::set DEFAULT_ALLOW_DEPRECATED{{ "legacy_privacy", "getnewaddress", "z_getnewaddress", + "z_getbalance", + "z_gettotalbalance", "addrtype" #endif }}; @@ -44,6 +46,8 @@ static const std::set DEFAULT_DENY_DEPRECATED{{ #ifdef ENABLE_WALLET extern bool fEnableGetNewAddress; extern bool fEnableZGetNewAddress; +extern bool fEnableZGetBalance; +extern bool fEnableZGetTotalBalance; extern bool fEnableLegacyPrivacyStrategy; extern bool fEnableZCRawReceive; extern bool fEnableZCRawJoinSplit; diff --git a/src/wallet/rpcwallet.cpp b/src/wallet/rpcwallet.cpp index faea46efc..3bb204584 100644 --- a/src/wallet/rpcwallet.cpp +++ b/src/wallet/rpcwallet.cpp @@ -3990,10 +3990,17 @@ UniValue z_getbalance(const UniValue& params, bool fHelp) if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; + if (!fEnableZGetBalance) + throw runtime_error( + "z_getbalance is DEPRECATED and will be removed in a future release\n\n" + "Use z_getbalanceforaccount instead, or restart with `-allowdeprecated=z_getbalance`\n" + "if you require backward compatibility.\n" + "See https://zcash.github.io/zcash/user/deprecation.html for more information."); + if (fHelp || params.size() == 0 || params.size() > 3) throw runtime_error( "z_getbalance \"address\" ( minconf inZat )\n" - "\nDEPRECATED; please use z_getbalanceforviewingkey instead.`\n" + "\nDEPRECATED; please use z_getbalanceforviewingkey or z_getbalanceforaccount instead.`\n" "\nReturns the balance of a taddr or zaddr belonging to the node's wallet.\n" "\nCAUTION: If the wallet has only an incoming viewing key for this address, then spends cannot be" "\ndetected, and so the returned balance may be larger than the actual balance." @@ -4292,6 +4299,13 @@ UniValue z_gettotalbalance(const UniValue& params, bool fHelp) if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; + if (!fEnableZGetTotalBalance) + throw runtime_error( + "z_gettotalbalance is DEPRECATED and will be removed in a future release\n\n" + "Use z_getbalanceforaccount instead, or restart with `-allowdeprecated=z_gettotalbalance`\n" + "if you require backward compatibility.\n" + "See https://zcash.github.io/zcash/user/deprecation.html for more information."); + if (fHelp || params.size() > 2) throw runtime_error( "z_gettotalbalance ( minconf includeWatchonly )\n" From 580bbc0b35323dbf4d1fdc0c7e12a85ef94155ae Mon Sep 17 00:00:00 2001 From: Kris Nuttycombe Date: Mon, 9 May 2022 08:52:59 -0600 Subject: [PATCH 02/20] Postpone dependency updates prior to v5.0.0-rc1 --- qa/zcash/postponed-updates.txt | 40 +++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/qa/zcash/postponed-updates.txt b/qa/zcash/postponed-updates.txt index af222d4e2..423e1c2f7 100644 --- a/qa/zcash/postponed-updates.txt +++ b/qa/zcash/postponed-updates.txt @@ -5,28 +5,32 @@ # # Ccache 4.0 requires adding CMake to the depends system. -native_ccache 4.0 2022-05-01 -native_ccache 4.1 2022-05-01 -native_ccache 4.2 2022-05-01 -native_ccache 4.2.1 2022-05-01 -native_ccache 4.3 2022-05-01 -native_ccache 4.4 2022-05-01 -native_ccache 4.4.1 2022-05-01 -native_ccache 4.4.2 2022-05-01 -native_ccache 4.5 2022-05-01 -native_ccache 4.5.1 2022-05-01 -native_ccache 4.6 2022-05-01 +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 # Clang and Rust are currently pinned to LLVM 13 -native_clang 14.0.0 2022-05-01 -native_clang 14.0.1 2022-05-01 -libcxx 14.0.0 2022-05-01 -libcxx 14.0.1 2022-05-01 -native_rust 1.60.0 2022-05-01 +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 # 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-05-01 -googletest 1.11.0 2022-05-01 +googletest 1.10.0 2022-06-01 +googletest 1.11.0 2022-06-01 From 9fe516576fdf6cc4b8d6cf9edaf155f7f033a9db Mon Sep 17 00:00:00 2001 From: Kris Nuttycombe Date: Mon, 9 May 2022 09:11:05 -0600 Subject: [PATCH 03/20] Set RELEASE_TO_DEPRECATION_WEEKS to 2 weeks to provide RC EOS halt. --- src/deprecation.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/deprecation.h b/src/deprecation.h index a28d37f73..c72837c7d 100644 --- a/src/deprecation.h +++ b/src/deprecation.h @@ -11,7 +11,7 @@ // 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 = 1540976; -static const int RELEASE_TO_DEPRECATION_WEEKS = 16; +static const int RELEASE_TO_DEPRECATION_WEEKS = 2; 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."); static const int ACTIVATION_TO_DEPRECATION_BLOCKS = (RELEASE_TO_DEPRECATION_WEEKS * 7 * 24 * EXPECTED_BLOCKS_PER_HOUR); From 731df21da775cda53cb3f7e243e76e41d2bb64e7 Mon Sep 17 00:00:00 2001 From: Kris Nuttycombe Date: Mon, 9 May 2022 09:12:46 -0600 Subject: [PATCH 04/20] Fix a typo in the release script. --- doc/release-process.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/release-process.md b/doc/release-process.md index d4fc3bd1a..90506e8ef 100644 --- a/doc/release-process.md +++ b/doc/release-process.md @@ -97,7 +97,7 @@ Having identified the commit from which the release will be made, the release manager constructs the release stabilization branch as follows: $ git checkout -b version-X.Y.0 - $ git push 'git@github.com:zcash/zcash' $(git rev-parse --abrev-ref HEAD) + $ git push 'git@github.com:zcash/zcash' $(git rev-parse --abbrev-ref HEAD) ### Create the release candidate branch From a51cbfc78c6624774e115541797668c6bb2e72d7 Mon Sep 17 00:00:00 2001 From: Jack Grigg Date: Mon, 9 May 2022 15:29:29 +0000 Subject: [PATCH 05/20] make-release.py: Versioning changes for 5.0.0-rc1. --- README.md | 2 +- configure.ac | 6 +++--- contrib/gitian-descriptors/gitian-linux.yml | 2 +- src/clientversion.h | 6 +++--- src/deprecation.h | 2 +- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index c42618fa0..74fdf934b 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -Zcash 4.7.0 +Zcash 5.0.0-rc1 =========== diff --git a/configure.ac b/configure.ac index f7b1821a1..15117d4a5 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, 7) +define(_CLIENT_VERSION_MAJOR, 5) +define(_CLIENT_VERSION_MINOR, 0) 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 a75184caa..679d4de9a 100644 --- a/contrib/gitian-descriptors/gitian-linux.yml +++ b/contrib/gitian-descriptors/gitian-linux.yml @@ -1,5 +1,5 @@ --- -name: "zcash-4.7.0" +name: "zcash-5.0.0-rc1" enable_cache: true distro: "debian" suites: diff --git a/src/clientversion.h b/src/clientversion.h index 651cccc92..5f03033f2 100644 --- a/src/clientversion.h +++ b/src/clientversion.h @@ -15,10 +15,10 @@ */ //! 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 7 +#define CLIENT_VERSION_MAJOR 5 +#define CLIENT_VERSION_MINOR 0 #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 c72837c7d..08f123dc2 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 = 1540976; +static const int APPROX_RELEASE_HEIGHT = 1661960; static const int RELEASE_TO_DEPRECATION_WEEKS = 2; 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 f41ccaf244cc09d679888fa216a5b45185597d51 Mon Sep 17 00:00:00 2001 From: Kris Nuttycombe Date: Mon, 9 May 2022 09:30:02 -0600 Subject: [PATCH 06/20] Fix typos in release notes & Orchard wallet internal API doc. --- doc/release-notes.md | 2 +- src/rust/src/wallet.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/release-notes.md b/doc/release-notes.md index 2b47c198e..b714b9c88 100644 --- a/doc/release-notes.md +++ b/doc/release-notes.md @@ -72,7 +72,7 @@ RPC Interface ------------- - The default `minconf` value for `z_sendmany` is now 10 confirmations instead - of 1. If `minconf` and specifies a value less than that provided for + of 1. If `minconf` specifies a value less than that provided for `-anchorconfirmations`, it will also override that value as it is not possible to spend notes that are more recent than the anchor. Selecting `minconf` values less than 3 is not recommended, as it allows the transaction diff --git a/src/rust/src/wallet.rs b/src/rust/src/wallet.rs index 6fd693b2a..25d2d6fb5 100644 --- a/src/rust/src/wallet.rs +++ b/src/rust/src/wallet.rs @@ -688,7 +688,7 @@ impl Wallet { .collect() } - /// Returns the note of the Orchard note commitment tree, as of the specified checkpoint + /// Returns the root of the Orchard note commitment tree, as of the specified checkpoint /// depth. A depth of 0 corresponds to the chain tip. pub fn note_commitment_tree_root(&self, checkpoint_depth: usize) -> Option { self.witness_tree.root(checkpoint_depth) From e7f04c174191cfe25825c434531b8eb170819c01 Mon Sep 17 00:00:00 2001 From: Jack Grigg Date: Mon, 9 May 2022 15:35:33 +0000 Subject: [PATCH 07/20] make-release.py: Updated manpages for 5.0.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 | 27 ++++++++++++++++++++++----- 4 files changed, 33 insertions(+), 16 deletions(-) diff --git a/doc/man/zcash-cli.1 b/doc/man/zcash-cli.1 index 74673bb0e..78040192b 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.48.4. -.TH ZCASH-CLI "1" "April 2022" "zcash-cli v4.7.0" "User Commands" +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.13. +.TH ZCASH-CLI "1" "May 2022" "zcash-cli v5.0.0-rc1" "User Commands" .SH NAME -zcash-cli \- manual page for zcash-cli v4.7.0 +zcash-cli \- manual page for zcash-cli v5.0.0-rc1 .SH DESCRIPTION -Zcash RPC client version v4.7.0 +Zcash RPC client version v5.0.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 87c5fbb5f..4789560a7 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.48.4. -.TH ZCASH-TX "1" "April 2022" "zcash-tx v4.7.0" "User Commands" +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.13. +.TH ZCASH-TX "1" "May 2022" "zcash-tx v5.0.0-rc1" "User Commands" .SH NAME -zcash-tx \- manual page for zcash-tx v4.7.0 +zcash-tx \- manual page for zcash-tx v5.0.0-rc1 .SH DESCRIPTION -Zcash zcash\-tx utility version v4.7.0 +Zcash zcash\-tx utility version v5.0.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 c1fbef379..94ed946fd 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.48.4. -.TH ZCASHD-WALLET-TOOL "1" "April 2022" "zcashd-wallet-tool v4.7.0" "User Commands" +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.13. +.TH ZCASHD-WALLET-TOOL "1" "May 2022" "zcashd-wallet-tool v5.0.0-rc1" "User Commands" .SH NAME -zcashd-wallet-tool \- manual page for zcashd-wallet-tool v4.7.0 +zcashd-wallet-tool \- manual page for zcashd-wallet-tool v5.0.0-rc1 .SH SYNOPSIS .B zcashd-wallet-tool [\fI\,OPTIONS\/\fR] diff --git a/doc/man/zcashd.1 b/doc/man/zcashd.1 index 26339ddbd..9844c6f2f 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.48.4. -.TH ZCASHD "1" "April 2022" "zcashd v4.7.0" "User Commands" +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.47.13. +.TH ZCASHD "1" "May 2022" "zcashd v5.0.0-rc1" "User Commands" .SH NAME -zcashd \- manual page for zcashd v4.7.0 +zcashd \- manual page for zcashd v5.0.0-rc1 .SH DESCRIPTION -Zcash Daemon version v4.7.0 +Zcash Daemon version v5.0.0\-rc1 .PP In order to ensure you are adequately protecting your privacy when using Zcash, please see . @@ -26,6 +26,14 @@ Receive and display P2P network alerts (default: 1) Execute command when a relevant alert is received or we see a really long fork (%s in cmd is replaced by message) .HP +\fB\-allowdeprecated=\fR +.IP +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", +"legacy_privacy", "z_getnewaddress", "zcrawjoinsplit", "zcrawkeygen", +"zcrawreceive"} +.HP \fB\-blocknotify=\fR .IP Execute command when the best block changes (%s in cmd is replaced by @@ -101,11 +109,14 @@ for block files) .HP \fB\-reindex\-chainstate\fR .IP -Rebuild chain state from the currently indexed blocks +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 .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) .HP \fB\-sysperms\fR .IP @@ -298,6 +309,11 @@ Set the Sapling migration address Fees (in ZEC/kB) smaller than this are considered zero fee for transaction creation (default: 0.00001) .HP +\fB\-orchardactionlimit=\fR +.IP +Set the maximum number of Orchard actions permitted in a transaction +(default 50) +.HP \fB\-paytxfee=\fR .IP Fee (in ZEC/kB) to add to transactions you send (default: 0.00) @@ -309,6 +325,7 @@ Rescan the block chain for missing wallet transactions on startup \fB\-salvagewallet\fR .IP Attempt to recover private keys from a corrupt wallet on startup +(implies \fB\-rescan\fR) .HP \fB\-sendfreetransactions\fR .IP From 64ccad1a89f3d001abfcdf860a03cd9971f12395 Mon Sep 17 00:00:00 2001 From: Jack Grigg Date: Mon, 9 May 2022 15:35:33 +0000 Subject: [PATCH 08/20] make-release.py: Updated release notes and changelog for 5.0.0-rc1. --- contrib/debian/changelog | 6 + doc/release-notes/release-notes-5.0.0-rc1.md | 215 +++++++++++++++++++ 2 files changed, 221 insertions(+) create mode 100644 doc/release-notes/release-notes-5.0.0-rc1.md diff --git a/contrib/debian/changelog b/contrib/debian/changelog index fb23bc9c9..bcacae8b2 100644 --- a/contrib/debian/changelog +++ b/contrib/debian/changelog @@ -1,3 +1,9 @@ +zcash (5.0.0~rc1) stable; urgency=medium + + * 5.0.0-rc1 release. + + -- Electric Coin Company Mon, 09 May 2022 15:35:33 +0000 + zcash (4.7.0) stable; urgency=medium * 4.7.0 release. diff --git a/doc/release-notes/release-notes-5.0.0-rc1.md b/doc/release-notes/release-notes-5.0.0-rc1.md new file mode 100644 index 000000000..df92993b5 --- /dev/null +++ b/doc/release-notes/release-notes-5.0.0-rc1.md @@ -0,0 +1,215 @@ +Notable changes +=============== + +Feature Deprecation and removal +------------------------------- + +`zcashd` now has a [process](https://zcash.github.io/zcash/user/deprecation.html) +for how features of the public API may be deprecated and removed. Feature +deprecation follows a series of steps whereby, over a series of releases, +features first remain enabled by default (but may be explicitly disabled), then +switch to being disabled by default, and eventually are removed entirely. + +A new string-valued option, `-allowdeprecated` has been introduced to allow a +user to explicitly manage the availability of deprecated `zcashd` features. This +flag makes it possible for users to reenable deprecated methods and features +api that are currently disabled by default, or alternately to explicitly +disable all deprecated features if they so choose. Multiple instances of this +argument may be provided. A user may disable deprecated features entirely +by providing the string `none` as the argument to this parameter. In the case +that `none` is specified, multiple invocations of `-allowdeprecated` are not +permitted. + +Deprecated +---------- + +As of this release, the following features are deprecated, but remain +available by default. These features may be disabled by setting +`-allowdeprecated=none`. After release 5.3.0, these features will be +disabled by default and the following flags to `-allowdeprecated` will +be required to permit their continued use: + + - `legacy_privacy` - the default "legacy" privacy policy for z_sendmany + is deprecated. When disabled, the default behavior of z_sendmany will + conform to the `FullPrivacy` directive (introduced in 4.7.0) in all cases + instead of just for transactions involving unified addresses. + - `getnewaddress` - controls availability of the `getnewaddress` RPC method. + - `z_getnewaddress` - controls availability of the `z_getnewaddress` RPC method. + - `addrtype` - controls availability of the deprecated `type` attribute + returned by RPC methods that return address metadata. + +As of this release, the following previously deprecated features are disabled +by default, but may be be reenabled using `-allowdeprecated=`. + + - The `zcrawreceive` RPC method is disabled. It may be reenabled with + `allowdeprecated=zcrawreceive` + - The `zcrawjoinsplit` RPC method is disabled. It may be reenabled with + `allowdeprecated=zcrawjoinsplit` + - The `zcrawkeygen` RPC method is disabled. It may be reenabled with + `allowdeprecated=zcrawkeygen` + +Option handling +--------------- + +- The `-reindex` and `-reindex-chainstate` options now imply `-rescan` + (provided that the wallet is enabled and pruning is disabled, and unless + `-rescan=0` is specified explicitly). +- A new `-anchorconfirmations` argument has been added to allow the user + to specify the number of blocks back from the chain tip that anchors will be + selected from when spending notes. By default, anchors will now be selected + to have 3 confirmations. Values greater than 100 are not supported. +- A new `-orchardactionlimit` option has been added to allow the user to + override the default maximum of 50 Orchard actions per transaction. + Transactions that contain large numbers of Orchard actions can use + large amounts of memory for proving, so the 50-action default limit is + imposed to guard against memory exhaustion. Systems with more than 16G + of memory can safely set this parameter to allow 200 actions or more. + +RPC Interface +------------- + +- The default `minconf` value for `z_sendmany` is now 10 confirmations instead + of 1. If `minconf` and specifies a value less than that provided for + `-anchorconfirmations`, it will also override that value as it is not + possible to spend notes that are more recent than the anchor. Selecting + `minconf` values less than 3 is not recommended, as it allows the transaction + to be distinguished from transactions using the default for + `-anchorconfirmations`. + +RPC Changes +----------- + +- The deprecated `zcrawkeygen`, `zcrawreceive`, and `zcrawjoinsplit` RPC + methods are now disabled by default. Use `-allowdeprecated=` + to select individual features if you wish to continue using these APIs. + +Build system +------------ + +- `zcutil/build.sh` now automatically runs `zcutil/clean.sh` to remove + files created by previous builds. We previously recommended to do this + manually. + +Dependencies +------------ + +- The `boost` and `native_b2` dependencies have been updated to version 1.79.0 + +Tests +----- + +- The environment variable that allows users of the rpc (Python) tests to + override the default path to the `zcashd` executable has been changed + from `BITCOIND` to `ZCASHD`. + +Changelog +========= + +Alex Wied (1): + Cargo.toml: Rename hdwallet source + +Charlie O'Keefe (1): + Use bullseye apt source in Dockerfile to match debian:11 base image + +Daira Hopwood (9): + Fix to 4.7.0 release notes: testnet nodes that upgrade prior to height 1,842,420 actually still need to run with -reindex and -rescan. + zcutil/build.sh: Run zcutil/clean.sh before building. fixes #3625 + Make `-reindex` and `-reindex-chainstate` imply `-rescan` (provided that the wallet is enabled and pruning is disabled, and unless `-rescan=0` is specified explicitly). + zcutil/build-debian-package.sh: copy executable and man page for zcashd-wallet-tool. + zcashd-wallet-tool: improve the error message for an invalid logging filter directive. + Change the numbering convention for hotfixes to increment the patch number, not the hyphen number. fixes #4364 + Rename nOrchardAnchorConfirmations -> nAnchorConfirmations + Select an anchor and notes that have 10 confirmations. + Fix WalletTests.CachedWitnessesEmptyChain for new anchor selection. + +Dimitris Apostolou (1): + Fix typo + +Jack Grigg (3): + Update minimum chain work and set NU5 activation block hash for testnet + make-release.py: Versioning changes for 5.0.0-rc1. + make-release.py: Updated manpages for 5.0.0-rc1. + +Kris Nuttycombe (30): + Update boost dependencies to version 1.79.0 + Default to error logging if we can't parse the log filter. + Fix boolean initialization in Orchard transaction builder. + Use fallible version parsing for tags. + Allow deprecated wallet features to be preemptively disabled. + Remove zcrawreceive, zcrawjoinsplit, zcrawkeygen from default-allowed deprecated methods. + Add deprecation policy to the zcashd book. + Use ERROR level logging for fatal errors in main/init + Remove `-allowdeprecated=all` + Clarify documentation of the deprecation process. + Select Orchard anchors at `-orchardanchorconfirmations` depth. + Add anchor depth parameter to Get*NoteWitnesses + Disallow -anchorconfirmations values > 100 + Add -anchorconfirmations to the release notes + Fix RPC tests that depend upon -anchorconfirmations=1 + Apply suggestions from code review + Gracefully handle Get(Sprout/Sapling)NoteWitnesses failure. + Add parity-scale-codec licenses to contrib/debian/copyright + Ensure transaction integer fields are zero-initialized. + Build releases from a commit hash, rather than a named branch. + Apply suggestions from code review + Update release process documentation to clarify the use of release stabilization branches. + Fix missing handling for imported transparent multisig addresses. + Change default anchor depth from 10 confirmations to 3 + Use default anchor confirmations for minconf in z_mergetoaddress. + Add -orchardactionlimit parameter to guard against memory exhaustion. + Add -orchardactionlimit help text. + Postpone dependency updates prior to v5.0.0-rc1 + Set RELEASE_TO_DEPRECATION_WEEKS to 2 weeks to provide RC EOS halt. + Fix a typo in the release script. + +Larry Ruane (2): + Allow rpc python tests to be run standalone + ThreadStartWalletNotifier: wait until !IBD, rather than !reindex + +Marek (2): + Document the block time in the `z_gettreestate` RPC response + Specify the format and epoch + +Steven Smith (2): + Add orchard pool metrics + Require wallet recovery phrase to be backed up for z_getnewaccount and z_getaddressforaccount + +Taylor Hornby (1): + Reproduce an assertion failure in the listaddresses RPC + +dependabot[bot] (1): + Bump actions/checkout from 2 to 3 + +sasha (28): + Move LoadProofParameters to gtest/utils.cpp + add tx-orchard-duplicate-nullifiers.h to Makefile.gtest.include + Closing #1539 simplifies gtest Makefile. + remove JoinSplitTestingSetup from sighash_tests -- it doesn't need it + Make a LoadGlobalWallet and UnloadGlobalWallet for gtests + Remove proof parameter loading from btests + Separate test suite from tests, inspired by upstream's #12926 + Allow parallel btest runs using make as the parallelization tool. + btest parallelization work: tag #if'd out test suites + Port btest test_basic_joinsplit_verification to gtest suite Joinsplit + Create a new gtest group WalletRPCTests + Port btest rpc_z_shieldcoinbase_internals to gtest suite WalletRPCTests + Port btest rpc_z_mergetoaddress_internals to gtest suite WalletRPCTests + Port btest rpc_z_sendmany_taddr_to_sapling to gtest suite WalletRPCTests + Downgrade btest suite coins_test to BasicTestingSetup + Make [seed_]insecure_rand available to the gtests + Create a new gtest suite CoinsTests + Port CCoinsViewTest to gtest suite CoinsTests + Port nullifier_regression_test to gtest suite CoinsTests + Port anchor_pop_regression_test to gtest suite CoinsTests + Port anchor_regression_test to gtest suite CoinsTests + Port nullifiers_test to gtest suite CoinsTests + Port anchors_flush_test to gtest suite CoinsTests + Port anchors_test to gtest suite CoinsTests + Update copyright header + Update comments in newly-ported gtests to be more consistent with current codebase + Tidy up spacing in newly-ported gtests + Remove -developersapling since it hasn't been implemented for a long time + +teor (1): + Fix typo in getaddressbalance RPC help + From 75055882d4f10f233c747ad721afc985ffec51a0 Mon Sep 17 00:00:00 2001 From: Kris Nuttycombe Date: Mon, 9 May 2022 10:13:39 -0600 Subject: [PATCH 09/20] Add missing parenthesis to -reindex help. --- src/init.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/init.cpp b/src/init.cpp index c04d1fb97..a18306586 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -363,7 +363,7 @@ std::string HelpMessage(HelpMessageMode mode) "Warning: Reverting this setting requires re-downloading the entire blockchain. " "(default: 0 = disable pruning blocks, >%u = target size in MiB to use for block files)"), MIN_DISK_SPACE_FOR_BLOCK_FILES / 1024 / 1024)); #ifdef ENABLE_WALLET - strUsage += HelpMessageOpt("-reindex-chainstate", _("Rebuild chain state from the currently indexed blocks (implies -rescan unless pruning or unless -rescan=0 is explicitly specified")); + strUsage += HelpMessageOpt("-reindex-chainstate", _("Rebuild chain state from the currently indexed blocks (implies -rescan unless pruning or unless -rescan=0 is explicitly specified)")); strUsage += HelpMessageOpt("-reindex", _("Rebuild chain state and block index from the blk*.dat files on disk (implies -rescan unless pruning or unless -rescan=0 is explicitly specified)")); #else strUsage += HelpMessageOpt("-reindex-chainstate", _("Rebuild chain state from the currently indexed blocks")); From 8f2c15cf6f2bdd979e049d9e184fb7a1b9d24a07 Mon Sep 17 00:00:00 2001 From: Kris Nuttycombe Date: Mon, 9 May 2022 10:27:34 -0600 Subject: [PATCH 10/20] Include getbalance in recommendations for z_getbalance and z_gettotalbalance replacements. Co-authored-by: str4d --- src/wallet/rpcwallet.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/wallet/rpcwallet.cpp b/src/wallet/rpcwallet.cpp index 3bb204584..74c918173 100644 --- a/src/wallet/rpcwallet.cpp +++ b/src/wallet/rpcwallet.cpp @@ -3993,14 +3993,16 @@ UniValue z_getbalance(const UniValue& params, bool fHelp) if (!fEnableZGetBalance) throw runtime_error( "z_getbalance is DEPRECATED and will be removed in a future release\n\n" - "Use z_getbalanceforaccount instead, or restart with `-allowdeprecated=z_getbalance`\n" + "Use z_getbalanceforaccount, z_getbalanceforviewingkey, or getbalance (for\n" + "legacy transparent balance) instead, or restart with `-allowdeprecated=z_getbalance`\n" "if you require backward compatibility.\n" "See https://zcash.github.io/zcash/user/deprecation.html for more information."); if (fHelp || params.size() == 0 || params.size() > 3) throw runtime_error( "z_getbalance \"address\" ( minconf inZat )\n" - "\nDEPRECATED; please use z_getbalanceforviewingkey or z_getbalanceforaccount instead.`\n" + "\nDEPRECATED; please use z_getbalanceforaccount, z_getbalanceforviewingkey,\n" + "or getbalance (for legacy transparent balance) instead.\n" "\nReturns the balance of a taddr or zaddr belonging to the node's wallet.\n" "\nCAUTION: If the wallet has only an incoming viewing key for this address, then spends cannot be" "\ndetected, and so the returned balance may be larger than the actual balance." @@ -4302,14 +4304,14 @@ UniValue z_gettotalbalance(const UniValue& params, bool fHelp) if (!fEnableZGetTotalBalance) throw runtime_error( "z_gettotalbalance is DEPRECATED and will be removed in a future release\n\n" - "Use z_getbalanceforaccount instead, or restart with `-allowdeprecated=z_gettotalbalance`\n" - "if you require backward compatibility.\n" + "Use z_getbalanceforaccount, or getbalance (for legacy transparent balance) instead, or\n" + "restart with `-allowdeprecated=z_gettotalbalance if you require backward compatibility.\n" "See https://zcash.github.io/zcash/user/deprecation.html for more information."); if (fHelp || params.size() > 2) throw runtime_error( "z_gettotalbalance ( minconf includeWatchonly )\n" - "\nDEPRECATED. Please use the z_getbalanceforaccount RPC instead.\n" + "\nDEPRECATED. Please use z_getbalanceforaccount or getbalance (for legacy transparent balance) instead.\n" "\nReturn the total value of funds stored in the node's wallet.\n" "\nCAUTION: If the wallet contains any addresses for which it only has incoming viewing keys," "\nthe returned private balance may be larger than the actual balance, because spends cannot" From 1b8a9af946835d50056868673bad0d4d64e95e7b Mon Sep 17 00:00:00 2001 From: Kris Nuttycombe Date: Mon, 9 May 2022 20:17:23 -0600 Subject: [PATCH 11/20] Add tests to check auth data commitments committing to Orchard actions. In the process of adding these tests, I also found and fixed a number of type errors in Orchard auth data root computation. Fixes #5223 --- qa/rpc-tests/getblocktemplate.py | 34 ++++++++++++++-- qa/rpc-tests/test_framework/blocktools.py | 1 + qa/rpc-tests/test_framework/mininode.py | 47 +++++++++++++---------- qa/rpc-tests/test_framework/zip244.py | 6 +-- 4 files changed, 61 insertions(+), 27 deletions(-) diff --git a/qa/rpc-tests/getblocktemplate.py b/qa/rpc-tests/getblocktemplate.py index 3eb70a509..ac2240b67 100755 --- a/qa/rpc-tests/getblocktemplate.py +++ b/qa/rpc-tests/getblocktemplate.py @@ -10,6 +10,7 @@ from test_framework.util import ( assert_equal, CANOPY_BRANCH_ID, NU5_BRANCH_ID, + get_coinbase_address, hex_str_to_bytes, nuparams, nustr, @@ -18,7 +19,6 @@ from test_framework.util import ( ) from test_framework.mininode import ( CTransaction, - uint256_from_str, ) from test_framework.blocktools import ( create_block @@ -49,7 +49,13 @@ class GetBlockTemplateTest(BitcoinTestFramework): node = self.node # sprout to transparent (v4) recipients = [{"address": self.transparent_addr, "amount": Decimal('0.1')}] - myopid = node.z_sendmany(self.sprout_addr, recipients) + myopid = node.z_sendmany(self.sprout_addr, recipients, 1) + wait_and_assert_operationid_status(node, myopid) + + def add_nu5_v5_tx_to_mempool(self): + node = self.node + recipients = [{"address": self.unified_addr, "amount": Decimal('9.99999')}] + myopid = node.z_sendmany(get_coinbase_address(node), recipients, 1, Decimal('0.00001'), 'AllowRevealedSenders') wait_and_assert_operationid_status(node, myopid) def add_transparent_tx_to_mempool(self): @@ -97,6 +103,7 @@ class GetBlockTemplateTest(BitcoinTestFramework): tx = CTransaction() tx.deserialize(f) tx.calc_sha256() + assert_equal(tx.hash, gbt_tx['hash']) assert_equal(tx.auth_digest_hex, node.getrawtransaction(tx.hash, 1)['authdigest']) block.vtx.append(tx) block.hashMerkleRoot = int(gbt['defaultroots']['merkleroot'], 16) @@ -104,7 +111,8 @@ class GetBlockTemplateTest(BitcoinTestFramework): assert_equal(len(block.vtx), len(gbt['transactions']) + 1, "number of transactions") assert_equal(block.hashPrevBlock, int(gbt['previousblockhash'], 16), "prevhash") if nu5_active: - assert_equal(uint256_from_str(block.calc_auth_data_root()), int(gbt['defaultroots']['authdataroot'], 16)) + block.hashAuthDataRoot = int(gbt['defaultroots']['authdataroot'], 16) + assert_equal(block.hashAuthDataRoot, block.calc_auth_data_root(), "authdataroot") else: assert 'authdataroot' not in gbt['defaultroots'] block.solve() @@ -131,6 +139,8 @@ class GetBlockTemplateTest(BitcoinTestFramework): wait_and_assert_operationid_status(node, myopid) self.transparent_addr = node.getnewaddress() + account = node.z_getnewaccount()['account'] + self.unified_addr = node.z_getaddressforaccount(account)['address'] node.generate(15) # at height 120, NU5 is not active @@ -176,13 +186,29 @@ class GetBlockTemplateTest(BitcoinTestFramework): self.add_transparent_tx_to_mempool() self.gbt_submitblock(True) - # Adding both v4 and v5 to cover legacy auth digest. + # Adding both v4 and v5 to cover legacy auth digest (without full auth digest subtree). + print("- both v4 and v5 transactions (plus coinbase)") + self.add_nu5_v4_tx_to_mempool() + self.add_transparent_tx_to_mempool() + self.gbt_submitblock(True) + + # Adding both v4 and v5 to cover legacy auth digest (with full auth digest subtree). print("- both v4 and v5 transactions (plus coinbase)") self.add_nu5_v4_tx_to_mempool() self.add_transparent_tx_to_mempool() self.add_transparent_tx_to_mempool() self.gbt_submitblock(True) + print("- block with 6 Orchard transactions (plus coinbase)") + for i in range(0, 6): + print(str(node.z_getbalance(self.transparent_addr))) + self.add_nu5_v5_tx_to_mempool() + self.gbt_submitblock(True) + + print("- block with 7 Orchard transactions (plus coinbase)") + for i in range(0, 7): + self.add_nu5_v5_tx_to_mempool() + self.gbt_submitblock(True) if __name__ == '__main__': GetBlockTemplateTest().main() diff --git a/qa/rpc-tests/test_framework/blocktools.py b/qa/rpc-tests/test_framework/blocktools.py index 53a2512ca..107075aca 100644 --- a/qa/rpc-tests/test_framework/blocktools.py +++ b/qa/rpc-tests/test_framework/blocktools.py @@ -28,6 +28,7 @@ def create_block(hashprev, coinbase, nTime=None, nBits=None, hashFinalSaplingRoo block.nBits = nBits block.vtx.append(coinbase) block.hashMerkleRoot = block.calc_merkle_root() + block.hashAuthDataRoot = block.calc_auth_data_root() block.calc_sha256() return block diff --git a/qa/rpc-tests/test_framework/mininode.py b/qa/rpc-tests/test_framework/mininode.py index 5b3ff3b63..abbccf16a 100755 --- a/qa/rpc-tests/test_framework/mininode.py +++ b/qa/rpc-tests/test_framework/mininode.py @@ -174,21 +174,25 @@ def deser_vector(f, c): return r -def ser_vector(l): +def ser_vector(elems): r = b"" - if len(l) < 253: - r = struct.pack("B", len(l)) - elif len(l) < 0x10000: - r = struct.pack(" 0: - flags = f.read(1) + flags = struct.unpack("B", f.read(1))[0] self.enableSpends = (flags & ORCHARD_FLAGS_ENABLE_SPENDS) != 0 self.enableOutputs = (flags & ORCHARD_FLAGS_ENABLE_OUTPUTS) != 0 self.valueBalance = struct.unpack(" 0: - flags = 0 ^ ( - ORCHARD_FLAGS_ENABLE_SPENDS if self.enableSpends else 0 - ) ^ ( - ORCHARD_FLAGS_ENABLE_OUTPUTS if self.enableOutputs else 0 - ) - r += struct.pack("B", flags) + r += struct.pack("B", self.flags()) r += struct.pack(" 0: - digest.update(orchardBundle.proofs) + digest.update(bytes(orchardBundle.proofs)) for desc in orchardBundle.actions: digest.update(desc.spendAuthSig.serialize()) digest.update(orchardBundle.bindingSig.serialize()) From 721e5d85abff4a9ebebd348fccf0c1404b7aeb7e Mon Sep 17 00:00:00 2001 From: Kris Nuttycombe Date: Tue, 10 May 2022 14:22:12 -0600 Subject: [PATCH 12/20] Deprecate `getrawchangeaddress` and `z_listaddresses` --- doc/book/src/user/deprecation.md | 2 ++ doc/release-notes.md | 2 ++ src/deprecation.cpp | 4 ++++ src/deprecation.h | 4 ++++ src/wallet/rpcwallet.cpp | 17 ++++++++++++++++- 5 files changed, 28 insertions(+), 1 deletion(-) diff --git a/doc/book/src/user/deprecation.md b/doc/book/src/user/deprecation.md index 3ecffd74c..f0c55da38 100644 --- a/doc/book/src/user/deprecation.md +++ b/doc/book/src/user/deprecation.md @@ -45,9 +45,11 @@ default as of release 5.3.0. conform to the `FullPrivacy` directive in all cases instead of just for transactions involving unified addresses. - `getnewaddress` - The `getnewaddress` RPC method is deprecated. + - `getrawchangeaddress` - The `getrawchangeaddress` RPC method is deprecated. - `z_getbalance` - The `z_getbalance` RPC method is deprecated. - `z_gettotalbalance` - The `z_gettotalbalance` RPC method is deprecated. - `z_getnewaddress` - The `z_getnewaddress` RPC method is deprecated. + - `z_listaddresses` - The `z_listaddresses` RPC method is deprecated. - `addrtype` - The `type` attribute is deprecated in the results of RPC methods that return address metadata. It is recommended that applications using this metadata be updated to use the `pool` or `address_type` diff --git a/doc/release-notes.md b/doc/release-notes.md index b9b6bde47..a6f453dc7 100644 --- a/doc/release-notes.md +++ b/doc/release-notes.md @@ -37,9 +37,11 @@ be required to permit their continued use: conform to the `FullPrivacy` directive (introduced in 4.7.0) in all cases instead of just for transactions involving unified addresses. - `getnewaddress` - controls availability of the `getnewaddress` RPC method. + - `getrawchangeaddress` - controls availability of the `getrawchangeaddress` RPC method. - `z_getbalance` - controls availability of the `z_getbalance` RPC method. - `z_gettotalbalance` - controls availability of the `z_gettotalbalance` RPC method. - `z_getnewaddress` - controls availability of the `z_getnewaddress` RPC method. + - `z_listaddresses` - controls availability of the `z_listaddresses` RPC method. - `addrtype` - controls availability of the deprecated `type` attribute returned by RPC methods that return address metadata. diff --git a/src/deprecation.cpp b/src/deprecation.cpp index fbc6e82bb..9d9c50fd7 100644 --- a/src/deprecation.cpp +++ b/src/deprecation.cpp @@ -14,9 +14,11 @@ // Flags that enable deprecated functionality. #ifdef ENABLE_WALLET bool fEnableGetNewAddress = true; +bool fEnableGetRawChangeAddress = true; bool fEnableZGetNewAddress = true; bool fEnableZGetBalance = true; bool fEnableZGetTotalBalance = true; +bool fEnableZListAddresses = true; bool fEnableLegacyPrivacyStrategy = true; bool fEnableZCRawReceive = true; bool fEnableZCRawJoinSplit = true; @@ -94,9 +96,11 @@ std::optional SetAllowedDeprecatedFeaturesFromCLIArgs() { #ifdef ENABLE_WALLET fEnableLegacyPrivacyStrategy = allowdeprecated.count("legacy_privacy") > 0; fEnableGetNewAddress = allowdeprecated.count("getnewaddress") > 0; + fEnableGetRawChangeAddress = allowdeprecated.count("getrawchangeaddress") > 0; fEnableZGetNewAddress = allowdeprecated.count("z_getnewaddress") > 0; fEnableZGetBalance = allowdeprecated.count("z_getbalance") > 0; fEnableZGetTotalBalance = allowdeprecated.count("z_gettotalbalance") > 0; + fEnableZListAddresses = allowdeprecated.count("z_listaddresses") > 0; fEnableZCRawReceive = allowdeprecated.count("zcrawreceive") > 0; fEnableZCRawJoinSplit = allowdeprecated.count("zcrawjoinsplit") > 0; fEnableZCRawKeygen = allowdeprecated.count("zcrawkeygen") > 0; diff --git a/src/deprecation.h b/src/deprecation.h index a0c37b046..e080b4cf8 100644 --- a/src/deprecation.h +++ b/src/deprecation.h @@ -28,9 +28,11 @@ static const std::set DEFAULT_ALLOW_DEPRECATED{{ #ifdef ENABLE_WALLET "legacy_privacy", "getnewaddress", + "getrawchangeaddress", "z_getnewaddress", "z_getbalance", "z_gettotalbalance", + "z_listaddresses", "addrtype" #endif }}; @@ -45,9 +47,11 @@ static const std::set DEFAULT_DENY_DEPRECATED{{ // Flags that enable deprecated functionality. #ifdef ENABLE_WALLET extern bool fEnableGetNewAddress; +extern bool fEnableGetRawChangeAddress; extern bool fEnableZGetNewAddress; extern bool fEnableZGetBalance; extern bool fEnableZGetTotalBalance; +extern bool fEnableZListAddresses; extern bool fEnableLegacyPrivacyStrategy; extern bool fEnableZCRawReceive; extern bool fEnableZCRawJoinSplit; diff --git a/src/wallet/rpcwallet.cpp b/src/wallet/rpcwallet.cpp index c2d2a6a32..2e616bab5 100644 --- a/src/wallet/rpcwallet.cpp +++ b/src/wallet/rpcwallet.cpp @@ -210,6 +210,14 @@ UniValue getrawchangeaddress(const UniValue& params, bool fHelp) if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; + if (!fEnableGetRawChangeAddress) + throw runtime_error( + "getrawchangeaddress is DEPRECATED and will be removed in a future release\n" + "\nChange addresses are a wallet-internal feature. Use a unified address for\n" + "a dedicated change account instead, or restart with `-allowdeprecated=getrawchangeaddress` \n" + "if you require backward compatibility.\n" + "See https://zcash.github.io/zcash/user/deprecation.html for more information."); + if (fHelp || params.size() > 1) throw runtime_error( "getrawchangeaddress\n" @@ -3573,10 +3581,17 @@ UniValue z_listaddresses(const UniValue& params, bool fHelp) if (!EnsureWalletIsAvailable(fHelp)) return NullUniValue; + if (!fEnableZListAddresses) + throw runtime_error( + "z_listaddresses is DEPRECATED and will be removed in a future release\n" + "\nUse listaddresses or restart with `-allowdeprecated=z_listaddresses`\n" + "if you require backward compatibility.\n" + "See https://zcash.github.io/zcash/user/deprecation.html for more information."); + if (fHelp || params.size() > 1) throw runtime_error( "z_listaddresses ( includeWatchonly )\n" - "\nDEPRECATED\n" + "\nDEPRECATED. Use `listaddresses` instead.\n" "\nReturns the list of shielded addresses belonging to the wallet.\n" "\nThis never returns Unified Addresses; see 'listaddresses' for them.\n" "\nArguments:\n" From 113cfa3ec521c9525169685e4496293add6962cb Mon Sep 17 00:00:00 2001 From: Kris Nuttycombe Date: Tue, 10 May 2022 14:22:38 -0600 Subject: [PATCH 13/20] Update rpcwallet help to better distinguish transparent-only APIs. Fixes #5675 --- src/wallet/rpcwallet.cpp | 171 +++++++++++++++++++++++---------------- 1 file changed, 102 insertions(+), 69 deletions(-) diff --git a/src/wallet/rpcwallet.cpp b/src/wallet/rpcwallet.cpp index 2e616bab5..44594765c 100644 --- a/src/wallet/rpcwallet.cpp +++ b/src/wallet/rpcwallet.cpp @@ -168,14 +168,17 @@ UniValue getnewaddress(const UniValue& params, bool fHelp) if (fHelp || params.size() > 1) throw runtime_error( "getnewaddress ( \"\" )\n" - "\nDEPRECATED\n" - "\nReturns a new Zcash address for receiving payments.\n" + "\nDEPRECATED. Use z_getnewaccount and z_getaddressforaccount instead.\n" + "\nReturns a new transparent Zcash address.\n" + "Payments received by this API are visible on-chain and do not otherwise\n" + "provide privacy protections; they should only be used in circumstances \n" + "where it is necessary to interoperate with legacy Bitcoin infrastructure.\n" "\nArguments:\n" "1. (dummy) (string, optional) DEPRECATED. If provided, it MUST be set to the empty string \"\". Passing any other string will result in an error.\n" "\nResult:\n" - "\"zcashaddress\" (string) The new Zcash address\n" + "\"zcashaddress\" (string) The new transparent Zcash address\n" "\nExamples:\n" + HelpExampleCli("getnewaddress", "") @@ -221,10 +224,14 @@ UniValue getrawchangeaddress(const UniValue& params, bool fHelp) if (fHelp || params.size() > 1) throw runtime_error( "getrawchangeaddress\n" - "\nReturns a new Zcash address, for receiving change.\n" - "This is for use with raw transactions, NOT normal use.\n" + "\nDEPRECATED. Change addresses are a wallet-internal feature. Use a unified" + "\naddress for a dedicated change account instead.\n" + "\nReturns a new transparent Zcash address for receiving change.\n" + "This is for use with raw transactions, NOT normal use. Additionally,\n" + "the resulting address does not correspond to the \"change\" HD derivation\n" + "path.\n" "\nResult:\n" - "\"address\" (string) The address\n" + "\"address\" (string) The transparent address\n" "\nExamples:\n" + HelpExampleCli("getrawchangeaddress", "") + HelpExampleRpc("getrawchangeaddress", "") @@ -290,10 +297,14 @@ UniValue sendtoaddress(const UniValue& params, bool fHelp) if (fHelp || params.size() < 2 || params.size() > 5) throw runtime_error( "sendtoaddress \"zcashaddress\" amount ( \"comment\" \"comment-to\" subtractfeefromamount )\n" - "\nSend an amount to a given address. The amount is a real and is rounded to the nearest 0.00000001\n" + "\nSend an amount to a given transparent address. The amount is interpreted as a real number\n" + "and is rounded to the nearest 0.00000001. This API will only select funds from the transparent\n" + "pool, and all the details of the transaction, including sender, recipient, and amount will be\n" + "permanently visible on the public chain. THIS API PROVIDES NO PRIVACY, and should only be\n" + "used when interoperability with legacy Bitcoin infrastructure is required.\n" + HelpRequiringPassphrase() + "\nArguments:\n" - "1. \"zcashaddress\" (string, required) The Zcash address to send to.\n" + "1. \"zcashaddress\" (string, required) The transparent Zcash address to send to.\n" "2. \"amount\" (numeric, required) The amount in " + CURRENCY_UNIT + " to send. eg 0.1\n" "3. \"comment\" (string, optional) A comment used to store what the transaction is for. \n" " This is not part of the transaction, just kept in your wallet.\n" @@ -358,7 +369,9 @@ UniValue listaddresses(const UniValue& params, bool fHelp) "and addresses derived from the wallet's mnemonic seed for releases \n" "version 4.7.0 and above. \n" "\nREMINDER: It is recommended that you back up your wallet.dat file \n" - "regularly!\n" + "regularly. If your wallet was created using zcashd version 4.7.0 \n" + "or later and you have not imported externally produced keys, it only \n" + "necessary to have backed up the wallet's emergency recovery phrase.\n" "\nResult:\n" "[\n" " {\n" @@ -824,9 +837,8 @@ UniValue listaddressgroupings(const UniValue& params, bool fHelp) if (fHelp) throw runtime_error( "listaddressgroupings\n" - "\nLists groups of addresses which have had their common ownership\n" - "made public by common use as inputs or as the resulting change\n" - "in past transactions\n" + "\nLists groups of transparent addresses which have had their common ownership\n" + "made public by common use as inputs or as the resulting change in past transactions.\n" "\nResult:\n" "[\n" " [\n" @@ -878,10 +890,11 @@ UniValue signmessage(const UniValue& params, bool fHelp) "\nSign a message with the private key of a t-addr" + HelpRequiringPassphrase() + "\n" "\nArguments:\n" - "1. \"t-addr\" (string, required) The transparent address to use for the private key.\n" - "2. \"message\" (string, required) The message to create a signature of.\n" + "1. \"t-addr\" (string, required) The transparent address to use to look up the private key.\n" + " that will be used to sign the message.\n" + "2. \"message\" (string, required) The message to create a signature of.\n" "\nResult:\n" - "\"signature\" (string) The signature of the message encoded in base 64\n" + "\"signature\" (string) The signature of the message encoded in base 64\n" "\nExamples:\n" "\nUnlock the wallet for 30 seconds\n" + HelpExampleCli("walletpassphrase", "\"mypassphrase\" 30") + @@ -935,7 +948,7 @@ UniValue getreceivedbyaddress(const UniValue& params, bool fHelp) if (fHelp || params.size() < 1 || params.size() > 3) throw runtime_error( "getreceivedbyaddress \"zcashaddress\" ( minconf ) ( inZat )\n" - "\nReturns the total amount received by the given Zcash address in transactions with at least minconf confirmations.\n" + "\nReturns the total amount received by the given transparent Zcash address in transactions with at least minconf confirmations.\n" "\nArguments:\n" "1. \"zcashaddress\" (string, required) The Zcash address for transactions.\n" "2. minconf (numeric, optional, default=1) Only include transactions confirmed at least this many times.\n" @@ -1002,7 +1015,9 @@ UniValue getbalance(const UniValue& params, bool fHelp) if (fHelp || params.size() > 4) throw runtime_error( "getbalance ( \"(dummy)\" minconf includeWatchonly inZat )\n" - "\nReturns the server's total available balance.\n" + "\nReturns the wallet's available transparent balance. This total\n" + "currently includes transparent balances associated with unified\n" + "accounts. Prefer to use `z_getbalanceforaccount` instead.\n" "\nArguments:\n" "1. (dummy) (string, optional) Remains for backward compatibility. Must be excluded or set to \"*\" or \"\".\n" "2. minconf (numeric, optional, default=1) Only include transactions confirmed at least this many times.\n" @@ -1052,7 +1067,7 @@ UniValue getunconfirmedbalance(const UniValue ¶ms, bool fHelp) if (fHelp || params.size() > 0) throw runtime_error( "getunconfirmedbalance\n" - "Returns the server's total unconfirmed balance\n"); + "Returns the server's total unconfirmed transparent balance\n"); LOCK2(cs_main, pwalletMain->cs_wallet); @@ -1068,7 +1083,12 @@ UniValue sendmany(const UniValue& params, bool fHelp) if (fHelp || params.size() < 2 || params.size() > 5) throw runtime_error( "sendmany \"\" {\"address\":amount,...} ( minconf \"comment\" [\"address\",...] )\n" - "\nSend multiple times. Amounts are decimal numbers with at most 8 digits of precision." + "\nSend to multiple transparent recipients, using funds from the legacy transparent\n" + "value pool. Amounts are decimal numbers with at most 8 digits of precision.\n" + "Payments sent using this API are visible on-chain and do not otherwise\n" + "provide privacy protections; it should only be used in circumstances \n" + "where it is necessary to interoperate with legacy Bitcoin infrastructure.\n" + "Prefer to use `z_sendmany` instead.\n" + HelpRequiringPassphrase() + "\n" "\nArguments:\n" "1. \"dummy\" (string, required) Must be set to \"\" for backwards compatibility.\n" @@ -1185,8 +1205,8 @@ UniValue addmultisigaddress(const UniValue& params, bool fHelp) if (fHelp || params.size() < 2 || params.size() > 3) { string msg = "addmultisigaddress nrequired [\"key\",...] ( \"\" )\n" - "\nAdd a nrequired-to-sign multisignature address to the wallet.\n" - "Each key is a Zcash address or hex-encoded public key.\n" + "\nAdd a nrequired-to-sign transparent multisignature address to the wallet.\n" + "Each key is a transparent Zcash address or hex-encoded secp256k1 public key.\n" "\nArguments:\n" "1. nrequired (numeric, required) The number of required signatures out of the n keys or addresses.\n" @@ -1340,7 +1360,10 @@ UniValue listreceivedbyaddress(const UniValue& params, bool fHelp) if (fHelp || params.size() > 3) throw runtime_error( "listreceivedbyaddress ( minconf includeempty includeWatchonly)\n" - "\nList balances by receiving address.\n" + "\nList balances by transparent receiving address. This API does not provide\n" + "any information for associated with shielded addresses and should only be used\n" + "in circumstances where it is necessary to interoperate with legacy Bitcoin\n" + "infrastructure.\n" "\nArguments:\n" "1. minconf (numeric, optional, default=1) The minimum number of confirmations before payments are included.\n" "2. includeempty (numeric, optional, default=false) Whether to include addresses that haven't received any payments.\n" @@ -1350,7 +1373,7 @@ UniValue listreceivedbyaddress(const UniValue& params, bool fHelp) "[\n" " {\n" " \"involvesWatchonly\" : true, (bool) Only returned if imported addresses were involved in transaction\n" - " \"address\" : \"receivingaddress\", (string) The receiving address\n" + " \"address\" : \"receivingaddress\", (string) The receiving transparent address\n" " \"amount\" : x.xxx, (numeric) The total amount in " + CURRENCY_UNIT + " received by the address\n" " \"amountZat\" : xxxx (numeric) The amount in " + MINOR_CURRENCY_UNIT + "\n" " \"confirmations\" : n (numeric) The number of confirmations of the most recent transaction included\n" @@ -1464,7 +1487,12 @@ UniValue listtransactions(const UniValue& params, bool fHelp) if (fHelp || params.size() > 4) throw runtime_error( "listtransactions ( \"dummy\" count from includeWatchonly)\n" - "\nReturns up to 'count' most recent transactions skipping the first 'from' transactions.\n" + "\nReturns up to 'count' of the most recent transactions associated with legacy transparent\n" + "addresses of this wallet, skipping the first 'from' transactions.\n" + "\nThis API does not provide any information about transactions containing shielded inputs\n" + "or outputs, and should only be used in circumstances where it is necessary to interoperate\n" + "with legacy Bitcoin infrastructure. Use z_listreceivedbyaddress to obtain information about\n" + "the wallet's shielded transactions.\n" "\nArguments:\n" "1. (dummy) (string, optional) If set, should be \"*\" for backwards compatibility.\n" "2. count (numeric, optional, default=10) The number of transactions to return\n" @@ -1672,7 +1700,7 @@ UniValue gettransaction(const UniValue& params, bool fHelp) if (fHelp || params.size() < 1 || params.size() > 2) throw runtime_error( "gettransaction \"txid\" ( includeWatchonly )\n" - "\nGet detailed information about in-wallet transaction \n" + "\nReturns detailed information about in-wallet transaction .\n" "\nArguments:\n" "1. \"txid\" (string, required) The transaction id\n" "2. \"includeWatchonly\" (bool, optional, default=false) Whether to include watchonly addresses in balance calculation and details[]\n" @@ -1807,7 +1835,8 @@ UniValue keypoolrefill(const UniValue& params, bool fHelp) if (fHelp || params.size() > 1) throw runtime_error( "keypoolrefill ( newsize )\n" - "\nFills the keypool." + "\nFills the keypool associated with the legacy transparent value pool. This should only be\n" + "used when interoperability with legacy Bitcoin infrastructure is required.\n" + HelpRequiringPassphrase() + "\n" "\nArguments\n" "1. newsize (numeric, optional, default=100) The new keypool size\n" @@ -1854,11 +1883,13 @@ UniValue walletpassphrase(const UniValue& params, bool fHelp) throw runtime_error( "walletpassphrase \"passphrase\" timeout\n" "\nStores the wallet decryption key in memory for 'timeout' seconds.\n" - "This is needed prior to performing transactions related to private keys such as sending Zcash\n" + "If the wallet is locked, this API must be invoked prior to performing operations\n" + "that require the availability of private keys, such as sending Zcash.\n" + "zcashd wallet encryption is experimental, and should be used with caution.\n" "\nArguments:\n" "1. \"passphrase\" (string, required) The wallet passphrase\n" "2. timeout (numeric, required) The time to keep the decryption key in seconds.\n" - "\nNote:\n" + "\nNotes:\n" "Issuing the walletpassphrase command while the wallet is already unlocked will set a new unlock\n" "time that overrides the old one.\n" "\nExamples:\n" @@ -2051,6 +2082,7 @@ UniValue encryptwallet(const UniValue& params, bool fHelp) "Use the walletpassphrase call for this, and then walletlock call.\n" "If the wallet is already encrypted, use the walletpassphrasechange call.\n" "Note that this will shutdown the server.\n" + "Wallet encryption is experimental, and this API should be used with caution.\n" "\nArguments:\n" "1. \"passphrase\" (string) The pass phrase to encrypt the wallet with. It must be at least 1 character, but should be long.\n" "\nExamples:\n" @@ -2106,7 +2138,7 @@ UniValue lockunspent(const UniValue& params, bool fHelp) throw runtime_error( "lockunspent unlock [{\"txid\":\"txid\",\"vout\":n},...]\n" "\nUpdates list of temporarily unspendable outputs.\n" - "Temporarily lock (unlock=false) or unlock (unlock=true) specified transaction outputs.\n" + "Temporarily lock (unlock=false) or unlock (unlock=true) specified transparent transaction outputs.\n" "A locked transaction output will not be chosen by automatic coin selection, when spending Zcash.\n" "Locks are stored in memory only. Nodes start with zero locked outputs, and the locked output list\n" "is always cleared (by virtue of process exit) when a node stops or fails.\n" @@ -2189,7 +2221,7 @@ UniValue listlockunspent(const UniValue& params, bool fHelp) if (fHelp || params.size() > 0) throw runtime_error( "listlockunspent\n" - "\nReturns list of temporarily unspendable outputs.\n" + "\nReturns list of temporarily unspendable transparent outputs.\n" "See the lockunspent call to lock and unlock transactions for spending.\n" "\nResult:\n" "[\n" @@ -2267,7 +2299,7 @@ UniValue getwalletinfo(const UniValue& params, bool fHelp) if (fHelp || params.size() != 0) throw runtime_error( "getwalletinfo\n" - "Returns an object containing various wallet state info.\n" + "Returns wallet state information.\n" "\nResult:\n" "{\n" " \"walletversion\": xxxxx, (numeric) the wallet version\n" @@ -2351,11 +2383,10 @@ UniValue listunspent(const UniValue& params, bool fHelp) if (fHelp || params.size() > 3) throw runtime_error( "listunspent ( minconf maxconf [\"address\",...] )\n" - "\nReturns array of unspent transaction outputs\n" - "with between minconf and maxconf (inclusive) confirmations.\n" - "Optionally filter to only include txouts paid to specified addresses.\n" - "Results are an array of Objects, each of which has:\n" - "{txid, vout, scriptPubKey, amount, confirmations}\n" + "\nReturns array of unspent transparent transaction outputs with between minconf and\n" + "maxconf (inclusive) confirmations. Use `z_listunspent` instead to see information\n" + "related to unspent shielded notes. Results may be optionally filtered to only include\n" + "txouts paid to specified addresses.\n" "\nArguments:\n" "1. minconf (numeric, optional, default=1) The minimum confirmations to filter\n" "2. maxconf (numeric, optional, default=9999999) The maximum confirmations to filter\n" @@ -2464,9 +2495,11 @@ UniValue z_listunspent(const UniValue& params, bool fHelp) if (fHelp || params.size() > 4) throw runtime_error( "z_listunspent ( minconf maxconf includeWatchonly [\"zaddr\",...] )\n" - "\nReturns array of unspent shielded notes with between minconf and maxconf (inclusive) confirmations.\n" - "Optionally filter to only include notes sent to specified addresses.\n" - "When minconf is 0, unspent notes with zero confirmations are returned, even though they are not immediately spendable.\n" + "\nReturns an array of unspent shielded notes with between minconf and maxconf (inclusive)\n" + "confirmations. Results may be optionally filtered to only include notes sent to specified\n" + "addresses.\n" + "When minconf is 0, unspent notes with zero confirmations are returned, even though they are\n" + "not immediately spendable.\n" "\nArguments:\n" "1. minconf (numeric, optional, default=1) The minimum confirmations to filter\n" "2. maxconf (numeric, optional, default=9999999) The maximum confirmations to filter\n" @@ -2671,35 +2704,35 @@ UniValue fundrawtransaction(const UniValue& params, bool fHelp) if (fHelp || params.size() < 1 || params.size() > 2) throw runtime_error( - "fundrawtransaction \"hexstring\" includeWatching\n" - "\nAdd inputs to a transaction until it has enough in value to meet its out value.\n" - "This will not modify existing inputs, and will add one change output to the outputs.\n" - "Note that inputs which were signed may need to be resigned after completion since in/outputs have been added.\n" - "The inputs added will not be signed, use signrawtransaction for that.\n" - "Note that all existing inputs must have their previous output transaction be in the wallet.\n" - "Note that all inputs selected must be of standard form and P2SH scripts must be" - "in the wallet using importaddress or addmultisigaddress (to calculate fees).\n" - "Only pay-to-pubkey, multisig, and P2SH versions thereof are currently supported for watch-only\n" - "\nArguments:\n" - "1. \"hexstring\" (string, required) The hex string of the raw transaction\n" - "2. includeWatching (boolean, optional, default false) Also select inputs which are watch only\n" - "\nResult:\n" - "{\n" - " \"hex\": \"value\", (string) The resulting raw transaction (hex-encoded string)\n" - " \"fee\": n, (numeric) The fee added to the transaction\n" - " \"changepos\": n (numeric) The position of the added change output, or -1\n" - "}\n" - "\"hex\" \n" - "\nExamples:\n" - "\nCreate a transaction with no inputs\n" - + HelpExampleCli("createrawtransaction", "\"[]\" \"{\\\"myaddress\\\":0.01}\"") + - "\nAdd sufficient unsigned inputs to meet the output value\n" - + HelpExampleCli("fundrawtransaction", "\"rawtransactionhex\"") + - "\nSign the transaction\n" - + HelpExampleCli("signrawtransaction", "\"fundedtransactionhex\"") + - "\nSend the transaction\n" - + HelpExampleCli("sendrawtransaction", "\"signedtransactionhex\"") - ); + "fundrawtransaction \"hexstring\" includeWatching\n" + "\nAdd transparent inputs to a transaction until it has enough in value to meet its out value.\n" + "This will not modify existing inputs, and will add one change output to the outputs.\n" + "Note that inputs which were signed may need to be resigned after completion since in/outputs have been added.\n" + "The inputs added will not be signed, use signrawtransaction for that.\n" + "Note that all existing inputs must have their previous output transaction be in the wallet.\n" + "Note that all inputs selected must be of standard form and P2SH scripts must be" + "in the wallet using importaddress or addmultisigaddress (to calculate fees).\n" + "Only pay-to-pubkey, multisig, and P2SH versions thereof are currently supported for watch-only\n" + "\nArguments:\n" + "1. \"hexstring\" (string, required) The hex string of the raw transaction\n" + "2. includeWatching (boolean, optional, default false) Also select inputs which are watch only\n" + "\nResult:\n" + "{\n" + " \"hex\": \"value\", (string) The resulting raw transaction (hex-encoded string)\n" + " \"fee\": n, (numeric) The fee added to the transaction\n" + " \"changepos\": n (numeric) The position of the added change output, or -1\n" + "}\n" + "\"hex\" \n" + "\nExamples:\n" + "\nCreate a transaction with no inputs\n" + + HelpExampleCli("createrawtransaction", "\"[]\" \"{\\\"myaddress\\\":0.01}\"") + + "\nAdd sufficient unsigned inputs to meet the output value\n" + + HelpExampleCli("fundrawtransaction", "\"rawtransactionhex\"") + + "\nSign the transaction\n" + + HelpExampleCli("signrawtransaction", "\"fundedtransactionhex\"") + + "\nSend the transaction\n" + + HelpExampleCli("sendrawtransaction", "\"signedtransactionhex\"") + ); RPCTypeCheck(params, boost::assign::list_of(UniValue::VSTR)(UniValue::VBOOL)); @@ -3518,7 +3551,7 @@ UniValue z_listaccounts(const UniValue& params, bool fHelp) if (fHelp || params.size() > 1) throw runtime_error( "z_listaccounts\n" - "\nReturns the list of accounts created through z_getnewaccount.\n" + "\nReturns the list of accounts created with z_getnewaccount.\n" "\nResult:\n" "[\n" " {\n" From 5fc38dd091b7afe3961ae0cc1f9cae76bed86f14 Mon Sep 17 00:00:00 2001 From: Jack Grigg Date: Wed, 11 May 2022 00:04:34 +0000 Subject: [PATCH 14/20] Migrate to `zcash_primitives 0.6` et al --- .cargo/config.offline | 25 ------ Cargo.lock | 194 +++++++++++++++++++----------------------- Cargo.toml | 35 +++----- 3 files changed, 98 insertions(+), 156 deletions(-) diff --git a/.cargo/config.offline b/.cargo/config.offline index ec5ae51cd..8b7762d20 100644 --- a/.cargo/config.offline +++ b/.cargo/config.offline @@ -4,30 +4,5 @@ linker = "aarch64-linux-gnu-gcc" [source.crates-io] replace-with = "vendored-sources" -[source."https://github.com/zcash/halo2.git"] -git = "https://github.com/zcash/halo2.git" -rev = "0c33fa4e6e41464884765c8fb4cefebafd300ca2" -replace-with = "vendored-sources" - -[source."https://github.com/zcash/incrementalmerkletree.git"] -git = "https://github.com/zcash/incrementalmerkletree.git" -rev = "f23e3d89507849a24543121839eea6f40b141aff" -replace-with = "vendored-sources" - -[source."https://github.com/zcash/librustzcash.git"] -git = "https://github.com/zcash/librustzcash.git" -rev = "68cbc2bb17b8967c7fb2f6034ac3d6174fc8f19b" -replace-with = "vendored-sources" - -[source."https://github.com/zcash/orchard.git"] -git = "https://github.com/zcash/orchard.git" -rev = "a30caec124aa6c6e7818b5100293204425c49de3" -replace-with = "vendored-sources" - -[source."https://github.com/nuttycom/hdwallet.git"] -git = "https://github.com/nuttycom/hdwallet.git" -rev = "9b4c1bdbe0517e3a7a8f285d6048a37d472ba3bc" -replace-with = "vendored-sources" - [source.vendored-sources] # The directory for this source is set to RUST_VENDORED_SOURCES by src/Makefile.am diff --git a/Cargo.lock b/Cargo.lock index d16b9e6f4..2080a8daa 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -135,12 +135,12 @@ checksum = "cf9ff0bbfd639f15c74af777d81383cf53efb7c93613f6cab67c6c11e05bbf8b" [[package]] name = "bellman" -version = "0.11.1" +version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0944d18a9a37691b87733b39c9360c9950af9aa5f97e2455bc108d8eb64fc1c1" +checksum = "0d96d7f4f3dc9a699bdef1d19648f6f20ef966b51892d224582a4475be669cb5" dependencies = [ - "bitvec 0.22.3", - "blake2s_simd 0.5.11", + "bitvec", + "blake2s_simd", "byteorder", "crossbeam-channel", "ff", @@ -174,28 +174,27 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" -[[package]] -name = "bitvec" -version = "0.22.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5237f00a8c86130a0cc317830e558b966dd7850d48a953d998c813f01a41b527" -dependencies = [ - "funty 1.2.0", - "radium 0.6.2", - "tap", - "wyz 0.4.0", -] - [[package]] name = "bitvec" version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1489fcb93a5bb47da0462ca93ad252ad6af2145cce58d10d46a83931ba9f016b" dependencies = [ - "funty 2.0.0", - "radium 0.7.0", + "funty", + "radium", "tap", - "wyz 0.5.0", + "wyz", +] + +[[package]] +name = "blake2b_simd" +version = "0.5.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afa748e348ad3be8263be728124b24a24f268266f6f5d58af9d75f6a40b5c587" +dependencies = [ + "arrayref", + "arrayvec 0.5.2", + "constant_time_eq", ] [[package]] @@ -209,17 +208,6 @@ dependencies = [ "constant_time_eq", ] -[[package]] -name = "blake2s_simd" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e461a7034e85b211a4acb57ee2e6730b32912b06c08cc242243c39fc21ae6a2" -dependencies = [ - "arrayref", - "arrayvec 0.5.2", - "constant_time_eq", -] - [[package]] name = "blake2s_simd" version = "1.0.0" @@ -267,9 +255,9 @@ checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" [[package]] name = "bls12_381" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d28daeeded7949f1c7c72693377c98473b00be0aa0023760a84a300e4e7c74b" +checksum = "62250ece575fa9b22068b3a8d59586f01d426dd7785522efd97632959e71c986" dependencies = [ "ff", "group", @@ -564,27 +552,29 @@ checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d" [[package]] name = "equihash" version = "0.1.0" -source = "git+https://github.com/zcash/librustzcash.git?rev=68cbc2bb17b8967c7fb2f6034ac3d6174fc8f19b#68cbc2bb17b8967c7fb2f6034ac3d6174fc8f19b" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4127688f6177e3f57521881cb1cfd90d1228214f9dc43b8efe6f6c6948cd8280" dependencies = [ - "blake2b_simd", + "blake2b_simd 0.5.11", "byteorder", ] [[package]] name = "f4jumble" -version = "0.0.0" -source = "git+https://github.com/zcash/librustzcash.git?rev=68cbc2bb17b8967c7fb2f6034ac3d6174fc8f19b#68cbc2bb17b8967c7fb2f6034ac3d6174fc8f19b" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a83e8d7fd0c526af4aad893b7c9fe41e2699ed8a776a6c74aecdeafe05afc75" dependencies = [ - "blake2b_simd", + "blake2b_simd 1.0.0", ] [[package]] name = "ff" -version = "0.11.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2958d04124b9f27f175eaeb9a9f383d026098aa837eadd8ba22c11f13a05b9e" +checksum = "df689201f395c6b90dfe87127685f8dbfc083a5e779e613575d8bd7314300c3e" dependencies = [ - "bitvec 0.22.3", + "bitvec", "rand_core 0.6.3", "subtle", ] @@ -621,12 +611,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "funty" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1847abb9cb65d566acd5942e94aea9c8f547ad02c98e1649326fc0e8910b8b1e" - [[package]] name = "funty" version = "2.0.0" @@ -706,9 +690,9 @@ checksum = "78cc372d058dcf6d5ecd98510e7fbc9e5aec4d21de70f65fea8fecebcd881bd4" [[package]] name = "group" -version = "0.11.0" +version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc5ac374b108929de78460075f3dc439fa66df9d8fc77e8f12caa5165fcf0c89" +checksum = "7391856def869c1c81063a03457c676fbcd419709c3dfb33d8d319de484b154d" dependencies = [ "byteorder", "ff", @@ -738,11 +722,12 @@ dependencies = [ [[package]] name = "halo2_gadgets" -version = "0.1.0-beta.3" -source = "git+https://github.com/zcash/halo2.git?rev=0c33fa4e6e41464884765c8fb4cefebafd300ca2#0c33fa4e6e41464884765c8fb4cefebafd300ca2" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13f3914f58cc4af5e4fe83d48b02d582be18976bc7e96c3151aa2bf1c98e9f60" dependencies = [ "arrayvec 0.7.2", - "bitvec 0.22.3", + "bitvec", "ff", "group", "halo2_proofs", @@ -755,10 +740,11 @@ dependencies = [ [[package]] name = "halo2_proofs" -version = "0.1.0-beta.4" -source = "git+https://github.com/zcash/halo2.git?rev=0c33fa4e6e41464884765c8fb4cefebafd300ca2#0c33fa4e6e41464884765c8fb4cefebafd300ca2" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e925780549adee8364c7f2b685c753f6f3df23bde520c67416e93bf615933760" dependencies = [ - "blake2b_simd", + "blake2b_simd 1.0.0", "ff", "group", "pasta_curves", @@ -777,8 +763,9 @@ dependencies = [ [[package]] name = "hdwallet" -version = "0.3.0" -source = "git+https://github.com/nuttycom/hdwallet.git?rev=9b4c1bdbe0517e3a7a8f285d6048a37d472ba3bc#9b4c1bdbe0517e3a7a8f285d6048a37d472ba3bc" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9cd89bf343be18dbe1e505100e48168bbd084760e842a8fed0317d2361470193" dependencies = [ "lazy_static", "rand_core 0.6.3", @@ -890,8 +877,9 @@ dependencies = [ [[package]] name = "incrementalmerkletree" -version = "0.3.0-beta.2" -source = "git+https://github.com/zcash/incrementalmerkletree.git?rev=f23e3d89507849a24543121839eea6f40b141aff#f23e3d89507849a24543121839eea6f40b141aff" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "068c5bdd31006d55536655cf1eb0d22d84d28de7c725b419480fd5d005c83216" dependencies = [ "serde", ] @@ -938,11 +926,11 @@ dependencies = [ [[package]] name = "jubjub" -version = "0.8.0" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2e7baec19d4e83f9145d4891178101a604565edff9645770fc979804138b04c" +checksum = "a575df5f985fe1cd5b2b05664ff6accfc46559032b954529fd225a2168d27b0f" dependencies = [ - "bitvec 0.22.3", + "bitvec", "bls12_381", "ff", "group", @@ -975,8 +963,8 @@ dependencies = [ "anyhow", "backtrace", "bellman", - "blake2b_simd", - "blake2s_simd 1.0.0", + "blake2b_simd 1.0.0", + "blake2s_simd", "bls12_381", "byteorder", "clearscreen", @@ -1287,12 +1275,13 @@ checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" [[package]] name = "orchard" -version = "0.1.0-beta.3" -source = "git+https://github.com/zcash/orchard.git?rev=a30caec124aa6c6e7818b5100293204425c49de3#a30caec124aa6c6e7818b5100293204425c49de3" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f918076e191a68d55c5517a16e075ecfe58fc63ed112408263f3d6194597bfcf" dependencies = [ "aes", - "bitvec 0.22.3", - "blake2b_simd", + "bitvec", + "blake2b_simd 1.0.0", "ff", "fpe", "group", @@ -1322,9 +1311,9 @@ dependencies = [ [[package]] name = "pairing" -version = "0.21.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2e415e349a3006dd7d9482cdab1c980a845bed1377777d768cb693a44540b42" +checksum = "135590d8bdba2b31346f9cd1fb2a912329f5135e832a4f422942eb6ead8b6b3b" dependencies = [ "group", ] @@ -1336,7 +1325,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e8b44461635bbb1a0300f100a841e571e7d919c81c73075ef5d152ffdb521066" dependencies = [ "arrayvec 0.7.2", - "bitvec 1.0.0", + "bitvec", "byte-slice-cast", "impl-trait-for-tuples", "parity-scale-codec-derive", @@ -1393,11 +1382,11 @@ dependencies = [ [[package]] name = "pasta_curves" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82b6fc4f73033f6aa52fdde0c38f1f570e7f2c244f22e441f62a144556891b8c" +checksum = "369d7785168ad7ff0cbe467d968ca3e19a927d8536b11ef9c21b4e454b15ba42" dependencies = [ - "blake2b_simd", + "blake2b_simd 1.0.0", "ff", "group", "lazy_static", @@ -1538,12 +1527,6 @@ dependencies = [ "proc-macro2", ] -[[package]] -name = "radium" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "643f8f41a8ebc4c5dc4515c82bb8abd397b527fc20fd681b7c011c2aee5d44fb" - [[package]] name = "radium" version = "0.7.0" @@ -1677,11 +1660,11 @@ dependencies = [ [[package]] name = "reddsa" -version = "0.2.0" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a2efaed2ccc184ca4f82ed083ec0afe700c6254acae3d7732fc50ef79d5cbe9" +checksum = "4cc8038c8b7e481bdf688d0585d4897ed0e9e0cee10aa365dde51238c20e4182" dependencies = [ - "blake2b_simd", + "blake2b_simd 1.0.0", "byteorder", "group", "jubjub", @@ -2292,15 +2275,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -[[package]] -name = "wyz" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "129e027ad65ce1453680623c3fb5163cbf7107bfe1aa32257e7d0e63f9ced188" -dependencies = [ - "tap", -] - [[package]] name = "wyz" version = "0.5.0" @@ -2312,8 +2286,9 @@ dependencies = [ [[package]] name = "zcash_address" -version = "0.0.0" -source = "git+https://github.com/zcash/librustzcash.git?rev=68cbc2bb17b8967c7fb2f6034ac3d6174fc8f19b#68cbc2bb17b8967c7fb2f6034ac3d6174fc8f19b" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1322a31b757f0087f110cc4a85dc5c6ccf83d0533bac04c4d3d1ce9112cc602" dependencies = [ "bech32", "bs58", @@ -2323,8 +2298,9 @@ dependencies = [ [[package]] name = "zcash_encoding" -version = "0.0.0" -source = "git+https://github.com/zcash/librustzcash.git?rev=68cbc2bb17b8967c7fb2f6034ac3d6174fc8f19b#68cbc2bb17b8967c7fb2f6034ac3d6174fc8f19b" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fb61ea88eb539bc0ac2068e5da99411dd4978595b3d7ff6a4b1562ddc8e8710" dependencies = [ "byteorder", "nonempty", @@ -2332,10 +2308,11 @@ dependencies = [ [[package]] name = "zcash_history" -version = "0.2.0" -source = "git+https://github.com/zcash/librustzcash.git?rev=68cbc2bb17b8967c7fb2f6034ac3d6174fc8f19b#68cbc2bb17b8967c7fb2f6034ac3d6174fc8f19b" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb611a28a4e13ac715ee712f4344d6b279b767daf6345dafefb2c4bf582b6679" dependencies = [ - "blake2b_simd", + "blake2b_simd 1.0.0", "byteorder", "primitive-types", ] @@ -2343,7 +2320,8 @@ dependencies = [ [[package]] name = "zcash_note_encryption" version = "0.1.0" -source = "git+https://github.com/zcash/librustzcash.git?rev=68cbc2bb17b8967c7fb2f6034ac3d6174fc8f19b#68cbc2bb17b8967c7fb2f6034ac3d6174fc8f19b" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33f84ae538f05a8ac74c82527f06b77045ed9553a0871d9db036166a4c344e3a" dependencies = [ "chacha20", "chacha20poly1305", @@ -2353,14 +2331,15 @@ dependencies = [ [[package]] name = "zcash_primitives" -version = "0.5.0" -source = "git+https://github.com/zcash/librustzcash.git?rev=68cbc2bb17b8967c7fb2f6034ac3d6174fc8f19b#68cbc2bb17b8967c7fb2f6034ac3d6174fc8f19b" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcb1ef5719fb24b42450dcd6b10e6155793be5668f0d962ad8132b6e4d108635" dependencies = [ "aes", "bip0039", - "bitvec 0.22.3", - "blake2b_simd", - "blake2s_simd 1.0.0", + "bitvec", + "blake2b_simd 1.0.0", + "blake2s_simd", "bls12_381", "bs58", "byteorder", @@ -2389,11 +2368,12 @@ dependencies = [ [[package]] name = "zcash_proofs" -version = "0.5.0" -source = "git+https://github.com/zcash/librustzcash.git?rev=68cbc2bb17b8967c7fb2f6034ac3d6174fc8f19b#68cbc2bb17b8967c7fb2f6034ac3d6174fc8f19b" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e67054525b4897a97386ce562240f08ac9bcad07183130fe8d797224d712112d" dependencies = [ "bellman", - "blake2b_simd", + "blake2b_simd 1.0.0", "bls12_381", "byteorder", "directories", diff --git a/Cargo.toml b/Cargo.toml index 4c1dc3274..c83841bb9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -30,30 +30,30 @@ name = "zcashd-wallet-tool" path = "src/rust/bin/wallet_tool.rs" [dependencies] -bellman = "0.11" +bellman = "0.13" blake2b_simd = "1" blake2s_simd = "1" -bls12_381 = "0.6" +bls12_381 = "0.7" byteorder = "1" -group = "0.11" -incrementalmerkletree = "=0.3.0-beta.2" +group = "0.12" +incrementalmerkletree = "0.3" libc = "0.2" -jubjub = "0.8" +jubjub = "0.9" memuse = "0.2" nonempty = "0.7" -orchard = "=0.1.0-beta.3" +orchard = "0.1" secp256k1 = "0.21" subtle = "2.2" rand_core = "0.6" tracing = "0.1" tracing-core = "0.1" tracing-appender = "0.2" -zcash_address = "0.0" -zcash_encoding = "0.0" -zcash_history = "0.2" +zcash_address = "0.1" +zcash_encoding = "0.1" +zcash_history = "0.3" zcash_note_encryption = "0.1" -zcash_primitives = { version = "0.5", features = ["transparent-inputs"] } -zcash_proofs = "0.5" +zcash_primitives = { version = "0.6", features = ["transparent-inputs"] } +zcash_proofs = "0.6" ed25519-zebra = "3" zeroize = "1.4.2" @@ -82,16 +82,3 @@ features = ["ansi", "env-filter", "fmt", "time"] lto = true panic = 'abort' codegen-units = 1 - -[patch.crates-io] -halo2_gadgets = { git = "https://github.com/zcash/halo2.git", rev = "0c33fa4e6e41464884765c8fb4cefebafd300ca2" } -halo2_proofs = { git = "https://github.com/zcash/halo2.git", rev = "0c33fa4e6e41464884765c8fb4cefebafd300ca2" } -hdwallet = { git = "https://github.com/nuttycom/hdwallet.git", rev = "9b4c1bdbe0517e3a7a8f285d6048a37d472ba3bc" } -incrementalmerkletree = { git = "https://github.com/zcash/incrementalmerkletree.git", rev = "f23e3d89507849a24543121839eea6f40b141aff" } -orchard = { git = "https://github.com/zcash/orchard.git", rev = "a30caec124aa6c6e7818b5100293204425c49de3" } -zcash_address = { git = "https://github.com/zcash/librustzcash.git", rev = "68cbc2bb17b8967c7fb2f6034ac3d6174fc8f19b" } -zcash_encoding = { git = "https://github.com/zcash/librustzcash.git", rev = "68cbc2bb17b8967c7fb2f6034ac3d6174fc8f19b" } -zcash_history = { git = "https://github.com/zcash/librustzcash.git", rev = "68cbc2bb17b8967c7fb2f6034ac3d6174fc8f19b" } -zcash_note_encryption = { git = "https://github.com/zcash/librustzcash.git", rev = "68cbc2bb17b8967c7fb2f6034ac3d6174fc8f19b" } -zcash_primitives = { git = "https://github.com/zcash/librustzcash.git", rev = "68cbc2bb17b8967c7fb2f6034ac3d6174fc8f19b" } -zcash_proofs = { git = "https://github.com/zcash/librustzcash.git", rev = "68cbc2bb17b8967c7fb2f6034ac3d6174fc8f19b" } From a4518b729ed6485d44683182159d0a9464c8368c Mon Sep 17 00:00:00 2001 From: Kris Nuttycombe Date: Tue, 10 May 2022 19:45:27 -0600 Subject: [PATCH 15/20] Revert "Set RELEASE_TO_DEPRECATION_WEEKS to 2 weeks to provide RC EOS halt." This reverts commit 9fe516576fdf6cc4b8d6cf9edaf155f7f033a9db. --- src/deprecation.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/deprecation.h b/src/deprecation.h index e080b4cf8..0a75da1ca 100644 --- a/src/deprecation.h +++ b/src/deprecation.h @@ -11,7 +11,7 @@ // 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 = 1661960; -static const int RELEASE_TO_DEPRECATION_WEEKS = 2; +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."); static const int ACTIVATION_TO_DEPRECATION_BLOCKS = (RELEASE_TO_DEPRECATION_WEEKS * 7 * 24 * EXPECTED_BLOCKS_PER_HOUR); From 04d0da13918ba49dd90a41984d34e3b33f4d1dfb Mon Sep 17 00:00:00 2001 From: Kris Nuttycombe Date: Tue, 10 May 2022 19:48:53 -0600 Subject: [PATCH 16/20] make-release.py: Versioning changes for 5.0.0. --- README.md | 2 +- configure.ac | 2 +- contrib/gitian-descriptors/gitian-linux.yml | 2 +- src/clientversion.h | 2 +- src/deprecation.h | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 74fdf934b..016b0b7a2 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -Zcash 5.0.0-rc1 +Zcash 5.0.0 =========== diff --git a/configure.ac b/configure.ac index 15117d4a5..2d602f60f 100644 --- a/configure.ac +++ b/configure.ac @@ -3,7 +3,7 @@ AC_PREREQ([2.60]) define(_CLIENT_VERSION_MAJOR, 5) define(_CLIENT_VERSION_MINOR, 0) define(_CLIENT_VERSION_REVISION, 0) -define(_CLIENT_VERSION_BUILD, 25) +define(_CLIENT_VERSION_BUILD, 50) 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 679d4de9a..9e03c1767 100644 --- a/contrib/gitian-descriptors/gitian-linux.yml +++ b/contrib/gitian-descriptors/gitian-linux.yml @@ -1,5 +1,5 @@ --- -name: "zcash-5.0.0-rc1" +name: "zcash-5.0.0" enable_cache: true distro: "debian" suites: diff --git a/src/clientversion.h b/src/clientversion.h index 5f03033f2..8c436b625 100644 --- a/src/clientversion.h +++ b/src/clientversion.h @@ -18,7 +18,7 @@ #define CLIENT_VERSION_MAJOR 5 #define CLIENT_VERSION_MINOR 0 #define CLIENT_VERSION_REVISION 0 -#define CLIENT_VERSION_BUILD 25 +#define CLIENT_VERSION_BUILD 50 //! 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 0a75da1ca..7f8ea5e84 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 = 1661960; +static const int APPROX_RELEASE_HEIGHT = 1663550; 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 f97d83981fd343d688627abb716f6a952733bb60 Mon Sep 17 00:00:00 2001 From: Kris Nuttycombe Date: Tue, 10 May 2022 19:52:28 -0600 Subject: [PATCH 17/20] make-release.py: Updated manpages for 5.0.0. --- doc/man/zcash-cli.1 | 8 ++++---- doc/man/zcash-tx.1 | 8 ++++---- doc/man/zcashd-wallet-tool.1 | 6 +++--- doc/man/zcashd.1 | 15 ++++++++------- 4 files changed, 19 insertions(+), 18 deletions(-) diff --git a/doc/man/zcash-cli.1 b/doc/man/zcash-cli.1 index 78040192b..38c89ee81 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" "May 2022" "zcash-cli v5.0.0-rc1" "User Commands" +.\" 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" .SH NAME -zcash-cli \- manual page for zcash-cli v5.0.0-rc1 +zcash-cli \- manual page for zcash-cli v5.0.0 .SH DESCRIPTION -Zcash RPC client version v5.0.0\-rc1 +Zcash RPC client version v5.0.0 .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 4789560a7..79863fa8d 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" "May 2022" "zcash-tx v5.0.0-rc1" "User Commands" +.\" 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" .SH NAME -zcash-tx \- manual page for zcash-tx v5.0.0-rc1 +zcash-tx \- manual page for zcash-tx v5.0.0 .SH DESCRIPTION -Zcash zcash\-tx utility version v5.0.0\-rc1 +Zcash zcash\-tx utility version v5.0.0 .SS "Usage:" .TP zcash\-tx [options] [commands] diff --git a/doc/man/zcashd-wallet-tool.1 b/doc/man/zcashd-wallet-tool.1 index 94ed946fd..4adf72a35 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.47.13. -.TH ZCASHD-WALLET-TOOL "1" "May 2022" "zcashd-wallet-tool v5.0.0-rc1" "User Commands" +.\" 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" .SH NAME -zcashd-wallet-tool \- manual page for zcashd-wallet-tool v5.0.0-rc1 +zcashd-wallet-tool \- manual page for zcashd-wallet-tool v5.0.0 .SH SYNOPSIS .B zcashd-wallet-tool [\fI\,OPTIONS\/\fR] diff --git a/doc/man/zcashd.1 b/doc/man/zcashd.1 index 9844c6f2f..186b1518a 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" "May 2022" "zcashd v5.0.0-rc1" "User Commands" +.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.1. +.TH ZCASHD "1" "May 2022" "zcashd v5.0.0" "User Commands" .SH NAME -zcashd \- manual page for zcashd v5.0.0-rc1 +zcashd \- manual page for zcashd v5.0.0 .SH DESCRIPTION -Zcash Daemon version v5.0.0\-rc1 +Zcash Daemon version v5.0.0 .PP In order to ensure you are adequately protecting your privacy when using Zcash, please see . @@ -31,8 +31,9 @@ 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", -"legacy_privacy", "z_getnewaddress", "zcrawjoinsplit", "zcrawkeygen", -"zcrawreceive"} +"getrawchangeaddress", "legacy_privacy", "z_getbalance", +"z_getnewaddress", "z_gettotalbalance", "z_listaddresses", +"zcrawjoinsplit", "zcrawkeygen", "zcrawreceive"} .HP \fB\-blocknotify=\fR .IP @@ -110,7 +111,7 @@ for block files) \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 +unless pruning or unless \fB\-rescan\fR=\fI\,0\/\fR is explicitly specified) .HP \fB\-reindex\fR .IP From 10fb705f45dbaccb457ed916a6c68b1b44409334 Mon Sep 17 00:00:00 2001 From: Kris Nuttycombe Date: Tue, 10 May 2022 19:52:28 -0600 Subject: [PATCH 18/20] make-release.py: Updated release notes and changelog for 5.0.0. --- contrib/debian/changelog | 6 + doc/authors.md | 24 +-- doc/release-notes.md | 104 ---------- doc/release-notes/release-notes-5.0.0.md | 231 +++++++++++++++++++++++ 4 files changed, 250 insertions(+), 115 deletions(-) create mode 100644 doc/release-notes/release-notes-5.0.0.md diff --git a/contrib/debian/changelog b/contrib/debian/changelog index bcacae8b2..00834e186 100644 --- a/contrib/debian/changelog +++ b/contrib/debian/changelog @@ -1,3 +1,9 @@ +zcash (5.0.0) stable; urgency=medium + + * 5.0.0 release. + + -- Electric Coin Company Tue, 10 May 2022 19:52:28 -0600 + zcash (5.0.0~rc1) stable; urgency=medium * 5.0.0-rc1 release. diff --git a/doc/authors.md b/doc/authors.md index ea9874440..5700307b9 100644 --- a/doc/authors.md +++ b/doc/authors.md @@ -1,31 +1,31 @@ Zcash Contributors ================== -Jack Grigg (1137) -Kris Nuttycombe (484) +Jack Grigg (1142) +Kris Nuttycombe (524) Simon Liu (460) Sean Bowe (379) -Daira Hopwood (316) +Daira Hopwood (325) Eirik Ogilvie-Wigley (216) Wladimir J. van der Laan (150) Alfredo Garcia (119) -Taylor Hornby (117) +Taylor Hornby (118) Marshall Gaucher (112) Pieter Wuille (106) Jonas Schnelli (90) Jay Graber (89) +Larry Ruane (88) Ying Tong Lai (87) -Larry Ruane (86) Marco Falke (82) Cory Fields (75) Nathan Wilcox (56) Matt Corallo (52) +sasha (51) practicalswift (38) Kevin Gallagher (38) -Dimitris Apostolou (37) +Dimitris Apostolou (38) fanquake (36) Carl Dong (26) -sasha (23) Gregory Maxwell (23) Jorge Timón (22) John Newbery (22) @@ -34,10 +34,11 @@ Jonathan "Duke" Leto (18) syd (16) Patick Strateman (16) furszy (15) +Charlie O'Keefe (15) avnish (14) Per Grön (14) -Charlie O'Keefe (14) Benjamin Winston (13) +Steven Smith (12) Pavel Janík (12) Patrick Strateman (12) Ariel Gabizon (12) @@ -45,14 +46,13 @@ Suhas Daftuar (11) Paige Peterson (11) Kaz Wesley (11) Alex Morcos (11) -Steven Smith (10) Philip Kaufmann (10) Peter Todd (10) Marius Kjærstad (10) João Barbosa (10) ying tong (9) +teor (9) nomnombtc (9) -teor (8) kozyilmaz (8) Zancas Wilcox (8) Jeremy Rubin (8) @@ -73,13 +73,13 @@ Johnathan Corgan (5) George Tankersley (5) Gavin Andresen (5) Gareth Davies (5) +Alex Wied (5) sandakersmann (4) gladcow (4) WO (4) Sjors Provoost (4) Russell Yanofsky (4) Nate Wilcox (4) -Alex Wied (4) mruddy (3) lpescher (3) isle2983 (3) @@ -119,6 +119,7 @@ Pavel Vasin (2) Mustafa (2) Matthew King (2) Mary Moore-Simmons (2) +Marek (2) Joe Turgeon (2) Jeffrey Czyz (2) Jack Gavigan (2) @@ -153,6 +154,7 @@ glowang (1) ewillbefull@gmail.com (1) emilrus (1) dexX7 (1) +dependabot[bot] (1) daniel (1) codetriage-readme-bot (1) calebogden (1) diff --git a/doc/release-notes.md b/doc/release-notes.md index a6f453dc7..a29094b51 100644 --- a/doc/release-notes.md +++ b/doc/release-notes.md @@ -4,107 +4,3 @@ release-notes at release time) Notable changes =============== -Feature Deprecation and removal -------------------------------- - -`zcashd` now has a [process](https://zcash.github.io/zcash/user/deprecation.html) -for how features of the public API may be deprecated and removed. Feature -deprecation follows a series of steps whereby, over a series of releases, -features first remain enabled by default (but may be explicitly disabled), then -switch to being disabled by default, and eventually are removed entirely. - -A new string-valued option, `-allowdeprecated` has been introduced to allow a -user to explicitly manage the availability of deprecated `zcashd` features. This -flag makes it possible for users to reenable deprecated methods and features -api that are currently disabled by default, or alternately to explicitly -disable all deprecated features if they so choose. Multiple instances of this -argument may be provided. A user may disable deprecated features entirely -by providing the string `none` as the argument to this parameter. In the case -that `none` is specified, multiple invocations of `-allowdeprecated` are not -permitted. - -Deprecated ----------- - -As of this release, the following features are deprecated, but remain -available by default. These features may be disabled by setting -`-allowdeprecated=none`. After release 5.3.0, these features will be -disabled by default and the following flags to `-allowdeprecated` will -be required to permit their continued use: - - - `legacy_privacy` - the default "legacy" privacy policy for z_sendmany - is deprecated. When disabled, the default behavior of z_sendmany will - conform to the `FullPrivacy` directive (introduced in 4.7.0) in all cases - instead of just for transactions involving unified addresses. - - `getnewaddress` - controls availability of the `getnewaddress` RPC method. - - `getrawchangeaddress` - controls availability of the `getrawchangeaddress` RPC method. - - `z_getbalance` - controls availability of the `z_getbalance` RPC method. - - `z_gettotalbalance` - controls availability of the `z_gettotalbalance` RPC method. - - `z_getnewaddress` - controls availability of the `z_getnewaddress` RPC method. - - `z_listaddresses` - controls availability of the `z_listaddresses` RPC method. - - `addrtype` - controls availability of the deprecated `type` attribute - returned by RPC methods that return address metadata. - -As of this release, the following previously deprecated features are disabled -by default, but may be be reenabled using `-allowdeprecated=`. - - - The `zcrawreceive` RPC method is disabled. It may be reenabled with - `allowdeprecated=zcrawreceive` - - The `zcrawjoinsplit` RPC method is disabled. It may be reenabled with - `allowdeprecated=zcrawjoinsplit` - - The `zcrawkeygen` RPC method is disabled. It may be reenabled with - `allowdeprecated=zcrawkeygen` - -Option handling ---------------- - -- The `-reindex` and `-reindex-chainstate` options now imply `-rescan` - (provided that the wallet is enabled and pruning is disabled, and unless - `-rescan=0` is specified explicitly). -- A new `-anchorconfirmations` argument has been added to allow the user - to specify the number of blocks back from the chain tip that anchors will be - selected from when spending notes. By default, anchors will now be selected - to have 3 confirmations. Values greater than 100 are not supported. -- A new `-orchardactionlimit` option has been added to allow the user to - override the default maximum of 50 Orchard actions per transaction. - Transactions that contain large numbers of Orchard actions can use - large amounts of memory for proving, so the 50-action default limit is - imposed to guard against memory exhaustion. Systems with more than 16G - of memory can safely set this parameter to allow 200 actions or more. - -RPC Interface -------------- - -- The default `minconf` value for `z_sendmany` is now 10 confirmations instead - of 1. If `minconf` specifies a value less than that provided for - `-anchorconfirmations`, it will also override that value as it is not - possible to spend notes that are more recent than the anchor. Selecting - `minconf` values less than 3 is not recommended, as it allows the transaction - to be distinguished from transactions using the default for - `-anchorconfirmations`. - -RPC Changes ------------ - -- The deprecated `zcrawkeygen`, `zcrawreceive`, and `zcrawjoinsplit` RPC - methods are now disabled by default. Use `-allowdeprecated=` - to select individual features if you wish to continue using these APIs. - -Build system ------------- - -- `zcutil/build.sh` now automatically runs `zcutil/clean.sh` to remove - files created by previous builds. We previously recommended to do this - manually. - -Dependencies ------------- - -- The `boost` and `native_b2` dependencies have been updated to version 1.79.0 - -Tests ------ - -- The environment variable that allows users of the rpc (Python) tests to - override the default path to the `zcashd` executable has been changed - from `BITCOIND` to `ZCASHD`. diff --git a/doc/release-notes/release-notes-5.0.0.md b/doc/release-notes/release-notes-5.0.0.md new file mode 100644 index 000000000..6baede794 --- /dev/null +++ b/doc/release-notes/release-notes-5.0.0.md @@ -0,0 +1,231 @@ +Notable changes +=============== + +Feature Deprecation and removal +------------------------------- + +`zcashd` now has a [process](https://zcash.github.io/zcash/user/deprecation.html) +for how features of the public API may be deprecated and removed. Feature +deprecation follows a series of steps whereby, over a series of releases, +features first remain enabled by default (but may be explicitly disabled), then +switch to being disabled by default, and eventually are removed entirely. + +A new string-valued option, `-allowdeprecated` has been introduced to allow a +user to explicitly manage the availability of deprecated `zcashd` features. This +flag makes it possible for users to reenable deprecated methods and features +api that are currently disabled by default, or alternately to explicitly +disable all deprecated features if they so choose. Multiple instances of this +argument may be provided. A user may disable deprecated features entirely +by providing the string `none` as the argument to this parameter. In the case +that `none` is specified, multiple invocations of `-allowdeprecated` are not +permitted. + +Deprecated +---------- + +As of this release, the following features are deprecated, but remain +available by default. These features may be disabled by setting +`-allowdeprecated=none`. After release 5.3.0, these features will be +disabled by default and the following flags to `-allowdeprecated` will +be required to permit their continued use: + + - `legacy_privacy` - the default "legacy" privacy policy for z_sendmany + is deprecated. When disabled, the default behavior of z_sendmany will + conform to the `FullPrivacy` directive (introduced in 4.7.0) in all cases + instead of just for transactions involving unified addresses. + - `getnewaddress` - controls availability of the `getnewaddress` RPC method. + - `getrawchangeaddress` - controls availability of the `getrawchangeaddress` RPC method. + - `z_getbalance` - controls availability of the `z_getbalance` RPC method. + - `z_gettotalbalance` - controls availability of the `z_gettotalbalance` RPC method. + - `z_getnewaddress` - controls availability of the `z_getnewaddress` RPC method. + - `z_listaddresses` - controls availability of the `z_listaddresses` RPC method. + - `addrtype` - controls availability of the deprecated `type` attribute + returned by RPC methods that return address metadata. + +As of this release, the following previously deprecated features are disabled +by default, but may be be reenabled using `-allowdeprecated=`. + + - The `zcrawreceive` RPC method is disabled. It may be reenabled with + `allowdeprecated=zcrawreceive` + - The `zcrawjoinsplit` RPC method is disabled. It may be reenabled with + `allowdeprecated=zcrawjoinsplit` + - The `zcrawkeygen` RPC method is disabled. It may be reenabled with + `allowdeprecated=zcrawkeygen` + +Option handling +--------------- + +- The `-reindex` and `-reindex-chainstate` options now imply `-rescan` + (provided that the wallet is enabled and pruning is disabled, and unless + `-rescan=0` is specified explicitly). +- A new `-anchorconfirmations` argument has been added to allow the user + to specify the number of blocks back from the chain tip that anchors will be + selected from when spending notes. By default, anchors will now be selected + to have 3 confirmations. Values greater than 100 are not supported. +- A new `-orchardactionlimit` option has been added to allow the user to + override the default maximum of 50 Orchard actions per transaction. + Transactions that contain large numbers of Orchard actions can use + large amounts of memory for proving, so the 50-action default limit is + imposed to guard against memory exhaustion. Systems with more than 16G + of memory can safely set this parameter to allow 200 actions or more. + +RPC Interface +------------- + +- The default `minconf` value for `z_sendmany` is now 10 confirmations instead + of 1. If `minconf` specifies a value less than that provided for + `-anchorconfirmations`, it will also override that value as it is not + possible to spend notes that are more recent than the anchor. Selecting + `minconf` values less than 3 is not recommended, as it allows the transaction + to be distinguished from transactions using the default for + `-anchorconfirmations`. + +RPC Changes +----------- + +- The deprecated `zcrawkeygen`, `zcrawreceive`, and `zcrawjoinsplit` RPC + methods are now disabled by default. Use `-allowdeprecated=` + to select individual features if you wish to continue using these APIs. + +Build system +------------ + +- `zcutil/build.sh` now automatically runs `zcutil/clean.sh` to remove + files created by previous builds. We previously recommended to do this + manually. + +Dependencies +------------ + +- The `boost` and `native_b2` dependencies have been updated to version 1.79.0 + +Tests +----- + +- The environment variable that allows users of the rpc (Python) tests to + override the default path to the `zcashd` executable has been changed + from `BITCOIND` to `ZCASHD`. + +Changelog +========= + +Alex Wied (1): + Cargo.toml: Rename hdwallet source + +Charlie O'Keefe (1): + Use bullseye apt source in Dockerfile to match debian:11 base image + +Daira Hopwood (9): + Fix to 4.7.0 release notes: testnet nodes that upgrade prior to height 1,842,420 actually still need to run with -reindex and -rescan. + zcutil/build.sh: Run zcutil/clean.sh before building. fixes #3625 + Make `-reindex` and `-reindex-chainstate` imply `-rescan` (provided that the wallet is enabled and pruning is disabled, and unless `-rescan=0` is specified explicitly). + zcutil/build-debian-package.sh: copy executable and man page for zcashd-wallet-tool. + zcashd-wallet-tool: improve the error message for an invalid logging filter directive. + Change the numbering convention for hotfixes to increment the patch number, not the hyphen number. fixes #4364 + Rename nOrchardAnchorConfirmations -> nAnchorConfirmations + Select an anchor and notes that have 10 confirmations. + Fix WalletTests.CachedWitnessesEmptyChain for new anchor selection. + +Dimitris Apostolou (1): + Fix typo + +Jack Grigg (5): + Update minimum chain work and set NU5 activation block hash for testnet + make-release.py: Versioning changes for 5.0.0-rc1. + make-release.py: Updated manpages for 5.0.0-rc1. + make-release.py: Updated release notes and changelog for 5.0.0-rc1. + Migrate to `zcash_primitives 0.6` et al + +Kris Nuttycombe (40): + Update boost dependencies to version 1.79.0 + Default to error logging if we can't parse the log filter. + Fix boolean initialization in Orchard transaction builder. + Use fallible version parsing for tags. + Allow deprecated wallet features to be preemptively disabled. + Remove zcrawreceive, zcrawjoinsplit, zcrawkeygen from default-allowed deprecated methods. + Add deprecation policy to the zcashd book. + Use ERROR level logging for fatal errors in main/init + Remove `-allowdeprecated=all` + Clarify documentation of the deprecation process. + Select Orchard anchors at `-orchardanchorconfirmations` depth. + Add anchor depth parameter to Get*NoteWitnesses + Disallow -anchorconfirmations values > 100 + Add -anchorconfirmations to the release notes + Fix RPC tests that depend upon -anchorconfirmations=1 + Add z_get(total)balance to deprecation flags. + Apply suggestions from code review + Gracefully handle Get(Sprout/Sapling)NoteWitnesses failure. + Add parity-scale-codec licenses to contrib/debian/copyright + Ensure transaction integer fields are zero-initialized. + Build releases from a commit hash, rather than a named branch. + Apply suggestions from code review + Update release process documentation to clarify the use of release stabilization branches. + Fix missing handling for imported transparent multisig addresses. + Change default anchor depth from 10 confirmations to 3 + Use default anchor confirmations for minconf in z_mergetoaddress. + Add -orchardactionlimit parameter to guard against memory exhaustion. + Add -orchardactionlimit help text. + Postpone dependency updates prior to v5.0.0-rc1 + Set RELEASE_TO_DEPRECATION_WEEKS to 2 weeks to provide RC EOS halt. + Fix a typo in the release script. + Fix typos in release notes & Orchard wallet internal API doc. + Add missing parenthesis to -reindex help. + Include getbalance in recommendations for z_getbalance and z_gettotalbalance replacements. + Add tests to check auth data commitments committing to Orchard actions. + Deprecate `getrawchangeaddress` and `z_listaddresses` + Update rpcwallet help to better distinguish transparent-only APIs. + Revert "Set RELEASE_TO_DEPRECATION_WEEKS to 2 weeks to provide RC EOS halt." + make-release.py: Versioning changes for 5.0.0. + make-release.py: Updated manpages for 5.0.0. + +Larry Ruane (2): + Allow rpc python tests to be run standalone + ThreadStartWalletNotifier: wait until !IBD, rather than !reindex + +Marek (2): + Document the block time in the `z_gettreestate` RPC response + Specify the format and epoch + +Steven Smith (2): + Add orchard pool metrics + Require wallet recovery phrase to be backed up for z_getnewaccount and z_getaddressforaccount + +Taylor Hornby (1): + Reproduce an assertion failure in the listaddresses RPC + +dependabot[bot] (1): + Bump actions/checkout from 2 to 3 + +sasha (28): + Move LoadProofParameters to gtest/utils.cpp + add tx-orchard-duplicate-nullifiers.h to Makefile.gtest.include + Closing #1539 simplifies gtest Makefile. + remove JoinSplitTestingSetup from sighash_tests -- it doesn't need it + Make a LoadGlobalWallet and UnloadGlobalWallet for gtests + Remove proof parameter loading from btests + Separate test suite from tests, inspired by upstream's #12926 + Allow parallel btest runs using make as the parallelization tool. + btest parallelization work: tag #if'd out test suites + Port btest test_basic_joinsplit_verification to gtest suite Joinsplit + Create a new gtest group WalletRPCTests + Port btest rpc_z_shieldcoinbase_internals to gtest suite WalletRPCTests + Port btest rpc_z_mergetoaddress_internals to gtest suite WalletRPCTests + Port btest rpc_z_sendmany_taddr_to_sapling to gtest suite WalletRPCTests + Downgrade btest suite coins_test to BasicTestingSetup + Make [seed_]insecure_rand available to the gtests + Create a new gtest suite CoinsTests + Port CCoinsViewTest to gtest suite CoinsTests + Port nullifier_regression_test to gtest suite CoinsTests + Port anchor_pop_regression_test to gtest suite CoinsTests + Port anchor_regression_test to gtest suite CoinsTests + Port nullifiers_test to gtest suite CoinsTests + Port anchors_flush_test to gtest suite CoinsTests + Port anchors_test to gtest suite CoinsTests + Update copyright header + Update comments in newly-ported gtests to be more consistent with current codebase + Tidy up spacing in newly-ported gtests + Remove -developersapling since it hasn't been implemented for a long time + +teor (1): + Fix typo in getaddressbalance RPC help + From ca7323cc770b60179de86f1aa49315111349a8dc Mon Sep 17 00:00:00 2001 From: Kris Nuttycombe Date: Tue, 10 May 2022 19:58:35 -0600 Subject: [PATCH 19/20] Set NU5 activation height & bump protocol version. --- src/chainparams.cpp | 4 ++-- src/version.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/chainparams.cpp b/src/chainparams.cpp index 8975c53bc..8bfb35718 100644 --- a/src/chainparams.cpp +++ b/src/chainparams.cpp @@ -134,8 +134,8 @@ public: consensus.vUpgrades[Consensus::UPGRADE_CANOPY].hashActivationBlock = uint256S("00000000002038016f976744c369dce7419fca30e7171dfac703af5e5f7ad1d4"); consensus.vUpgrades[Consensus::UPGRADE_NU5].nProtocolVersion = 170100; - consensus.vUpgrades[Consensus::UPGRADE_NU5].nActivationHeight = - Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT; + consensus.vUpgrades[Consensus::UPGRADE_NU5].nActivationHeight = 1687104; + consensus.vUpgrades[Consensus::UPGRADE_ZFUTURE].nProtocolVersion = 0x7FFFFFFF; consensus.vUpgrades[Consensus::UPGRADE_ZFUTURE].nActivationHeight = Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT; diff --git a/src/version.h b/src/version.h index 276b815ef..9c83e079a 100644 --- a/src/version.h +++ b/src/version.h @@ -9,7 +9,7 @@ * network protocol versioning */ -static const int PROTOCOL_VERSION = 170050; +static const int PROTOCOL_VERSION = 170100; //! initial proto version, to be increased after version/verack negotiation static const int INIT_PROTO_VERSION = 209; From 16b49eadd56086aae10f2907e5b8e77b773f1813 Mon Sep 17 00:00:00 2001 From: Kris Nuttycombe Date: Tue, 10 May 2022 20:12:23 -0600 Subject: [PATCH 20/20] Update v5.0.0 release notes to note NU5 upgrade --- doc/release-notes/release-notes-5.0.0.md | 32 ++++++++++++++++++++---- 1 file changed, 27 insertions(+), 5 deletions(-) diff --git a/doc/release-notes/release-notes-5.0.0.md b/doc/release-notes/release-notes-5.0.0.md index 6baede794..50013b592 100644 --- a/doc/release-notes/release-notes-5.0.0.md +++ b/doc/release-notes/release-notes-5.0.0.md @@ -1,6 +1,28 @@ Notable changes =============== +The mainnet activation of the NU5 network upgrade is supported by the 5.0.0 +release, with an activation height of 1687104, which should occur on +approximately May 31, 2022. Please upgrade to this release, or any subsequent +release, in order to follow the NU5 network upgrade. + +The following ZIPs are being deployed, or have been updated, as part of this upgrade: + +* [ZIP 32 : Shielded Hierarchical Deterministic Wallets (updated)](https://zips.z.cash/zip_0032) +* [ZIP 203: Transaction Expiry (updated)](https://zips.z.cash/zip_0203) +* [ZIP 209: Prohibit Negative Shielded Chain Value Pool Balances (updated)](https://zips.z.cash/zip_0209) +* [ZIP 212: Allow Recipient to Derive Ephemeral Secret from Note Plaintext (updated)](https://zips.z.cash/zip_0212) +* [ZIP 213: Shielded Coinbase (updated)](https://zips.z.cash/zip_0213) +* [ZIP 216: Require Canonical Jubjub Point Encodings](https://zips.z.cash/zip_0216) +* [ZIP 221: FlyClient - Consensus-Layer Changes (updated)](https://zips.z.cash/zip_0221) +* [ZIP 224: Orchard Shielded Protocol](https://zips.z.cash/zip_0224) +* [ZIP 225: Version 5 Transaction Format](https://zips.z.cash/zip_0225) +* [ZIP 239: Relay of Version 5 Transactions](https://zips.z.cash/zip_0239) +* [ZIP 244: Transaction Identifier Non-Malleability](https://zips.z.cash/zip_0244) +* [ZIP 252: Deployment of the NU5 Network Upgrade](https://zips.z.cash/zip_0252) +* [ZIP 316: Unified Addresses and Unified Viewing Keys](https://zips.z.cash/zip_0316) +* [ZIP 401: Addressing Mempool Denial-of-Service (clarified)](https://zips.z.cash/zip_0401) + Feature Deprecation and removal ------------------------------- @@ -23,8 +45,8 @@ permitted. Deprecated ---------- -As of this release, the following features are deprecated, but remain -available by default. These features may be disabled by setting +As of this release, the following features are deprecated, but remain +available by default. These features may be disabled by setting `-allowdeprecated=none`. After release 5.3.0, these features will be disabled by default and the following flags to `-allowdeprecated` will be required to permit their continued use: @@ -40,7 +62,7 @@ be required to permit their continued use: - `z_getnewaddress` - controls availability of the `z_getnewaddress` RPC method. - `z_listaddresses` - controls availability of the `z_listaddresses` RPC method. - `addrtype` - controls availability of the deprecated `type` attribute - returned by RPC methods that return address metadata. + returned by RPC methods that return address metadata. As of this release, the following previously deprecated features are disabled by default, but may be be reenabled using `-allowdeprecated=`. @@ -63,8 +85,8 @@ Option handling selected from when spending notes. By default, anchors will now be selected to have 3 confirmations. Values greater than 100 are not supported. - A new `-orchardactionlimit` option has been added to allow the user to - override the default maximum of 50 Orchard actions per transaction. - Transactions that contain large numbers of Orchard actions can use + override the default maximum of 50 Orchard actions per transaction. + Transactions that contain large numbers of Orchard actions can use large amounts of memory for proving, so the 50-action default limit is imposed to guard against memory exhaustion. Systems with more than 16G of memory can safely set this parameter to allow 200 actions or more.