Dash Core Source Documentation (0.16.0.1)
Find detailed information regarding the Dash Core source code.
•All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
governance.cpp
Go to the documentation of this file.
27 const std::string CGovernanceManager::SERIALIZATION_VERSION_STRING = "CGovernanceManager-Version-15";
85 return cmapVoteToObject.Get(nHash, pGovobj) && pGovobj->GetVoteFile().SerializeVoteToStream(nHash, ss);
88 void CGovernanceManager::ProcessMessage(CNode* pfrom, const std::string& strCommand, CDataStream& vRecv, CConnman& connman)
96 LogPrint(BCLog::GOBJECT, "MNGOVERNANCESYNC -- peer=%d using obsolete version %i\n", pfrom->GetId(), pfrom->nVersion);
98 connman.PushMessage(pfrom, CNetMsgMaker(pfrom->GetSendVersion()).Make(NetMsgType::REJECT, strCommand,
127 LogPrint(BCLog::GOBJECT, "MNGOVERNANCESYNC -- syncing governance objects to our peer %s\n", pfrom->GetLogString());
145 LogPrint(BCLog::GOBJECT, "MNGOVERNANCEOBJECT -- peer=%d using obsolete version %i\n", pfrom->GetId(), pfrom->nVersion);
147 connman.PushMessage(pfrom, CNetMsgMaker(pfrom->GetSendVersion()).Make(NetMsgType::REJECT, strCommand,
170 if (mapObjects.count(nHash) || mapPostponedObjects.count(nHash) || mapErasedGovernanceObjects.count(nHash)) {
178 LogPrint(BCLog::GOBJECT, "MNGOVERNANCEOBJECT -- masternode rate check failed - %s - (current block height %d) \n", strHash, nCachedBlockHeight);
190 LogPrint(BCLog::GOBJECT, "MNGOVERNANCEOBJECT -- masternode rate check failed (after signature verification) - %s - (current block height %d)\n", strHash, nCachedBlockHeight);
198 LogPrintf("MNGOVERNANCEOBJECT -- Not enough fee confirmations for: %s, strError = %s\n", strHash, strError);
200 LogPrint(BCLog::GOBJECT, "MNGOVERNANCEOBJECT -- Governance object is invalid - %s\n", strError);
224 LogPrint(BCLog::GOBJECT, "MNGOVERNANCEOBJECTVOTE -- peer=%d using obsolete version %i\n", pfrom->GetId(), pfrom->nVersion);
226 connman.PushMessage(pfrom, CNetMsgMaker(pfrom->GetSendVersion()).Make(NetMsgType::REJECT, strCommand,
243 LogPrint(BCLog::GOBJECT, "MNGOVERNANCEOBJECTVOTE -- Received unrequested vote object: %s, hash: %s, peer = %d\n",
254 LogPrint(BCLog::GOBJECT, "MNGOVERNANCEOBJECTVOTE -- Rejected vote, error = %s\n", exception.what());
266 void CGovernanceManager::CheckOrphanVotes(CGovernanceObject& govobj, CGovernanceException& exception, CConnman& connman)
291 void CGovernanceManager::AddGovernanceObject(CGovernanceObject& govobj, CConnman& connman, CNode* pfrom)
306 LogPrint(BCLog::GOBJECT, "CGovernanceManager::AddGovernanceObject -- invalid governance object - %s - (nCachedBlockHeight %d) \n", strError, nCachedBlockHeight);
310 LogPrint(BCLog::GOBJECT, "CGovernanceManager::AddGovernanceObject -- Adding object: hash = %s, type = %d\n", nHash.ToString(), govobj.GetObjectType());
317 LogPrint(BCLog::GOBJECT, "CGovernanceManager::AddGovernanceObject -- already have governance object %s\n", nHash.ToString());
323 LogPrint(BCLog::GOBJECT, "CGovernanceManager::AddGovernanceObject -- Before trigger block, GetDataAsPlainString = %s, nObjectType = %d\n",
328 LogPrint(BCLog::GOBJECT, "CGovernanceManager::AddGovernanceObject -- undo adding invalid trigger object: hash = %s\n", nHash.ToString());
334 LogPrintf("CGovernanceManager::AddGovernanceObject -- %s new, received from peer %s\n", strHash, pfrom ? pfrom->GetLogString() : "nullptr");
404 LogPrint(BCLog::GOBJECT, "CGovernanceManager::UpdateCachesAndClean -- Checking object for deletion: %s, deletion time = %d, time since deletion = %d, delete flag = %d, expired flag = %d\n",
405 strHash, pObj->GetDeletionTime(), nTimeSinceDeletion, pObj->IsSetCachedDelete(), pObj->IsSetExpired());
409 LogPrintf("CGovernanceManager::UpdateCachesAndClean -- erase obj %s\n", (*it).first.ToString());
431 int64_t nSuperblockCycleSeconds = Params().GetConsensus().nSuperblockCycle * Params().GetConsensus().nPowTargetSpacing;
432 nTimeExpired = pObj->GetCreationTime() + 2 * nSuperblockCycleSeconds + GOVERNANCE_DELETION_DELAY;
442 LogPrintf("CGovernanceManager::UpdateCachesAndClean -- set for deletion expired obj %s\n", strHash);
472 std::vector<CGovernanceVote> CGovernanceManager::GetCurrentVotes(const uint256& nParentHash, const COutPoint& mnCollateralOutpointFilter) const
495 // Loop thru each MN collateral outpoint and get the votes for the `nParentHash` governance object
506 CGovernanceVote vote = CGovernanceVote(mnpair.first, nParentHash, (vote_signal_enum_t)signal, (vote_outcome_enum_t)outcome);
516 std::vector<const CGovernanceObject*> CGovernanceManager::GetAllNewerThan(int64_t nMoreThanTime) const
540 bool operator()(const std::pair<CGovernanceObject*, int>& left, const std::pair<CGovernanceObject*, int>& right)
543 return (UintToArith256(left.first->GetCollateralHash()) > UintToArith256(right.first->GetCollateralHash()));
569 LogPrint(BCLog::GOBJECT, "CGovernanceManager::ConfirmInventoryRequest inv = %s\n", inv.ToString());
575 LogPrint(BCLog::GOBJECT, "CGovernanceManager::ConfirmInventoryRequest already have governance object, returning false\n");
582 LogPrint(BCLog::GOBJECT, "CGovernanceManager::ConfirmInventoryRequest already have governance vote, returning false\n");
588 LogPrint(BCLog::GOBJECT, "CGovernanceManager::ConfirmInventoryRequest unknown type, returning false\n");
608 LogPrint(BCLog::GOBJECT, "CGovernanceManager::ConfirmInventoryRequest added inv to requested set\n");
611 LogPrint(BCLog::GOBJECT, "CGovernanceManager::ConfirmInventoryRequest reached end, returning true\n");
615 void CGovernanceManager::SyncSingleObjVotes(CNode* pnode, const uint256& nProp, const CBloomFilter& filter, CConnman& connman)
624 LogPrint(BCLog::GOBJECT, "CGovernanceManager::%s -- syncing single object to peer=%d, nProp = %s\n", __func__, pnode->GetId(), nProp.ToString());
631 LogPrint(BCLog::GOBJECT, "CGovernanceManager::%s -- no matching object for hash %s, peer=%d\n", __func__, nProp.ToString(), pnode->GetId());
637 LogPrint(BCLog::GOBJECT, "CGovernanceManager::%s -- attempting to sync govobj: %s, peer=%d\n", __func__, strHash, pnode->GetId());
640 LogPrintf("CGovernanceManager::%s -- not syncing deleted/expired govobj: %s, peer=%d\n", __func__,
650 bool onlyVotingKeyAllowed = govobj.GetObjectType() == GOVERNANCE_OBJECT_PROPOSAL && vote.GetSignal() == VOTE_SIGNAL_FUNDING;
660 connman.PushMessage(pnode, msgMaker.Make(NetMsgType::SYNCSTATUSCOUNT, MASTERNODE_SYNC_GOVOBJ_VOTE, nVoteCount));
661 LogPrintf("CGovernanceManager::%s -- sent %d votes to peer=%d\n", __func__, nVoteCount, pnode->GetId());
672 LogPrint(BCLog::GOBJECT, "CGovernanceManager::%s -- peer already asked me for the list\n", __func__);
682 LogPrint(BCLog::GOBJECT, "CGovernanceManager::%s -- syncing all objects to peer=%d\n", __func__, pnode->GetId());
692 LogPrint(BCLog::GOBJECT, "CGovernanceManager::%s -- attempting to sync govobj: %s, peer=%d\n", __func__, strHash, pnode->GetId());
695 LogPrintf("CGovernanceManager::%s -- not syncing deleted/expired govobj: %s, peer=%d\n", __func__,
701 LogPrint(BCLog::GOBJECT, "CGovernanceManager::%s -- syncing govobj: %s, peer=%d\n", __func__, strHash, pnode->GetId());
707 connman.PushMessage(pnode, msgMaker.Make(NetMsgType::SYNCSTATUSCOUNT, MASTERNODE_SYNC_GOVOBJ, nObjCount));
708 LogPrintf("CGovernanceManager::%s -- sent %d objects to peer=%d\n", __func__, nObjCount, pnode->GetId());
719 it = mapLastMasternodeObject.insert(txout_m_t::value_type(masternodeOutpoint, last_object_rec(true))).first;
733 bool CGovernanceManager::MasternodeRateCheck(const CGovernanceObject& govobj, bool fUpdateFailStatus)
739 bool CGovernanceManager::MasternodeRateCheck(const CGovernanceObject& govobj, bool fUpdateFailStatus, bool fForce, bool& fRateCheckBypassed)
756 int64_t nSuperblockCycleSeconds = Params().GetConsensus().nSuperblockCycle * Params().GetConsensus().nPowTargetSpacing;
761 LogPrint(BCLog::GOBJECT, "CGovernanceManager::MasternodeRateCheck -- object %s rejected due to too old timestamp, masternode = %s, timestamp = %d, current time = %d\n",
767 LogPrint(BCLog::GOBJECT, "CGovernanceManager::MasternodeRateCheck -- object %s rejected due to too new (future) timestamp, masternode = %s, timestamp = %d, current time = %d\n",
793 LogPrint(BCLog::GOBJECT, "CGovernanceManager::MasternodeRateCheck -- Rate too high: object hash = %s, masternode = %s, object timestamp = %d, rate = %f, max rate = %f\n",
803 bool CGovernanceManager::ProcessVote(CNode* pfrom, const CGovernanceVote& vote, CGovernanceException& exception, CConnman& connman)
810 LogPrint(BCLog::GOBJECT, "CGovernanceObject::ProcessVote -- skipping known valid vote %s for object %s\n", nHashVote.ToString(), nHashGovobj.ToString());
832 if (cmmapOrphanVotes.Insert(nHashGovobj, vote_time_pair_t(vote, GetAdjustedTime() + GOVERNANCE_ORPHAN_EXPIRATION_TIME))) {
847 LogPrint(BCLog::GOBJECT, "CGovernanceObject::ProcessVote -- ignoring vote for expired or deleted object, hash = %s\n", nHashGovobj.ToString());
852 bool fOk = govobj.ProcessVote(pfrom, vote, exception, connman) && cmapVoteToObject.Insert(nHashVote, &govobj);
876 LogPrint(BCLog::GOBJECT, "CGovernanceManager::CheckPostponedObjects -- %s invalid\n", nHash.ToString());
892 int64_t nSuperblockCycleSeconds = Params().GetConsensus().nSuperblockCycle * Params().GetConsensus().nPowTargetSpacing;
894 for (hash_s_it it = setAdditionalRelayObjects.begin(); it != setAdditionalRelayObjects.end();) {
901 bool fValid = (nTimestamp <= nNow + MAX_TIME_FUTURE_DEVIATION) && (nTimestamp >= nNow - 2 * nSuperblockCycleSeconds);
906 LogPrintf("CGovernanceManager::CheckPostponedObjects -- additional relay: hash = %s\n", govobj.GetHash().ToString());
915 LogPrintf("CGovernanceManager::CheckPostponedObjects -- additional relay of unknown object: %s\n", it->ToString());
922 void CGovernanceManager::RequestGovernanceObject(CNode* pfrom, const uint256& nHash, CConnman& connman, bool fUseFilter)
928 LogPrint(BCLog::GOBJECT, "CGovernanceManager::RequestGovernanceObject -- nHash %s peer=%d\n", nHash.ToString(), pfrom->GetId());
946 filter = CBloomFilter(Params().GetConsensus().nGovernanceFilterElements, GOVERNANCE_FILTER_FP_RATE, GetRandInt(999999), BLOOM_UPDATE_ALL);
955 LogPrint(BCLog::GOBJECT, "CGovernanceManager::RequestGovernanceObject -- nHash %s nVoteCount %d peer=%d\n", nHash.ToString(), nVoteCount, pfrom->GetId());
967 int CGovernanceManager::RequestGovernanceObjectVotes(const std::vector<CNode*>& vNodesCopy, CConnman& connman)
980 // This should help us to get some idea about an impact this can bring once deployed on mainnet.
983 // number of votes to make sure it's robust enough, so aim at 2000 votes per masternode per request.
988 nMaxObjRequestsPerNode = std::max(1, int(nProjectedVotes / std::max(1, (int)deterministicMNManager->GetListAtChainTip().GetValidMNsCount())));
1018 LogPrint(BCLog::GOBJECT, "CGovernanceManager::RequestGovernanceObjectVotes -- start: vTriggerObjHashes %d vOtherObjHashes %d mapAskedRecently %d\n",
1038 // they stay connected for a short period of time and it's possible that we won't get everything we should.
1067 LogPrint(BCLog::GOBJECT, "CGovernanceManager::RequestGovernanceObjectVotes -- end: vTriggerObjHashes %d vOtherObjHashes %d mapAskedRecently %d\n",
1135 LogPrintf("Masternode indexes and governance triggers prepared %dms\n", GetTimeMillis() - nStart);
1161 return strprintf("Governance Objects: %d (Proposals: %d, Triggers: %d, Other: %d; Erased: %d), Votes: %d",
1211 LogPrint(BCLog::GOBJECT, "CGovernanceManager::UpdatedBlockTip -- nCachedBlockHeight: %d\n", nCachedBlockHeight);
1238 LogPrint(BCLog::GOBJECT, "CGovernanceObject::RequestOrphanObjects -- number objects = %d\n", vecHashesFiltered.size());
1283 if ((p.second.fields & CDeterministicMNStateDiff::Field_keyIDVoting) && p.second.state.keyIDVoting != oldDmn->pdmnState->keyIDVoting) {
1285 } else if ((p.second.fields & CDeterministicMNStateDiff::Field_pubKeyOperator) && p.second.state.pubKeyOperator != oldDmn->pdmnState->pubKeyOperator) {
bool IsCollateralValid(std::string &strError, bool &fMissingConfirmations) const
Check the collateral transaction for the budget proposal/finalized budget.
Definition: governance-object.cpp:505
bool HasVote(const uint256 &nHash) const
Return true if the vote with this hash is currently cached in memory.
Definition: governance-votedb.cpp:34
bool HasFulfilledRequest(const CService &addr, const std::string &strRequest)
Definition: netfulfilledman.cpp:19
static const int MASTERNODE_SYNC_GOVOBJ_VOTE
Definition: masternode-sync.h:15
Definition: protocol.h:411
static const int64_t GOVERNANCE_ORPHAN_EXPIRATION_TIME
Definition: governance-object.h:42
void SyncSingleObjVotes(CNode *pnode, const uint256 &nProp, const CBloomFilter &filter, CConnman &connman)
Definition: governance.cpp:615
Definition: governance-vote.h:27
void MasternodeRateUpdate(const CGovernanceObject &govobj)
Definition: governance.cpp:711
bool MasternodeRateCheck(const CGovernanceObject &govobj, bool fUpdateFailStatus=false)
Definition: governance.cpp:733
std::pair< CGovernanceVote, int64_t > vote_time_pair_t
Definition: governance-object.h:50
bool HaveVoteForHash(const uint256 &nHash) const
Definition: governance.cpp:66
const CGovernanceObjectVoteFile & GetVoteFile() const
Definition: governance-object.h:249
static const int MIN_GOVERNANCE_PEER_PROTO_VERSION
Definition: governance-object.h:26
Definition: governance-vote.h:54
void NotifyGovernanceVote(const CGovernanceVote &vote)
Definition: validationinterface.cpp:234
CDeterministicMNList lastMNListForVotingKeys
Definition: governance.h:254
const COutPoint & GetMasternodeOutpoint() const
Definition: governance-object.h:209
static bool AcceptMessage(const uint256 &nHash, hash_s_t &setHash)
Definition: governance.cpp:1085
BloomFilter is a probabilistic filter which SPV clients provide so that we can filter the transaction...
Definition: bloom.h:46
Definition: governance-validators.h:12
Definition: univalue.h:20
void PushMessage(CNode *pnode, CSerializedNetMsg &&msg)
Definition: net.cpp:3733
static const int GOVERNANCE_OBJECT_PROPOSAL
Definition: governance-object.h:33
void PrepareDeletion(int64_t nDeletionTime_)
Definition: governance-object.h:275
bool HaveObjectForHash(const uint256 &nHash) const
Definition: governance.cpp:47
int GetNodePenalty() const
Definition: governance-exceptions.h:94
Double ended buffer combining vector and stream-like interfaces.
Definition: streams.h:103
std::shared_ptr< const CDeterministicMN > CDeterministicMNCPtr
Definition: deterministicmns.h:249
bool ProcessVote(CNode *pfrom, const CGovernanceVote &vote, CGovernanceException &exception, CConnman &connman)
Definition: governance.cpp:803
CDeterministicMNListDiff BuildDiff(const CDeterministicMNList &to) const
Definition: deterministicmns.cpp:358
std::list< item_t > list_t
Definition: cachemultimap.h:28
bool operator()(const std::pair< CGovernanceObject *, int > &left, const std::pair< CGovernanceObject *, int > &right)
Definition: governance.cpp:540
std::unique_ptr< CDeterministicMNManager > deterministicMNManager
Definition: deterministicmns.cpp:24
static constexpr const CFullyConnectedOnly FullyConnectedOnly
Definition: net.h:219
Requested operation cannot be performed.
Definition: governance-exceptions.h:19
void AddPostponedObject(const CGovernanceObject &govobj)
Definition: governance.h:369
void NotifyGovernanceObject(const CGovernanceObject &object)
Definition: validationinterface.cpp:238
CGovernanceObject * FindGovernanceObject(const uint256 &nHash)
Definition: governance.cpp:463
static const double GOVERNANCE_FILTER_FP_RATE
Definition: governance-object.h:30
static const std::string MAIN
BIP70 chain name strings (main, test or regtest)
Definition: chainparamsbase.h:20
const COutPoint & GetMasternodeOutpoint() const
Definition: governance-vote.h:105
CDeterministicMNCPtr GetMNByInternalId(uint64_t internalId) const
Definition: deterministicmns.cpp:181
std::vector< uint256 > GetAndClearDirtyGovernanceObjectHashes()
Definition: masternode-meta.cpp:109
void Misbehaving(NodeId pnode, int howmuch, const std::string &message)
Increase a node's misbehavior score.
Definition: net_processing.cpp:1024
Definition: univalue.h:22
bool ProcessVote(CNode *pfrom, const CGovernanceVote &vote, CGovernanceException &exception, CConnman &connman)
Definition: governance-object.cpp:100
Definition: governance-object.h:90
void AddGovernanceObject(CGovernanceObject &govobj, CConnman &connman, CNode *pfrom=nullptr)
Definition: governance.cpp:291
void RequestGovernanceObject(CNode *pfrom, const uint256 &nHash, CConnman &connman, bool fUseFilter=false)
Definition: governance.cpp:922
void BumpAssetLastTime(const std::string &strFuncName)
Definition: masternode-sync.cpp:35
void CheckPostponedObjects(CConnman &connman)
Definition: governance.cpp:857
Definition: governance.h:151
static const std::string SERIALIZATION_VERSION_STRING
Definition: governance.h:218
int RequestGovernanceObjectVotes(CNode *pnode, CConnman &connman)
Definition: governance.cpp:959
void RequestOrphanObjects(CConnman &connman)
Definition: governance.cpp:1222
txout_m_t mapLastMasternodeObject
Definition: governance.h:245
Definition: util.h:134
bool IsSetCachedDelete() const
Definition: governance-object.h:224
void ProcessMessage(CNode *pfrom, const std::string &strCommand, CDataStream &vRecv, CConnman &connman)
Definition: governance.cpp:88
static const int GOVERNANCE_OBJECT_TRIGGER
Definition: governance-object.h:34
static const int RELIABLE_PROPAGATION_TIME
Definition: governance.h:221
bool GetAll(const K &key, std::vector< V > &vecValues)
Definition: cachemultimap.h:125
A class which encapsulates information about a governance exception condition.
Definition: governance-exceptions.h:55
std::vector< const CGovernanceObject * > GetAllNewerThan(int64_t nMoreThanTime) const
Definition: governance.cpp:516
bool SerializeObjectForHash(const uint256 &nHash, CDataStream &ss) const
Definition: governance.cpp:53
void CheckOrphanVotes(CGovernanceObject &govobj, CGovernanceException &exception, CConnman &connman)
Definition: governance.cpp:266
bool ConfirmInventoryRequest(const CInv &inv)
This is called by AlreadyHave in net_processing.cpp as part of the inventory retrieval process...
Definition: governance.cpp:562
static std::pair< std::string, UniValue > Pair(const char *cKey, const char *cVal)
Definition: univalue.h:185
An outpoint - a combination of a transaction hash and an index n into its vout.
Definition: transaction.h:26
bool AcceptVoteMessage(const uint256 &nHash)
Called to indicate a requested vote has been received.
Definition: governance.cpp:1079
static const int GOVERNANCE_FILTER_PROTO_VERSION
Definition: governance-object.h:27
std::vector< CGovernanceVote > GetCurrentVotes(const uint256 &nParentHash, const COutPoint &mnCollateralOutpointFilter) const
Definition: governance.cpp:472
static const int MAX_TIME_FUTURE_DEVIATION
Definition: governance.h:220
void UpdatedBlockTip(const CBlockIndex *pindex, CConnman &connman)
Definition: governance.cpp:1199
virtual const char * what() const noexcept override
Definition: governance-exceptions.h:79
int64_t GetCreationTime() const
Definition: governance-object.h:189
bool SerializeVoteForHash(const uint256 &nHash, CDataStream &ss) const
Definition: governance.cpp:80
const char * REJECT
The reject message informs the receiving node that one of its previous messages has been rejected...
Definition: protocol.cpp:37
bool IsValidLocally(std::string &strError, bool fCheckCollateral) const
Definition: governance-object.cpp:430
hash_s_t setAdditionalRelayObjects
Definition: governance.h:237
std::string GetDataAsPlainString() const
Definition: governance-object.cpp:417
void ReleaseNodeVector(const std::vector< CNode *> &vecNodes)
Definition: net.cpp:3850
void UpdateSentinelVariables()
Definition: governance-object.cpp:662
void SyncObjects(CNode *pnode, CConnman &connman) const
Definition: governance.cpp:664
The block chain is a tree shaped structure starting with the genesis block at the root...
Definition: chain.h:170
const CChainParams & Params()
Return the currently selected parameters.
Definition: chainparams.cpp:947
Definition: bloom.h:29
list_t::const_iterator list_cit
Definition: cachemultimap.h:32
Unusual condition requiring no caller action.
Definition: governance-exceptions.h:17
Definition: governance.cpp:539
hash_time_m_t::iterator hash_time_m_it
Definition: governance.h:213
hash_time_m_t mapErasedGovernanceObjects
Definition: governance.h:234
Definition: netmessagemaker.h:12
Definition: governance.h:43
void EraseObjectRequest(CNodeState *nodestate, const CInv &inv) EXCLUSIVE_LOCKS_REQUIRED(cs_main)
Definition: net_processing.cpp:676
void UpdateEmptyFull()
Checks for empty and full filters to avoid wasting cpu.
Definition: bloom.cpp:288
std::vector< CGovernanceVote > GetVotes() const
Definition: governance-votedb.cpp:49
std::vector< CNode * > CopyNodeVector(std::function< bool(const CNode *pnode)> cond)
Definition: net.cpp:3830
const Consensus::Params & GetConsensus() const
Definition: chainparams.h:54
static const int64_t GOVERNANCE_DELETION_DELAY
Definition: governance-object.h:41
Definition: protocol.h:410
bool SerializeVoteToStream(const uint256 &nHash, CDataStream &ss) const
Retrieve a vote cached in memory.
Definition: governance-votedb.cpp:39
size_t GetRequestedObjectCount(NodeId nodeId)
Definition: net_processing.cpp:807
static void ExecuteBestSuperblock(int nBlockHeight)
Definition: governance-classes.cpp:376
void UpdateLocalValidity()
Definition: governance-object.cpp:422
static const unsigned int MAX_INV_SZ
The maximum number of entries in an 'inv' protocol message.
Definition: net.h:62
bool GetCurrentMNVotes(const COutPoint &mnCollateralOutpoint, vote_rec_t &voteRecord) const
Definition: governance-object.cpp:638
void AddFulfilledRequest(const CService &addr, const std::string &strRequest)
Definition: netfulfilledman.cpp:12
int64_t GetDeletionTime() const
Definition: governance-object.h:194
bool AcceptObjectMessage(const uint256 &nHash)
Called to indicate a requested object has been received.
Definition: governance.cpp:1073
bool contains(const std::vector< unsigned char > &vKey) const
Definition: bloom.cpp:89
void DoMaintenance(CConnman &connman)
Definition: governance.cpp:547
void RemoveGovernanceObject(const uint256 &nGovernanceObjectHash)
Definition: masternode-meta.cpp:101