Skip to content

Commit cb54afd

Browse files
committed
refactor: drop dependency of CChainState on CMasternodeSync
There's new helper IsValidAndSynced in CGovernanceManager that incapsulate usages of CMasternodeSync in CMNPayment
1 parent e9ec822 commit cb54afd

7 files changed

Lines changed: 22 additions & 18 deletions

File tree

src/evo/chainhelper.cpp

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,13 @@
1717
CChainstateHelper::CChainstateHelper(CEvoDB& evodb, CDeterministicMNManager& dmnman, CGovernanceManager& govman,
1818
llmq::CInstantSendManager& isman, llmq::CQuorumBlockProcessor& qblockman,
1919
llmq::CQuorumSnapshotManager& qsnapman, const ChainstateManager& chainman,
20-
const Consensus::Params& consensus_params, const CMasternodeSync& mn_sync,
21-
const CSporkManager& sporkman, const chainlock::Chainlocks& chainlocks,
22-
const llmq::CQuorumManager& qman) :
20+
const Consensus::Params& consensus_params, const CSporkManager& sporkman,
21+
const chainlock::Chainlocks& chainlocks, const llmq::CQuorumManager& qman) :
2322
isman{isman},
2423
credit_pool_manager{std::make_unique<CCreditPoolManager>(evodb, chainman)},
2524
m_chainlocks{chainlocks},
2625
ehf_manager{std::make_unique<CMNHFManager>(evodb, chainman, qman)},
27-
mn_payments{std::make_unique<CMNPaymentsProcessor>(dmnman, govman, chainman, consensus_params, mn_sync, sporkman)},
26+
mn_payments{std::make_unique<CMNPaymentsProcessor>(dmnman, govman, chainman, consensus_params, sporkman)},
2827
special_tx{std::make_unique<CSpecialTxProcessor>(*credit_pool_manager, dmnman, *ehf_manager, qblockman, qsnapman,
2928
chainman, consensus_params, chainlocks, qman)}
3029
{}

src/evo/chainhelper.h

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ class CDeterministicMNManager;
1515
class CEvoDB;
1616
class CGovernanceManager;
1717
class ChainstateManager;
18-
class CMasternodeSync;
1918
class CMNHFManager;
2019
class CMNPaymentsProcessor;
2120
class CSpecialTxProcessor;
@@ -60,9 +59,8 @@ class CChainstateHelper
6059
explicit CChainstateHelper(CEvoDB& evodb, CDeterministicMNManager& dmnman, CGovernanceManager& govman,
6160
llmq::CInstantSendManager& isman, llmq::CQuorumBlockProcessor& qblockman,
6261
llmq::CQuorumSnapshotManager& qsnapman, const ChainstateManager& chainman,
63-
const Consensus::Params& consensus_params, const CMasternodeSync& mn_sync,
64-
const CSporkManager& sporkman, const chainlock::Chainlocks& chainlocks,
65-
const llmq::CQuorumManager& qman);
62+
const Consensus::Params& consensus_params, const CSporkManager& sporkman,
63+
const chainlock::Chainlocks& chainlocks, const llmq::CQuorumManager& qman);
6664
~CChainstateHelper();
6765

6866
/** Passthrough functions to chainlock::Chainlocks */

src/governance/governance.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,8 @@ bool CGovernanceManager::LoadCache(bool load_cache)
9696
return is_valid;
9797
}
9898

99+
bool CGovernanceManager::IsValidAndSynced() const { return is_valid && m_mn_sync.IsSynced(); }
100+
99101
void CGovernanceManager::RelayObject(const CGovernanceObject& obj)
100102
{
101103
AssertLockNotHeld(cs_relay);

src/governance/governance.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,6 +273,7 @@ class CGovernanceManager : public GovernanceStore, public GovernanceSignerParent
273273

274274
// Basic initialization and querying
275275
bool IsValid() const override { return is_valid; }
276+
bool IsValidAndSynced() const;
276277
bool LoadCache(bool load_cache)
277278
EXCLUSIVE_LOCKS_REQUIRED(!cs_store);
278279
[[nodiscard]] static RPCResult GetJsonHelp(const std::string& key, bool optional);

src/masternode/payments.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ CAmount PlatformShare(const CAmount reward)
160160
int nOffset = nBlockHeight % m_consensus_params.nBudgetPaymentsCycleBlocks;
161161
if (nOffset < m_consensus_params.nBudgetPaymentsWindowBlocks) {
162162
// NOTE: old budget system is disabled since 12.1
163-
if(m_mn_sync.IsSynced()) {
163+
if (m_govman.IsValidAndSynced()) {
164164
// no old budget blocks should be accepted here on mainnet,
165165
// testnet/devnet/regtest should produce regular blocks only
166166
LogPrint(BCLog::GOBJECT, "CMNPaymentsProcessor::%s -- WARNING! Client synced but old budget system is disabled, checking block value against block reward\n", __func__);
@@ -232,7 +232,7 @@ bool CMNPaymentsProcessor::IsBlockValueValid(const CBlock& block, const int nBlo
232232
return false;
233233
}
234234

235-
if (!m_mn_sync.IsSynced() || !m_govman.IsValid()) {
235+
if (!m_govman.IsValidAndSynced()) {
236236
LogPrint(BCLog::MNPAYMENTS, "CMNPaymentsProcessor::%s -- WARNING! Not enough data, checked superblock max bounds only\n", __func__);
237237
// not enough data for full checks but at least we know that the superblock limits were honored.
238238
// We rely on the network to have followed the correct chain in this case
@@ -291,7 +291,7 @@ bool CMNPaymentsProcessor::IsBlockPayeeValid(const CTransaction& txNew, const CB
291291
return false;
292292
}
293293

294-
if (!m_mn_sync.IsSynced() || !m_govman.IsValid()) {
294+
if (!m_govman.IsValidAndSynced()) {
295295
// governance data is either incomplete or non-existent
296296
LogPrint(BCLog::MNPAYMENTS, "CMNPaymentsProcessor::%s -- WARNING! Not enough data, skipping superblock payee checks\n", __func__);
297297
return true; // not an error

src/masternode/payments.h

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ class CBlockIndex;
1515
class CDeterministicMNManager;
1616
class CGovernanceManager;
1717
class ChainstateManager;
18-
class CMasternodeSync;
1918
class CTransaction;
2019
class CSporkManager;
2120
class CTxOut;
@@ -37,7 +36,6 @@ class CMNPaymentsProcessor
3736
CGovernanceManager& m_govman;
3837
const ChainstateManager& m_chainman;
3938
const Consensus::Params& m_consensus_params;
40-
const CMasternodeSync& m_mn_sync;
4139
const CSporkManager& m_sporkman;
4240

4341
private:
@@ -50,10 +48,16 @@ class CMNPaymentsProcessor
5048
[[nodiscard]] bool IsOldBudgetBlockValueValid(const CBlock& block, const int nBlockHeight, const CAmount blockReward, std::string& strErrorRet);
5149

5250
public:
53-
explicit CMNPaymentsProcessor(CDeterministicMNManager& dmnman, CGovernanceManager& govman, const ChainstateManager& chainman,
54-
const Consensus::Params& consensus_params, const CMasternodeSync& mn_sync, const CSporkManager& sporkman) :
55-
m_dmnman{dmnman}, m_govman{govman}, m_chainman{chainman}, m_consensus_params{consensus_params}, m_mn_sync{mn_sync},
56-
m_sporkman{sporkman} {}
51+
explicit CMNPaymentsProcessor(CDeterministicMNManager& dmnman, CGovernanceManager& govman,
52+
const ChainstateManager& chainman, const Consensus::Params& consensus_params,
53+
const CSporkManager& sporkman) :
54+
m_dmnman{dmnman},
55+
m_govman{govman},
56+
m_chainman{chainman},
57+
m_consensus_params{consensus_params},
58+
m_sporkman{sporkman}
59+
{
60+
}
5761

5862
bool IsBlockValueValid(const CBlock& block, const int nBlockHeight, const CAmount blockReward, std::string& strErrorRet, const bool check_superblock);
5963
bool IsBlockPayeeValid(const CTransaction& txNew, const CBlockIndex* pindexPrev, const CAmount blockSubsidy, const CAmount feeReward, const bool check_superblock);

src/node/chainstate.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,7 @@ void DashChainstateSetup(ChainstateManager& chainman,
236236
mempool->ConnectManagers(dmnman.get(), llmq_ctx->isman.get());
237237
chain_helper.reset();
238238
chain_helper = std::make_unique<CChainstateHelper>(evodb, *dmnman, govman, *(llmq_ctx->isman), *(llmq_ctx->quorum_block_processor),
239-
*(llmq_ctx->qsnapman), chainman, consensus_params, mn_sync, sporkman, chainlocks,
239+
*(llmq_ctx->qsnapman), chainman, consensus_params, sporkman, chainlocks,
240240
*(llmq_ctx->qman));
241241
}
242242

0 commit comments

Comments
 (0)