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/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/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/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
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
+
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
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
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 a28d37f73..08f123dc2 100644
--- a/src/deprecation.h
+++ b/src/deprecation.h
@@ -10,8 +10,8 @@
// 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 RELEASE_TO_DEPRECATION_WEEKS = 16;
+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.");
static const int ACTIVATION_TO_DEPRECATION_BLOCKS = (RELEASE_TO_DEPRECATION_WEEKS * 7 * 24 * EXPECTED_BLOCKS_PER_HOUR);