mirror of
https://github.com/dashpay/dash.git
synced 2024-12-24 19:42:46 +01:00
feat: re-bury DIP0024 with new height when quorums actually appeared
For current implementation it is not important when exactly fork happened yet important to know when first rotating quorum formed
This commit is contained in:
parent
343c74b779
commit
632c4c4bcd
@ -189,7 +189,6 @@ public:
|
|||||||
consensus.DIP0008Height = 1088640; // 00000000000000112e41e4b3afda8b233b8cc07c532d2eac5de097b68358c43e
|
consensus.DIP0008Height = 1088640; // 00000000000000112e41e4b3afda8b233b8cc07c532d2eac5de097b68358c43e
|
||||||
consensus.BRRHeight = 1374912; // 000000000000000c5a124f3eccfbe6e17876dca79cec9e63dfa70d269113c926
|
consensus.BRRHeight = 1374912; // 000000000000000c5a124f3eccfbe6e17876dca79cec9e63dfa70d269113c926
|
||||||
consensus.DIP0020Height = 1516032; // 000000000000000f64ed3bd9af1078177ac026f6aa2677aa4d8beeae43be56cc
|
consensus.DIP0020Height = 1516032; // 000000000000000f64ed3bd9af1078177ac026f6aa2677aa4d8beeae43be56cc
|
||||||
consensus.DIP0024Height = 1737792; // 0000000000000001342be9c0b75ad40c276beaad91616423c4d9cb101b3db438
|
|
||||||
consensus.DIP0024QuorumsHeight = 1738698; // 000000000000001aa25181e4c466e593992c98f9eb21c69ee757b8bb0af50244
|
consensus.DIP0024QuorumsHeight = 1738698; // 000000000000001aa25181e4c466e593992c98f9eb21c69ee757b8bb0af50244
|
||||||
consensus.V19Height = 1899072; // 0000000000000015e32e73052d663626327004c81c5c22cb8b42c361015c0eae
|
consensus.V19Height = 1899072; // 0000000000000015e32e73052d663626327004c81c5c22cb8b42c361015c0eae
|
||||||
consensus.V20Height = 1987776; // 000000000000001bf41cff06b76780050682ca29e61a91c391893d4745579777
|
consensus.V20Height = 1987776; // 000000000000001bf41cff06b76780050682ca29e61a91c391893d4745579777
|
||||||
@ -387,7 +386,6 @@ public:
|
|||||||
consensus.DIP0008Height = 78800; // 000000000e9329d964d80e7dab2e704b43b6bd2b91fea1e9315d38932e55fb55
|
consensus.DIP0008Height = 78800; // 000000000e9329d964d80e7dab2e704b43b6bd2b91fea1e9315d38932e55fb55
|
||||||
consensus.BRRHeight = 387500; // 0000001537dbfd09dea69f61c1f8b2afa27c8dc91c934e144797761c9f10367b
|
consensus.BRRHeight = 387500; // 0000001537dbfd09dea69f61c1f8b2afa27c8dc91c934e144797761c9f10367b
|
||||||
consensus.DIP0020Height = 414100; // 000000cf961868662fbfbb5d1af6f1caa1809f6a4e390efe5f8cd3031adea668
|
consensus.DIP0020Height = 414100; // 000000cf961868662fbfbb5d1af6f1caa1809f6a4e390efe5f8cd3031adea668
|
||||||
consensus.DIP0024Height = 769700; // 0000008d84e4efd890ae95c70a7a6126a70a80e5c19e4cb264a5b3469aeef172
|
|
||||||
consensus.DIP0024QuorumsHeight = 770730; // 0000003c43b3ae7fffe61278ca5537a0e256ebf4d709d45f0ab040271074d51e
|
consensus.DIP0024QuorumsHeight = 770730; // 0000003c43b3ae7fffe61278ca5537a0e256ebf4d709d45f0ab040271074d51e
|
||||||
consensus.V19Height = 850100; // 000004728b8ff2a16b9d4eebb0fd61eeffadc9c7fe4b0ec0b5a739869401ab5b
|
consensus.V19Height = 850100; // 000004728b8ff2a16b9d4eebb0fd61eeffadc9c7fe4b0ec0b5a739869401ab5b
|
||||||
consensus.V20Height = 905100; // 0000020c5e0f86f385cbf8e90210de9a9fd63633f01433bf47a6b3227a2851fd
|
consensus.V20Height = 905100; // 0000020c5e0f86f385cbf8e90210de9a9fd63633f01433bf47a6b3227a2851fd
|
||||||
@ -560,12 +558,11 @@ public:
|
|||||||
consensus.DIP0008Height = 2; // DIP0008 activated immediately on devnet
|
consensus.DIP0008Height = 2; // DIP0008 activated immediately on devnet
|
||||||
consensus.BRRHeight = 2; // BRR (realloc) activated immediately on devnet
|
consensus.BRRHeight = 2; // BRR (realloc) activated immediately on devnet
|
||||||
consensus.DIP0020Height = 2; // DIP0020 activated immediately on devnet
|
consensus.DIP0020Height = 2; // DIP0020 activated immediately on devnet
|
||||||
consensus.DIP0024Height = 2; // DIP0024 activated immediately on devnet
|
|
||||||
consensus.DIP0024QuorumsHeight = 2; // DIP0024 activated immediately on devnet
|
consensus.DIP0024QuorumsHeight = 2; // DIP0024 activated immediately on devnet
|
||||||
consensus.V19Height = 2; // V19 activated immediately on devnet
|
consensus.V19Height = 2; // V19 activated immediately on devnet
|
||||||
consensus.V20Height = 2; // V20 activated immediately on devnet
|
consensus.V20Height = 2; // V20 activated immediately on devnet
|
||||||
consensus.MN_RRHeight = 2; // MN_RR activated immediately on devnet
|
consensus.MN_RRHeight = 2; // MN_RR activated immediately on devnet
|
||||||
consensus.MinBIP9WarningHeight = 2 + 2016; // v19 activation height + miner confirmation window
|
consensus.MinBIP9WarningHeight = 2 + 2016; // mn_rr activation height + miner confirmation window
|
||||||
consensus.powLimit = uint256S("7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"); // ~uint256(0) >> 1
|
consensus.powLimit = uint256S("7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"); // ~uint256(0) >> 1
|
||||||
consensus.nPowTargetTimespan = 24 * 60 * 60; // Dash: 1 day
|
consensus.nPowTargetTimespan = 24 * 60 * 60; // Dash: 1 day
|
||||||
consensus.nPowTargetSpacing = 2.5 * 60; // Dash: 2.5 minutes
|
consensus.nPowTargetSpacing = 2.5 * 60; // Dash: 2.5 minutes
|
||||||
@ -797,7 +794,6 @@ public:
|
|||||||
consensus.DIP0008Height = 1; // Always active unless overridden
|
consensus.DIP0008Height = 1; // Always active unless overridden
|
||||||
consensus.BRRHeight = 1; // Always active unless overridden
|
consensus.BRRHeight = 1; // Always active unless overridden
|
||||||
consensus.DIP0020Height = 1; // Always active unless overridden
|
consensus.DIP0020Height = 1; // Always active unless overridden
|
||||||
consensus.DIP0024Height = 900;
|
|
||||||
consensus.DIP0024QuorumsHeight = 900;
|
consensus.DIP0024QuorumsHeight = 900;
|
||||||
consensus.V19Height = 900;
|
consensus.V19Height = 900;
|
||||||
consensus.V20Height = 900;
|
consensus.V20Height = 900;
|
||||||
|
@ -137,8 +137,6 @@ struct Params {
|
|||||||
int BRRHeight;
|
int BRRHeight;
|
||||||
/** Block height at which DIP0020, DIP0021 and LLMQ_100_67 quorums become active */
|
/** Block height at which DIP0020, DIP0021 and LLMQ_100_67 quorums become active */
|
||||||
int DIP0020Height;
|
int DIP0020Height;
|
||||||
/** Block height at which DIP0024 (Quorum Rotation) and decreased governance proposal fee becomes active */
|
|
||||||
int DIP0024Height;
|
|
||||||
/** Block height at which the first DIP0024 quorum was mined */
|
/** Block height at which the first DIP0024 quorum was mined */
|
||||||
int DIP0024QuorumsHeight;
|
int DIP0024QuorumsHeight;
|
||||||
/** Block height at which V19 (Basic BLS and EvoNodes) becomes active */
|
/** Block height at which V19 (Basic BLS and EvoNodes) becomes active */
|
||||||
@ -205,7 +203,7 @@ struct Params {
|
|||||||
case DEPLOYMENT_DIP0020:
|
case DEPLOYMENT_DIP0020:
|
||||||
return DIP0020Height;
|
return DIP0020Height;
|
||||||
case DEPLOYMENT_DIP0024:
|
case DEPLOYMENT_DIP0024:
|
||||||
return DIP0024Height;
|
return DIP0024QuorumsHeight;
|
||||||
case DEPLOYMENT_BRR:
|
case DEPLOYMENT_BRR:
|
||||||
return BRRHeight;
|
return BRRHeight;
|
||||||
case DEPLOYMENT_V19:
|
case DEPLOYMENT_V19:
|
||||||
|
@ -116,26 +116,26 @@ std::map<Consensus::LLMQType, QvvecSyncMode> GetEnabledQuorumVvecSyncEntries()
|
|||||||
|
|
||||||
bool IsQuorumTypeEnabled(Consensus::LLMQType llmqType, gsl::not_null<const CBlockIndex*> pindexPrev)
|
bool IsQuorumTypeEnabled(Consensus::LLMQType llmqType, gsl::not_null<const CBlockIndex*> pindexPrev)
|
||||||
{
|
{
|
||||||
return IsQuorumTypeEnabledInternal(llmqType, pindexPrev, std::nullopt, std::nullopt);
|
return IsQuorumTypeEnabledInternal(llmqType, pindexPrev, std::nullopt);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool IsQuorumTypeEnabledInternal(Consensus::LLMQType llmqType, gsl::not_null<const CBlockIndex*> pindexPrev,
|
bool IsQuorumTypeEnabledInternal(Consensus::LLMQType llmqType, gsl::not_null<const CBlockIndex*> pindexPrev,
|
||||||
std::optional<bool> optDIP0024IsActive, std::optional<bool> optHaveDIP0024Quorums)
|
std::optional<bool> optIsDIP0024Active)
|
||||||
{
|
{
|
||||||
const Consensus::Params& consensusParams = Params().GetConsensus();
|
const Consensus::Params& consensusParams = Params().GetConsensus();
|
||||||
|
|
||||||
const bool fDIP0024IsActive{optDIP0024IsActive.value_or(DeploymentActiveAfter(pindexPrev, consensusParams, Consensus::DEPLOYMENT_DIP0024))};
|
const bool fDIP0024IsActive{
|
||||||
const bool fHaveDIP0024Quorums{optHaveDIP0024Quorums.value_or(pindexPrev->nHeight >= consensusParams.DIP0024QuorumsHeight)};
|
optIsDIP0024Active.value_or(DeploymentActiveAfter(pindexPrev, consensusParams, Consensus::DEPLOYMENT_DIP0024))};
|
||||||
switch (llmqType)
|
switch (llmqType)
|
||||||
{
|
{
|
||||||
case Consensus::LLMQType::LLMQ_DEVNET:
|
case Consensus::LLMQType::LLMQ_DEVNET:
|
||||||
return true;
|
return true;
|
||||||
case Consensus::LLMQType::LLMQ_50_60:
|
case Consensus::LLMQType::LLMQ_50_60:
|
||||||
return !fDIP0024IsActive || !fHaveDIP0024Quorums || Params().NetworkIDString() == CBaseChainParams::TESTNET ||
|
return !fDIP0024IsActive || Params().NetworkIDString() == CBaseChainParams::TESTNET ||
|
||||||
Params().NetworkIDString() == CBaseChainParams::DEVNET;
|
Params().NetworkIDString() == CBaseChainParams::DEVNET;
|
||||||
case Consensus::LLMQType::LLMQ_TEST_INSTANTSEND:
|
case Consensus::LLMQType::LLMQ_TEST_INSTANTSEND:
|
||||||
return !fDIP0024IsActive || !fHaveDIP0024Quorums ||
|
return !fDIP0024IsActive ||
|
||||||
consensusParams.llmqTypeDIP0024InstantSend == Consensus::LLMQType::LLMQ_TEST_INSTANTSEND;
|
consensusParams.llmqTypeDIP0024InstantSend == Consensus::LLMQType::LLMQ_TEST_INSTANTSEND;
|
||||||
case Consensus::LLMQType::LLMQ_TEST:
|
case Consensus::LLMQType::LLMQ_TEST:
|
||||||
case Consensus::LLMQType::LLMQ_TEST_PLATFORM:
|
case Consensus::LLMQType::LLMQ_TEST_PLATFORM:
|
||||||
case Consensus::LLMQType::LLMQ_400_60:
|
case Consensus::LLMQType::LLMQ_400_60:
|
||||||
|
@ -44,7 +44,8 @@ bool IsWatchQuorumsEnabled();
|
|||||||
std::map<Consensus::LLMQType, QvvecSyncMode> GetEnabledQuorumVvecSyncEntries();
|
std::map<Consensus::LLMQType, QvvecSyncMode> GetEnabledQuorumVvecSyncEntries();
|
||||||
|
|
||||||
bool IsQuorumTypeEnabled(Consensus::LLMQType llmqType, gsl::not_null<const CBlockIndex*> pindexPrev);
|
bool IsQuorumTypeEnabled(Consensus::LLMQType llmqType, gsl::not_null<const CBlockIndex*> pindexPrev);
|
||||||
bool IsQuorumTypeEnabledInternal(Consensus::LLMQType llmqType, gsl::not_null<const CBlockIndex*> pindexPrev, std::optional<bool> optDIP0024IsActive, std::optional<bool> optHaveDIP0024Quorums);
|
bool IsQuorumTypeEnabledInternal(Consensus::LLMQType llmqType, gsl::not_null<const CBlockIndex*> pindexPrev,
|
||||||
|
std::optional<bool> optHaveDIP0024Quorums);
|
||||||
|
|
||||||
std::vector<Consensus::LLMQType> GetEnabledQuorumTypes(gsl::not_null<const CBlockIndex*> pindex);
|
std::vector<Consensus::LLMQType> GetEnabledQuorumTypes(gsl::not_null<const CBlockIndex*> pindex);
|
||||||
std::vector<std::reference_wrapper<const Consensus::LLMQParams>> GetEnabledQuorumParams(gsl::not_null<const CBlockIndex*> pindex);
|
std::vector<std::reference_wrapper<const Consensus::LLMQParams>> GetEnabledQuorumParams(gsl::not_null<const CBlockIndex*> pindex);
|
||||||
|
@ -21,18 +21,14 @@ void Test(NodeContext& node)
|
|||||||
using namespace llmq;
|
using namespace llmq;
|
||||||
auto tip = node.chainman->ActiveTip();
|
auto tip = node.chainman->ActiveTip();
|
||||||
const auto& consensus_params = Params().GetConsensus();
|
const auto& consensus_params = Params().GetConsensus();
|
||||||
BOOST_CHECK_EQUAL(IsQuorumTypeEnabledInternal(consensus_params.llmqTypeDIP0024InstantSend, tip, false, false), false);
|
BOOST_CHECK_EQUAL(IsQuorumTypeEnabledInternal(consensus_params.llmqTypeDIP0024InstantSend, tip, false), false);
|
||||||
BOOST_CHECK_EQUAL(IsQuorumTypeEnabledInternal(consensus_params.llmqTypeDIP0024InstantSend, tip, true, false), true);
|
BOOST_CHECK_EQUAL(IsQuorumTypeEnabledInternal(consensus_params.llmqTypeDIP0024InstantSend, tip, true), true);
|
||||||
BOOST_CHECK_EQUAL(IsQuorumTypeEnabledInternal(consensus_params.llmqTypeDIP0024InstantSend, tip, true, true), true);
|
BOOST_CHECK_EQUAL(IsQuorumTypeEnabledInternal(consensus_params.llmqTypeChainLocks, tip, false), true);
|
||||||
BOOST_CHECK_EQUAL(IsQuorumTypeEnabledInternal(consensus_params.llmqTypeChainLocks, tip, false, false), true);
|
BOOST_CHECK_EQUAL(IsQuorumTypeEnabledInternal(consensus_params.llmqTypeChainLocks, tip, true), true);
|
||||||
BOOST_CHECK_EQUAL(IsQuorumTypeEnabledInternal(consensus_params.llmqTypeChainLocks, tip, true, false), true);
|
BOOST_CHECK_EQUAL(IsQuorumTypeEnabledInternal(consensus_params.llmqTypePlatform, tip, false), Params().IsTestChain());
|
||||||
BOOST_CHECK_EQUAL(IsQuorumTypeEnabledInternal(consensus_params.llmqTypeChainLocks, tip, true, true), true);
|
BOOST_CHECK_EQUAL(IsQuorumTypeEnabledInternal(consensus_params.llmqTypePlatform, tip, true), Params().IsTestChain());
|
||||||
BOOST_CHECK_EQUAL(IsQuorumTypeEnabledInternal(consensus_params.llmqTypePlatform, tip, false, false), Params().IsTestChain());
|
BOOST_CHECK_EQUAL(IsQuorumTypeEnabledInternal(consensus_params.llmqTypeMnhf, tip, false), true);
|
||||||
BOOST_CHECK_EQUAL(IsQuorumTypeEnabledInternal(consensus_params.llmqTypePlatform, tip, true, false), Params().IsTestChain());
|
BOOST_CHECK_EQUAL(IsQuorumTypeEnabledInternal(consensus_params.llmqTypeMnhf, tip, true), true);
|
||||||
BOOST_CHECK_EQUAL(IsQuorumTypeEnabledInternal(consensus_params.llmqTypePlatform, tip, true, true), Params().IsTestChain());
|
|
||||||
BOOST_CHECK_EQUAL(IsQuorumTypeEnabledInternal(consensus_params.llmqTypeMnhf, tip, false, false), true);
|
|
||||||
BOOST_CHECK_EQUAL(IsQuorumTypeEnabledInternal(consensus_params.llmqTypeMnhf, tip, true, false), true);
|
|
||||||
BOOST_CHECK_EQUAL(IsQuorumTypeEnabledInternal(consensus_params.llmqTypeMnhf, tip, true, true), true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOST_FIXTURE_TEST_CASE(utils_IsQuorumTypeEnabled_tests_regtest, RegTestingSetup)
|
BOOST_FIXTURE_TEST_CASE(utils_IsQuorumTypeEnabled_tests_regtest, RegTestingSetup)
|
||||||
|
Loading…
Reference in New Issue
Block a user