Merge pull request #6364 from str4d/release-v5.4.0-rc2

Release v5.4.0-rc2
This commit is contained in:
Kris Nuttycombe 2023-01-23 21:22:09 -07:00 committed by GitHub
commit a1589ac994
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
16 changed files with 345 additions and 35 deletions

View File

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

View File

@ -3,7 +3,7 @@ AC_PREREQ([2.60])
define(_CLIENT_VERSION_MAJOR, 5)
define(_CLIENT_VERSION_MINOR, 4)
define(_CLIENT_VERSION_REVISION, 0)
define(_CLIENT_VERSION_BUILD, 25)
define(_CLIENT_VERSION_BUILD, 26)
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)

View File

@ -1,3 +1,9 @@
zcash (5.4.0~rc2) stable; urgency=medium
* 5.4.0-rc2 release.
-- Electric Coin Company <team@electriccoin.co> Tue, 24 Jan 2023 00:04:35 +0000
zcash (5.4.0~rc1) stable; urgency=medium
* 5.4.0-rc1 release.

View File

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

View File

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

View File

@ -1,9 +1,9 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.1.
.TH ZCASH-CLI "1" "January 2023" "zcash-cli v5.4.0-rc1" "User Commands"
.TH ZCASH-CLI "1" "January 2023" "zcash-cli v5.4.0-rc2" "User Commands"
.SH NAME
zcash-cli \- manual page for zcash-cli v5.4.0-rc1
zcash-cli \- manual page for zcash-cli v5.4.0-rc2
.SH DESCRIPTION
Zcash RPC client version v5.4.0\-rc1
Zcash RPC client version v5.4.0\-rc2
.PP
In order to ensure you are adequately protecting your privacy when using Zcash,
please see <https://z.cash/support/security/>.
@ -80,8 +80,8 @@ Timeout in seconds during HTTP requests, or 0 for no timeout. (default:
In order to ensure you are adequately protecting your privacy when using Zcash,
please see <https://z.cash/support/security/>.
Copyright (C) 2009-2022 The Bitcoin Core Developers
Copyright (C) 2015-2022 The Zcash Developers
Copyright (C) 2009-2023 The Bitcoin Core Developers
Copyright (C) 2015-2023 The Zcash Developers
This is experimental software.

View File

@ -1,9 +1,9 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.1.
.TH ZCASH-TX "1" "January 2023" "zcash-tx v5.4.0-rc1" "User Commands"
.TH ZCASH-TX "1" "January 2023" "zcash-tx v5.4.0-rc2" "User Commands"
.SH NAME
zcash-tx \- manual page for zcash-tx v5.4.0-rc1
zcash-tx \- manual page for zcash-tx v5.4.0-rc2
.SH DESCRIPTION
Zcash zcash\-tx utility version v5.4.0\-rc1
Zcash zcash\-tx utility version v5.4.0\-rc2
.SS "Usage:"
.TP
zcash\-tx [options] <hex\-tx> [commands]
@ -91,8 +91,8 @@ Set register NAME to given JSON\-STRING
In order to ensure you are adequately protecting your privacy when using Zcash,
please see <https://z.cash/support/security/>.
Copyright (C) 2009-2022 The Bitcoin Core Developers
Copyright (C) 2015-2022 The Zcash Developers
Copyright (C) 2009-2023 The Bitcoin Core Developers
Copyright (C) 2015-2023 The Zcash Developers
This is experimental software.

View File

@ -1,7 +1,7 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.1.
.TH ZCASHD-WALLET-TOOL "1" "January 2023" "zcashd-wallet-tool v5.4.0-rc1" "User Commands"
.TH ZCASHD-WALLET-TOOL "1" "January 2023" "zcashd-wallet-tool v5.4.0-rc2" "User Commands"
.SH NAME
zcashd-wallet-tool \- manual page for zcashd-wallet-tool v5.4.0-rc1
zcashd-wallet-tool \- manual page for zcashd-wallet-tool v5.4.0-rc2
.SH SYNOPSIS
.B zcashd-wallet-tool
[\fI\,OPTIONS\/\fR]
@ -45,7 +45,7 @@ The environment variable RUST_LOG controls debug output, e.g.
In order to ensure you are adequately protecting your privacy when using Zcash,
please see <https://z.cash/support/security/>.
Copyright (C) 2015-2022 The Zcash Developers
Copyright (C) 2015-2023 The Zcash Developers
This is experimental software.

View File

@ -1,9 +1,9 @@
.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.1.
.TH ZCASHD "1" "January 2023" "zcashd v5.4.0-rc1" "User Commands"
.TH ZCASHD "1" "January 2023" "zcashd v5.4.0-rc2" "User Commands"
.SH NAME
zcashd \- manual page for zcashd v5.4.0-rc1
zcashd \- manual page for zcashd v5.4.0-rc2
.SH DESCRIPTION
Zcash Daemon version v5.4.0\-rc1
Zcash Daemon version v5.4.0\-rc2
.PP
In order to ensure you are adequately protecting your privacy when using Zcash,
please see <https://z.cash/support/security/>.
@ -608,8 +608,8 @@ possible (default: 4)
In order to ensure you are adequately protecting your privacy when using Zcash,
please see <https://z.cash/support/security/>.
Copyright (C) 2009-2022 The Bitcoin Core Developers
Copyright (C) 2015-2022 The Zcash Developers
Copyright (C) 2009-2023 The Bitcoin Core Developers
Copyright (C) 2015-2023 The Zcash Developers
This is experimental software.

View File

@ -11,6 +11,37 @@ This release fixes an issue that could potentially cause a node to crash with th
log message "The wallet's best block hash `<hash>` was not detected in restored
chain state. Giving up; please restart with `-rescan`."
Transparent pool and chain supply tracking
------------------------------------------
Since v2.0.0, `zcashd` has tracked the change in value within the Sprout and
Sapling shielded pools for each block; v5.0.0 added the Orchard pool. This
release completes the set, by tracking the change in value within the
"transparent" pool (more precisely, the value stored in Bitcoin-style UTXOs).
`zcashd` also now tracks the change in "chain supply" for each block, defined as
the sum of coinbase output values, minus unclaimed fees. This is precisely equal
to the sum of the value in the transparent and shielded pools, and equivalent to
the sum of all unspent coins/notes on the chain. It is bounded above by the
theoretical maximum supply, but in practice is lower due to, for example, miners
not claiming transaction fees.
> Bitcoin-style consensus rules implement fees as an imbalance between spent
> coins/notes and newly-created coins/notes. The consensus rules require that a
> coinbase transaction's outputs have a total value no greater than the sum of
> that block's subsidy and the fees made available by the transactions in the
> block. However, the consensus rules do not require that all of the available
> funds are claimed, and a miner can create coinbase transactions with lower
> value in the outputs (though in the case of Zcash, the consensus rules do
> require the transaction to include [ZIP 1014](https://zips.z.cash/zip-1014)
> Funding Stream outputs).
After upgrading to v5.4.0, `zcashd` will start tracking changes in transparent
pool value and chain supply from the height at which it is restarted. Block
heights prior to this will not have any information recorded. To track changes
from genesis, and thus monitor the total transparent pool size and chain supply,
you would need to restart your node with the `-reindex` option.
RPC Changes
-----------
@ -20,6 +51,18 @@ RPC Changes
case, they would (properly) require that the transaction didnt have any
change, but this could be confusing, as the documentation stated that these
two conditions (using "ANY\_TADDR" and disallowing change) wouldnt coincide.
- A new value pool object with `"id": "transparent"` has been added to the
`valuePools` list in `getblockchaininfo` and `getblock`.
- A new `chainSupply` key has been added to `getblockchaininfo` and `getblock`
to report the total chain supply as of that block height (if tracked), and the
change in chain supply caused by the block (for `getblock`, if measured).
Mining
-------
- Changes to `getblocktemplate` have been backported from upstream Bitcoin Core,
to significantly improve its performance by doing more work ahead of time in
the mempool (and reusing the work across multiple `getblocktemplate` calls).
[Deprecations](https://zcash.github.io/zcash/user/deprecation.html)
--------------

View File

@ -0,0 +1,262 @@
Notable changes
===============
Fixes
-----
This release fixes an issue that could potentially cause a node to crash with the
log message "The wallet's best block hash `<hash>` was not detected in restored
chain state. Giving up; please restart with `-rescan`."
Transparent pool and chain supply tracking
------------------------------------------
Since v2.0.0, `zcashd` has tracked the change in value within the Sprout and
Sapling shielded pools for each block; v5.0.0 added the Orchard pool. This
release completes the set, by tracking the change in value within the
"transparent" pool (more precisely, the value stored in Bitcoin-style UTXOs).
`zcashd` also now tracks the change in "chain supply" for each block, defined as
the sum of coinbase output values, minus unclaimed fees. This is precisely equal
to the sum of the value in the transparent and shielded pools, and equivalent to
the sum of all unspent coins/notes on the chain. It is bounded above by the
theoretical maximum supply, but in practice is lower due to, for example, miners
not claiming transaction fees.
> Bitcoin-style consensus rules implement fees as an imbalance between spent
> coins/notes and newly-created coins/notes. The consensus rules require that a
> coinbase transaction's outputs have a total value no greater than the sum of
> that block's subsidy and the fees made available by the transactions in the
> block. However, the consensus rules do not require that all of the available
> funds are claimed, and a miner can create coinbase transactions with lower
> value in the outputs (though in the case of Zcash, the consensus rules do
> require the transaction to include [ZIP 1014](https://zips.z.cash/zip-1014)
> Funding Stream outputs).
After upgrading to v5.4.0, `zcashd` will start tracking changes in transparent
pool value and chain supply from the height at which it is restarted. Block
heights prior to this will not have any information recorded. To track changes
from genesis, and thus monitor the total transparent pool size and chain supply,
you will need to restart your node with the `-reindex` option.
RPC Changes
-----------
- `z_sendmany` will no longer select transparent coinbase when "ANY\_TADDR" is
used as the `fromaddress`. It was already documented to do this, but the
previous behavior didnt match. When coinbase notes were selected in this
case, they would (properly) require that the transaction didnt have any
change, but this could be confusing, as the documentation stated that these
two conditions (using "ANY\_TADDR" and disallowing change) wouldnt coincide.
- A new value pool object with `"id": "transparent"` has been added to the
`valuePools` list in `getblockchaininfo` and `getblock`.
- A new `chainSupply` key has been added to `getblockchaininfo` and `getblock`
to report the total chain supply as of that block height (if tracked), and the
change in chain supply caused by the block (for `getblock`, if measured).
Mining
-------
- Changes to `getblocktemplate` have been backported from upstream Bitcoin Core,
to significantly improve its performance by doing more work ahead of time in
the mempool (and reusing the work across multiple `getblocktemplate` calls).
[Deprecations](https://zcash.github.io/zcash/user/deprecation.html)
--------------
The following features have been deprecated, but remain available by default.
These features may be disabled by setting `-allowdeprecated=none`. 18 weeks
after this release, these features will be disabled by default and the following
flags to `-allowdeprecated` will be required to permit their continued use:
- `gbt_oldhashes`: the `finalsaplingroothash`, `lightclientroothash`, and
`blockcommitmentshash` fields in the output of `getblocktemplate` have been
replaced by the `defaultroots` field.
The following previously-deprecated features have been disabled by default, and
will be removed in 18 weeks:
- `legacy_privacy`
- `getnewaddress`
- `getrawchangeaddress`
- `z_getbalance`
- `z_gettotalbalance`
- `z_getnewaddress`
- `z_listaddresses`
- `addrtype`
- `wallettxvjoinsplit`
The following previously-deprecated features have been removed:
- `dumpwallet`
- `zcrawreceive`
- `zcrawjoinsplit`
- `zcrawkeygen`
Platform Support
----------------
- CentOS 8 has been removed from the list of supported platforms. It reached EoL
on December 31st 2021, and does not satisfy our Tier 2 policy requirements.
Changelog
=========
Alex Morcos (3):
Make accessing mempool parents and children public
Expose FormatStateMessage
Rewrite CreateNewBlock
Alfredo Garcia (1):
Add chain supply and transparent value to block index.
Carl Dong (4):
depends: More robust cmake invocation
depends: Cleanup CMake invocation
depends: Prepend CPPFLAGS to C{,XX}FLAGS for CMake
depends: Specify LDFLAGS to cmake as well
Daira Hopwood (6):
Add tl::expected. refs #4816
The std::expected proposal has unnecessary instances of undefined behaviour for operator->, operator*, and error(). Make these into assertion failures (this still conforms to the proposal).
Refactor HaveShieldedRequirements to use tl::expected (example with a void T) and rename it to CheckShieldedRequirements.
tl::expected follow-up to address @str4d's comments.
Cleanup after removing dumpwallet.
Change the time that the wallet will wait for the block index to load from 5 minutes to 2 hours.
Dimitris Apostolou (2):
Fix typos
Fix typos
Greg Pfeil (22):
Add PrivacyPolicyMeet
Remove trailing whitespace in fetch-params.sh
Migrate fetch-params.sh to bash
Scope the fetch-params lock file to the user
Update comments to match changed tests
Put utf8.h in the correct place
Dont select transparent coinbase with ANY_TADDR
Update failing tests after fixing ANY_TADDR behavior
Apply suggestions from code review
Apply suggestions from code review
Appease ShellCheck
Defer fixing docker/entrypoint.sh lint failure
Apply suggestions from code review
Fix a minor bug in docker/entrypoint.sh
Improve PrivacyPolicy comments
Apply suggestions from code review
Add release notes
Update src/wallet/asyncrpcoperation_sendmany.cpp
Fix a missing newline in the RPC docs
No longer test_received_sprout
Use cached sprout addresses rather than funding
Update overwinter test to not shield to Sprout
Jack Grigg (45):
test: Handle mining slow start inside `CreateNewBlock_validity`
test: Improve CreateNewBlock_validity exception checks
txdb: Remove const annotation from blockinfo iterator type
Remove `dumpwallet` RPC method
qa: Refactor `wallet_deprecation` test to simplify deprecation changes
Remove `zcraw*` RPC methods
txdb: Clean up for loop syntax in `WriteBatchSync`
Disable previously-deprecated features by default
Deprecate old hash fields of `getblocktemplate`
qa: Change show_help RPC test to print out differences
qa: Update mempool_packages RPC test after deprecation ratcheting
qa: Import Rust crate audits from Firefox
qa: Import Rust crate audits from the Bytecode Alliance
qa: Import Rust crate audits from Embark Studios
qa: Remove audit-as-crates-io for non-third-party crates
cargo update
zcash_primitives 0.9
clearscreen 2.0
depends: googletest 1.12.1
Remove CentOS 8 as a supported platform
depends: native_zstd 1.5.2
depends: native_ccache 4.6.3
depends: Add package for native_cmake 3.25.1
depends: Force cmake to install libzstd in lib/
build-aux: Update Boost macros to latest serials
build: Bump required Boost version
depends: Force Boost library to be installed in lib/
depends: Add tl_expected to update checker
depends: Boost 1.81.0
depends: utfcpp 3.2.3
qa: Postpone LLVM 15 and CCache 4.7 updates
depends: Update cxx to 1.0.83
cargo update
Document -clockoffset option
qa: Update show_help RPC test
doc: Fix arguments to make-release.py in hotfix process
depends: CMake 3.25.2
make-release.py: Versioning changes for 5.4.0-rc1.
make-release.py: Updated manpages for 5.4.0-rc1.
make-release.py: Updated release notes and changelog for 5.4.0-rc1.
depends: Update cxx to 1.0.87
metrics: Update `zcash.pool.value.zatoshis` gauge for transparent pool
Update release notes with notable changes for v5.4.0
make-release.py: Versioning changes for 5.4.0-rc2.
make-release.py: Updated manpages for 5.4.0-rc2.
James O'Beirne (2):
Clarify help messages for path args to mention datadir prefix
Add AbsPathForConfigVal to consolidate datadir prefixing for path args
Kris Nuttycombe (14):
Add TransactionStrategy::IsCompatibleWith
Modify TransactionBuilder to use the standard default fee.
Factor out memo parsing from asyncrpcoperation_sendmany
Remove mergetoaddress_sprout test as sending to Sprout is no longer supported.
Remove wallet_shieldcoinbase_sprout test.
Update `mergetoaddress_mixednotes.py` to no longer send to Sprout.
Verify sum of pool balances against chain total supply.
Apply suggestions from code review
Add script for verifying block rewards and fees not claimed by miners.
Apply suggestions from code review
Remove unnecessary delta_count variable.
Replace fix-copyright-headers.py with a script that creates a scripted-diff git commit.
scripted-diff: Update Zcash copyrights to 2023
Apply suggestions from code review
Marco Falke (4):
[init] Add missing help for args
[init] Help Msg: Use Params(CBaseChainParams::MAIN)
Clarify mocktime help message
init: Fix help message for checkblockindex
Marius Kjærstad (5):
Hardened checkpoint update at block 1860000 for mainnet
Update src/chainparams.cpp
Some more formatting changes to chainparams.cpp
Forgot to add 0x
Add some more historical checkpoints
Mark Friedenbach (1):
Prevent block.nTime from decreasing
Marshall Gaucher (4):
Update zcash-build-bench.yml
Update README.md
Update contrib/ci-builders/tekton/tekton-labs/tasks/zcash-build.yml
Update contrib/ci-builders/tekton/tekton-labs/tasks/zcash-build-test.yml
Michał Janiszewski (1):
Update debian/compat to version 13
Russell Yanofsky (2):
depends: Add CMake helper for building packages
depends: Set CMAKE_INSTALL_RPATH for native packages
Suhas Daftuar (3):
Track transaction packages in CTxMemPoolEntry
Add test showing bug in mempool packages
Fix mempool package tracking edge case
Wladimir J. van der Laan (1):
rpc: Write authcookie atomically
Marshall Gaucher (2):
add basic tekton zcash env
update memory targets with heaptrack

View File

@ -86,9 +86,8 @@ class WalletPersistenceTest (BitcoinTestFramework):
# Verify size of pools after restarting
chainInfo = self.nodes[0].getblockchaininfo()
pools = chainInfo['valuePools']
# Reenable these test in v5.4.0-rc2
# check_chain_value(chainInfo['chainSupply'], None, expected_supply) # Supply
# check_chain_value(pools[0], 'transparent', expected_supply)
check_chain_value(chainInfo['chainSupply'], None, expected_supply) # Supply
check_chain_value(pools[0], 'transparent', expected_supply)
check_chain_value(pools[1], 'sprout', Decimal('0'))
check_chain_value(pools[2], 'sapling', Decimal('0'))
check_chain_value(pools[3], 'orchard', Decimal('0'))
@ -111,9 +110,8 @@ class WalletPersistenceTest (BitcoinTestFramework):
# Verify size of pools
chainInfo = self.nodes[0].getblockchaininfo()
pools = chainInfo['valuePools']
# Reenable these tests in v5.4.0-rc2
# check_chain_value(chainInfo['chainSupply'], None, expected_supply) # Supply
# check_chain_value(pools[0], 'transparent', expected_supply - Decimal('20')) # Transparent
check_chain_value(chainInfo['chainSupply'], None, expected_supply) # Supply
check_chain_value(pools[0], 'transparent', expected_supply - Decimal('20')) # Transparent
check_chain_value(pools[1], 'sprout', Decimal('0'))
check_chain_value(pools[2], 'sapling', Decimal('20'))
check_chain_value(pools[3], 'orchard', Decimal('0'))
@ -126,9 +124,8 @@ class WalletPersistenceTest (BitcoinTestFramework):
# Verify size of pools
chainInfo = self.nodes[0].getblockchaininfo()
pools = chainInfo['valuePools']
# Reenable these tests in v5.4.0-rc2
# check_chain_value(chainInfo['chainSupply'], None, expected_supply) # Supply
# check_chain_value(pools[0], 'transparent', expected_supply - Decimal('20')) # Transparent
check_chain_value(chainInfo['chainSupply'], None, expected_supply) # Supply
check_chain_value(pools[0], 'transparent', expected_supply - Decimal('20')) # Transparent
check_chain_value(pools[1], 'sprout', Decimal('0'))
check_chain_value(pools[2], 'sapling', Decimal('20'))
check_chain_value(pools[3], 'orchard', Decimal('0'))

View File

@ -4,13 +4,15 @@
# bdb 18.1.40 2020-09-01
#
# cxx 1.0.84-1.0.86 didn't update third-party/Cargo.lock
# 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
native_cxxbridge 1.0.86 2024-02-01
native_cxxbridge 1.0.87 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
# CCache 4.7 appears to drop support for Ubuntu 18.04
native_ccache 4.7 2023-03-01

View File

@ -18,7 +18,7 @@
#define CLIENT_VERSION_MAJOR 5
#define CLIENT_VERSION_MINOR 4
#define CLIENT_VERSION_REVISION 0
#define CLIENT_VERSION_BUILD 25
#define CLIENT_VERSION_BUILD 26
//! Set to true for release, false for prerelease or test build
#define CLIENT_VERSION_IS_RELEASE true

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 = 1954500;
static const int APPROX_RELEASE_HEIGHT = 1959200;
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.");

View File

@ -3896,7 +3896,7 @@ struct PoolMetrics {
static PoolMetrics Transparent(CBlockIndex *pindex, CCoinsViewCache *view) {
PoolMetrics stats;
// TODO: Collect transparent pool value.
stats.value = pindex->nChainTransparentValue;
// TODO: Figure out a way to efficiently collect UTXO set metrics
// (view->GetStats() is too slow to call during block verification).