From 48d5142dc1b730e0d5a8f13cfdbf0cc2dd579c90 Mon Sep 17 00:00:00 2001 From: Steven Smith Date: Sat, 6 Mar 2021 17:35:54 -0800 Subject: [PATCH] Adding base NU5 declarations and logic --- qa/rpc-tests/test_framework/util.py | 1 + src/chainparams.cpp | 11 ++++++++++- src/consensus/params.h | 1 + src/consensus/upgrades.cpp | 5 +++++ src/utiltest.cpp | 28 ++++++++++++++++++++++++++++ src/utiltest.h | 5 +++++ 6 files changed, 50 insertions(+), 1 deletion(-) diff --git a/qa/rpc-tests/test_framework/util.py b/qa/rpc-tests/test_framework/util.py index c2548c6c4..eb058b027 100644 --- a/qa/rpc-tests/test_framework/util.py +++ b/qa/rpc-tests/test_framework/util.py @@ -40,6 +40,7 @@ SAPLING_BRANCH_ID = 0x76B809BB BLOSSOM_BRANCH_ID = 0x2BB40E60 HEARTWOOD_BRANCH_ID = 0xF5B9230B CANOPY_BRANCH_ID = 0xE9FF75A6 +NU5_BRANCH_ID = 0xF919A198 # The maximum number of nodes a single test can spawn MAX_NODES = 8 diff --git a/src/chainparams.cpp b/src/chainparams.cpp index b995e8998..ed9f83cb1 100644 --- a/src/chainparams.cpp +++ b/src/chainparams.cpp @@ -133,6 +133,9 @@ public: consensus.vUpgrades[Consensus::UPGRADE_CANOPY].nActivationHeight = 1046400; consensus.vUpgrades[Consensus::UPGRADE_CANOPY].hashActivationBlock = uint256S("00000000002038016f976744c369dce7419fca30e7171dfac703af5e5f7ad1d4"); + consensus.vUpgrades[Consensus::UPGRADE_NU5].nProtocolVersion = 170015; + consensus.vUpgrades[Consensus::UPGRADE_NU5].nActivationHeight = + Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT; consensus.nFundingPeriodLength = consensus.nPostBlossomSubsidyHalvingInterval / 48; @@ -417,6 +420,9 @@ public: consensus.vUpgrades[Consensus::UPGRADE_CANOPY].nActivationHeight = 1028500; consensus.vUpgrades[Consensus::UPGRADE_CANOPY].hashActivationBlock = uint256S("01a4d7c6aada30c87762c1bf33fff5df7266b1fd7616bfdb5227fa59bd79e7a2"); + consensus.vUpgrades[Consensus::UPGRADE_NU5].nProtocolVersion = 170014; + consensus.vUpgrades[Consensus::UPGRADE_NU5].nActivationHeight = + Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT; consensus.nFundingPeriodLength = consensus.nPostBlossomSubsidyHalvingInterval / 48; @@ -658,7 +664,10 @@ public: consensus.vUpgrades[Consensus::UPGRADE_CANOPY].nProtocolVersion = 170012; consensus.vUpgrades[Consensus::UPGRADE_CANOPY].nActivationHeight = Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT; - + consensus.vUpgrades[Consensus::UPGRADE_NU5].nProtocolVersion = 170014; + consensus.vUpgrades[Consensus::UPGRADE_NU5].nActivationHeight = + Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT; + consensus.nFundingPeriodLength = consensus.nPostBlossomSubsidyHalvingInterval / 48; // Defined funding streams can be enabled with node config flags. diff --git a/src/consensus/params.h b/src/consensus/params.h index 464ca0347..a4f7f4f58 100644 --- a/src/consensus/params.h +++ b/src/consensus/params.h @@ -37,6 +37,7 @@ enum UpgradeIndex : uint32_t { UPGRADE_BLOSSOM, UPGRADE_HEARTWOOD, UPGRADE_CANOPY, + UPGRADE_NU5, // NOTE: Also add new upgrades to NetworkUpgradeInfo in upgrades.cpp MAX_NETWORK_UPGRADES }; diff --git a/src/consensus/upgrades.cpp b/src/consensus/upgrades.cpp index 29f8acce7..69d963df8 100644 --- a/src/consensus/upgrades.cpp +++ b/src/consensus/upgrades.cpp @@ -43,6 +43,11 @@ const struct NUInfo NetworkUpgradeInfo[Consensus::MAX_NETWORK_UPGRADES] = { /*.nBranchId =*/ 0xe9ff75a6, /*.strName =*/ "Canopy", /*.strInfo =*/ "See https://z.cash/upgrade/canopy/ for details.", + }, + { + /*.nBranchId =*/ 0xf919a198, + /*.strName =*/ "NU5", + /*.strInfo =*/ "See https://z.cash/upgrade/nu5/ for details.", } }; diff --git a/src/utiltest.cpp b/src/utiltest.cpp index 652537687..0bfd55743 100644 --- a/src/utiltest.cpp +++ b/src/utiltest.cpp @@ -276,6 +276,34 @@ void RegtestDeactivateCanopy() { SelectParams(CBaseChainParams::MAIN); } +const Consensus::Params& RegtestActivateNU5(bool updatePow, int nu5ActivationHeight) { + SelectParams(CBaseChainParams::REGTEST); + UpdateNetworkUpgradeParameters(Consensus::UPGRADE_OVERWINTER, Consensus::NetworkUpgrade::ALWAYS_ACTIVE); + UpdateNetworkUpgradeParameters(Consensus::UPGRADE_SAPLING, Consensus::NetworkUpgrade::ALWAYS_ACTIVE); + UpdateNetworkUpgradeParameters(Consensus::UPGRADE_BLOSSOM, Consensus::NetworkUpgrade::ALWAYS_ACTIVE); + UpdateNetworkUpgradeParameters(Consensus::UPGRADE_HEARTWOOD, Consensus::NetworkUpgrade::ALWAYS_ACTIVE); + UpdateNetworkUpgradeParameters(Consensus::UPGRADE_CANOPY, Consensus::NetworkUpgrade::ALWAYS_ACTIVE); + UpdateNetworkUpgradeParameters(Consensus::UPGRADE_NU5, nu5ActivationHeight); + if (updatePow) { + UpdateRegtestPow(32, 16, uint256S("0007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"), false); + } + return Params().GetConsensus(); +} + +const Consensus::Params& RegtestActivateNU5() { + return RegtestActivateNU5(false, Consensus::NetworkUpgrade::ALWAYS_ACTIVE); +} + +void RegtestDeactivateNU5() { + UpdateRegtestPow(0, 0, uint256S("0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f"), true); + UpdateNetworkUpgradeParameters(Consensus::UPGRADE_NU5, Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT); + UpdateNetworkUpgradeParameters(Consensus::UPGRADE_CANOPY, Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT); + UpdateNetworkUpgradeParameters(Consensus::UPGRADE_HEARTWOOD, Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT); + UpdateNetworkUpgradeParameters(Consensus::UPGRADE_BLOSSOM, Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT); + UpdateNetworkUpgradeParameters(Consensus::UPGRADE_SAPLING, Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT); + UpdateNetworkUpgradeParameters(Consensus::UPGRADE_OVERWINTER, Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT); + SelectParams(CBaseChainParams::MAIN); +} libzcash::SaplingExtendedSpendingKey GetTestMasterSaplingSpendingKey() { std::vector> rawSeed(32); diff --git a/src/utiltest.h b/src/utiltest.h index 2fe9781d5..0a11bfe48 100644 --- a/src/utiltest.h +++ b/src/utiltest.h @@ -54,6 +54,11 @@ const Consensus::Params& RegtestActivateCanopy(); void RegtestDeactivateCanopy(); +const Consensus::Params& RegtestActivateNU5(bool updatePow, int nu5ActivationHeight = Consensus::NetworkUpgrade::ALWAYS_ACTIVE); +const Consensus::Params& RegtestActivateNU5(); + +void RegtestDeactivateNU5(); + libzcash::SaplingExtendedSpendingKey GetTestMasterSaplingSpendingKey(); CKey AddTestCKeyToKeyStore(CBasicKeyStore& keyStore);