19
19
#include < primitives/block.h>
20
20
#include < validation.h>
21
21
22
- static bool CheckSpecialTxInner (CDeterministicMNManager& dmnman, const ChainstateManager& chainman,
23
- const llmq::CQuorumManager& qman, const CTransaction& tx, const CBlockIndex* pindexPrev,
24
- const CCoinsViewCache& view, const std::optional<CRangesSet>& indexes, bool check_sigs,
25
- TxValidationState& state) EXCLUSIVE_LOCKS_REQUIRED(::cs_main)
22
+ static bool CheckSpecialTxInner (CDeterministicMNManager& dmnman, llmq::CQuorumSnapshotManager& qsnapman,
23
+ const ChainstateManager& chainman, const llmq::CQuorumManager& qman,
24
+ const CTransaction& tx, const CBlockIndex* pindexPrev, const CCoinsViewCache& view,
25
+ const std::optional<CRangesSet>& indexes, bool check_sigs, TxValidationState& state)
26
+ EXCLUSIVE_LOCKS_REQUIRED(::cs_main)
26
27
{
27
28
AssertLockHeld (cs_main);
28
29
@@ -47,7 +48,7 @@ static bool CheckSpecialTxInner(CDeterministicMNManager& dmnman, const Chainstat
47
48
case TRANSACTION_COINBASE:
48
49
return CheckCbTx (tx, pindexPrev, state);
49
50
case TRANSACTION_QUORUM_COMMITMENT:
50
- return llmq::CheckLLMQCommitment (dmnman, chainman, tx, pindexPrev, state);
51
+ return llmq::CheckLLMQCommitment (dmnman, qsnapman, chainman, tx, pindexPrev, state);
51
52
case TRANSACTION_MNHF_SIGNAL:
52
53
return CheckMNHFTx (chainman, qman, tx, pindexPrev, state);
53
54
case TRANSACTION_ASSET_LOCK:
@@ -66,7 +67,8 @@ static bool CheckSpecialTxInner(CDeterministicMNManager& dmnman, const Chainstat
66
67
bool CSpecialTxProcessor::CheckSpecialTx (const CTransaction& tx, const CBlockIndex* pindexPrev, const CCoinsViewCache& view, bool check_sigs, TxValidationState& state)
67
68
{
68
69
AssertLockHeld (cs_main);
69
- return CheckSpecialTxInner (m_dmnman, m_chainman, m_qman, tx, pindexPrev, view, std::nullopt, check_sigs, state);
70
+ return CheckSpecialTxInner (m_dmnman, m_qsnapman, m_chainman, m_qman, tx, pindexPrev, view, std::nullopt, check_sigs,
71
+ state);
70
72
}
71
73
72
74
[[nodiscard]] bool CSpecialTxProcessor::ProcessSpecialTx (const CTransaction& tx, const CBlockIndex* pindex, TxValidationState& state)
@@ -145,7 +147,8 @@ bool CSpecialTxProcessor::ProcessSpecialTxsInBlock(const CBlock& block, const CB
145
147
TxValidationState tx_state;
146
148
// At this moment CheckSpecialTx() and ProcessSpecialTx() may fail by 2 possible ways:
147
149
// consensus failures and "TX_BAD_SPECIAL"
148
- if (!CheckSpecialTxInner (m_dmnman, m_chainman, m_qman, *ptr_tx, pindex->pprev , view, creditPool.indexes , fCheckCbTxMerkleRoots , tx_state)) {
150
+ if (!CheckSpecialTxInner (m_dmnman, m_qsnapman, m_chainman, m_qman, *ptr_tx, pindex->pprev , view,
151
+ creditPool.indexes , fCheckCbTxMerkleRoots , tx_state)) {
149
152
assert (tx_state.GetResult () == TxValidationResult::TX_CONSENSUS || tx_state.GetResult () == TxValidationResult::TX_BAD_SPECIAL);
150
153
return state.Invalid (BlockValidationResult::BLOCK_CONSENSUS, tx_state.GetRejectReason (),
151
154
strprintf (" Special Transaction check failed (tx hash %s) %s" , ptr_tx->GetHash ().ToString (), tx_state.GetDebugMessage ()));
@@ -170,7 +173,7 @@ bool CSpecialTxProcessor::ProcessSpecialTxsInBlock(const CBlock& block, const CB
170
173
nTimeQuorum += nTime3 - nTime2;
171
174
LogPrint (BCLog::BENCHMARK, " - m_qblockman: %.2fms [%.2fs]\n " , 0.001 * (nTime3 - nTime2), nTimeQuorum * 0.000001 );
172
175
173
- if (!m_dmnman.ProcessBlock (block, pindex, state, view, fJustCheck , updatesRet)) {
176
+ if (!m_dmnman.ProcessBlock (block, pindex, state, view, m_qsnapman, fJustCheck , updatesRet)) {
174
177
// pass the state returned by the function above
175
178
return false ;
176
179
}
@@ -179,7 +182,7 @@ bool CSpecialTxProcessor::ProcessSpecialTxsInBlock(const CBlock& block, const CB
179
182
nTimeDMN += nTime4 - nTime3;
180
183
LogPrint (BCLog::BENCHMARK, " - m_dmnman: %.2fms [%.2fs]\n " , 0.001 * (nTime4 - nTime3), nTimeDMN * 0.000001 );
181
184
182
- if (fCheckCbTxMerkleRoots && !CheckCbTxMerkleRoots (block, pindex, m_dmnman, m_qblockman, state, view)) {
185
+ if (fCheckCbTxMerkleRoots && !CheckCbTxMerkleRoots (block, pindex, m_dmnman, m_qsnapman, m_qblockman, state, view)) {
183
186
// pass the state returned by the function above
184
187
return false ;
185
188
}
0 commit comments