Merge pull request #6430 from zcash/hotfix-v5.4.1

Back-merge of hotfix-v5.4.1
This commit is contained in:
Kris Nuttycombe 2023-02-13 16:24:30 -07:00 committed by GitHub
commit 0b9f76c36c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
17 changed files with 130 additions and 59 deletions

View File

@ -1,4 +1,4 @@
Zcash 5.4.0
Zcash 5.4.1
<img align="right" width="120" height="80" src="doc/imgs/logo.png">
===========

View File

@ -2,7 +2,7 @@ dnl require autoconf 2.60 (AS_ECHO/AS_ECHO_N)
AC_PREREQ([2.60])
define(_CLIENT_VERSION_MAJOR, 5)
define(_CLIENT_VERSION_MINOR, 4)
define(_CLIENT_VERSION_REVISION, 0)
define(_CLIENT_VERSION_REVISION, 1)
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)))

View File

@ -1,3 +1,9 @@
zcash (5.4.1) stable; urgency=medium
* 5.4.1 release.
-- Electric Coin Company <team@electriccoin.co> Mon, 13 Feb 2023 18:10:07 +0000
zcash (5.4.0) stable; urgency=medium
* 5.4.0 release.

View File

@ -1,5 +1,5 @@
---
name: "zcash-5.4.0"
name: "zcash-5.4.1"
enable_cache: true
distro: "debian"
suites:

View File

@ -1,5 +1,5 @@
---
name: "zcash-5.4.0"
name: "zcash-5.4.1"
enable_cache: true
distro: "debian"
suites:

View File

@ -1,7 +1,7 @@
Zcash Contributors
==================
Jack Grigg (1296)
Jack Grigg (1297)
Kris Nuttycombe (618)
Simon Liu (460)
Sean Bowe (389)

View File

@ -1,9 +1,9 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.1.
.TH ZCASH-CLI "1" "February 2023" "zcash-cli v5.4.0" "User Commands"
.TH ZCASH-CLI "1" "February 2023" "zcash-cli v5.4.1" "User Commands"
.SH NAME
zcash-cli \- manual page for zcash-cli v5.4.0
zcash-cli \- manual page for zcash-cli v5.4.1
.SH DESCRIPTION
Zcash RPC client version v5.4.0
Zcash RPC client version v5.4.1
.PP
In order to ensure you are adequately protecting your privacy when using Zcash,
please see <https://z.cash/support/security/>.

View File

@ -1,9 +1,9 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.1.
.TH ZCASH-TX "1" "February 2023" "zcash-tx v5.4.0" "User Commands"
.TH ZCASH-TX "1" "February 2023" "zcash-tx v5.4.1" "User Commands"
.SH NAME
zcash-tx \- manual page for zcash-tx v5.4.0
zcash-tx \- manual page for zcash-tx v5.4.1
.SH DESCRIPTION
Zcash zcash\-tx utility version v5.4.0
Zcash zcash\-tx utility version v5.4.1
.SS "Usage:"
.TP
zcash\-tx [options] <hex\-tx> [commands]

View File

@ -1,7 +1,7 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.1.
.TH ZCASHD-WALLET-TOOL "1" "February 2023" "zcashd-wallet-tool v5.4.0" "User Commands"
.TH ZCASHD-WALLET-TOOL "1" "February 2023" "zcashd-wallet-tool v5.4.1" "User Commands"
.SH NAME
zcashd-wallet-tool \- manual page for zcashd-wallet-tool v5.4.0
zcashd-wallet-tool \- manual page for zcashd-wallet-tool v5.4.1
.SH SYNOPSIS
.B zcashd-wallet-tool
[\fI\,OPTIONS\/\fR]

View File

@ -1,9 +1,9 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.1.
.TH ZCASHD "1" "February 2023" "zcashd v5.4.0" "User Commands"
.TH ZCASHD "1" "February 2023" "zcashd v5.4.1" "User Commands"
.SH NAME
zcashd \- manual page for zcashd v5.4.0
zcashd \- manual page for zcashd v5.4.1
.SH DESCRIPTION
Zcash Daemon version v5.4.0
Zcash Daemon version v5.4.1
.PP
In order to ensure you are adequately protecting your privacy when using Zcash,
please see <https://z.cash/support/security/>.

View File

@ -0,0 +1,46 @@
Notable changes
===============
`allowdeprecated` in `zcash.conf`
---------------------------------
In v5.0.0 a [feature deprecation framework](https://zcash.github.io/zcash/user/deprecation.html)
was released, to enable `zcashd` features to be formally deprecated and removed:
- In stage 1, a feature is marked as deprecated, but otherwise left as-is. It
remains in this stage for at least 18 weeks.
- In stage 2, the feature is default-disabled, but can be re-enabled with the
`-allowdeprecated` config option. It remains in this stage for at least 18
weeks.
- Finally, the feature is removed - either entirely, or (e.g. in the case of RPC
methods that were inherited from Bitcoin Core) with a "tombstone" left to
inform users of the removal (and what to use instead if applicable).
Config options can be specified either as a `zcashd` argument (`-option=value`)
or in `zcash.conf` (as a `option=value` line). However, due to a bug in the
implementation, `allowdeprecated=feature` lines in `zcash.conf` were ignored.
The bug went unnoticed until v5.4.0, in which the first group of features moved
from stage 1 to stage 2. This hotfix release fixes the bug.
Fixed RPC blocking and wallet view lag on reindex
-------------------------------------------------
The known issue reported in the v5.4.0 release notes has been fixed.
Changelog
=========
Jack Grigg (8):
Sleep for 200us before each ActivateBestChainStep call
Load `-allowdeprecated` settings after reading the config file
qa: Refactor `wallet_deprecation` test to extract common logic
qa: Extend `wallet_deprecation` to test `allowdeprecated` in config file
Write release notes for v5.4.1
Postpone dependency updates for v5.4.1
make-release.py: Versioning changes for 5.4.1.
make-release.py: Updated manpages for 5.4.1.
Jack Grigg (1):
Adjust documentation of 200µs sleep

View File

@ -12,22 +12,48 @@ from test_framework.util import (
)
from test_framework.authproxy import JSONRPCException
import os.path
# Pick a subset of the deprecated RPC methods to test with. This test assumes that
# the deprecation feature name is the same as the RPC method name, and that the RPC
# method works without any arguments.
DEFAULT_ENABLED = [
"z_gettotalbalance",
]
DEFAULT_DISABLED = [
"getnewaddress",
"z_getnewaddress",
]
# Test wallet address behaviour across network upgrades
class WalletDeprecationTest(BitcoinTestFramework):
def __init__(self):
super().__init__()
self.num_nodes = 1
def setup_network(self):
self.setup_network_internal([])
def setup_chain(self):
super().setup_chain()
# Save a copy of node 0's zcash.conf
with open(os.path.join(self.options.tmpdir, "node0", "zcash.conf"), 'r', encoding='utf8') as f:
self.conf_lines = f.readlines()
def setup_network_internal(self, allowed_deprecated = []):
def setup_network(self):
self.setup_network_with_args([])
def setup_network_with_args(self, allowed_deprecated):
dep_args = ["-allowdeprecated=" + v for v in allowed_deprecated]
self.nodes = start_nodes(
self.num_nodes, self.options.tmpdir,
extra_args=[dep_args] * self.num_nodes)
def setup_network_with_config(self, allowed_deprecated):
conf_lines = self.conf_lines + ["allowdeprecated={}\n".format(v) for v in allowed_deprecated]
with open(os.path.join(self.options.tmpdir, "node0", "zcash.conf"), 'w', encoding='utf8') as f:
f.writelines(conf_lines)
self.nodes = start_nodes(self.num_nodes, self.options.tmpdir)
def verify_enabled(self, function):
try:
getattr(self.nodes[0], function)()
@ -50,16 +76,17 @@ class WalletDeprecationTest(BitcoinTestFramework):
"failed with '%s'" % errorString if len(errorString) > 0 else "succeeded",
))
def run_test(self):
# Pick a subset of the deprecated RPC methods to test with. This test assumes that
# the deprecation feature name is the same as the RPC method name.
DEFAULT_ENABLED = [
]
DEFAULT_DISABLED = [
"getnewaddress",
"z_getnewaddress",
]
def test_case(self, start_mode, features_to_allow, expected_state):
stop_nodes(self.nodes)
wait_bitcoinds()
start_mode(features_to_allow)
for function in DEFAULT_ENABLED:
expected_state(function)
for function in DEFAULT_DISABLED:
expected_state(function)
def run_test(self):
# RPC methods that are deprecated but enabled by default should succeed
for function in DEFAULT_ENABLED:
self.verify_enabled(function)
@ -68,25 +95,12 @@ class WalletDeprecationTest(BitcoinTestFramework):
for function in DEFAULT_DISABLED:
self.verify_disabled(function)
# restart with a specific selection of deprecated methods enabled
stop_nodes(self.nodes)
wait_bitcoinds()
self.setup_network_internal(DEFAULT_DISABLED)
for start_mode in (self.setup_network_with_args, self.setup_network_with_config):
# restart with a specific selection of deprecated methods enabled
self.test_case(start_mode, DEFAULT_DISABLED, self.verify_enabled)
for function in DEFAULT_ENABLED:
self.verify_enabled(function)
for function in DEFAULT_DISABLED:
self.verify_enabled(function)
# restart with no deprecated methods enabled
stop_nodes(self.nodes)
wait_bitcoinds()
self.setup_network_internal(["none"])
for function in DEFAULT_ENABLED:
self.verify_disabled(function)
for function in DEFAULT_DISABLED:
self.verify_disabled(function)
# restart with no deprecated methods enabled
self.test_case(start_mode, ["none"], self.verify_disabled)
if __name__ == '__main__':
WalletDeprecationTest().main()

View File

@ -4,6 +4,8 @@
# bdb 18.1.40 2020-09-01
#
native_zstd 1.5.4 2023-03-01
# cxx 1.0.84-1.0.87 didn't update third-party/Cargo.lock
native_cxxbridge 1.0.84 2024-02-01
native_cxxbridge 1.0.85 2024-02-01
@ -11,12 +13,14 @@ native_cxxbridge 1.0.86 2024-02-01
native_cxxbridge 1.0.87 2024-02-01
native_cxxbridge 1.0.88 2024-02-01
native_cxxbridge 1.0.89 2024-02-01
native_cxxbridge 1.0.90 2024-02-01
rustcxx 1.0.84 2024-02-01
rustcxx 1.0.85 2024-02-01
rustcxx 1.0.86 2024-02-01
rustcxx 1.0.87 2024-02-01
rustcxx 1.0.88 2024-02-01
rustcxx 1.0.89 2024-02-01
rustcxx 1.0.90 2024-02-01
# CCache 4.7 appears to drop support for Ubuntu 18.04
native_ccache 4.7 2023-03-01
@ -46,6 +50,7 @@ native_rust 1.65.0 2023-03-01
native_rust 1.66.0 2023-03-01
native_rust 1.66.1 2023-03-01
native_rust 1.67.0 2023-03-01
native_rust 1.67.1 2023-03-01
# We're never updating to this version
bdb 18.1.40 2024-02-01

View File

@ -94,14 +94,6 @@ bool AppInit(int argc, char* argv[])
return true;
}
// Handle setting of allowed-deprecated features as early as possible
// so that it's possible for other initialization steps to respect them.
auto deprecationError = SetAllowedDeprecatedFeaturesFromCLIArgs();
if (deprecationError.has_value()) {
fprintf(stderr, "%s", deprecationError.value().c_str());
return false;
}
try
{
if (!fs::is_directory(GetDataDir(false)))
@ -143,6 +135,14 @@ bool AppInit(int argc, char* argv[])
return false;
}
// Handle setting of allowed-deprecated features as early as possible
// so that it's possible for other initialization steps to respect them.
auto deprecationError = LoadAllowedDeprecatedFeatures();
if (deprecationError.has_value()) {
fprintf(stderr, "%s", deprecationError.value().c_str());
return false;
}
// Command-line RPC
bool fCommandLine = false;
for (int i = 1; i < argc; i++)

View File

@ -17,7 +17,7 @@
//! These need to be macros, as clientversion.cpp's and bitcoin*-res.rc's voodoo requires it
#define CLIENT_VERSION_MAJOR 5
#define CLIENT_VERSION_MINOR 4
#define CLIENT_VERSION_REVISION 0
#define CLIENT_VERSION_REVISION 1
#define CLIENT_VERSION_BUILD 50
//! Set to true for release, false for prerelease or test build

View File

@ -61,7 +61,7 @@ void EnforceNodeDeprecation(int nHeight, bool forceLogging, bool fThread) {
}
}
std::optional<std::string> SetAllowedDeprecatedFeaturesFromCLIArgs() {
std::optional<std::string> LoadAllowedDeprecatedFeatures() {
auto args = GetMultiArg("-allowdeprecated");
std::set<std::string> allowdeprecated(args.begin(), args.end());

View File

@ -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 = 1977500;
static const int APPROX_RELEASE_HEIGHT = 1983000;
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.");
@ -71,13 +71,13 @@ extern bool fEnableWalletTxVJoinSplit;
void EnforceNodeDeprecation(int nHeight, bool forceLogging=false, bool fThread=true);
/**
* Checks command-line arguments for enabling and/or disabling of deprecated
* Checks config options for enabling and/or disabling of deprecated
* features and sets flags that enable deprecated features accordingly.
*
* @return std::nullopt if successful, or an error message indicating what
* values are permitted for `-allowdeprecated`.
*/
std::optional<std::string> SetAllowedDeprecatedFeaturesFromCLIArgs();
std::optional<std::string> LoadAllowedDeprecatedFeatures();
/**
* Returns a comma-separated list of the valid arguments to the -allowdeprecated