55#ifndef BITCOIN_GOVERNANCE_GOVERNANCE_H
66#define BITCOIN_GOVERNANCE_GOVERNANCE_H
77
8- #include < governance/classes.h>
9- #include < governance/object.h>
10-
118#include < cachemap.h>
129#include < cachemultimap.h>
1310#include < protocol.h>
14- #include < util/check .h>
11+ #include < sync .h>
1512
16- #include < optional>
13+ #include < limits>
14+ #include < map>
15+ #include < memory>
16+ #include < set>
17+ #include < string>
1718#include < string_view>
19+ #include < vector>
1820
1921class CBloomFilter ;
2022class CBlockIndex ;
23+ class CChain ;
2124class CConnman ;
25+ class ChainstateManager ;
2226template <typename T>
2327class CFlatDB ;
2428class CInv ;
29+ class CNode ;
2530class PeerManager ;
2631
2732class CDeterministicMNList ;
2833class CDeterministicMNManager ;
34+ class CGovernanceException ;
2935class CGovernanceManager ;
3036class CGovernanceObject ;
3137class CGovernanceVote ;
3238class CMasternodeMetaMan ;
3339class CMasternodeSync ;
3440class CNetFulfilledRequestManager ;
3541class CSporkManager ;
42+ class CSuperblock ;
43+ class GovernanceSigner ;
44+
45+ class UniValue ;
46+
47+ using CDeterministicMNListPtr = std::shared_ptr<CDeterministicMNList>;
48+ using CSuperblock_sptr = std::shared_ptr<CSuperblock>;
49+ using vote_time_pair_t = std::pair<CGovernanceVote, int64_t >;
3650
3751static constexpr int RATE_BUFFER_SIZE = 5 ;
3852static constexpr bool DEFAULT_GOVERNANCE_ENABLE{true };
@@ -275,10 +289,6 @@ class CGovernanceManager : public GovernanceStore
275289
276290 [[nodiscard]] MessageProcessingResult ProcessMessage (CNode& peer, CConnman& connman, PeerManager& peerman, std::string_view msg_type, CDataStream& vRecv);
277291
278- private:
279- void ResetVotedFundingTrigger ();
280-
281- public:
282292 void DoMaintenance (CConnman& connman);
283293
284294 const CGovernanceObject* FindConstGovernanceObject (const uint256& nHash) const EXCLUSIVE_LOCKS_REQUIRED(cs);
@@ -296,7 +306,7 @@ class CGovernanceManager : public GovernanceStore
296306
297307 UniValue ToJson () const ;
298308
299- void UpdatedBlockTip (const CBlockIndex* pindex, CConnman& connman, PeerManager& peerman, const CActiveMasternodeManager* const mn_activeman );
309+ void UpdatedBlockTip (const CBlockIndex* pindex, PeerManager& peerman);
300310 int64_t GetLastDiffTime () const { return nTimeLastDiff; }
301311 void UpdateLastDiffTime (int64_t nTimeIn) { nTimeLastDiff = nTimeIn; }
302312
@@ -313,11 +323,7 @@ class CGovernanceManager : public GovernanceStore
313323
314324 bool SerializeVoteForHash (const uint256& nHash, CDataStream& ss) const ;
315325
316- void AddPostponedObject (const CGovernanceObject& govobj)
317- {
318- LOCK (cs);
319- mapPostponedObjects.insert (std::make_pair (govobj.GetHash (), govobj));
320- }
326+ void AddPostponedObject (const CGovernanceObject& govobj);
321327
322328 void MasternodeRateUpdate (const CGovernanceObject& govobj);
323329
@@ -375,21 +381,9 @@ class CGovernanceManager : public GovernanceStore
375381 bool GetBestSuperblock (const CDeterministicMNList& tip_mn_list, CSuperblock_sptr& pSuperblockRet, int nBlockHeight)
376382 EXCLUSIVE_LOCKS_REQUIRED(cs);
377383
378- std::optional<const CSuperblock> CreateSuperblockCandidate (int nHeight) const ;
379- std::optional<const CGovernanceObject> CreateGovernanceTrigger (const std::optional<const CSuperblock>& sb_opt, PeerManager& peerman,
380- const CActiveMasternodeManager& mn_activeman);
381- void VoteGovernanceTriggers (const std::optional<const CGovernanceObject>& trigger_opt, CConnman& connman, PeerManager& peerman,
382- const CActiveMasternodeManager& mn_activeman);
383- bool VoteFundingTrigger (const uint256& nHash, const vote_outcome_enum_t outcome, CConnman& connman, PeerManager& peerman,
384- const CActiveMasternodeManager& mn_activeman);
385- bool HasAlreadyVotedFundingTrigger () const ;
386-
387384 void RequestGovernanceObject (CNode* pfrom, const uint256& nHash, CConnman& connman, bool fUseFilter = false ) const ;
388385
389- void AddInvalidVote (const CGovernanceVote& vote)
390- {
391- cmapInvalidVotes.Insert (vote.GetHash (), vote);
392- }
386+ void AddInvalidVote (const CGovernanceVote& vote);
393387
394388 bool ProcessVote (CNode* pfrom, const CGovernanceVote& vote, CGovernanceException& exception, CConnman& connman);
395389
@@ -408,6 +402,7 @@ class CGovernanceManager : public GovernanceStore
408402
409403 void RemoveInvalidVotes ();
410404
405+ friend class GovernanceSigner ;
411406};
412407
413408bool AreSuperblocksEnabled (const CSporkManager& sporkman);
0 commit comments