diff --git a/src/active/context.cpp b/src/active/context.cpp index d025c61b6149..73b0aad40d75 100644 --- a/src/active/context.cpp +++ b/src/active/context.cpp @@ -24,14 +24,13 @@ #include ActiveContext::ActiveContext(CBLSWorker& bls_worker, ChainstateManager& chainman, CConnman& connman, - CDeterministicMNManager& dmnman, CGovernanceManager& govman, - CMasternodeMetaMan& mn_metaman, CMNHFManager& mnhfman, CSporkManager& sporkman, - CTxMemPool& mempool, llmq::CChainLocksHandler& clhandler, llmq::CInstantSendManager& isman, - llmq::CQuorumBlockProcessor& qblockman, llmq::CQuorumManager& qman, - llmq::CQuorumSnapshotManager& qsnapman, llmq::CSigningManager& sigman, - PeerManager& peerman, const CMasternodeSync& mn_sync, const CBLSSecretKey& operator_sk, - const llmq::QvvecSyncModeMap& sync_map, const util::DbWrapperParams& db_params, - bool quorums_recovery, bool quorums_watch) : + CDeterministicMNManager& dmnman, CGovernanceManager& govman, CMasternodeMetaMan& mn_metaman, + CSporkManager& sporkman, CTxMemPool& mempool, llmq::CChainLocksHandler& clhandler, + llmq::CInstantSendManager& isman, llmq::CQuorumBlockProcessor& qblockman, + llmq::CQuorumManager& qman, llmq::CQuorumSnapshotManager& qsnapman, + llmq::CSigningManager& sigman, PeerManager& peerman, const CMasternodeSync& mn_sync, + const CBLSSecretKey& operator_sk, const llmq::QvvecSyncModeMap& sync_map, + const util::DbWrapperParams& db_params, bool quorums_recovery, bool quorums_watch) : m_clhandler{clhandler}, m_isman{isman}, m_qman{qman}, @@ -41,7 +40,7 @@ ActiveContext::ActiveContext(CBLSWorker& bls_worker, ChainstateManager& chainman shareman{std::make_unique(connman, chainman.ActiveChainstate(), sigman, peerman, *nodeman, qman, sporkman)}, gov_signer{std::make_unique(connman, dmnman, govman, *nodeman, chainman, mn_sync)}, - ehf_sighandler{std::make_unique(chainman, mnhfman, sigman, *shareman, qman)}, + ehf_sighandler{std::make_unique(chainman, sigman, *shareman, qman)}, qman_handler{std::make_unique(bls_worker, connman, dmnman, qman, qsnapman, *nodeman, chainman, mn_sync, sporkman, sync_map, quorums_recovery, quorums_watch)}, cl_signer{std::make_unique(chainman.ActiveChainstate(), clhandler, sigman, *shareman, diff --git a/src/active/context.h b/src/active/context.h index c147ed7ea6ff..700f6f700db6 100644 --- a/src/active/context.h +++ b/src/active/context.h @@ -63,13 +63,12 @@ struct ActiveContext final : public CValidationInterface { ActiveContext& operator=(const ActiveContext&) = delete; explicit ActiveContext(CBLSWorker& bls_worker, ChainstateManager& chainman, CConnman& connman, CDeterministicMNManager& dmnman, CGovernanceManager& govman, CMasternodeMetaMan& mn_metaman, - CMNHFManager& mnhfman, CSporkManager& sporkman, CTxMemPool& mempool, - llmq::CChainLocksHandler& clhandler, llmq::CInstantSendManager& isman, - llmq::CQuorumBlockProcessor& qblockman, llmq::CQuorumManager& qman, - llmq::CQuorumSnapshotManager& qsnapman, llmq::CSigningManager& sigman, PeerManager& peerman, - const CMasternodeSync& mn_sync, const CBLSSecretKey& operator_sk, - const llmq::QvvecSyncModeMap& sync_map, const util::DbWrapperParams& db_params, - bool quorums_recovery, bool quorums_watch); + CSporkManager& sporkman, CTxMemPool& mempool, llmq::CChainLocksHandler& clhandler, + llmq::CInstantSendManager& isman, llmq::CQuorumBlockProcessor& qblockman, + llmq::CQuorumManager& qman, llmq::CQuorumSnapshotManager& qsnapman, + llmq::CSigningManager& sigman, PeerManager& peerman, const CMasternodeSync& mn_sync, + const CBLSSecretKey& operator_sk, const llmq::QvvecSyncModeMap& sync_map, + const util::DbWrapperParams& db_params, bool quorums_recovery, bool quorums_watch); ~ActiveContext(); void Interrupt(); diff --git a/src/evo/chainhelper.cpp b/src/evo/chainhelper.cpp index 9c11fc4e6a3c..4a2ac546e8b7 100644 --- a/src/evo/chainhelper.cpp +++ b/src/evo/chainhelper.cpp @@ -7,22 +7,26 @@ #include #include +#include +#include #include #include #include #include -CChainstateHelper::CChainstateHelper(CCreditPoolManager& cpoolman, CDeterministicMNManager& dmnman, - CMNHFManager& mnhfman, CGovernanceManager& govman, llmq::CInstantSendManager& isman, - llmq::CQuorumBlockProcessor& qblockman, llmq::CQuorumSnapshotManager& qsnapman, - const ChainstateManager& chainman, const Consensus::Params& consensus_params, - const CMasternodeSync& mn_sync, const CSporkManager& sporkman, - const llmq::CChainLocksHandler& clhandler, const llmq::CQuorumManager& qman) : +CChainstateHelper::CChainstateHelper(CEvoDB& evodb, CDeterministicMNManager& dmnman, CGovernanceManager& govman, + llmq::CInstantSendManager& isman, llmq::CQuorumBlockProcessor& qblockman, + llmq::CQuorumSnapshotManager& qsnapman, const ChainstateManager& chainman, + const Consensus::Params& consensus_params, const CMasternodeSync& mn_sync, + const CSporkManager& sporkman, const llmq::CChainLocksHandler& clhandler, + const llmq::CQuorumManager& qman) : isman{isman}, clhandler{clhandler}, + ehf_manager{std::make_unique(evodb, chainman, qman)}, + credit_pool_manager{std::make_unique(evodb, chainman)}, mn_payments{std::make_unique(dmnman, govman, chainman, consensus_params, mn_sync, sporkman)}, - special_tx{std::make_unique(cpoolman, dmnman, mnhfman, qblockman, qsnapman, chainman, - consensus_params, clhandler, qman)} + special_tx{std::make_unique(*credit_pool_manager, dmnman, *ehf_manager, qblockman, qsnapman, + chainman, consensus_params, clhandler, qman)} {} CChainstateHelper::~CChainstateHelper() = default; @@ -61,3 +65,7 @@ bool CChainstateHelper::RemoveConflictingISLockByTx(const CTransaction& tx) bool CChainstateHelper::ShouldInstantSendRejectConflicts() const { return isman.RejectConflictingBlocks(); } +std::unordered_map CChainstateHelper::GetSignalsStage(const CBlockIndex* const pindexPrev) +{ + return ehf_manager->GetSignalsStage(pindexPrev); +} diff --git a/src/evo/chainhelper.h b/src/evo/chainhelper.h index 66bee994652f..45dfcedc96d2 100644 --- a/src/evo/chainhelper.h +++ b/src/evo/chainhelper.h @@ -7,9 +7,12 @@ #include #include +#include +class CBlockIndex; class CCreditPoolManager; class CDeterministicMNManager; +class CEvoDB; class ChainstateManager; class CMNHFManager; class CMNPaymentsProcessor; @@ -39,12 +42,12 @@ class CChainstateHelper CChainstateHelper() = delete; CChainstateHelper(const CChainstateHelper&) = delete; CChainstateHelper& operator=(const CChainstateHelper&) = delete; - explicit CChainstateHelper(CCreditPoolManager& cpoolman, CDeterministicMNManager& dmnman, CMNHFManager& mnhfman, - CGovernanceManager& govman, llmq::CInstantSendManager& isman, - llmq::CQuorumBlockProcessor& qblockman, llmq::CQuorumSnapshotManager& qsnapman, - const ChainstateManager& chainman, const Consensus::Params& consensus_params, - const CMasternodeSync& mn_sync, const CSporkManager& sporkman, - const llmq::CChainLocksHandler& clhandler, const llmq::CQuorumManager& qman); + explicit CChainstateHelper(CEvoDB& evodb, CDeterministicMNManager& dmnman, CGovernanceManager& govman, + llmq::CInstantSendManager& isman, llmq::CQuorumBlockProcessor& qblockman, + llmq::CQuorumSnapshotManager& qsnapman, const ChainstateManager& chainman, + const Consensus::Params& consensus_params, const CMasternodeSync& mn_sync, + const CSporkManager& sporkman, const llmq::CChainLocksHandler& clhandler, + const llmq::CQuorumManager& qman); ~CChainstateHelper(); /** Passthrough functions to CChainLocksHandler */ @@ -58,7 +61,11 @@ class CChainstateHelper bool RemoveConflictingISLockByTx(const CTransaction& tx); bool ShouldInstantSendRejectConflicts() const; + std::unordered_map GetSignalsStage(const CBlockIndex* const pindexPrev); + public: + const std::unique_ptr ehf_manager; + const std::unique_ptr credit_pool_manager; const std::unique_ptr mn_payments; const std::unique_ptr special_tx; }; diff --git a/src/evo/deterministicmns.cpp b/src/evo/deterministicmns.cpp index aa97f67de072..ac89530dc6ee 100644 --- a/src/evo/deterministicmns.cpp +++ b/src/evo/deterministicmns.cpp @@ -11,7 +11,6 @@ #include #include #include -#include #include #include #include @@ -24,7 +23,6 @@ #include #include