diff --git a/src/active/context.cpp b/src/active/context.cpp index a844505be505..c5fd7c9f2a7c 100644 --- a/src/active/context.cpp +++ b/src/active/context.cpp @@ -25,13 +25,13 @@ ActiveContext::ActiveContext(CBLSWorker& bls_worker, ChainstateManager& chainman, CConnman& connman, CDeterministicMNManager& dmnman, CGovernanceManager& govman, CMasternodeMetaMan& mn_metaman, - CMNHFManager& mnhfman, CSporkManager& sporkman, const chainlock::Chainlocks& chainlocks, - CTxMemPool& mempool, chainlock::ChainlockHandler& 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, const chainlock::Chainlocks& chainlocks, CTxMemPool& mempool, + chainlock::ChainlockHandler& 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_isman{isman}, m_qman{qman}, nodeman{std::make_unique(connman, dmnman, operator_sk)}, @@ -40,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(), chainlocks, clhandler, isman, diff --git a/src/active/context.h b/src/active/context.h index 445a6d829f8a..378009e80c0e 100644 --- a/src/active/context.h +++ b/src/active/context.h @@ -63,13 +63,13 @@ 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, const chainlock::Chainlocks& chainlocks, - CTxMemPool& mempool, chainlock::ChainlockHandler& 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, const chainlock::Chainlocks& chainlocks, CTxMemPool& mempool, + chainlock::ChainlockHandler& 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 d978e2492254..511d08549587 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 chainlock::Chainlocks& chainlocks, 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 chainlock::Chainlocks& chainlocks, + const llmq::CQuorumManager& qman) : isman{isman}, m_chainlocks{chainlocks}, + 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, chainlocks, qman)} + special_tx{std::make_unique(*credit_pool_manager, dmnman, *ehf_manager, qblockman, qsnapman, + chainman, consensus_params, chainlocks, 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 ab865f272a6a..5b5478d077a7 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; @@ -43,12 +46,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 chainlock::Chainlocks& chainlocks, 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 chainlock::Chainlocks& chainlocks, + const llmq::CQuorumManager& qman); ~CChainstateHelper(); /** Passthrough functions to chainlock::Chainlocks*/ @@ -62,7 +65,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