2828#include < map>
2929
3030static void PreComputeQuorumMembers (CDeterministicMNManager& dmnman, llmq::CQuorumSnapshotManager& qsnapman,
31- const CBlockIndex* pindex, bool reset_cache)
31+ const ChainstateManager& chainman, const CBlockIndex* pindex, bool reset_cache)
3232{
33- for (const Consensus::LLMQParams& params : llmq::GetEnabledQuorumParams (pindex->pprev )) {
33+ for (const Consensus::LLMQParams& params : llmq::GetEnabledQuorumParams (chainman, pindex->pprev )) {
3434 if (llmq::IsQuorumRotationEnabled (params, pindex) && (pindex->nHeight % params.dkgInterval == 0 )) {
35- llmq::utils::GetAllQuorumMembers (params.type , dmnman, qsnapman, pindex, reset_cache);
35+ llmq::utils::GetAllQuorumMembers (params.type , dmnman, qsnapman, chainman, pindex, reset_cache);
3636 }
3737 }
3838}
@@ -157,7 +157,7 @@ MessageProcessingResult CQuorumBlockProcessor::ProcessMessage(const CNode& peer,
157157 }
158158 }
159159
160- if (!qc.Verify (m_dmnman, m_qsnapman, pQuorumBaseBlockIndex, /* checkSigs=*/ true )) {
160+ if (!qc.Verify (m_dmnman, m_qsnapman, m_chainstate. m_chainman , pQuorumBaseBlockIndex, /* checkSigs=*/ true )) {
161161 LogPrint (BCLog::LLMQ, " CQuorumBlockProcessor::%s -- commitment for quorum %s:%d is not valid quorumIndex[%d] nversion[%d], peer=%d\n " ,
162162 __func__, qc.quorumHash .ToString (),
163163 ToUnderlying (qc.llmqType ), qc.quorumIndex , qc.nVersion , peer.GetId ());
@@ -180,12 +180,12 @@ bool CQuorumBlockProcessor::ProcessBlock(const CBlock& block, gsl::not_null<cons
180180
181181 const auto blockHash = pindex->GetBlockHash ();
182182
183- if (!DeploymentActiveAt (*pindex, Params () .GetConsensus (), Consensus::DEPLOYMENT_DIP0003)) {
183+ if (!DeploymentActiveAt (*pindex, m_chainstate. m_chainman .GetConsensus (), Consensus::DEPLOYMENT_DIP0003)) {
184184 m_evoDb.Write (DB_BEST_BLOCK_UPGRADE, blockHash);
185185 return true ;
186186 }
187187
188- PreComputeQuorumMembers (m_dmnman, m_qsnapman, pindex, /* reset_cache=*/ false );
188+ PreComputeQuorumMembers (m_dmnman, m_qsnapman, m_chainstate. m_chainman , pindex, /* reset_cache=*/ false );
189189
190190 std::multimap<Consensus::LLMQType, CFinalCommitment> qcs;
191191 if (!GetCommitmentsFromBlock (block, pindex, qcs, state)) {
@@ -196,7 +196,7 @@ bool CQuorumBlockProcessor::ProcessBlock(const CBlock& block, gsl::not_null<cons
196196 // until the first non-null commitment has been mined. After the non-null commitment, no other commitments are
197197 // allowed, including null commitments.
198198 // Note: must only check quorums that were enabled at the _previous_ block height to match mining logic
199- for (const Consensus::LLMQParams& params : GetEnabledQuorumParams (pindex->pprev )) {
199+ for (const Consensus::LLMQParams& params : GetEnabledQuorumParams (m_chainstate. m_chainman , pindex->pprev )) {
200200 // skip these checks when replaying blocks after the crash
201201 if (m_chainstate.m_chain .Tip () == nullptr ) {
202202 break ;
@@ -227,7 +227,7 @@ bool CQuorumBlockProcessor::ProcessBlock(const CBlock& block, gsl::not_null<cons
227227 pindex->nHeight , qc.quorumHash .ToString ());
228228 return false ;
229229 }
230- qc.VerifySignatureAsync (m_dmnman, m_qsnapman, pQuorumBaseBlockIndex, &queue_control);
230+ qc.VerifySignatureAsync (m_dmnman, m_qsnapman, m_chainstate. m_chainman , pQuorumBaseBlockIndex, &queue_control);
231231 }
232232
233233 if (!queue_control.Wait ()) {
@@ -349,7 +349,7 @@ bool CQuorumBlockProcessor::ProcessCommitment(int nHeight, const uint256& blockH
349349 }
350350
351351 // we don't validate signatures here; they already validated on previous step
352- if (!qc.Verify (m_dmnman, m_qsnapman, pQuorumBaseBlockIndex, /* checksigs=*/ false )) {
352+ if (!qc.Verify (m_dmnman, m_qsnapman, m_chainstate. m_chainman , pQuorumBaseBlockIndex, /* checksigs=*/ false )) {
353353 LogPrint (BCLog::LLMQ, /* Continued */
354354 " %s -- height=%d, type=%d, quorumIndex=%d, quorumHash=%s, signers=%s, validMembers=%d, "
355355 " quorumPublicKey=%s qc verify failed.\n " ,
@@ -396,7 +396,7 @@ bool CQuorumBlockProcessor::UndoBlock(const CBlock& block, gsl::not_null<const C
396396{
397397 AssertLockHeld (::cs_main);
398398
399- PreComputeQuorumMembers (m_dmnman, m_qsnapman, pindex, /* reset_cache=*/ true );
399+ PreComputeQuorumMembers (m_dmnman, m_qsnapman, m_chainstate. m_chainman , pindex, /* reset_cache=*/ true );
400400
401401 std::multimap<Consensus::LLMQType, CFinalCommitment> qcs;
402402 if (BlockValidationState dummy; !GetCommitmentsFromBlock (block, pindex, qcs, dummy)) {
@@ -466,7 +466,7 @@ bool CQuorumBlockProcessor::GetCommitmentsFromBlock(const CBlock& block, gsl::no
466466 }
467467 }
468468
469- if (pindex-> nHeight < consensus. DIP0003Height && !ret.empty ()) {
469+ if (! DeploymentActiveAt (* pindex, consensus, Consensus::DEPLOYMENT_DIP0003) && !ret.empty ()) {
470470 return state.Invalid (BlockValidationResult::BLOCK_CONSENSUS, " bad-qc-premature" );
471471 }
472472
@@ -749,7 +749,7 @@ std::optional<std::vector<CFinalCommitment>> CQuorumBlockProcessor::GetMineableC
749749 const auto *const pindex = m_chainstate.m_chain .Height () < nHeight ? m_chainstate.m_chain .Tip () : m_chainstate.m_chain .Tip ()->GetAncestor (nHeight);
750750
751751 bool rotation_enabled = IsQuorumRotationEnabled (llmqParams, pindex);
752- bool basic_bls_enabled{DeploymentActiveAfter (pindex, Params () .GetConsensus (), Consensus::DEPLOYMENT_V19)};
752+ bool basic_bls_enabled{DeploymentActiveAfter (pindex, m_chainstate. m_chainman .GetConsensus (), Consensus::DEPLOYMENT_V19)};
753753 size_t quorums_num = rotation_enabled ? llmqParams.signingActiveQuorumCount : 1 ;
754754
755755 std::stringstream ss;
0 commit comments