|
23 | 23 | #include <util/check.h> |
24 | 24 | #include <validation.h> |
25 | 25 |
|
26 | | -ActiveContext::ActiveContext(CConnman& connman, CDeterministicMNManager& dmnman, CGovernanceManager& govman, |
27 | | - ChainstateManager& chainman, CMasternodeMetaMan& mn_metaman, CMNHFManager& mnhfman, |
28 | | - CSporkManager& sporkman, CTxMemPool& mempool, LLMQContext& llmq_ctx, PeerManager& peerman, |
29 | | - const CMasternodeSync& mn_sync, const CBLSSecretKey& operator_sk, |
| 26 | +ActiveContext::ActiveContext(CBLSWorker& bls_worker, ChainstateManager& chainman, CConnman& connman, |
| 27 | + CDeterministicMNManager& dmnman, CGovernanceManager& govman, |
| 28 | + CMasternodeMetaMan& mn_metaman, CMNHFManager& mnhfman, CSporkManager& sporkman, |
| 29 | + CTxMemPool& mempool, llmq::CChainLocksHandler& clhandler, llmq::CInstantSendManager& isman, |
| 30 | + llmq::CQuorumBlockProcessor& qblockman, llmq::CQuorumManager& qman, |
| 31 | + llmq::CQuorumSnapshotManager& qsnapman, llmq::CSigningManager& sigman, |
| 32 | + PeerManager& peerman, const CMasternodeSync& mn_sync, const CBLSSecretKey& operator_sk, |
30 | 33 | const llmq::QvvecSyncModeMap& sync_map, const util::DbWrapperParams& db_params, |
31 | 34 | bool quorums_recovery, bool quorums_watch) : |
32 | | - m_llmq_ctx{llmq_ctx}, |
| 35 | + m_clhandler{clhandler}, |
| 36 | + m_isman{isman}, |
| 37 | + m_qman{qman}, |
33 | 38 | nodeman{std::make_unique<CActiveMasternodeManager>(connman, dmnman, operator_sk)}, |
34 | | - gov_signer{std::make_unique<GovernanceSigner>(connman, dmnman, govman, *nodeman, chainman, mn_sync)}, |
35 | 39 | dkgdbgman{std::make_unique<llmq::CDKGDebugManager>()}, |
36 | | - qdkgsman{std::make_unique<llmq::CDKGSessionManager>(dmnman, *llmq_ctx.qsnapman, chainman, sporkman, db_params, |
37 | | - quorums_watch)}, |
38 | | - shareman{std::make_unique<llmq::CSigSharesManager>(connman, chainman.ActiveChainstate(), *llmq_ctx.sigman, peerman, |
39 | | - *nodeman, *llmq_ctx.qman, sporkman)}, |
40 | | - ehf_sighandler{ |
41 | | - std::make_unique<llmq::CEHFSignalsHandler>(chainman, mnhfman, *llmq_ctx.sigman, *shareman, *llmq_ctx.qman)}, |
42 | | - qman_handler{std::make_unique<llmq::QuorumParticipant>(*llmq_ctx.bls_worker, connman, dmnman, *llmq_ctx.qman, |
43 | | - *llmq_ctx.qsnapman, *nodeman, chainman, mn_sync, sporkman, |
44 | | - sync_map, quorums_recovery, quorums_watch)}, |
45 | | - cl_signer{std::make_unique<chainlock::ChainLockSigner>(chainman.ActiveChainstate(), *llmq_ctx.clhandler, |
46 | | - *llmq_ctx.sigman, *shareman, sporkman, mn_sync)}, |
47 | | - is_signer{std::make_unique<instantsend::InstantSendSigner>(chainman.ActiveChainstate(), *llmq_ctx.clhandler, |
48 | | - *llmq_ctx.isman, *llmq_ctx.sigman, *shareman, |
49 | | - *llmq_ctx.qman, sporkman, mempool, mn_sync)} |
| 40 | + qdkgsman{std::make_unique<llmq::CDKGSessionManager>(dmnman, qsnapman, chainman, sporkman, db_params, quorums_watch)}, |
| 41 | + shareman{std::make_unique<llmq::CSigSharesManager>(connman, chainman.ActiveChainstate(), sigman, peerman, *nodeman, |
| 42 | + qman, sporkman)}, |
| 43 | + gov_signer{std::make_unique<GovernanceSigner>(connman, dmnman, govman, *nodeman, chainman, mn_sync)}, |
| 44 | + ehf_sighandler{std::make_unique<llmq::CEHFSignalsHandler>(chainman, mnhfman, sigman, *shareman, qman)}, |
| 45 | + qman_handler{std::make_unique<llmq::QuorumParticipant>(bls_worker, connman, dmnman, qman, qsnapman, *nodeman, chainman, |
| 46 | + mn_sync, sporkman, sync_map, quorums_recovery, quorums_watch)}, |
| 47 | + cl_signer{std::make_unique<chainlock::ChainLockSigner>(chainman.ActiveChainstate(), clhandler, sigman, *shareman, |
| 48 | + sporkman, mn_sync)}, |
| 49 | + is_signer{std::make_unique<instantsend::InstantSendSigner>(chainman.ActiveChainstate(), clhandler, isman, sigman, |
| 50 | + *shareman, qman, sporkman, mempool, mn_sync)} |
50 | 51 | { |
51 | 52 | qdkgsman->InitializeHandlers([&](const Consensus::LLMQParams& llmq_params, |
52 | 53 | int quorum_idx) -> std::unique_ptr<llmq::ActiveDKGSessionHandler> { |
53 | | - return std::make_unique<llmq::ActiveDKGSessionHandler>(*llmq_ctx.bls_worker, dmnman, mn_metaman, *dkgdbgman, |
54 | | - *qdkgsman, *llmq_ctx.quorum_block_processor, |
55 | | - *llmq_ctx.qsnapman, *nodeman, chainman, sporkman, |
| 54 | + return std::make_unique<llmq::ActiveDKGSessionHandler>(bls_worker, dmnman, mn_metaman, *dkgdbgman, *qdkgsman, |
| 55 | + qblockman, qsnapman, *nodeman, chainman, sporkman, |
56 | 56 | llmq_params, quorums_watch, quorum_idx); |
57 | 57 | }); |
58 | | - m_llmq_ctx.clhandler->ConnectSigner(cl_signer.get()); |
59 | | - m_llmq_ctx.isman->ConnectSigner(is_signer.get()); |
60 | | - m_llmq_ctx.qman->ConnectManagers(qman_handler.get(), qdkgsman.get()); |
| 58 | + m_clhandler.ConnectSigner(cl_signer.get()); |
| 59 | + m_isman.ConnectSigner(is_signer.get()); |
| 60 | + m_qman.ConnectManagers(qman_handler.get(), qdkgsman.get()); |
61 | 61 | } |
62 | 62 |
|
63 | 63 | ActiveContext::~ActiveContext() |
64 | 64 | { |
65 | | - m_llmq_ctx.qman->DisconnectManagers(); |
66 | | - m_llmq_ctx.isman->DisconnectSigner(); |
67 | | - m_llmq_ctx.clhandler->DisconnectSigner(); |
| 65 | + m_qman.DisconnectManagers(); |
| 66 | + m_isman.DisconnectSigner(); |
| 67 | + m_clhandler.DisconnectSigner(); |
68 | 68 | } |
69 | 69 |
|
70 | 70 | void ActiveContext::Interrupt() |
@@ -103,3 +103,20 @@ void ActiveContext::SetCJServer(gsl::not_null<CCoinJoinServer*> cj_server) |
103 | 103 | assert(m_cj_server == nullptr); |
104 | 104 | m_cj_server = cj_server; |
105 | 105 | } |
| 106 | + |
| 107 | +void ActiveContext::UpdatedBlockTip(const CBlockIndex* pindexNew, const CBlockIndex* pindexFork, bool fInitialDownload) |
| 108 | +{ |
| 109 | + if (fInitialDownload || pindexNew == pindexFork) // In IBD or blocks were disconnected without any new ones |
| 110 | + return; |
| 111 | + |
| 112 | + nodeman->UpdatedBlockTip(pindexNew, pindexFork, fInitialDownload); |
| 113 | + ehf_sighandler->UpdatedBlockTip(pindexNew); |
| 114 | + gov_signer->UpdatedBlockTip(pindexNew); |
| 115 | + qdkgsman->UpdatedBlockTip(pindexNew, fInitialDownload); |
| 116 | + qman_handler->UpdatedBlockTip(pindexNew, fInitialDownload); |
| 117 | +} |
| 118 | + |
| 119 | +void ActiveContext::NotifyRecoveredSig(const std::shared_ptr<const llmq::CRecoveredSig>& sig, bool proactive_relay) |
| 120 | +{ |
| 121 | + shareman->NotifyRecoveredSig(sig, proactive_relay); |
| 122 | +} |
0 commit comments