From f5245c7092ffcca0eeb5efdd8a24cc2bb386aec3 Mon Sep 17 00:00:00 2001 From: Jack Grigg Date: Wed, 2 Oct 2024 20:19:45 +0000 Subject: [PATCH 01/14] qa: Add latest Clang release to postponed updates --- qa/zcash/postponed-updates.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/qa/zcash/postponed-updates.txt b/qa/zcash/postponed-updates.txt index fb99d73417..8b50e16962 100644 --- a/qa/zcash/postponed-updates.txt +++ b/qa/zcash/postponed-updates.txt @@ -14,7 +14,9 @@ native_b2 1.86.0 2024-12-15 # Clang and Rust are currently pinned to LLVM 18 libcxx 19.1.0 2024-12-15 +libcxx 19.1.1 2024-12-15 native_clang 19.1.0 2024-12-15 +native_clang 19.1.1 2024-12-15 # We follow upstream Bitcoin Core's LevelDB updates leveldb 1.23 2024-12-15 From fd47b5af5227d3cddfee2118b7df1fa7c4442a1f Mon Sep 17 00:00:00 2001 From: Jack Grigg Date: Wed, 2 Oct 2024 20:26:29 +0000 Subject: [PATCH 02/14] Migrate to librustzcash crates revision right before NU6 mainnet height This gets the other side-effects of the recent changes out of the way, and then in the commit where we set the mainnet activation height in `zcashd`, we can do so uniformly across the stack. --- .cargo/config.toml.offline | 17 +---------------- Cargo.lock | 32 ++++++++++++++++++-------------- Cargo.toml | 22 +++++++++------------- qa/supply-chain/audits.toml | 20 ++++++++++++++++---- qa/supply-chain/config.toml | 8 -------- qa/supply-chain/imports.lock | 30 +++++++++++++++++++++++++++++- 6 files changed, 73 insertions(+), 56 deletions(-) diff --git a/.cargo/config.toml.offline b/.cargo/config.toml.offline index 704f9f3ea6..103a23f9b9 100644 --- a/.cargo/config.toml.offline +++ b/.cargo/config.toml.offline @@ -4,24 +4,9 @@ linker = "aarch64-linux-gnu-gcc" [source.crates-io] replace-with = "vendored-sources" -[source."https://github.com/zcash/incrementalmerkletree"] -git = "https://github.com/zcash/incrementalmerkletree" -rev = "ffe4234788fd22662b937ba7c6ea01535fcc1293" -replace-with = "vendored-sources" - -[source."https://github.com/zcash/orchard"] -git = "https://github.com/zcash/orchard" -rev = "55fb089a335bbbc1cda186c706bc037073df8eb7" -replace-with = "vendored-sources" - -[source."https://github.com/zcash/sapling-crypto"] -git = "https://github.com/zcash/sapling-crypto" -rev = "b1ad3694ee13a2fc5d291ad04721a6252da0993c" -replace-with = "vendored-sources" - [source."https://github.com/zcash/librustzcash.git"] git = "https://github.com/zcash/librustzcash.git" -rev = "1410f1449100a417bfbc4f6c7167aa9808e38792" +rev = "9ef4117504a7aa51447ffa8691c7d86c5a1dcd05" replace-with = "vendored-sources" [source.vendored-sources] diff --git a/Cargo.lock b/Cargo.lock index 4f9fe5c306..7ae294afeb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -259,7 +259,8 @@ dependencies = [ [[package]] name = "bridgetree" version = "0.6.0" -source = "git+https://github.com/zcash/incrementalmerkletree?rev=ffe4234788fd22662b937ba7c6ea01535fcc1293#ffe4234788fd22662b937ba7c6ea01535fcc1293" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cef977c7f8e75aa81fc589064c121ab8d32448b7939d34d58df479aa93e65ea5" dependencies = [ "incrementalmerkletree", ] @@ -592,7 +593,7 @@ checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" [[package]] name = "equihash" version = "0.2.0" -source = "git+https://github.com/zcash/librustzcash.git?rev=1410f1449100a417bfbc4f6c7167aa9808e38792#1410f1449100a417bfbc4f6c7167aa9808e38792" +source = "git+https://github.com/zcash/librustzcash.git?rev=9ef4117504a7aa51447ffa8691c7d86c5a1dcd05#9ef4117504a7aa51447ffa8691c7d86c5a1dcd05" dependencies = [ "blake2b_simd", "byteorder", @@ -611,7 +612,7 @@ dependencies = [ [[package]] name = "f4jumble" version = "0.1.0" -source = "git+https://github.com/zcash/librustzcash.git?rev=1410f1449100a417bfbc4f6c7167aa9808e38792#1410f1449100a417bfbc4f6c7167aa9808e38792" +source = "git+https://github.com/zcash/librustzcash.git?rev=9ef4117504a7aa51447ffa8691c7d86c5a1dcd05#9ef4117504a7aa51447ffa8691c7d86c5a1dcd05" dependencies = [ "blake2b_simd", ] @@ -921,7 +922,8 @@ dependencies = [ [[package]] name = "incrementalmerkletree" version = "0.7.0" -source = "git+https://github.com/zcash/incrementalmerkletree?rev=ffe4234788fd22662b937ba7c6ea01535fcc1293#ffe4234788fd22662b937ba7c6ea01535fcc1293" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d45063fbc4b0a37837f6bfe0445f269d13d730ad0aa3b5a7f74aa7bf27a0f4df" dependencies = [ "either", "proptest", @@ -1350,8 +1352,9 @@ checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" [[package]] name = "orchard" -version = "0.9.1" -source = "git+https://github.com/zcash/orchard?rev=55fb089a335bbbc1cda186c706bc037073df8eb7#55fb089a335bbbc1cda186c706bc037073df8eb7" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f18e997fa121de5c73e95cdc7e8512ae43b7de38904aeea5e5713cc48f3c0ba" dependencies = [ "aes", "bitvec", @@ -1803,8 +1806,9 @@ dependencies = [ [[package]] name = "sapling-crypto" -version = "0.2.0" -source = "git+https://github.com/zcash/sapling-crypto?rev=b1ad3694ee13a2fc5d291ad04721a6252da0993c#b1ad3694ee13a2fc5d291ad04721a6252da0993c" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfff8cfce16aeb38da50b8e2ed33c9018f30552beff2210c266662a021b17f38" dependencies = [ "aes", "bellman", @@ -2539,7 +2543,7 @@ checksum = "213b7324336b53d2414b2db8537e56544d981803139155afa84f76eeebb7a546" [[package]] name = "zcash_address" version = "0.5.0" -source = "git+https://github.com/zcash/librustzcash.git?rev=1410f1449100a417bfbc4f6c7167aa9808e38792#1410f1449100a417bfbc4f6c7167aa9808e38792" +source = "git+https://github.com/zcash/librustzcash.git?rev=9ef4117504a7aa51447ffa8691c7d86c5a1dcd05#9ef4117504a7aa51447ffa8691c7d86c5a1dcd05" dependencies = [ "bech32", "bs58", @@ -2551,7 +2555,7 @@ dependencies = [ [[package]] name = "zcash_encoding" version = "0.2.1" -source = "git+https://github.com/zcash/librustzcash.git?rev=1410f1449100a417bfbc4f6c7167aa9808e38792#1410f1449100a417bfbc4f6c7167aa9808e38792" +source = "git+https://github.com/zcash/librustzcash.git?rev=9ef4117504a7aa51447ffa8691c7d86c5a1dcd05#9ef4117504a7aa51447ffa8691c7d86c5a1dcd05" dependencies = [ "byteorder", "nonempty", @@ -2560,7 +2564,7 @@ dependencies = [ [[package]] name = "zcash_history" version = "0.4.0" -source = "git+https://github.com/zcash/librustzcash.git?rev=1410f1449100a417bfbc4f6c7167aa9808e38792#1410f1449100a417bfbc4f6c7167aa9808e38792" +source = "git+https://github.com/zcash/librustzcash.git?rev=9ef4117504a7aa51447ffa8691c7d86c5a1dcd05#9ef4117504a7aa51447ffa8691c7d86c5a1dcd05" dependencies = [ "blake2b_simd", "byteorder", @@ -2583,7 +2587,7 @@ dependencies = [ [[package]] name = "zcash_primitives" version = "0.17.0" -source = "git+https://github.com/zcash/librustzcash.git?rev=1410f1449100a417bfbc4f6c7167aa9808e38792#1410f1449100a417bfbc4f6c7167aa9808e38792" +source = "git+https://github.com/zcash/librustzcash.git?rev=9ef4117504a7aa51447ffa8691c7d86c5a1dcd05#9ef4117504a7aa51447ffa8691c7d86c5a1dcd05" dependencies = [ "aes", "bip32", @@ -2622,7 +2626,7 @@ dependencies = [ [[package]] name = "zcash_proofs" version = "0.17.0" -source = "git+https://github.com/zcash/librustzcash.git?rev=1410f1449100a417bfbc4f6c7167aa9808e38792#1410f1449100a417bfbc4f6c7167aa9808e38792" +source = "git+https://github.com/zcash/librustzcash.git?rev=9ef4117504a7aa51447ffa8691c7d86c5a1dcd05#9ef4117504a7aa51447ffa8691c7d86c5a1dcd05" dependencies = [ "bellman", "blake2b_simd", @@ -2644,7 +2648,7 @@ dependencies = [ [[package]] name = "zcash_protocol" version = "0.3.0" -source = "git+https://github.com/zcash/librustzcash.git?rev=1410f1449100a417bfbc4f6c7167aa9808e38792#1410f1449100a417bfbc4f6c7167aa9808e38792" +source = "git+https://github.com/zcash/librustzcash.git?rev=9ef4117504a7aa51447ffa8691c7d86c5a1dcd05#9ef4117504a7aa51447ffa8691c7d86c5a1dcd05" dependencies = [ "document-features", "incrementalmerkletree", diff --git a/Cargo.toml b/Cargo.toml index 2f4b524b7c..ff86dd9220 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -50,8 +50,8 @@ libc = "0.2" jubjub = "0.10" memuse = "0.2" nonempty = "0.7" -orchard = "0.9" -sapling = { package = "sapling-crypto", version = "0.2", features = ["temporary-zcashd"] } +orchard = "0.10" +sapling = { package = "sapling-crypto", version = "0.3", features = ["temporary-zcashd"] } secp256k1 = "0.27" subtle = "2.2" rand_core = "0.6" @@ -113,14 +113,10 @@ panic = 'abort' codegen-units = 1 [patch.crates-io] -bridgetree = { git = "https://github.com/zcash/incrementalmerkletree", rev = "ffe4234788fd22662b937ba7c6ea01535fcc1293" } -incrementalmerkletree = { git = "https://github.com/zcash/incrementalmerkletree", rev = "ffe4234788fd22662b937ba7c6ea01535fcc1293" } -orchard = { git = "https://github.com/zcash/orchard", rev = "55fb089a335bbbc1cda186c706bc037073df8eb7" } -sapling-crypto = { git = "https://github.com/zcash/sapling-crypto", rev = "b1ad3694ee13a2fc5d291ad04721a6252da0993c" } -equihash = { git = "https://github.com/zcash/librustzcash.git", rev = "1410f1449100a417bfbc4f6c7167aa9808e38792" } -zcash_address = { git = "https://github.com/zcash/librustzcash.git", rev = "1410f1449100a417bfbc4f6c7167aa9808e38792" } -zcash_encoding = { git = "https://github.com/zcash/librustzcash.git", rev = "1410f1449100a417bfbc4f6c7167aa9808e38792" } -zcash_history = { git = "https://github.com/zcash/librustzcash.git", rev = "1410f1449100a417bfbc4f6c7167aa9808e38792" } -zcash_primitives = { git = "https://github.com/zcash/librustzcash.git", rev = "1410f1449100a417bfbc4f6c7167aa9808e38792" } -zcash_proofs = { git = "https://github.com/zcash/librustzcash.git", rev = "1410f1449100a417bfbc4f6c7167aa9808e38792" } -zcash_protocol = { git = "https://github.com/zcash/librustzcash.git", rev = "1410f1449100a417bfbc4f6c7167aa9808e38792" } +equihash = { git = "https://github.com/zcash/librustzcash.git", rev = "9ef4117504a7aa51447ffa8691c7d86c5a1dcd05" } +zcash_address = { git = "https://github.com/zcash/librustzcash.git", rev = "9ef4117504a7aa51447ffa8691c7d86c5a1dcd05" } +zcash_encoding = { git = "https://github.com/zcash/librustzcash.git", rev = "9ef4117504a7aa51447ffa8691c7d86c5a1dcd05" } +zcash_history = { git = "https://github.com/zcash/librustzcash.git", rev = "9ef4117504a7aa51447ffa8691c7d86c5a1dcd05" } +zcash_primitives = { git = "https://github.com/zcash/librustzcash.git", rev = "9ef4117504a7aa51447ffa8691c7d86c5a1dcd05" } +zcash_proofs = { git = "https://github.com/zcash/librustzcash.git", rev = "9ef4117504a7aa51447ffa8691c7d86c5a1dcd05" } +zcash_protocol = { git = "https://github.com/zcash/librustzcash.git", rev = "9ef4117504a7aa51447ffa8691c7d86c5a1dcd05" } diff --git a/qa/supply-chain/audits.toml b/qa/supply-chain/audits.toml index 56b015f472..cdc23f5572 100644 --- a/qa/supply-chain/audits.toml +++ b/qa/supply-chain/audits.toml @@ -3044,7 +3044,7 @@ end = "2024-09-21" criteria = "safe-to-deploy" user-id = 169181 # Kris Nuttycombe (nuttycom) start = "2022-07-22" -end = "2024-09-21" +end = "2025-10-02" [[trusted.equihash]] criteria = "safe-to-deploy" @@ -3092,13 +3092,13 @@ end = "2024-09-21" criteria = "safe-to-deploy" user-id = 169181 # Kris Nuttycombe (nuttycom) start = "2023-02-28" -end = "2024-09-21" +end = "2025-10-02" [[trusted.incrementalmerkletree-testing]] criteria = "safe-to-deploy" user-id = 169181 # Kris Nuttycombe (nuttycom) -start = "2024-09-27" -end = "2025-09-27" +start = "2024-09-25" +end = "2025-10-02" [[trusted.orchard]] criteria = ["safe-to-deploy", "crypto-reviewed", "license-reviewed"] @@ -3112,12 +3112,24 @@ user-id = 1244 # ebfull start = "2022-10-19" end = "2024-09-21" +[[trusted.orchard]] +criteria = "safe-to-deploy" +user-id = 169181 # Kris Nuttycombe (nuttycom) +start = "2024-08-12" +end = "2025-10-02" + [[trusted.sapling-crypto]] criteria = ["safe-to-deploy", "crypto-reviewed", "license-reviewed"] user-id = 6289 # Jack Grigg (str4d) start = "2024-01-26" end = "2025-03-18" +[[trusted.sapling-crypto]] +criteria = ["safe-to-deploy", "crypto-reviewed"] +user-id = 169181 # Kris Nuttycombe (nuttycom) +start = "2024-08-12" +end = "2025-10-02" + [[trusted.windows-sys]] criteria = "safe-to-deploy" user-id = 64539 # Kenny Kerr (kennykerr) diff --git a/qa/supply-chain/config.toml b/qa/supply-chain/config.toml index 2346b168bd..c5b1ef6643 100644 --- a/qa/supply-chain/config.toml +++ b/qa/supply-chain/config.toml @@ -346,10 +346,6 @@ criteria = "safe-to-deploy" version = "1.17.0" criteria = "safe-to-deploy" -[[exemptions.orchard]] -version = "0.9.0" -criteria = "safe-to-deploy" - [[exemptions.pairing]] version = "0.22.0" criteria = "safe-to-deploy" @@ -466,10 +462,6 @@ criteria = "safe-to-deploy" version = "0.3.0" criteria = "safe-to-deploy" -[[exemptions.sapling-crypto]] -version = "0.2.0" -criteria = "safe-to-deploy" - [[exemptions.secp256k1]] version = "0.26.0" criteria = "safe-to-deploy" diff --git a/qa/supply-chain/imports.lock b/qa/supply-chain/imports.lock index 3e06744ca1..bfebf885bf 100644 --- a/qa/supply-chain/imports.lock +++ b/qa/supply-chain/imports.lock @@ -8,6 +8,13 @@ user-id = 169181 user-login = "nuttycom" user-name = "Kris Nuttycombe" +[[publisher.bridgetree]] +version = "0.6.0" +when = "2024-09-25" +user-id = 169181 +user-login = "nuttycom" +user-name = "Kris Nuttycombe" + [[publisher.bumpalo]] version = "3.16.0" when = "2024-04-08" @@ -55,9 +62,30 @@ user-id = 169181 user-login = "nuttycom" user-name = "Kris Nuttycombe" +[[publisher.incrementalmerkletree]] +version = "0.7.0" +when = "2024-09-25" +user-id = 169181 +user-login = "nuttycom" +user-name = "Kris Nuttycombe" + [[publisher.incrementalmerkletree-testing]] version = "0.1.0" -when = "2024-09-27" +when = "2024-09-25" +user-id = 169181 +user-login = "nuttycom" +user-name = "Kris Nuttycombe" + +[[publisher.orchard]] +version = "0.10.0" +when = "2024-10-02" +user-id = 169181 +user-login = "nuttycom" +user-name = "Kris Nuttycombe" + +[[publisher.sapling-crypto]] +version = "0.3.0" +when = "2024-10-02" user-id = 169181 user-login = "nuttycom" user-name = "Kris Nuttycombe" From bf3b8d7e16d091423274a3adcb59d53937a66cb8 Mon Sep 17 00:00:00 2001 From: Jack Grigg Date: Wed, 2 Oct 2024 20:28:04 +0000 Subject: [PATCH 03/14] Set support window back to the usual 16 weeks --- src/deprecation.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/deprecation.h b/src/deprecation.h index 6c41e29d3a..8cf10aa705 100644 --- a/src/deprecation.h +++ b/src/deprecation.h @@ -15,7 +15,7 @@ // 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 = 2661888; -static const int RELEASE_TO_DEPRECATION_WEEKS = 6; +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 79a72d79a5dc11f8ec4d33e2991f1280c75ddd58 Mon Sep 17 00:00:00 2001 From: Jack Grigg Date: Wed, 2 Oct 2024 20:37:29 +0000 Subject: [PATCH 04/14] Update release notes for 6.0.0 --- doc/release-notes.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/doc/release-notes.md b/doc/release-notes.md index 93368dacc8..82ef7ebc66 100644 --- a/doc/release-notes.md +++ b/doc/release-notes.md @@ -4,6 +4,24 @@ release-notes at release time) Notable changes =============== +The mainnet activation of the NU6 network upgrade is supported by the 6.0.0 +release, with an activation height of 2726400, which should occur on +approximately November 23, 2024. Please upgrade to this release, or any +subsequent release, in order to follow the NU6 network upgrade. + +The following ZIPs are being deployed, or have been updated, as part of this upgrade: + +* [ZIP 207: Funding Streams (updated)](https://zips.z.cash/zip-0207) +* [ZIP 214: Consensus rules for a Zcash Development Fund (updated)](https://zips.z.cash/zip-0214) +* [ZIP 236: Blocks should balance exactly](https://zips.z.cash/zip-0236) +* [ZIP 253: Deployment of the NU6 Network Upgrade](https://zips.z.cash/zip-0253) +* [ZIP 1015: Block Reward Allocation for Non-Direct Development Funding](https://zips.z.cash/zip-1015) +* [ZIP 2001: Lockbox Funding Streams](https://zips.z.cash/zip-2001) + +In order to help the ecosystem prepare for the mainnet activation, NU6 has +already been activated on the Zcash testnet. Any node version 5.10.0 or higher, +including this release, supports the NU6 activation on testnet. + Mining ------ From b7708cc68e1b5b20372bb069b41b13d3892f9b77 Mon Sep 17 00:00:00 2001 From: Jack Grigg Date: Wed, 2 Oct 2024 20:41:53 +0000 Subject: [PATCH 05/14] make-release.py: Versioning changes for 6.0.0. --- README.md | 2 +- configure.ac | 2 +- contrib/gitian-descriptors/gitian-linux-parallel.yml | 2 +- contrib/gitian-descriptors/gitian-linux.yml | 2 +- src/clientversion.h | 2 +- src/deprecation.h | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 6be5f24eb2..66c3eb9e9d 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -Zcash 6.0.0-rc1 +Zcash 6.0.0 =========== diff --git a/configure.ac b/configure.ac index 93d06d2f30..3a45d46757 100644 --- a/configure.ac +++ b/configure.ac @@ -3,7 +3,7 @@ AC_PREREQ([2.60]) define(_CLIENT_VERSION_MAJOR, 6) 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-parallel.yml b/contrib/gitian-descriptors/gitian-linux-parallel.yml index d1ca5d0eeb..ced83a7a1c 100644 --- a/contrib/gitian-descriptors/gitian-linux-parallel.yml +++ b/contrib/gitian-descriptors/gitian-linux-parallel.yml @@ -1,5 +1,5 @@ --- -name: "zcash-6.0.0-rc1" +name: "zcash-6.0.0" enable_cache: true distro: "debian" suites: diff --git a/contrib/gitian-descriptors/gitian-linux.yml b/contrib/gitian-descriptors/gitian-linux.yml index abaec372f9..e0ab81a022 100644 --- a/contrib/gitian-descriptors/gitian-linux.yml +++ b/contrib/gitian-descriptors/gitian-linux.yml @@ -1,5 +1,5 @@ --- -name: "zcash-6.0.0-rc1" +name: "zcash-6.0.0" enable_cache: true distro: "debian" suites: diff --git a/src/clientversion.h b/src/clientversion.h index f4702c1d3f..4a98a91734 100644 --- a/src/clientversion.h +++ b/src/clientversion.h @@ -18,7 +18,7 @@ #define CLIENT_VERSION_MAJOR 6 #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 8cf10aa705..8b477dff7c 100644 --- a/src/deprecation.h +++ b/src/deprecation.h @@ -14,7 +14,7 @@ // Shut down nodes running this version of code, `RELEASE_TO_DEPRECATION_WEEKS` 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 = 2661888; +static const int APPROX_RELEASE_HEIGHT = 2667376; 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 4e1e6fe164b1ed9dc39571869365a748061002b8 Mon Sep 17 00:00:00 2001 From: Jack Grigg Date: Wed, 2 Oct 2024 20:45:08 +0000 Subject: [PATCH 06/14] make-release.py: Updated manpages for 6.0.0. --- doc/man/zcash-cli.1 | 6 +++--- doc/man/zcash-tx.1 | 6 +++--- doc/man/zcashd-wallet-tool.1 | 4 ++-- doc/man/zcashd.1 | 10 +++++----- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/doc/man/zcash-cli.1 b/doc/man/zcash-cli.1 index 0962d4c3ca..d9878345d0 100644 --- a/doc/man/zcash-cli.1 +++ b/doc/man/zcash-cli.1 @@ -1,9 +1,9 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.1. -.TH ZCASH-CLI "1" "September 2024" "zcash-cli v6.0.0-rc1" "User Commands" +.TH ZCASH-CLI "1" "October 2024" "zcash-cli v6.0.0" "User Commands" .SH NAME -zcash-cli \- manual page for zcash-cli v6.0.0-rc1 +zcash-cli \- manual page for zcash-cli v6.0.0 .SH DESCRIPTION -Zcash RPC client version v6.0.0\-rc1 +Zcash RPC client version v6.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 a905807c01..cffaa517bc 100644 --- a/doc/man/zcash-tx.1 +++ b/doc/man/zcash-tx.1 @@ -1,9 +1,9 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.1. -.TH ZCASH-TX "1" "September 2024" "zcash-tx v6.0.0-rc1" "User Commands" +.TH ZCASH-TX "1" "October 2024" "zcash-tx v6.0.0" "User Commands" .SH NAME -zcash-tx \- manual page for zcash-tx v6.0.0-rc1 +zcash-tx \- manual page for zcash-tx v6.0.0 .SH DESCRIPTION -Zcash zcash\-tx utility version v6.0.0\-rc1 +Zcash zcash\-tx utility version v6.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 b6184533de..54314e1d75 100644 --- a/doc/man/zcashd-wallet-tool.1 +++ b/doc/man/zcashd-wallet-tool.1 @@ -1,7 +1,7 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.1. -.TH ZCASHD-WALLET-TOOL "1" "September 2024" "zcashd-wallet-tool v6.0.0-rc1" "User Commands" +.TH ZCASHD-WALLET-TOOL "1" "October 2024" "zcashd-wallet-tool v6.0.0" "User Commands" .SH NAME -zcashd-wallet-tool \- manual page for zcashd-wallet-tool v6.0.0-rc1 +zcashd-wallet-tool \- manual page for zcashd-wallet-tool v6.0.0 .SH SYNOPSIS .B zcashd-wallet-tool [\fI\,OPTIONS\/\fR] diff --git a/doc/man/zcashd.1 b/doc/man/zcashd.1 index dc509792cf..9da9ecaf63 100644 --- a/doc/man/zcashd.1 +++ b/doc/man/zcashd.1 @@ -1,9 +1,9 @@ .\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.1. -.TH ZCASHD "1" "September 2024" "zcashd v6.0.0-rc1" "User Commands" +.TH ZCASHD "1" "October 2024" "zcashd v6.0.0" "User Commands" .SH NAME -zcashd \- manual page for zcashd v6.0.0-rc1 +zcashd \- manual page for zcashd v6.0.0 .SH DESCRIPTION -Zcash Daemon version v6.0.0\-rc1 +Zcash Daemon version v6.0.0 .PP In order to ensure you are adequately protecting your privacy when using Zcash, please see . @@ -484,7 +484,7 @@ Maximum size of data in data carrier transactions we relay and mine \fB\-txunpaidactionlimit=\fR .IP Transactions with more than this number of unpaid actions will not be -accepted to the mempool or relayed (default: 50) +accepted to the mempool or relayed (default: 0) .PP Block creation options: .HP @@ -495,7 +495,7 @@ Set maximum block size in bytes (default: 2000000) \fB\-blockunpaidactionlimit=\fR .IP Set the limit on unpaid actions that will be accepted in a block for -transactions paying less than the ZIP 317 fee (default: 50) +transactions paying less than the ZIP 317 fee (default: 0) .PP Mining options: .HP From 337afb9d0257315601ea3dbe6fb91f7e90962a1f Mon Sep 17 00:00:00 2001 From: Jack Grigg Date: Wed, 2 Oct 2024 20:45:09 +0000 Subject: [PATCH 07/14] make-release.py: Updated release notes and changelog for 6.0.0. --- contrib/debian/changelog | 6 ++ doc/authors.md | 8 +-- doc/release-notes.md | 33 ---------- doc/release-notes/release-notes-6.0.0.md | 84 ++++++++++++++++++++++++ 4 files changed, 94 insertions(+), 37 deletions(-) create mode 100644 doc/release-notes/release-notes-6.0.0.md diff --git a/contrib/debian/changelog b/contrib/debian/changelog index d1f72b85f4..866cbe62a7 100644 --- a/contrib/debian/changelog +++ b/contrib/debian/changelog @@ -1,3 +1,9 @@ +zcash (6.0.0) stable; urgency=medium + + * 6.0.0 release. + + -- Electric Coin Company Wed, 02 Oct 2024 20:45:09 +0000 + zcash (6.0.0~rc1) stable; urgency=medium * 6.0.0-rc1 release. diff --git a/doc/authors.md b/doc/authors.md index 977adc2e67..85b752f175 100644 --- a/doc/authors.md +++ b/doc/authors.md @@ -1,9 +1,9 @@ Zcash Contributors ================== -* Jack Grigg (2157) -* Kris Nuttycombe (750) -* Daira-Emma Hopwood (483) +* Jack Grigg (2181) +* Kris Nuttycombe (751) +* Daira-Emma Hopwood (492) * Simon Liu (464) * Sean Bowe (413) * Eirik Ogilvie-Wigley (273) @@ -88,6 +88,7 @@ Zcash Contributors * Evan Klitzke (4) * DeckerSU (4) * Ben Woosley (4) +* y4ssi (3) * mruddy (3) * lpescher (3) * isle2983 (3) @@ -152,7 +153,6 @@ Zcash Contributors * Akio Nakamura (2) * ロハン ダル (1) * zathras-crypto (1) -* y4ssi (1) * vim88 (1) * user (1) * unsystemizer (1) diff --git a/doc/release-notes.md b/doc/release-notes.md index 82ef7ebc66..a29094b517 100644 --- a/doc/release-notes.md +++ b/doc/release-notes.md @@ -4,36 +4,3 @@ release-notes at release time) Notable changes =============== -The mainnet activation of the NU6 network upgrade is supported by the 6.0.0 -release, with an activation height of 2726400, which should occur on -approximately November 23, 2024. Please upgrade to this release, or any -subsequent release, in order to follow the NU6 network upgrade. - -The following ZIPs are being deployed, or have been updated, as part of this upgrade: - -* [ZIP 207: Funding Streams (updated)](https://zips.z.cash/zip-0207) -* [ZIP 214: Consensus rules for a Zcash Development Fund (updated)](https://zips.z.cash/zip-0214) -* [ZIP 236: Blocks should balance exactly](https://zips.z.cash/zip-0236) -* [ZIP 253: Deployment of the NU6 Network Upgrade](https://zips.z.cash/zip-0253) -* [ZIP 1015: Block Reward Allocation for Non-Direct Development Funding](https://zips.z.cash/zip-1015) -* [ZIP 2001: Lockbox Funding Streams](https://zips.z.cash/zip-2001) - -In order to help the ecosystem prepare for the mainnet activation, NU6 has -already been activated on the Zcash testnet. Any node version 5.10.0 or higher, -including this release, supports the NU6 activation on testnet. - -Mining ------- - -- The default setting of `-blockunpaidactionlimit` is now zero, which has - the effect of no longer allowing "unpaid actions" in [block production]. - This adapts to current network conditions. If you have overridden this - setting as a miner, we recommend removing the override. This configuration - option may be removed entirely in a future release. - -[block production]: https://zips.z.cash/zip-0317#block-production - -Platform Support ----------------- - -- Windows builds have been fixed. diff --git a/doc/release-notes/release-notes-6.0.0.md b/doc/release-notes/release-notes-6.0.0.md new file mode 100644 index 0000000000..b53e8f1ce8 --- /dev/null +++ b/doc/release-notes/release-notes-6.0.0.md @@ -0,0 +1,84 @@ +Notable changes +=============== + +The mainnet activation of the NU6 network upgrade is supported by the 6.0.0 +release, with an activation height of 2726400, which should occur on +approximately November 23, 2024. Please upgrade to this release, or any +subsequent release, in order to follow the NU6 network upgrade. + +The following ZIPs are being deployed, or have been updated, as part of this upgrade: + +* [ZIP 207: Funding Streams (updated)](https://zips.z.cash/zip-0207) +* [ZIP 214: Consensus rules for a Zcash Development Fund (updated)](https://zips.z.cash/zip-0214) +* [ZIP 236: Blocks should balance exactly](https://zips.z.cash/zip-0236) +* [ZIP 253: Deployment of the NU6 Network Upgrade](https://zips.z.cash/zip-0253) +* [ZIP 1015: Block Reward Allocation for Non-Direct Development Funding](https://zips.z.cash/zip-1015) +* [ZIP 2001: Lockbox Funding Streams](https://zips.z.cash/zip-2001) + +In order to help the ecosystem prepare for the mainnet activation, NU6 has +already been activated on the Zcash testnet. Any node version 5.10.0 or higher, +including this release, supports the NU6 activation on testnet. + +Mining +------ + +- The default setting of `-blockunpaidactionlimit` is now zero, which has + the effect of no longer allowing "unpaid actions" in [block production]. + This adapts to current network conditions. If you have overridden this + setting as a miner, we recommend removing the override. This configuration + option may be removed entirely in a future release. + +[block production]: https://zips.z.cash/zip-0317#block-production + +Platform Support +---------------- + +- Windows builds have been fixed. + +Changelog +========= + +Daira-Emma Hopwood (9): + Ensure out-reference parameters of `CWallet::CreateTransaction` are initialized. + Rename ecc_addresses to bp_addresses in chainparams.cpp. + Make DEFAULT_BLOCK_UNPAID_ACTION_LIMIT zero. fixes #6899 (see that issue for rationale) + Add more detail to the "tx unpaid action limit exceeded" message. + Use at least the ZIP 317 fee for Sprout->Sapling migration. + Repair the RPC tests. + Add a regression test for the ZIP 317 default fee bug (#6956), and make the tests pass for now. + Code of Conduct: update email addresses and remove Sean as a contact. + Code of Conduct: add Kris and Str4d as contacts. + +Jack Grigg (24): + depends: Update Rust to 1.81.0 + depends: native_cmake 3.30.3 + depends: cxx 1.0.128 + cargo vet prune + cargo update + qa: Postpone Boost, LevelDB, and Clang updates + Fix clippy lints for 1.81 + Remove `#[should_panic]` tests of `extern "C"` functions + depends: Fix incompatibility between libsodium 1.0.20 and Clang 18 + depends: Downgrade libc++ for MinGW to 18.1.6-1 + Migrate to latest revision of Zcash Rust crates + depends: native_cmake 3.30.4 + Update release notes + Decrease support window to 6 weeks for 6.0.0-rc1 + make-release.py: Versioning changes for 6.0.0-rc1. + make-release.py: Updated manpages for 6.0.0-rc1. + make-release.py: Updated release notes and changelog for 6.0.0-rc1. + make-release.py: Updated book for 6.0.0-rc1. + qa: Add latest Clang release to postponed updates + Migrate to librustzcash crates revision right before NU6 mainnet height + Set support window back to the usual 16 weeks + Update release notes for 6.0.0 + make-release.py: Versioning changes for 6.0.0. + make-release.py: Updated manpages for 6.0.0. + +Kris Nuttycombe (1): + Use scopes to make it more obvious that certain variables are never used. + +y4ssi (2): + fix gitian-descriptors + Simplify Dockerfile (#6906) + From 09cae52fc0607802413d180087b25ee2ec81734e Mon Sep 17 00:00:00 2001 From: Jack Grigg Date: Wed, 2 Oct 2024 20:45:09 +0000 Subject: [PATCH 08/14] make-release.py: Updated book for 6.0.0. --- doc/book/src/user/release-support.md | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/book/src/user/release-support.md b/doc/book/src/user/release-support.md index 9d938a53d9..52f6278895 100644 --- a/doc/book/src/user/release-support.md +++ b/doc/book/src/user/release-support.md @@ -45,4 +45,5 @@ time, and may shift due to changes in network solution power. | 5.10.0-rc1 | 2024-08-22 | 2700600 | 2024-10-31 | | 5.10.0 | 2024-08-27 | 2706540 | 2024-11-05 | | 6.0.0-rc1 | 2024-09-27 | 2710272 | 2024-11-08 | +| 6.0.0 | 2024-10-02 | 2796400 | 2025-01-22 | From 74ff943c400484e839762118f3b43eaa97fcc879 Mon Sep 17 00:00:00 2001 From: Jack Grigg Date: Wed, 2 Oct 2024 20:48:07 +0000 Subject: [PATCH 09/14] debian: Set urgency of 6.0.0 release to `high` --- contrib/debian/changelog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/debian/changelog b/contrib/debian/changelog index 866cbe62a7..8ea0a87060 100644 --- a/contrib/debian/changelog +++ b/contrib/debian/changelog @@ -1,4 +1,4 @@ -zcash (6.0.0) stable; urgency=medium +zcash (6.0.0) stable; urgency=high * 6.0.0 release. From a0602ebfb765a965acd8de0b012da28f257a6918 Mon Sep 17 00:00:00 2001 From: Daira-Emma Hopwood Date: Wed, 2 Oct 2024 21:28:00 +0000 Subject: [PATCH 10/14] Changes necessary for NU6 funding streams and activation height. Co-authored-by: Jack Grigg Signed-off-by: Daira-Emma Hopwood --- .cargo/config.toml.offline | 5 --- Cargo.lock | 32 ++++++++++------ Cargo.toml | 19 +++------- qa/supply-chain/audits.toml | 12 ++++++ qa/supply-chain/config.toml | 8 ---- qa/supply-chain/imports.lock | 72 ++++++++++++++++++++---------------- src/chainparams.cpp | 53 ++++++++++++++++++++------ src/version.h | 2 +- 8 files changed, 121 insertions(+), 82 deletions(-) diff --git a/.cargo/config.toml.offline b/.cargo/config.toml.offline index 103a23f9b9..8b7762d20b 100644 --- a/.cargo/config.toml.offline +++ b/.cargo/config.toml.offline @@ -4,10 +4,5 @@ linker = "aarch64-linux-gnu-gcc" [source.crates-io] replace-with = "vendored-sources" -[source."https://github.com/zcash/librustzcash.git"] -git = "https://github.com/zcash/librustzcash.git" -rev = "9ef4117504a7aa51447ffa8691c7d86c5a1dcd05" -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 7ae294afeb..605b9360ab 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -593,7 +593,8 @@ checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" [[package]] name = "equihash" version = "0.2.0" -source = "git+https://github.com/zcash/librustzcash.git?rev=9ef4117504a7aa51447ffa8691c7d86c5a1dcd05#9ef4117504a7aa51447ffa8691c7d86c5a1dcd05" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab579d7cf78477773b03e80bc2f89702ef02d7112c711d54ca93dcdce68533d5" dependencies = [ "blake2b_simd", "byteorder", @@ -612,7 +613,8 @@ dependencies = [ [[package]] name = "f4jumble" version = "0.1.0" -source = "git+https://github.com/zcash/librustzcash.git?rev=9ef4117504a7aa51447ffa8691c7d86c5a1dcd05#9ef4117504a7aa51447ffa8691c7d86c5a1dcd05" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a83e8d7fd0c526af4aad893b7c9fe41e2699ed8a776a6c74aecdeafe05afc75" dependencies = [ "blake2b_simd", ] @@ -2542,8 +2544,9 @@ checksum = "213b7324336b53d2414b2db8537e56544d981803139155afa84f76eeebb7a546" [[package]] name = "zcash_address" -version = "0.5.0" -source = "git+https://github.com/zcash/librustzcash.git?rev=9ef4117504a7aa51447ffa8691c7d86c5a1dcd05#9ef4117504a7aa51447ffa8691c7d86c5a1dcd05" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ff95eac82f71286a79c750e674550d64fb2b7aadaef7b89286b2917f645457d" dependencies = [ "bech32", "bs58", @@ -2555,7 +2558,8 @@ dependencies = [ [[package]] name = "zcash_encoding" version = "0.2.1" -source = "git+https://github.com/zcash/librustzcash.git?rev=9ef4117504a7aa51447ffa8691c7d86c5a1dcd05#9ef4117504a7aa51447ffa8691c7d86c5a1dcd05" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "052d8230202f0a018cd9b5d1b56b94cd25e18eccc2d8665073bcea8261ab87fc" dependencies = [ "byteorder", "nonempty", @@ -2564,7 +2568,8 @@ dependencies = [ [[package]] name = "zcash_history" version = "0.4.0" -source = "git+https://github.com/zcash/librustzcash.git?rev=9ef4117504a7aa51447ffa8691c7d86c5a1dcd05#9ef4117504a7aa51447ffa8691c7d86c5a1dcd05" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fde17bf53792f9c756b313730da14880257d7661b5bfc69d0571c3a7c11a76d" dependencies = [ "blake2b_simd", "byteorder", @@ -2586,8 +2591,9 @@ dependencies = [ [[package]] name = "zcash_primitives" -version = "0.17.0" -source = "git+https://github.com/zcash/librustzcash.git?rev=9ef4117504a7aa51447ffa8691c7d86c5a1dcd05#9ef4117504a7aa51447ffa8691c7d86c5a1dcd05" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ab47d526d7fd6f88b3a2854ad81b54757a80c2aeadd1d8b06f690556af9743c" dependencies = [ "aes", "bip32", @@ -2625,8 +2631,9 @@ dependencies = [ [[package]] name = "zcash_proofs" -version = "0.17.0" -source = "git+https://github.com/zcash/librustzcash.git?rev=9ef4117504a7aa51447ffa8691c7d86c5a1dcd05#9ef4117504a7aa51447ffa8691c7d86c5a1dcd05" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daba607872e60d91a09248d8e1ea3d6801c819fb80d67016d9de02d81323c10d" dependencies = [ "bellman", "blake2b_simd", @@ -2647,8 +2654,9 @@ dependencies = [ [[package]] name = "zcash_protocol" -version = "0.3.0" -source = "git+https://github.com/zcash/librustzcash.git?rev=9ef4117504a7aa51447ffa8691c7d86c5a1dcd05#9ef4117504a7aa51447ffa8691c7d86c5a1dcd05" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bc22b9155b2c7eb20105cd06de170d188c1bc86489b92aa3fda7b8da8d96acf" dependencies = [ "document-features", "incrementalmerkletree", diff --git a/Cargo.toml b/Cargo.toml index ff86dd9220..a6ca7f7ef1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -59,13 +59,13 @@ redjubjub = "0.7" tracing = "0.1" tracing-core = "0.1" tracing-appender = "0.2" -zcash_address = "0.5" +zcash_address = "0.6" zcash_encoding = "0.2.1" zcash_history = "0.4" zcash_note_encryption = "0.4" -zcash_primitives = { version = "0.17", features = ["temporary-zcashd", "transparent-inputs"] } -zcash_proofs = { version = "0.17", features = ["directories"] } -zcash_protocol = { version = "0.3", features = ["local-consensus"] } +zcash_primitives = { version = "0.19", features = ["temporary-zcashd", "transparent-inputs"] } +zcash_proofs = { version = "0.19", features = ["directories"] } +zcash_protocol = { version = "0.4", features = ["local-consensus"] } ed25519-zebra = "4" zeroize = "1.4.2" wagyu-zcash-parameters = "0.2" @@ -100,7 +100,7 @@ time = { version = "0.3", features = ["formatting", "macros"] } [dev-dependencies] incrementalmerkletree = { version = "0.7", features = ["test-dependencies"] } proptest = "1.0.0" -zcash_primitives = { version = "0.17", features = ["temporary-zcashd", "transparent-inputs", "test-dependencies"] } +zcash_primitives = { version = "0.19", features = ["temporary-zcashd", "transparent-inputs", "test-dependencies"] } [dependencies.tracing-subscriber] version = "0.3" @@ -111,12 +111,3 @@ features = ["ansi", "env-filter", "fmt", "time"] lto = 'thin' panic = 'abort' codegen-units = 1 - -[patch.crates-io] -equihash = { git = "https://github.com/zcash/librustzcash.git", rev = "9ef4117504a7aa51447ffa8691c7d86c5a1dcd05" } -zcash_address = { git = "https://github.com/zcash/librustzcash.git", rev = "9ef4117504a7aa51447ffa8691c7d86c5a1dcd05" } -zcash_encoding = { git = "https://github.com/zcash/librustzcash.git", rev = "9ef4117504a7aa51447ffa8691c7d86c5a1dcd05" } -zcash_history = { git = "https://github.com/zcash/librustzcash.git", rev = "9ef4117504a7aa51447ffa8691c7d86c5a1dcd05" } -zcash_primitives = { git = "https://github.com/zcash/librustzcash.git", rev = "9ef4117504a7aa51447ffa8691c7d86c5a1dcd05" } -zcash_proofs = { git = "https://github.com/zcash/librustzcash.git", rev = "9ef4117504a7aa51447ffa8691c7d86c5a1dcd05" } -zcash_protocol = { git = "https://github.com/zcash/librustzcash.git", rev = "9ef4117504a7aa51447ffa8691c7d86c5a1dcd05" } diff --git a/qa/supply-chain/audits.toml b/qa/supply-chain/audits.toml index cdc23f5572..1b1a7c9f7d 100644 --- a/qa/supply-chain/audits.toml +++ b/qa/supply-chain/audits.toml @@ -3250,6 +3250,12 @@ user-id = 169181 # Kris Nuttycombe (nuttycom) start = "2024-08-20" end = "2025-08-26" +[[trusted.zcash_primitives]] +criteria = "safe-to-deploy" +user-id = 6289 # Jack Grigg (str4d) +start = "2021-03-26" +end = "2025-10-02" + [[trusted.zcash_proofs]] criteria = ["safe-to-deploy", "crypto-reviewed", "license-reviewed"] user-id = 6289 # Jack Grigg (str4d) @@ -3262,6 +3268,12 @@ user-id = 169181 # Kris Nuttycombe (nuttycom) start = "2024-08-20" end = "2025-08-26" +[[trusted.zcash_proofs]] +criteria = "safe-to-deploy" +user-id = 6289 # Jack Grigg (str4d) +start = "2021-03-26" +end = "2025-10-02" + [[trusted.zcash_protocol]] criteria = "safe-to-deploy" user-id = 169181 # Kris Nuttycombe (nuttycom) diff --git a/qa/supply-chain/config.toml b/qa/supply-chain/config.toml index c5b1ef6643..41aaf9eae0 100644 --- a/qa/supply-chain/config.toml +++ b/qa/supply-chain/config.toml @@ -562,10 +562,6 @@ criteria = "safe-to-deploy" version = "0.9.5" criteria = "safe-to-deploy" -[[exemptions.visibility]] -version = "0.1.1" -criteria = "safe-to-deploy" - [[exemptions.wait-timeout]] version = "0.2.0" criteria = "safe-to-deploy" @@ -630,10 +626,6 @@ criteria = "safe-to-deploy" version = "2.5.0" criteria = "safe-to-deploy" -[[exemptions.zcash_encoding]] -version = "0.2.1" -criteria = "safe-to-deploy" - [[exemptions.zerocopy]] version = "0.7.35" criteria = "safe-to-deploy" diff --git a/qa/supply-chain/imports.lock b/qa/supply-chain/imports.lock index bfebf885bf..efc9dcdc94 100644 --- a/qa/supply-chain/imports.lock +++ b/qa/supply-chain/imports.lock @@ -1,13 +1,6 @@ # cargo-vet imports lock -[[publisher.bridgetree]] -version = "0.5.0" -when = "2024-08-12" -user-id = 169181 -user-login = "nuttycom" -user-name = "Kris Nuttycombe" - [[publisher.bridgetree]] version = "0.6.0" when = "2024-09-25" @@ -55,13 +48,6 @@ when = "2023-03-22" user-id = 1244 user-login = "ebfull" -[[publisher.incrementalmerkletree]] -version = "0.6.0" -when = "2024-08-12" -user-id = 169181 -user-login = "nuttycom" -user-name = "Kris Nuttycombe" - [[publisher.incrementalmerkletree]] version = "0.7.0" when = "2024-09-25" @@ -168,11 +154,17 @@ user-login = "kennykerr" user-name = "Kenny Kerr" [[publisher.zcash_address]] -version = "0.5.0" -when = "2024-08-26" -user-id = 169181 -user-login = "nuttycom" -user-name = "Kris Nuttycombe" +version = "0.6.0" +when = "2024-10-02" +user-id = 6289 +user-login = "str4d" +user-name = "Jack Grigg" + +[[publisher.zcash_encoding]] +version = "0.2.0" +when = "2022-10-19" +user-id = 1244 +user-login = "ebfull" [[publisher.zcash_history]] version = "0.4.0" @@ -189,22 +181,22 @@ user-login = "nuttycom" user-name = "Kris Nuttycombe" [[publisher.zcash_primitives]] -version = "0.17.0" -when = "2024-08-26" -user-id = 169181 -user-login = "nuttycom" -user-name = "Kris Nuttycombe" +version = "0.19.0" +when = "2024-10-02" +user-id = 6289 +user-login = "str4d" +user-name = "Jack Grigg" [[publisher.zcash_proofs]] -version = "0.17.0" -when = "2024-08-26" -user-id = 169181 -user-login = "nuttycom" -user-name = "Kris Nuttycombe" +version = "0.19.0" +when = "2024-10-02" +user-id = 6289 +user-login = "str4d" +user-name = "Jack Grigg" [[publisher.zcash_protocol]] -version = "0.3.0" -when = "2024-08-26" +version = "0.4.0" +when = "2024-10-02" user-id = 169181 user-login = "nuttycom" user-name = "Kris Nuttycombe" @@ -1705,3 +1697,21 @@ who = "Jack Grigg " criteria = "safe-to-deploy" delta = "1.0.61 -> 1.0.63" aggregated-from = "https://raw.githubusercontent.com/zcash/librustzcash/main/supply-chain/audits.toml" + +[[audits.zcash.audits.visibility]] +who = "Kris Nuttycombe " +criteria = "safe-to-deploy" +version = "0.1.1" +notes = """ +- Crate has no unsafe code, and sets `#![forbid(unsafe_code)]`. +- Crate has no powerful imports, and exclusively provides a proc macro + that safely malleates a visibility modifier. +""" +aggregated-from = "https://raw.githubusercontent.com/zcash/librustzcash/main/supply-chain/audits.toml" + +[[audits.zcash.audits.zcash_encoding]] +who = "Kris Nuttycombe " +criteria = "safe-to-deploy" +delta = "0.2.0 -> 0.2.1" +notes = "This release adds minor convenience methods and involves no unsafe code." +aggregated-from = "https://raw.githubusercontent.com/zcash/librustzcash/main/supply-chain/audits.toml" diff --git a/src/chainparams.cpp b/src/chainparams.cpp index 091c47d6ae..276ed3bfed 100644 --- a/src/chainparams.cpp +++ b/src/chainparams.cpp @@ -140,8 +140,7 @@ class CMainParams : public CChainParams { consensus.vUpgrades[Consensus::UPGRADE_NU5].hashActivationBlock = uint256S("0000000000d723156d9b65ffcf4984da7a19675ed7e2f06d9e5d5188af087bf8"); consensus.vUpgrades[Consensus::UPGRADE_NU6].nProtocolVersion = 170120; - consensus.vUpgrades[Consensus::UPGRADE_NU6].nActivationHeight = - Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT; + consensus.vUpgrades[Consensus::UPGRADE_NU6].nActivationHeight = 2726400; consensus.vUpgrades[Consensus::UPGRADE_ZFUTURE].nProtocolVersion = 0x7FFFFFFF; consensus.vUpgrades[Consensus::UPGRADE_ZFUTURE].nActivationHeight = Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT; @@ -172,6 +171,10 @@ class CMainParams : public CChainParams { keyConstants.bech32mHRPs[TEX_ADDRESS] = "tex"; { + auto canopyActivation = consensus.vUpgrades[Consensus::UPGRADE_CANOPY].nActivationHeight; + auto nu6Activation = consensus.vUpgrades[Consensus::UPGRADE_NU6].nActivationHeight; + + // ZIP 214 Revision 0 std::vector bp_addresses = { "t3LmX1cxWPPPqL4TZHx42HU3U5ghbFjRiif", "t3Toxk1vJQ6UjWQ42tUJz2rV2feUWkpbTDs", @@ -231,18 +234,37 @@ class CMainParams : public CChainParams { consensus.AddZIP207FundingStream( keyConstants, Consensus::FS_ZIP214_BP, - consensus.vUpgrades[Consensus::UPGRADE_CANOPY].nActivationHeight, 2726400, + canopyActivation, + nu6Activation, bp_addresses); consensus.AddZIP207FundingStream( keyConstants, Consensus::FS_ZIP214_ZF, - consensus.vUpgrades[Consensus::UPGRADE_CANOPY].nActivationHeight, 2726400, + canopyActivation, + nu6Activation, zf_addresses); consensus.AddZIP207FundingStream( keyConstants, Consensus::FS_ZIP214_MG, - consensus.vUpgrades[Consensus::UPGRADE_CANOPY].nActivationHeight, 2726400, + canopyActivation, + nu6Activation, mg_addresses); + + // ZIP 214 Revision 1 + // FPF uses a single address repeated 12 times, once for each funding period. + std::vector fpf_addresses(12, "t3cFfPt1Bcvgez9ZbMBFWeZsskxTkPzGCow"); + + consensus.AddZIP207FundingStream( + keyConstants, + Consensus::FS_FPF_ZCG, + nu6Activation, + 3146400, + fpf_addresses); + consensus.AddZIP207LockboxStream( + keyConstants, + Consensus::FS_DEFERRED, + nu6Activation, + 3146400); } // The best chain should have at least this much work. @@ -473,6 +495,10 @@ class CTestNetParams : public CChainParams { // Testnet funding streams { + auto canopyActivation = consensus.vUpgrades[Consensus::UPGRADE_CANOPY].nActivationHeight; + auto nu6Activation = consensus.vUpgrades[Consensus::UPGRADE_NU6].nActivationHeight; + + // ZIP 214 Revision 0 std::vector bp_addresses = { "t26ovBdKAJLtrvBsE2QGF4nqBkEuptuPFZz", "t26ovBdKAJLtrvBsE2QGF4nqBkEuptuPFZz", @@ -534,27 +560,32 @@ class CTestNetParams : public CChainParams { consensus.AddZIP207FundingStream( keyConstants, Consensus::FS_ZIP214_BP, - consensus.vUpgrades[Consensus::UPGRADE_CANOPY].nActivationHeight, 2796000, + canopyActivation, + 2796000, // *not* the NU6 activation height bp_addresses); consensus.AddZIP207FundingStream( keyConstants, Consensus::FS_ZIP214_ZF, - consensus.vUpgrades[Consensus::UPGRADE_CANOPY].nActivationHeight, 2796000, + canopyActivation, + 2796000, // *not* the NU6 activation height zf_addresses); consensus.AddZIP207FundingStream( keyConstants, Consensus::FS_ZIP214_MG, - consensus.vUpgrades[Consensus::UPGRADE_CANOPY].nActivationHeight, 2796000, + canopyActivation, + 2796000, // *not* the NU6 activation height mg_addresses); - auto nu6Activation = consensus.vUpgrades[Consensus::UPGRADE_NU6].nActivationHeight; - std::vector zcg_addresses(13, "t2HifwjUj9uyxr9bknR8LFuQbc98c3vkXtu"); + // ZIP 214 Revision 1 + // FPF uses a single address repeated 13 times, once for each funding period. + // There are 13 periods because the start height does not align with a period boundary. + std::vector fpf_addresses(13, "t2HifwjUj9uyxr9bknR8LFuQbc98c3vkXtu"); consensus.AddZIP207FundingStream( keyConstants, Consensus::FS_FPF_ZCG, nu6Activation, 3396000, - zcg_addresses); + fpf_addresses); consensus.AddZIP207LockboxStream( keyConstants, Consensus::FS_DEFERRED, diff --git a/src/version.h b/src/version.h index 1cf9cb7711..6c9b0d40bf 100644 --- a/src/version.h +++ b/src/version.h @@ -10,7 +10,7 @@ * network protocol versioning */ -static const int PROTOCOL_VERSION = 170110; +static const int PROTOCOL_VERSION = 170120; //! initial proto version, to be increased after version/verack negotiation static const int INIT_PROTO_VERSION = 209; From 9831458a4af73f781194f6634720e89ade4da7f4 Mon Sep 17 00:00:00 2001 From: Daira-Emma Hopwood Date: Fri, 4 Oct 2024 03:19:41 +0100 Subject: [PATCH 11/14] Ensure that the "future timestamp" rule is correctly applied by block template construction. fixes #6960 Signed-off-by: Daira-Emma Hopwood --- src/miner.cpp | 7 ++++++- src/test/miner_tests.cpp | 34 ++++++++++++++++++++++++++++++---- 2 files changed, 36 insertions(+), 5 deletions(-) diff --git a/src/miner.cpp b/src/miner.cpp index 878c23a1df..84a41a1d6d 100644 --- a/src/miner.cpp +++ b/src/miner.cpp @@ -75,6 +75,7 @@ int64_t UpdateTime(CBlockHeader* pblock, const Consensus::Params& consensusParam nNewTime = std::min(nNewTime, medianTimePast + MAX_FUTURE_BLOCK_TIME_MTP); } + // The timestamp of a given block template should not go backwards. if (nOldTime < nNewTime) pblock->nTime = nNewTime; @@ -366,7 +367,11 @@ CBlockTemplate* BlockAssembler::CreateNewBlock( if (chainparams.MineBlocksOnDemand()) pblock->nVersion = GetArg("-blockversion", pblock->nVersion); - pblock->nTime = GetTime(); + // Setting nTime to 0 and then calling UpdateTime ensures that it is set to the + // nearest timestamp to the current time in the consensus-valid range (see #6960). + pblock->nTime = 0; + UpdateTime(pblock, chainparams.GetConsensus(), pindexPrev); + const int64_t nMedianTimePast = pindexPrev->GetMedianTimePast(); CCoinsViewCache view(pcoinsTip); diff --git a/src/test/miner_tests.cpp b/src/test/miner_tests.cpp index 1141e7c803..e73714b784 100644 --- a/src/test/miner_tests.cpp +++ b/src/test/miner_tests.cpp @@ -372,18 +372,44 @@ BOOST_AUTO_TEST_CASE(CreateNewBlock_validity) // Stop here if we needed to mine more blocks. assert(nblocks == sizeof(blockinfo)/sizeof(*blockinfo)); + auto nTime = pblocktemplate->block.nTime; + delete pblocktemplate; + // Set the clock to be just ahead of the last "mined" block, to ensure we satisfy the // future timestamp soft fork rule. - auto curTime = GetTime(); - OffsetClock::SetGlobal(); - OffsetClock::Instance()->Set(std::chrono::seconds(-curTime + pblocktemplate->block.nTime)); + FixedClock::SetGlobal(); + FixedClock::Instance()->Set(std::chrono::seconds(nTime)); + // Just to make sure we can still make simple blocks + BOOST_CHECK(pblocktemplate = BlockAssembler(chainparams).CreateNewBlock(scriptPubKey)); + BOOST_CHECK_EQUAL(pblocktemplate->block.nTime, nTime); + + auto mtp = chainActive.Tip()->GetMedianTimePast(); delete pblocktemplate; + auto minTime = mtp + 1; + auto maxTime = mtp + MAX_FUTURE_BLOCK_TIME_MTP; - // Just to make sure we can still make simple blocks + // Set the clock to be too far ahead of the MTP, violating the future timestamp rule. + FixedClock::Instance()->Set(std::chrono::seconds(maxTime + 1)); + + // This should succeed, and nTime should be clamped to the maximum consensus-valid value. + BOOST_CHECK(pblocktemplate = BlockAssembler(chainparams).CreateNewBlock(scriptPubKey)); + BOOST_CHECK_EQUAL(pblocktemplate->block.nTime, maxTime); + delete pblocktemplate; + + // Set the clock to be equal to the median-time-past, violating the rule that it must + // be after the MTP. + FixedClock::Instance()->Set(std::chrono::seconds(minTime - 1)); + + // This should succeed, and nTime should be clamped to the minimum consensus-valid value. BOOST_CHECK(pblocktemplate = BlockAssembler(chainparams).CreateNewBlock(scriptPubKey)); + BOOST_CHECK_EQUAL(pblocktemplate->block.nTime, minTime); delete pblocktemplate; + auto curTime = GetTime(); + OffsetClock::SetGlobal(); + OffsetClock::Instance()->Set(std::chrono::seconds(-curTime + nTime)); + TestMemPoolEntryHelper entry; entry.nFee = 0; entry.nHeight = 0; From 6c765107f1798a9e92834bab90b26bcf8351db5f Mon Sep 17 00:00:00 2001 From: Jack Grigg Date: Fri, 4 Oct 2024 08:28:54 +0000 Subject: [PATCH 12/14] rpc: Fetch correct funding streams in `getblocksubsidy` The previous logic was indexing into the global funding streams list with the local index into the active funding streams. This worked fine for the first funding stream period, but once a funding stream ended and another was enabled, the indices no longer matched. We now return the `FundingStream` from `GetActiveFundingStreams`, as the only user of that method is `getblocksubsidy`. --- src/consensus/params.cpp | 6 +++--- src/consensus/params.h | 2 +- src/rpc/mining.cpp | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/consensus/params.cpp b/src/consensus/params.cpp index 490d8ad95e..c311ffdb07 100644 --- a/src/consensus/params.cpp +++ b/src/consensus/params.cpp @@ -342,16 +342,16 @@ namespace Consensus { } } - std::vector Params::GetActiveFundingStreams(int nHeight) const + std::vector> Params::GetActiveFundingStreams(int nHeight) const { - std::vector activeStreams; + std::vector> activeStreams; // Funding streams are disabled if Canopy is not active. if (NetworkUpgradeActive(nHeight, Consensus::UPGRADE_CANOPY)) { for (uint32_t idx = Consensus::FIRST_FUNDING_STREAM; idx < Consensus::MAX_FUNDING_STREAMS; idx++) { auto fs = vFundingStreams[idx]; if (fs && nHeight >= fs.value().GetStartHeight() && nHeight < fs.value().GetEndHeight()) { - activeStreams.push_back(FundingStreamInfo[idx]); + activeStreams.push_back(std::make_pair(FundingStreamInfo[idx], fs.value())); } } } diff --git a/src/consensus/params.h b/src/consensus/params.h index efcdfcaa59..62eee52a36 100644 --- a/src/consensus/params.h +++ b/src/consensus/params.h @@ -347,7 +347,7 @@ struct Params { /** * Returns the vector of active funding streams as of the given height. */ - std::vector GetActiveFundingStreams(int nHeight) const; + std::vector> GetActiveFundingStreams(int nHeight) const; /** * Returns the vector of active funding stream elements as of the given height. diff --git a/src/rpc/mining.cpp b/src/rpc/mining.cpp index 4b133f311e..59c36d2af6 100644 --- a/src/rpc/mining.cpp +++ b/src/rpc/mining.cpp @@ -968,7 +968,7 @@ UniValue getblocksubsidy(const UniValue& params, bool fHelp) UniValue lockboxstreams(UniValue::VARR); auto fsinfos = consensus.GetActiveFundingStreams(nHeight); for (int idx = 0; idx < fsinfos.size(); idx++) { - const auto& fsinfo = fsinfos[idx]; + const auto& fsinfo = fsinfos[idx].first; CAmount nStreamAmount = fsinfo.Value(nBlockSubsidy); UniValue fsobj(UniValue::VOBJ); @@ -977,8 +977,8 @@ UniValue getblocksubsidy(const UniValue& params, bool fHelp) fsobj.pushKV("value", ValueFromAmount(nStreamAmount)); fsobj.pushKV("valueZat", nStreamAmount); - auto fs = consensus.vFundingStreams[idx]; - auto recipient = fs.value().Recipient(consensus, nHeight); + auto fs = fsinfos[idx].second; + auto recipient = fs.Recipient(consensus, nHeight); examine(recipient, match { [&](const CScript& scriptPubKey) { From bd17de8b42e489fa172e330459206bc558b1f725 Mon Sep 17 00:00:00 2001 From: Jack Grigg Date: Fri, 4 Oct 2024 08:48:06 +0000 Subject: [PATCH 13/14] test: Update `getblocksubsidy` test with NU6 mainnet funding streams --- src/wallet/test/rpc_wallet_tests.cpp | 36 ++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/src/wallet/test/rpc_wallet_tests.cpp b/src/wallet/test/rpc_wallet_tests.cpp index b64f8db12d..ecbe5a8f69 100644 --- a/src/wallet/test/rpc_wallet_tests.cpp +++ b/src/wallet/test/rpc_wallet_tests.cpp @@ -315,8 +315,25 @@ BOOST_AUTO_TEST_CASE(rpc_wallet) } }; + auto check_lockbox_streams = [](UniValue obj, std::vector recipients, std::vector amounts) { + size_t n = recipients.size(); + BOOST_REQUIRE_EQUAL(amounts.size(), n); + UniValue lockboxstreams = find_value(obj, "lockboxstreams"); + BOOST_CHECK_EQUAL(lockboxstreams.size(), n); + if (lockboxstreams.size() != n) return; + + for (int i = 0; i < n; i++) { + UniValue fsobj = lockboxstreams[i]; + BOOST_CHECK_EQUAL(find_value(fsobj, "recipient").get_str(), recipients[i]); + BOOST_CHECK_EQUAL(find_value(fsobj, "specification").get_str(), "https://zips.z.cash/zip-0214"); + BOOST_CHECK_EQUAL(find_value(fsobj, "value").get_real(), amounts[i]); + } + }; + bool canopyEnabled = Params().GetConsensus().vUpgrades[Consensus::UPGRADE_CANOPY].nActivationHeight != Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT; + bool nu6Enabled = + Params().GetConsensus().vUpgrades[Consensus::UPGRADE_NU6].nActivationHeight != Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT; // slow start + blossom activation + (pre blossom halving - blossom activation) * 2 BOOST_CHECK_NO_THROW(retValue = CallRPC("getblocksubsidy 1046400")); @@ -332,6 +349,7 @@ BOOST_AUTO_TEST_CASE(rpc_wallet) "t3XyYW8yBFRuMnfvm5KLGFbEVz25kckZXym" }); } + BOOST_CHECK(find_value(obj, "lockboxstreams").empty()); BOOST_CHECK_NO_THROW(retValue = CallRPC("getblocksubsidy 2726399")); obj = retValue.get_obj(); @@ -346,9 +364,27 @@ BOOST_AUTO_TEST_CASE(rpc_wallet) "t3XyYW8yBFRuMnfvm5KLGFbEVz25kckZXym" }); } + BOOST_CHECK(find_value(obj, "lockboxstreams").empty()); BOOST_CHECK_NO_THROW(retValue = CallRPC("getblocksubsidy 2726400")); obj = retValue.get_obj(); + BOOST_CHECK_EQUAL(find_value(obj, "miner").get_real(), nu6Enabled ? 1.25 : 1.5625); + BOOST_CHECK_EQUAL(find_value(obj, "founders").get_real(), 0.0); + if (nu6Enabled) { + check_funding_streams(obj, { "Zcash Community Grants NU6" }, + { 0.125, }, + { + "t3cFfPt1Bcvgez9ZbMBFWeZsskxTkPzGCow" + }); + check_lockbox_streams(obj, { "Lockbox NU6" }, + { 0.1875, }); + } else { + BOOST_CHECK(find_value(obj, "fundingstreams").empty()); + BOOST_CHECK(find_value(obj, "lockboxstreams").empty()); + } + + BOOST_CHECK_NO_THROW(retValue = CallRPC("getblocksubsidy 3146400")); + obj = retValue.get_obj(); BOOST_CHECK_EQUAL(find_value(obj, "miner").get_real(), 1.5625); BOOST_CHECK_EQUAL(find_value(obj, "founders").get_real(), 0.0); BOOST_CHECK(find_value(obj, "fundingstreams").empty()); From 97bba691ab59f2904163dffbf22204f753f6b94d Mon Sep 17 00:00:00 2001 From: Jack Grigg Date: Fri, 4 Oct 2024 08:48:57 +0000 Subject: [PATCH 14/14] Fix specification URL for NU6 lockbox --- src/consensus/params.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/consensus/params.cpp b/src/consensus/params.cpp index c311ffdb07..f8bd2df713 100644 --- a/src/consensus/params.cpp +++ b/src/consensus/params.cpp @@ -43,7 +43,7 @@ namespace Consensus { }, { .recipient = "Lockbox NU6", - .specification = "https://zips.z.cash/draft-nuttycom-funding-allocation", + .specification = "https://zips.z.cash/zip-0214", .valueNumerator = 12, .valueDenominator = 100, }