From 2b2e4f45da100872f7ea46bf00d7dce7b495efb9 Mon Sep 17 00:00:00 2001 From: Alexander Block Date: Mon, 17 Dec 2018 15:39:21 +0100 Subject: [PATCH] Remove a few uses of mnodeman from governance code And remove them with direct use of deterministicMNManager --- src/governance-object.cpp | 24 ++++++++---------------- src/governance-vote.cpp | 12 ++++-------- src/governance.cpp | 2 +- 3 files changed, 13 insertions(+), 25 deletions(-) diff --git a/src/governance-object.cpp b/src/governance-object.cpp index 4ea1bc5afd521..d8694ee20eb2b 100644 --- a/src/governance-object.cpp +++ b/src/governance-object.cpp @@ -123,9 +123,6 @@ bool CGovernanceObject::ProcessVote(CNode* pfrom, ostr << "CGovernanceObject::ProcessVote -- Masternode " << vote.GetMasternodeOutpoint().ToStringShort() << " not found"; exception = CGovernanceException(ostr.str(), GOVERNANCE_EXCEPTION_WARNING); if (cmmapOrphanVotes.Insert(vote.GetMasternodeOutpoint(), vote_time_pair_t(vote, GetAdjustedTime() + GOVERNANCE_ORPHAN_EXPIRATION_TIME))) { - if (pfrom) { - mnodeman.AskForMN(pfrom, vote.GetMasternodeOutpoint(), connman); - } LogPrintf("%s\n", ostr.str()); } else { LogPrint("gobject", "%s\n", ostr.str()); @@ -556,9 +553,11 @@ bool CGovernanceObject::IsValidLocally(std::string& strError, bool& fMissingMast return true; } + auto mnList = deterministicMNManager->GetListAtChainTip(); + std::string strOutpoint = masternodeOutpoint.ToStringShort(); - masternode_info_t infoMn; - if (!mnodeman.GetMasternodeInfo(masternodeOutpoint, infoMn)) { + auto dmn = mnList.GetValidMNByCollateral(masternodeOutpoint); + if (!dmn) { CMasternode::CollateralStatus err = CMasternode::CheckCollateral(masternodeOutpoint, CKeyID()); if (err == CMasternode::COLLATERAL_UTXO_NOT_FOUND) { strError = "Failed to find Masternode UTXO, missing masternode=" + strOutpoint + "\n"; @@ -576,16 +575,9 @@ bool CGovernanceObject::IsValidLocally(std::string& strError, bool& fMissingMast } // Check that we have a valid MN signature - if (deterministicMNManager->IsDIP3Active()) { - if (!CheckSignature(infoMn.blsPubKeyOperator)) { - strError = "Invalid masternode signature for: " + strOutpoint + ", pubkey id = " + infoMn.blsPubKeyOperator.ToString(); - return false; - } - } else { - if (!CheckSignature(infoMn.legacyKeyIDOperator)) { - strError = "Invalid masternode signature for: " + strOutpoint + ", pubkey id = " + infoMn.legacyKeyIDOperator.ToString(); - return false; - } + if (!CheckSignature(dmn->pdmnState->pubKeyOperator)) { + strError = "Invalid masternode signature for: " + strOutpoint + ", pubkey = " + dmn->pdmnState->pubKeyOperator.ToString(); + return false; } return true; @@ -783,7 +775,7 @@ void CGovernanceObject::UpdateSentinelVariables() { // CALCULATE MINIMUM SUPPORT LEVELS REQUIRED - int nMnCount = mnodeman.CountEnabled(); + int nMnCount = (int)deterministicMNManager->GetListAtChainTip().GetValidMNsCount(); if (nMnCount == 0) return; // CALCULATE THE MINUMUM VOTE COUNT REQUIRED FOR FULL SIGNAL diff --git a/src/governance-vote.cpp b/src/governance-vote.cpp index 64ea6479739da..2b80cf83671bb 100644 --- a/src/governance-vote.cpp +++ b/src/governance-vote.cpp @@ -256,20 +256,16 @@ bool CGovernanceVote::IsValid(bool useVotingKey) const return false; } - masternode_info_t infoMn; - if (!mnodeman.GetMasternodeInfo(masternodeOutpoint, infoMn)) { + auto dmn = deterministicMNManager->GetListAtChainTip().GetValidMNByCollateral(masternodeOutpoint); + if (!dmn) { LogPrint("gobject", "CGovernanceVote::IsValid -- Unknown Masternode - %s\n", masternodeOutpoint.ToStringShort()); return false; } if (useVotingKey) { - return CheckSignature(infoMn.keyIDVoting); + return CheckSignature(dmn->pdmnState->keyIDVoting); } else { - if (deterministicMNManager->IsDIP3Active()) { - return CheckSignature(infoMn.blsPubKeyOperator); - } else { - return CheckSignature(infoMn.legacyKeyIDOperator); - } + return CheckSignature(dmn->pdmnState->pubKeyOperator); } } diff --git a/src/governance.cpp b/src/governance.cpp index 61be558a2418d..665f37debb7dc 100644 --- a/src/governance.cpp +++ b/src/governance.cpp @@ -1079,7 +1079,7 @@ int CGovernanceManager::RequestGovernanceObjectVotes(const std::vector& int nMaxObjRequestsPerNode = 1; size_t nProjectedVotes = 2000; if (Params().NetworkIDString() != CBaseChainParams::MAIN) { - nMaxObjRequestsPerNode = std::max(1, int(nProjectedVotes / std::max(1, mnodeman.size()))); + nMaxObjRequestsPerNode = std::max(1, int(nProjectedVotes / std::max(1, (int)deterministicMNManager->GetListAtChainTip().GetValidMNsCount()))); } {