@@ -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 ;
@@ -198,12 +199,11 @@ static bool extractSignals(const ChainstateManager& chainman, const llmq::CQuoru
198199
199200std::optional<CMNHFManager::Signals> CMNHFManager::ProcessBlock (const CBlock& block, const CBlockIndex* const pindex, bool fJustCheck , BlockValidationState& state)
200201{
201- auto chainman = Assert (m_chainman.load (std::memory_order_acquire));
202202 auto qman = Assert (m_qman.load (std::memory_order_acquire));
203203
204204 try {
205205 std::vector<uint8_t > new_signals;
206- if (!extractSignals (*chainman , *qman, block, pindex, new_signals, state)) {
206+ if (!extractSignals (m_chainman , *qman, block, pindex, new_signals, state)) {
207207 // state is set inside extractSignals
208208 return std::nullopt ;
209209 }
@@ -250,12 +250,11 @@ std::optional<CMNHFManager::Signals> CMNHFManager::ProcessBlock(const CBlock& bl
250250
251251bool CMNHFManager::UndoBlock (const CBlock& block, const CBlockIndex* const pindex)
252252{
253- auto chainman = Assert (m_chainman.load (std::memory_order_acquire));
254253 auto qman = Assert (m_qman.load (std::memory_order_acquire));
255254
256255 std::vector<uint8_t > excluded_signals;
257256 BlockValidationState state;
258- if (!extractSignals (*chainman , *qman, block, pindex, excluded_signals, state)) {
257+ if (!extractSignals (m_chainman , *qman, block, pindex, excluded_signals, state)) {
259258 LogPrintf (" CMNHFManager::%s: failed to extract signals\n " , __func__);
260259 return false ;
261260 }
@@ -369,31 +368,26 @@ void CMNHFManager::AddSignal(const CBlockIndex* const pindex, int bit)
369368 AddToCache (signals, pindex);
370369}
371370
372- void CMNHFManager::ConnectManagers (gsl::not_null<ChainstateManager*> chainman, gsl::not_null< llmq::CQuorumManager*> qman)
371+ void CMNHFManager::ConnectManagers (gsl::not_null<llmq::CQuorumManager*> qman)
373372{
374373 // Do not allow double-initialization
375- assert (m_chainman.load (std::memory_order_acquire) == nullptr );
376- m_chainman.store (chainman, std::memory_order_release);
377374 assert (m_qman.load (std::memory_order_acquire) == nullptr );
378375 m_qman.store (qman, std::memory_order_release);
379376}
380377
381378void CMNHFManager::DisconnectManagers ()
382379{
383- m_chainman.store (nullptr , std::memory_order_release);
384380 m_qman.store (nullptr , std::memory_order_release);
385381}
386382
387383bool CMNHFManager::ForceSignalDBUpdate ()
388384{
389- auto chainman = Assert (m_chainman.load (std::memory_order_acquire));
390-
391385 // force ehf signals db update
392386 auto dbTx = m_evoDb.BeginTransaction ();
393387
394388 const bool last_legacy = bls::bls_legacy_scheme.load ();
395389 bls::bls_legacy_scheme.store (false );
396- GetSignalsStage (chainman-> ActiveChainstate (). m_chain . Tip ());
390+ GetSignalsStage (m_chainman. ActiveTip ());
397391 bls::bls_legacy_scheme.store (last_legacy);
398392
399393 dbTx->Commit ();
0 commit comments