|
|
@ -100,32 +100,32 @@ public: |
|
|
|
strNetworkID = "main"; |
|
|
|
strCurrencyUnits = "HUSH"; |
|
|
|
bip44CoinType = 141; // As registered in https://github.com/satoshilabs/slips/blob/master/slip-0044.md
|
|
|
|
consensus.fCoinbaseMustBeProtected = false; |
|
|
|
consensus.nSubsidySlowStartInterval = 20000; |
|
|
|
consensus.nSubsidyHalvingInterval = 840000; |
|
|
|
|
|
|
|
consensus.fCoinbaseMustBeProtected = false; |
|
|
|
consensus.nMajorityEnforceBlockUpgrade = 750; |
|
|
|
consensus.nMajorityRejectBlockOutdated = 950; |
|
|
|
consensus.nMajorityWindow = 4000; |
|
|
|
consensus.powLimit = uint256S("0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f"); |
|
|
|
consensus.powAlternate = uint256S("0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f"); |
|
|
|
consensus.nPowAveragingWindow = 17; |
|
|
|
consensus.nMaxFutureBlockTime = 7 * 60; // 7 mins
|
|
|
|
consensus.nMajorityWindow = 4000; |
|
|
|
consensus.powLimit = uint256S("0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f"); |
|
|
|
consensus.powAlternate = uint256S("0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f"); |
|
|
|
consensus.nPowAveragingWindow = 17; |
|
|
|
consensus.nMaxFutureBlockTime = 7 * 60; // 7 mins
|
|
|
|
|
|
|
|
assert(maxUint/UintToArith256(consensus.powLimit) >= consensus.nPowAveragingWindow); |
|
|
|
consensus.nPowMaxAdjustDown = 32; // 32% adjustment down
|
|
|
|
consensus.nPowMaxAdjustUp = 16; // 16% adjustment up
|
|
|
|
consensus.nPowTargetSpacing = 1 * 60; |
|
|
|
consensus.nPowMaxAdjustUp = 16; // 16% adjustment up
|
|
|
|
// we are emulating old node behavior at startup, they used 150s
|
|
|
|
consensus.nPowTargetSpacing = 150; // 75; // HUSH is 75 seconds, Hush Smart Chains are 60 seconds by default
|
|
|
|
consensus.nPowAllowMinDifficultyBlocksAfterHeight = boost::none; |
|
|
|
consensus.vUpgrades[Consensus::BASE_SPROUT].nProtocolVersion = 170002; |
|
|
|
consensus.vUpgrades[Consensus::BASE_SPROUT].nActivationHeight = |
|
|
|
Consensus::NetworkUpgrade::ALWAYS_ACTIVE; |
|
|
|
consensus.vUpgrades[Consensus::UPGRADE_TESTDUMMY].nProtocolVersion = 170002; |
|
|
|
consensus.vUpgrades[Consensus::UPGRADE_TESTDUMMY].nActivationHeight = |
|
|
|
Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT; |
|
|
|
consensus.vUpgrades[Consensus::UPGRADE_OVERWINTER].nProtocolVersion = 170005; |
|
|
|
// HUSH never had Sprout in our blockchain history, but some internals require *knowing* about Sprout
|
|
|
|
// or it breaks backward compatibility. We do what we can.
|
|
|
|
consensus.vUpgrades[Consensus::BASE_SPROUT].nProtocolVersion = 170002; |
|
|
|
consensus.vUpgrades[Consensus::BASE_SPROUT].nActivationHeight = Consensus::NetworkUpgrade::ALWAYS_ACTIVE; |
|
|
|
consensus.vUpgrades[Consensus::UPGRADE_TESTDUMMY].nProtocolVersion = 170002; |
|
|
|
consensus.vUpgrades[Consensus::UPGRADE_TESTDUMMY].nActivationHeight = Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT; |
|
|
|
consensus.vUpgrades[Consensus::UPGRADE_OVERWINTER].nProtocolVersion = 170005; |
|
|
|
consensus.vUpgrades[Consensus::UPGRADE_OVERWINTER].nActivationHeight = Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT; |
|
|
|
consensus.vUpgrades[Consensus::UPGRADE_SAPLING].nProtocolVersion = 170007; |
|
|
|
consensus.vUpgrades[Consensus::UPGRADE_SAPLING].nActivationHeight = Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT; |
|
|
|
consensus.vUpgrades[Consensus::UPGRADE_SAPLING].nProtocolVersion = 170007; |
|
|
|
consensus.vUpgrades[Consensus::UPGRADE_SAPLING].nActivationHeight = Consensus::NetworkUpgrade::NO_ACTIVATION_HEIGHT; |
|
|
|
|
|
|
|
// The best chain should have at least this much work.
|
|
|
|
consensus.nMinimumChainWork = uint256S("0x00000000000000000000000000000000000000000000000000281b32ff3198a1"); |
|
|
@ -140,7 +140,7 @@ public: |
|
|
|
pchMessageStart[2] = 0xe4; |
|
|
|
pchMessageStart[3] = 0x8d; |
|
|
|
vAlertPubKey = ParseHex("038a1bd41a08f38edda51042988022933c5775dfce81f7bae0b32a9179650352ac"); |
|
|
|
nDefaultPort = 7770; |
|
|
|
nDefaultPort = 5420; |
|
|
|
nMinerThreads = 0; |
|
|
|
nMaxTipAge = 24 * 60 * 60; |
|
|
|
nPruneAfterHeight = 100000; |
|
|
@ -188,6 +188,8 @@ public: |
|
|
|
base58Prefixes[SECRET_KEY] = std::vector<unsigned char>(1,188); |
|
|
|
base58Prefixes[EXT_PUBLIC_KEY] = boost::assign::list_of(0x04)(0x88)(0xB2)(0x1E).convert_to_container<std::vector<unsigned char> >(); |
|
|
|
base58Prefixes[EXT_SECRET_KEY] = boost::assign::list_of(0x04)(0x88)(0xAD)(0xE4).convert_to_container<std::vector<unsigned char> >(); |
|
|
|
|
|
|
|
// Unused Sprout stuff, for historical completeness
|
|
|
|
// guarantees the first two characters, when base58 encoded, are "zc"
|
|
|
|
base58Prefixes[ZCPAYMENT_ADDRRESS] = {22,154}; |
|
|
|
// guarantees the first 4 characters, when base58 encoded, are "ZiVK"
|
|
|
@ -203,10 +205,10 @@ public: |
|
|
|
|
|
|
|
vFixedSeeds = std::vector<SeedSpec6>(pnSeed6_main, pnSeed6_main + ARRAYLEN(pnSeed6_main)); |
|
|
|
|
|
|
|
fMiningRequiresPeers = true; |
|
|
|
fDefaultConsistencyChecks = false; |
|
|
|
fRequireStandard = true; |
|
|
|
fMineBlocksOnDemand = false; |
|
|
|
fMiningRequiresPeers = true; |
|
|
|
fDefaultConsistencyChecks = false; |
|
|
|
fRequireStandard = true; |
|
|
|
fMineBlocksOnDemand = false; |
|
|
|
fTestnetToBeDeprecatedFieldRPC = false; |
|
|
|
} |
|
|
|
}; |
|
|
@ -246,8 +248,6 @@ public: |
|
|
|
nDefaultPort = 15550; |
|
|
|
nMinerThreads = 0; |
|
|
|
consensus.fCoinbaseMustBeProtected = true; |
|
|
|
consensus.nSubsidySlowStartInterval = 20000; |
|
|
|
consensus.nSubsidyHalvingInterval = 840000; |
|
|
|
consensus.nMajorityEnforceBlockUpgrade = 51; |
|
|
|
consensus.nMajorityRejectBlockOutdated = 75; |
|
|
|
consensus.nMajorityWindow = 400; |
|
|
@ -344,20 +344,18 @@ public: |
|
|
|
strNetworkID = "regtest"; |
|
|
|
strCurrencyUnits = "REG"; |
|
|
|
bip44CoinType = 1; |
|
|
|
consensus.fCoinbaseMustBeProtected = false; |
|
|
|
consensus.nSubsidySlowStartInterval = 0; |
|
|
|
consensus.nSubsidyHalvingInterval = 150; |
|
|
|
consensus.fCoinbaseMustBeProtected = false; |
|
|
|
consensus.nMajorityEnforceBlockUpgrade = 750; |
|
|
|
consensus.nMajorityRejectBlockOutdated = 950; |
|
|
|
consensus.nMajorityWindow = 1000; |
|
|
|
consensus.powLimit = uint256S("0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f"); |
|
|
|
consensus.powAlternate = uint256S("0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f"); |
|
|
|
consensus.nPowAveragingWindow = 17; |
|
|
|
consensus.nMaxFutureBlockTime = 7 * 60; // 7 mins
|
|
|
|
consensus.nMajorityWindow = 1000; |
|
|
|
consensus.powLimit = uint256S("0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f"); |
|
|
|
consensus.powAlternate = uint256S("0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f0f"); |
|
|
|
consensus.nPowAveragingWindow = 17; |
|
|
|
consensus.nMaxFutureBlockTime = 7 * 60; // 7 mins
|
|
|
|
assert(maxUint/UintToArith256(consensus.powLimit) >= consensus.nPowAveragingWindow); |
|
|
|
consensus.nPowMaxAdjustDown = 0; // Turn off adjustment down
|
|
|
|
consensus.nPowMaxAdjustUp = 0; // Turn off adjustment up
|
|
|
|
consensus.nPowTargetSpacing = 2.5 * 60; |
|
|
|
consensus.nPowMaxAdjustDown = 0; // Turn off adjustment down
|
|
|
|
consensus.nPowMaxAdjustUp = 0; // Turn off adjustment up
|
|
|
|
consensus.nPowTargetSpacing = 2.5 * 60; |
|
|
|
consensus.nPowAllowMinDifficultyBlocksAfterHeight = 0; |
|
|
|
consensus.vUpgrades[Consensus::BASE_SPROUT].nProtocolVersion = 170002; |
|
|
|
consensus.vUpgrades[Consensus::BASE_SPROUT].nActivationHeight = |
|
|
@ -436,9 +434,6 @@ public: |
|
|
|
bech32HRPs[SAPLING_INCOMING_VIEWING_KEY] = "zivkregtestsapling"; |
|
|
|
bech32HRPs[SAPLING_EXTENDED_SPEND_KEY] = "secret-extended-key-regtest"; |
|
|
|
|
|
|
|
// Founders reward script expects a vector of 2-of-3 multisig addresses
|
|
|
|
vFoundersRewardAddress = { "t2FwcEhFdNXuFMv1tcYwaBJtYVtMj8b1uTg" }; |
|
|
|
assert(vFoundersRewardAddress.size() <= consensus.GetLastFoundersRewardBlockHeight()); |
|
|
|
} |
|
|
|
|
|
|
|
void UpdateNetworkUpgradeParameters(Consensus::UpgradeIndex idx, int nActivationHeight) |
|
|
@ -491,37 +486,6 @@ bool SelectParamsFromCommandLine() |
|
|
|
return true; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// Block height must be >0 and <=last founders reward block height
|
|
|
|
// Index variable i ranges from 0 - (vFoundersRewardAddress.size()-1)
|
|
|
|
std::string CChainParams::GetFoundersRewardAddressAtHeight(int nHeight) const { |
|
|
|
int maxHeight = consensus.GetLastFoundersRewardBlockHeight(); |
|
|
|
assert(nHeight > 0 && nHeight <= maxHeight); |
|
|
|
|
|
|
|
size_t addressChangeInterval = (maxHeight + vFoundersRewardAddress.size()) / vFoundersRewardAddress.size(); |
|
|
|
size_t i = nHeight / addressChangeInterval; |
|
|
|
return vFoundersRewardAddress[i]; |
|
|
|
} |
|
|
|
|
|
|
|
// TODO: this is ZEC code, HUSH does not use it, and it can be deleted
|
|
|
|
// Block height must be >0 and <=last founders reward block height
|
|
|
|
// The founders reward address is expected to be a multisig (P2SH) address
|
|
|
|
CScript CChainParams::GetFoundersRewardScriptAtHeight(int nHeight) const { |
|
|
|
assert(nHeight > 0 && nHeight <= consensus.GetLastFoundersRewardBlockHeight()); |
|
|
|
|
|
|
|
CTxDestination address = DecodeDestination(GetFoundersRewardAddressAtHeight(nHeight).c_str()); |
|
|
|
assert(IsValidDestination(address)); |
|
|
|
assert(boost::get<CScriptID>(&address) != nullptr); |
|
|
|
CScriptID scriptID = boost::get<CScriptID>(address); // address is a boost variant
|
|
|
|
CScript script = CScript() << OP_HASH160 << ToByteVector(scriptID) << OP_EQUAL; |
|
|
|
return script; |
|
|
|
} |
|
|
|
|
|
|
|
std::string CChainParams::GetFoundersRewardAddressAtIndex(int i) const { |
|
|
|
assert(i >= 0 && i < vFoundersRewardAddress.size()); |
|
|
|
return vFoundersRewardAddress[i]; |
|
|
|
} |
|
|
|
|
|
|
|
void UpdateNetworkUpgradeParameters(Consensus::UpgradeIndex idx, int nActivationHeight) |
|
|
|
{ |
|
|
|
regTestParams.UpdateNetworkUpgradeParameters(idx, nActivationHeight); |
|
|
@ -542,7 +506,7 @@ int32_t MAX_BLOCK_SIZE(int32_t height) |
|
|
|
void hush_changeblocktime() |
|
|
|
{ |
|
|
|
pCurrentParams->consensus.nMaxFutureBlockTime = 7 * ASSETCHAINS_BLOCKTIME; |
|
|
|
pCurrentParams->consensus.nPowTargetSpacing = ASSETCHAINS_BLOCKTIME; |
|
|
|
pCurrentParams->consensus.nPowTargetSpacing = ASSETCHAINS_BLOCKTIME; |
|
|
|
fprintf(stderr,"HUSH blocktime changing to %d seconds\n",ASSETCHAINS_BLOCKTIME); |
|
|
|
} |
|
|
|
|
|
|
|