6 #ifndef PIVX_LLMQ_QUORUMS_H
7 #define PIVX_LLMQ_QUORUMS_H
21 class CDKGSessionManager;
41 std::vector<CDeterministicMNCPtr>
members;
88 mutable std::map<Consensus::LLMQType, unordered_lru_cache<uint256, CQuorumCPtr, StaticSaltedHasher>>
mapQuorumsCache;
std::shared_ptr< BLSVerificationVector > BLSVerificationVectorPtr
The block chain is a tree shaped structure starting with the genesis block at the root,...
An object of this class represents a quorum which was mined on-chain (through a quorum commitment) It...
std::thread cachePopulatorThread
void WriteContributions(CEvoDB &evoDb)
CBLSPublicKey GetPubKeyShare(size_t memberIdx) const
const CBlockIndex * pindexQuorum
CQuorum(const Consensus::LLMQParams &_params, CBLSWorker &_blsWorker)
bool ReadContributions(CEvoDB &evoDb)
const Consensus::LLMQParams & params
BLSVerificationVectorPtr quorumVvec
std::vector< CDeterministicMNCPtr > members
int GetMemberIndex(const uint256 &proTxHash) const
bool IsValidMember(const uint256 &proTxHash) const
std::atomic< bool > stopCachePopulatorThread
void Init(const CFinalCommitment &_qc, const CBlockIndex *_pindexQuorum, const uint256 &_minedBlockHash, const std::vector< CDeterministicMNCPtr > &_members)
CBLSSecretKey GetSkShare() const
bool IsMember(const uint256 &proTxHash) const
static void StartCachePopulatorThread(std::shared_ptr< CQuorum > _this)
The quorum manager maintains quorums which were mined on chain.
std::vector< CQuorumCPtr > ScanQuorums(Consensus::LLMQType llmqType, size_t maxCount)
std::map< Consensus::LLMQType, unordered_lru_cache< uint256, CQuorumCPtr, StaticSaltedHasher > > mapQuorumsCache
CDKGSessionManager & dkgManager
void EnsureQuorumConnections(Consensus::LLMQType llmqType, const CBlockIndex *pindexNew)
CQuorumManager(CEvoDB &_evoDb, CBLSWorker &_blsWorker, CDKGSessionManager &_dkgManager)
RecursiveMutex quorumsCacheCs
bool BuildQuorumContributions(const CFinalCommitment &fqc, std::shared_ptr< CQuorum > &quorum) const
std::map< Consensus::LLMQType, unordered_lru_cache< uint256, std::vector< CQuorumCPtr >, StaticSaltedHasher > > scanQuorumsCache
CQuorumCPtr GetQuorum(Consensus::LLMQType llmqType, const uint256 &quorumHash)
bool BuildQuorumFromCommitment(const CFinalCommitment &qc, const CBlockIndex *pindexQuorum, const uint256 &minedBlockHash, std::shared_ptr< CQuorum > &quorum) const
bool HasQuorum(Consensus::LLMQType llmqType, const uint256 &quorumHash)
void UpdatedBlockTip(const CBlockIndex *pindexNew, bool fInitialDownload)
std::unique_ptr< CEvoDB > evoDb
std::shared_ptr< const CQuorum > CQuorumCPtr
std::unique_ptr< CQuorumManager > quorumManager
std::shared_ptr< CQuorum > CQuorumPtr