@@ -45,11 +45,12 @@ GovernanceStore::GovernanceStore() :
4545}
4646
4747CGovernanceManager::CGovernanceManager (CMasternodeMetaMan& mn_metaman, CNetFulfilledRequestManager& netfulfilledman,
48- const std::unique_ptr<CDeterministicMNManager>& dmnman,
48+ const ChainstateManager& chainman, const std::unique_ptr<CDeterministicMNManager>& dmnman,
4949 const std::unique_ptr<CMasternodeSync>& mn_sync) :
5050 m_db{std::make_unique<db_type>(" governance.dat" , " magicGovernanceCache" )},
5151 m_mn_metaman{mn_metaman},
5252 m_netfulfilledman{netfulfilledman},
53+ m_chainman{chainman},
5354 m_dmnman{dmnman},
5455 m_mn_sync{mn_sync},
5556 nTimeLastDiff (0 ),
@@ -194,7 +195,7 @@ PeerMsgRet CGovernanceManager::ProcessMessage(CNode& peer, CConnman& connman, Pe
194195 // CHECK OBJECT AGAINST LOCAL BLOCKCHAIN
195196
196197 bool fMissingConfirmations = false ;
197- bool fIsValid = govobj.IsValidLocally (tip_mn_list, strError, fMissingConfirmations , true );
198+ bool fIsValid = govobj.IsValidLocally (tip_mn_list, m_chainman, strError, fMissingConfirmations , true );
198199
199200 if (fRateCheckBypassed && fIsValid && !MasternodeRateCheck (govobj, true )) {
200201 LogPrint (BCLog::GOBJECT, " MNGOVERNANCEOBJECT -- masternode rate check failed (after signature verification) - %s - (current block height %d)\n " , strHash, nCachedBlockHeight);
@@ -303,7 +304,7 @@ void CGovernanceManager::AddGovernanceObject(CGovernanceObject& govobj, PeerMana
303304
304305 // MAKE SURE THIS OBJECT IS OK
305306
306- if (!govobj.IsValidLocally (tip_mn_list, strError, true )) {
307+ if (!govobj.IsValidLocally (tip_mn_list, m_chainman, strError, true )) {
307308 LogPrint (BCLog::GOBJECT, " CGovernanceManager::AddGovernanceObject -- invalid governance object - %s - (nCachedBlockHeight %d) \n " , strError, nCachedBlockHeight);
308309 return ;
309310 }
@@ -387,7 +388,7 @@ void CGovernanceManager::CheckAndRemove()
387388 // IF CACHE IS NOT DIRTY, WHY DO THIS?
388389 if (pObj->IsSetDirtyCache ()) {
389390 // UPDATE LOCAL VALIDITY AGAINST CRYPTO DATA
390- pObj->UpdateLocalValidity (tip_mn_list);
391+ pObj->UpdateLocalValidity (tip_mn_list, m_chainman );
391392
392393 // UPDATE SENTINEL SIGNALING VARIABLES
393394 pObj->UpdateSentinelVariables (tip_mn_list);
@@ -612,7 +613,7 @@ std::optional<const CSuperblock> CGovernanceManager::CreateSuperblockCandidate(i
612613
613614 CSuperblock::GetNearestSuperblocksHeights (nHeight, nLastSuperblock, nNextSuperblock);
614615 auto SBEpochTime = static_cast <int64_t >(GetTime<std::chrono::seconds>().count () + (nNextSuperblock - nHeight) * 2.62 * 60 );
615- auto governanceBudget = CSuperblock::GetPaymentsLimit (nNextSuperblock);
616+ auto governanceBudget = CSuperblock::GetPaymentsLimit (m_chainman. ActiveChain (), nNextSuperblock);
616617
617618 CAmount budgetAllocated{};
618619 for (const auto & proposal : approvedProposals) {
@@ -690,7 +691,7 @@ std::optional<const CGovernanceObject> CGovernanceManager::CreateGovernanceTrigg
690691 }
691692
692693 // Nobody submitted a trigger we'd like to see, so let's do it but only if we are the payee
693- const CBlockIndex *tip = WITH_LOCK (::cs_main, return :: ChainActive ().Tip ());
694+ const CBlockIndex *tip = WITH_LOCK (::cs_main, return m_chainman. ActiveChain ().Tip ());
694695 const auto mnList = Assert (m_dmnman)->GetListForBlock (tip);
695696 const auto mn_payees = mnList.GetProjectedMNPayees (tip);
696697
@@ -706,7 +707,7 @@ std::optional<const CGovernanceObject> CGovernanceManager::CreateGovernanceTrigg
706707 gov_sb.SetMasternodeOutpoint (mn_activeman.GetOutPoint ());
707708 gov_sb.Sign (mn_activeman);
708709
709- if (std::string strError; !gov_sb.IsValidLocally (m_dmnman->GetListAtChainTip (), strError, true )) {
710+ if (std::string strError; !gov_sb.IsValidLocally (m_dmnman->GetListAtChainTip (), m_chainman, strError, true )) {
710711 LogPrint (BCLog::GOBJECT, " CGovernanceManager::%s Created trigger is invalid:%s\n " , __func__, strError);
711712 return std::nullopt ;
712713 }
@@ -1140,8 +1141,8 @@ void CGovernanceManager::CheckPostponedObjects(PeerManager& peerman)
11401141
11411142 std::string strError;
11421143 bool fMissingConfirmations ;
1143- if (govobj.IsCollateralValid (strError, fMissingConfirmations )) {
1144- if (govobj.IsValidLocally (Assert (m_dmnman)->GetListAtChainTip (), strError, false )) {
1144+ if (govobj.IsCollateralValid (m_chainman, strError, fMissingConfirmations )) {
1145+ if (govobj.IsValidLocally (Assert (m_dmnman)->GetListAtChainTip (), m_chainman, strError, false )) {
11451146 AddGovernanceObject (govobj, peerman);
11461147 } else {
11471148 LogPrint (BCLog::GOBJECT, " CGovernanceManager::CheckPostponedObjects -- %s invalid\n " , nHash.ToString ());
0 commit comments