mirror of
https://github.com/dashpay/dash.git
synced 2024-12-25 20:12:57 +01:00
refactor: move IsSuperblockTriggered to CGovernanceManager
This commit is contained in:
parent
9638fdce6d
commit
7a470c441e
@ -218,46 +218,41 @@ std::vector<CSuperblock_sptr> CGovernanceManager::GetActiveTriggers()
|
|||||||
return vecResults;
|
return vecResults;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
bool CGovernanceManager::IsSuperblockTriggered(const CDeterministicMNList& tip_mn_list, int nBlockHeight)
|
||||||
* Is Superblock Triggered
|
|
||||||
*
|
|
||||||
* - Does this block have a non-executed and activated trigger?
|
|
||||||
*/
|
|
||||||
|
|
||||||
bool CSuperblockManager::IsSuperblockTriggered(CGovernanceManager& govman, const CDeterministicMNList& tip_mn_list, int nBlockHeight)
|
|
||||||
{
|
{
|
||||||
LogPrint(BCLog::GOBJECT, "CSuperblockManager::IsSuperblockTriggered -- Start nBlockHeight = %d\n", nBlockHeight);
|
LogPrint(BCLog::GOBJECT, "IsSuperblockTriggered -- Start nBlockHeight = %d\n", nBlockHeight);
|
||||||
if (!CSuperblock::IsValidBlockHeight(nBlockHeight)) {
|
if (!CSuperblock::IsValidBlockHeight(nBlockHeight)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
LOCK(govman.cs);
|
LOCK(cs);
|
||||||
// GET ALL ACTIVE TRIGGERS
|
// GET ALL ACTIVE TRIGGERS
|
||||||
std::vector<CSuperblock_sptr> vecTriggers = govman.GetActiveTriggers();
|
std::vector<CSuperblock_sptr> vecTriggers = GetActiveTriggers();
|
||||||
|
|
||||||
LogPrint(BCLog::GOBJECT, "CSuperblockManager::IsSuperblockTriggered -- vecTriggers.size() = %d\n", vecTriggers.size());
|
LogPrint(BCLog::GOBJECT, "IsSuperblockTriggered -- vecTriggers.size() = %d\n", vecTriggers.size());
|
||||||
|
|
||||||
for (const auto& pSuperblock : vecTriggers) {
|
for (const auto& pSuperblock : vecTriggers) {
|
||||||
if (!pSuperblock) {
|
if (!pSuperblock) {
|
||||||
LogPrintf("CSuperblockManager::IsSuperblockTriggered -- Non-superblock found, continuing\n");
|
LogPrintf("IsSuperblockTriggered -- Non-superblock found, continuing\n");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
CGovernanceObject* pObj = pSuperblock->GetGovernanceObject(govman);
|
CGovernanceObject* pObj = pSuperblock->GetGovernanceObject(*this);
|
||||||
|
|
||||||
if (!pObj) {
|
if (!pObj) {
|
||||||
LogPrintf("CSuperblockManager::IsSuperblockTriggered -- pObj == nullptr, continuing\n");
|
LogPrintf("IsSuperblockTriggered -- pObj == nullptr, continuing\n");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
LogPrint(BCLog::GOBJECT, "CSuperblockManager::IsSuperblockTriggered -- data = %s\n", pObj->GetDataAsPlainString());
|
LogPrint(BCLog::GOBJECT, "IsSuperblockTriggered -- data = %s\n", pObj->GetDataAsPlainString());
|
||||||
|
|
||||||
// note : 12.1 - is epoch calculation correct?
|
// note : 12.1 - is epoch calculation correct?
|
||||||
|
|
||||||
if (nBlockHeight != pSuperblock->GetBlockHeight()) {
|
if (nBlockHeight != pSuperblock->GetBlockHeight()) {
|
||||||
LogPrint(BCLog::GOBJECT, "CSuperblockManager::IsSuperblockTriggered -- block height doesn't match nBlockHeight = %d, blockStart = %d, continuing\n",
|
LogPrint(BCLog::GOBJECT,
|
||||||
nBlockHeight,
|
"IsSuperblockTriggered -- block height doesn't match nBlockHeight = %d, blockStart = %d, "
|
||||||
pSuperblock->GetBlockHeight());
|
"continuing\n",
|
||||||
|
nBlockHeight, pSuperblock->GetBlockHeight());
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -266,10 +261,10 @@ bool CSuperblockManager::IsSuperblockTriggered(CGovernanceManager& govman, const
|
|||||||
pObj->UpdateSentinelVariables(tip_mn_list);
|
pObj->UpdateSentinelVariables(tip_mn_list);
|
||||||
|
|
||||||
if (pObj->IsSetCachedFunding()) {
|
if (pObj->IsSetCachedFunding()) {
|
||||||
LogPrint(BCLog::GOBJECT, "CSuperblockManager::IsSuperblockTriggered -- fCacheFunding = true, returning true\n");
|
LogPrint(BCLog::GOBJECT, "IsSuperblockTriggered -- fCacheFunding = true, returning true\n");
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
LogPrint(BCLog::GOBJECT, "CSuperblockManager::IsSuperblockTriggered -- fCacheFunding = false, continuing\n");
|
LogPrint(BCLog::GOBJECT, "IsSuperblockTriggered -- fCacheFunding = false, continuing\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -33,8 +33,6 @@ private:
|
|||||||
static bool GetBestSuperblock(CGovernanceManager& govman, const CDeterministicMNList& tip_mn_list, CSuperblock_sptr& pSuperblockRet, int nBlockHeight);
|
static bool GetBestSuperblock(CGovernanceManager& govman, const CDeterministicMNList& tip_mn_list, CSuperblock_sptr& pSuperblockRet, int nBlockHeight);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static bool IsSuperblockTriggered(CGovernanceManager& govman, const CDeterministicMNList& tip_mn_list, int nBlockHeight);
|
|
||||||
|
|
||||||
static bool GetSuperblockPayments(CGovernanceManager& govman, const CDeterministicMNList& tip_mn_list, int nBlockHeight, std::vector<CTxOut>& voutSuperblockRet);
|
static bool GetSuperblockPayments(CGovernanceManager& govman, const CDeterministicMNList& tip_mn_list, int nBlockHeight, std::vector<CTxOut>& voutSuperblockRet);
|
||||||
static void ExecuteBestSuperblock(CGovernanceManager& govman, const CDeterministicMNList& tip_mn_list, int nBlockHeight);
|
static void ExecuteBestSuperblock(CGovernanceManager& govman, const CDeterministicMNList& tip_mn_list, int nBlockHeight);
|
||||||
|
|
||||||
|
@ -350,6 +350,17 @@ public:
|
|||||||
bool AddNewTrigger(uint256 nHash);
|
bool AddNewTrigger(uint256 nHash);
|
||||||
void CleanAndRemoveTriggers();
|
void CleanAndRemoveTriggers();
|
||||||
|
|
||||||
|
// Superblocks related:
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Is Superblock Triggered
|
||||||
|
*
|
||||||
|
* - Does this block have a non-executed and activated trigger?
|
||||||
|
*/
|
||||||
|
|
||||||
|
bool IsSuperblockTriggered(const CDeterministicMNList& tip_mn_list, int nBlockHeight);
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::optional<const CSuperblock> CreateSuperblockCandidate(int nHeight) const;
|
std::optional<const CSuperblock> CreateSuperblockCandidate(int nHeight) const;
|
||||||
std::optional<const CGovernanceObject> CreateGovernanceTrigger(const std::optional<const CSuperblock>& sb_opt, PeerManager& peerman,
|
std::optional<const CGovernanceObject> CreateGovernanceTrigger(const std::optional<const CSuperblock>& sb_opt, PeerManager& peerman,
|
||||||
|
@ -246,7 +246,7 @@ bool CMNPaymentsProcessor::IsBlockValueValid(const CBlock& block, const int nBlo
|
|||||||
|
|
||||||
const auto tip_mn_list = m_dmnman.GetListAtChainTip();
|
const auto tip_mn_list = m_dmnman.GetListAtChainTip();
|
||||||
|
|
||||||
if (!CSuperblockManager::IsSuperblockTriggered(m_govman, tip_mn_list, nBlockHeight)) {
|
if (!m_govman.IsSuperblockTriggered(tip_mn_list, nBlockHeight)) {
|
||||||
// we are on a valid superblock height but a superblock was not triggered
|
// we are on a valid superblock height but a superblock was not triggered
|
||||||
// revert to block reward limits in this case
|
// revert to block reward limits in this case
|
||||||
if(!isBlockRewardValueMet) {
|
if(!isBlockRewardValueMet) {
|
||||||
@ -302,7 +302,7 @@ bool CMNPaymentsProcessor::IsBlockPayeeValid(const CTransaction& txNew, const CB
|
|||||||
if (AreSuperblocksEnabled(m_sporkman)) {
|
if (AreSuperblocksEnabled(m_sporkman)) {
|
||||||
if (!check_superblock) return true;
|
if (!check_superblock) return true;
|
||||||
const auto tip_mn_list = m_dmnman.GetListAtChainTip();
|
const auto tip_mn_list = m_dmnman.GetListAtChainTip();
|
||||||
if (CSuperblockManager::IsSuperblockTriggered(m_govman, tip_mn_list, nBlockHeight)) {
|
if (m_govman.IsSuperblockTriggered(tip_mn_list, nBlockHeight)) {
|
||||||
if (CSuperblockManager::IsValid(m_govman, m_chainman.ActiveChain(), tip_mn_list, txNew, nBlockHeight, blockSubsidy + feeReward)) {
|
if (CSuperblockManager::IsValid(m_govman, m_chainman.ActiveChain(), tip_mn_list, txNew, nBlockHeight, blockSubsidy + feeReward)) {
|
||||||
LogPrint(BCLog::GOBJECT, "CMNPaymentsProcessor::%s -- Valid superblock at height %d: %s", __func__, nBlockHeight, txNew.ToString()); /* Continued */
|
LogPrint(BCLog::GOBJECT, "CMNPaymentsProcessor::%s -- Valid superblock at height %d: %s", __func__, nBlockHeight, txNew.ToString()); /* Continued */
|
||||||
// continue validation, should also pay MN
|
// continue validation, should also pay MN
|
||||||
@ -330,7 +330,7 @@ void CMNPaymentsProcessor::FillBlockPayments(CMutableTransaction& txNew, const C
|
|||||||
// only create superblocks if spork is enabled AND if superblock is actually triggered
|
// only create superblocks if spork is enabled AND if superblock is actually triggered
|
||||||
// (height should be validated inside)
|
// (height should be validated inside)
|
||||||
const auto tip_mn_list = m_dmnman.GetListAtChainTip();
|
const auto tip_mn_list = m_dmnman.GetListAtChainTip();
|
||||||
if(AreSuperblocksEnabled(m_sporkman) && CSuperblockManager::IsSuperblockTriggered(m_govman, tip_mn_list, nBlockHeight)) {
|
if (AreSuperblocksEnabled(m_sporkman) && m_govman.IsSuperblockTriggered(tip_mn_list, nBlockHeight)) {
|
||||||
LogPrint(BCLog::GOBJECT, "CMNPaymentsProcessor::%s -- Triggered superblock creation at height %d\n", __func__, nBlockHeight);
|
LogPrint(BCLog::GOBJECT, "CMNPaymentsProcessor::%s -- Triggered superblock creation at height %d\n", __func__, nBlockHeight);
|
||||||
CSuperblockManager::GetSuperblockPayments(m_govman, tip_mn_list, nBlockHeight, voutSuperblockPaymentsRet);
|
CSuperblockManager::GetSuperblockPayments(m_govman, tip_mn_list, nBlockHeight, voutSuperblockPaymentsRet);
|
||||||
}
|
}
|
||||||
|
@ -253,7 +253,7 @@ static std::string GetRequiredPaymentsString(CGovernanceManager& govman, const C
|
|||||||
strPayments += ", " + EncodeDestination(dest);
|
strPayments += ", " + EncodeDestination(dest);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (CSuperblockManager::IsSuperblockTriggered(govman, tip_mn_list, nBlockHeight)) {
|
if (govman.IsSuperblockTriggered(tip_mn_list, nBlockHeight)) {
|
||||||
std::vector<CTxOut> voutSuperblock;
|
std::vector<CTxOut> voutSuperblock;
|
||||||
if (!CSuperblockManager::GetSuperblockPayments(govman, tip_mn_list, nBlockHeight, voutSuperblock)) {
|
if (!CSuperblockManager::GetSuperblockPayments(govman, tip_mn_list, nBlockHeight, voutSuperblock)) {
|
||||||
return strPayments + ", error";
|
return strPayments + ", error";
|
||||||
|
Loading…
Reference in New Issue
Block a user