Auto merge of #4487 - str4d:nu4-activation-logic, r=str4d

Add NU4 to upgrade list

Once NU4 has been named, we will rename the constants and functions.

Closes #4472.
This commit is contained in:
Homu 2020-05-01 13:41:28 +00:00
commit 1abdc883ac
6 changed files with 46 additions and 3 deletions

View File

@ -58,6 +58,7 @@ OVERWINTER_BRANCH_ID = 0x5BA81B19
SAPLING_BRANCH_ID = 0x76B809BB
BLOSSOM_BRANCH_ID = 0x2BB40E60
HEARTWOOD_BRANCH_ID = 0xF5B9230B
NU4_BRANCH_ID = 0xE9FF75A6
MAX_INV_SZ = 50000

View File

@ -122,6 +122,9 @@ public:
consensus.vUpgrades[Consensus::UPGRADE_HEARTWOOD].nProtocolVersion = 170011;
consensus.vUpgrades[Consensus::UPGRADE_HEARTWOOD].nActivationHeight =
Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT;
consensus.vUpgrades[Consensus::UPGRADE_NU4].nProtocolVersion = 170013;
consensus.vUpgrades[Consensus::UPGRADE_NU4].nActivationHeight =
Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT;
// The best chain should have at least this much work.
consensus.nMinimumChainWork = uint256S("000000000000000000000000000000000000000000000000017e73a331fae01c");
@ -322,6 +325,9 @@ public:
uint256S("00367515ef2e781b8c9358b443b6329572599edd02c59e8af67db9785122f298");
consensus.vUpgrades[Consensus::UPGRADE_HEARTWOOD].nProtocolVersion = 170010;
consensus.vUpgrades[Consensus::UPGRADE_HEARTWOOD].nActivationHeight = 903800;
consensus.vUpgrades[Consensus::UPGRADE_NU4].nProtocolVersion = 170012;
consensus.vUpgrades[Consensus::UPGRADE_NU4].nActivationHeight =
Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT;
// On testnet we activate this rule 6 blocks after Blossom activation. From block 299188 and
// prior to Blossom activation, the testnet minimum-difficulty threshold was 15 minutes (i.e.
@ -479,6 +485,9 @@ public:
consensus.vUpgrades[Consensus::UPGRADE_HEARTWOOD].nProtocolVersion = 170010;
consensus.vUpgrades[Consensus::UPGRADE_HEARTWOOD].nActivationHeight =
Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT;
consensus.vUpgrades[Consensus::UPGRADE_NU4].nProtocolVersion = 170012;
consensus.vUpgrades[Consensus::UPGRADE_NU4].nActivationHeight =
Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT;
// The best chain should have at least this much work.
consensus.nMinimumChainWork = uint256S("0x00");

View File

@ -28,6 +28,7 @@ enum UpgradeIndex : uint32_t {
UPGRADE_SAPLING,
UPGRADE_BLOSSOM,
UPGRADE_HEARTWOOD,
UPGRADE_NU4,
// NOTE: Also add new upgrades to NetworkUpgradeInfo in upgrades.cpp
MAX_NETWORK_UPGRADES
};

View File

@ -22,22 +22,27 @@ const struct NUInfo NetworkUpgradeInfo[Consensus::MAX_NETWORK_UPGRADES] = {
{
/*.nBranchId =*/ 0x5ba81b19,
/*.strName =*/ "Overwinter",
/*.strInfo =*/ "See https://z.cash/upgrade/overwinter.html for details.",
/*.strInfo =*/ "See https://z.cash/upgrade/overwinter/ for details.",
},
{
/*.nBranchId =*/ 0x76b809bb,
/*.strName =*/ "Sapling",
/*.strInfo =*/ "See https://z.cash/upgrade/sapling.html for details.",
/*.strInfo =*/ "See https://z.cash/upgrade/sapling/ for details.",
},
{
/*.nBranchId =*/ 0x2bb40e60,
/*.strName =*/ "Blossom",
/*.strInfo =*/ "See https://z.cash/upgrade/blossom.html for details.",
/*.strInfo =*/ "See https://z.cash/upgrade/blossom/ for details.",
},
{
/*.nBranchId =*/ 0xf5b9230b,
/*.strName =*/ "Heartwood",
/*.strInfo =*/ "See https://z.cash/upgrade/heartwood/ for details.",
},
{
/*.nBranchId =*/ 0xe9ff75a6,
/*.strName =*/ "NU4",
/*.strInfo =*/ "See https://z.cash/upgrade/nu4/ for details.",
}
};

View File

@ -251,6 +251,29 @@ void RegtestDeactivateHeartwood() {
SelectParams(CBaseChainParams::MAIN);
}
const Consensus::Params& RegtestActivateNU4(bool updatePow, int nu4ActivationHeight) {
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_NU4, nu4ActivationHeight);
if (updatePow) {
UpdateRegtestPow(32, 16, uint256S("0007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"));
}
return Params().GetConsensus();
}
void RegtestDeactivateNU4() {
UpdateRegtestPow(0, 0, uint256S("0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f"));
UpdateNetworkUpgradeParameters(Consensus::UPGRADE_NU4, 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<unsigned char, secure_allocator<unsigned char>> rawSeed(32);

View File

@ -53,6 +53,10 @@ const Consensus::Params& RegtestActivateHeartwood(bool updatePow, int heartwoodA
void RegtestDeactivateHeartwood();
const Consensus::Params& RegtestActivateNU4(bool updatePow, int nu4ActivationHeight = Consensus::NetworkUpgrade::ALWAYS_ACTIVE);
void RegtestDeactivateNU4();
libzcash::SaplingExtendedSpendingKey GetTestMasterSaplingSpendingKey();
CKey AddTestCKeyToKeyStore(CBasicKeyStore& keyStore);