@@ -43,8 +43,9 @@ CMutableTransaction MNHFTxPayload::PrepareTx() const
4343 return tx;
4444}
4545
46- CMNHFManager::CMNHFManager (CEvoDB& evoDb) :
47- m_evoDb{evoDb}
46+ CMNHFManager::CMNHFManager (CEvoDB& evoDb, const ChainstateManager& chainman) :
47+ m_evoDb(evoDb),
48+ m_chainman{chainman}
4849{
4950 assert (globalInstance == nullptr );
5051 globalInstance = this ;
@@ -58,7 +59,7 @@ CMNHFManager::~CMNHFManager()
5859
5960CMNHFManager::Signals CMNHFManager::GetSignalsStage (const CBlockIndex* const pindexPrev)
6061{
61- if (!DeploymentActiveAfter (pindexPrev, Params () .GetConsensus (), Consensus::DEPLOYMENT_V20)) return {};
62+ if (!DeploymentActiveAfter (pindexPrev, m_chainman .GetConsensus (), Consensus::DEPLOYMENT_V20)) return {};
6263
6364 Signals signals_tmp = GetForBlock (pindexPrev);
6465
@@ -201,12 +202,11 @@ static bool extractSignals(const ChainstateManager& chainman, const llmq::CQuoru
201202
202203std::optional<CMNHFManager::Signals> CMNHFManager::ProcessBlock (const CBlock& block, const CBlockIndex* const pindex, bool fJustCheck , BlockValidationState& state)
203204{
204- auto chainman = Assert (m_chainman.load (std::memory_order_acquire));
205205 auto qman = Assert (m_qman.load (std::memory_order_acquire));
206206
207207 try {
208208 std::vector<uint8_t > new_signals;
209- if (!extractSignals (*chainman , *qman, block, pindex, new_signals, state)) {
209+ if (!extractSignals (m_chainman , *qman, block, pindex, new_signals, state)) {
210210 // state is set inside extractSignals
211211 return std::nullopt ;
212212 }
@@ -253,12 +253,11 @@ std::optional<CMNHFManager::Signals> CMNHFManager::ProcessBlock(const CBlock& bl
253253
254254bool CMNHFManager::UndoBlock (const CBlock& block, const CBlockIndex* const pindex)
255255{
256- auto chainman = Assert (m_chainman.load (std::memory_order_acquire));
257256 auto qman = Assert (m_qman.load (std::memory_order_acquire));
258257
259258 std::vector<uint8_t > excluded_signals;
260259 BlockValidationState state;
261- if (!extractSignals (*chainman , *qman, block, pindex, excluded_signals, state)) {
260+ if (!extractSignals (m_chainman , *qman, block, pindex, excluded_signals, state)) {
262261 LogPrintf (" CMNHFManager::%s: failed to extract signals\n " , __func__);
263262 return false ;
264263 }
@@ -330,7 +329,7 @@ std::optional<CMNHFManager::Signals> CMNHFManager::GetFromCache(const CBlockInde
330329 }
331330 {
332331 LOCK (cs_cache);
333- if (!DeploymentActiveAt (*pindex, Params () .GetConsensus (), Consensus::DEPLOYMENT_V20)) {
332+ if (!DeploymentActiveAt (*pindex, m_chainman .GetConsensus (), Consensus::DEPLOYMENT_V20)) {
334333 mnhfCache.insert (blockHash, signals);
335334 return signals;
336335 }
@@ -340,7 +339,7 @@ std::optional<CMNHFManager::Signals> CMNHFManager::GetFromCache(const CBlockInde
340339 mnhfCache.insert (blockHash, signals);
341340 return signals;
342341 }
343- if (!DeploymentActiveAt (*pindex, Params () .GetConsensus (), Consensus::DEPLOYMENT_MN_RR)) {
342+ if (!DeploymentActiveAt (*pindex, m_chainman .GetConsensus (), Consensus::DEPLOYMENT_MN_RR)) {
344343 // before mn_rr activation we are safe
345344 if (m_evoDb.Read (std::make_pair (DB_SIGNALS, blockHash), signals)) {
346345 LOCK (cs_cache);
@@ -359,7 +358,7 @@ void CMNHFManager::AddToCache(const Signals& signals, const CBlockIndex* const p
359358 LOCK (cs_cache);
360359 mnhfCache.insert (blockHash, signals);
361360 }
362- if (!DeploymentActiveAt (*pindex, Params () .GetConsensus (), Consensus::DEPLOYMENT_V20)) return ;
361+ if (!DeploymentActiveAt (*pindex, m_chainman .GetConsensus (), Consensus::DEPLOYMENT_V20)) return ;
363362
364363 m_evoDb.Write (std::make_pair (DB_SIGNALS_v2, blockHash), signals);
365364}
@@ -371,31 +370,26 @@ void CMNHFManager::AddSignal(const CBlockIndex* const pindex, int bit)
371370 AddToCache (signals, pindex);
372371}
373372
374- void CMNHFManager::ConnectManagers (gsl::not_null<ChainstateManager*> chainman, gsl::not_null< llmq::CQuorumManager*> qman)
373+ void CMNHFManager::ConnectManagers (gsl::not_null<llmq::CQuorumManager*> qman)
375374{
376375 // Do not allow double-initialization
377- assert (m_chainman.load (std::memory_order_acquire) == nullptr );
378- m_chainman.store (chainman, std::memory_order_release);
379376 assert (m_qman.load (std::memory_order_acquire) == nullptr );
380377 m_qman.store (qman, std::memory_order_release);
381378}
382379
383380void CMNHFManager::DisconnectManagers ()
384381{
385- m_chainman.store (nullptr , std::memory_order_release);
386382 m_qman.store (nullptr , std::memory_order_release);
387383}
388384
389385bool CMNHFManager::ForceSignalDBUpdate ()
390386{
391- auto chainman = Assert (m_chainman.load (std::memory_order_acquire));
392-
393387 // force ehf signals db update
394388 auto dbTx = m_evoDb.BeginTransaction ();
395389
396390 const bool last_legacy = bls::bls_legacy_scheme.load ();
397391 bls::bls_legacy_scheme.store (false );
398- GetSignalsStage (chainman-> ActiveChainstate (). m_chain . Tip ());
392+ GetSignalsStage (m_chainman. ActiveTip ());
399393 bls::bls_legacy_scheme.store (last_legacy);
400394
401395 dbTx->Commit ();
0 commit comments