@@ -671,8 +671,11 @@ std::optional<const CSuperblock> CGovernanceManager::CreateSuperblockCandidate(i
671
671
return CSuperblock (nNextSuperblock, std::move (payments));
672
672
}
673
673
674
- std::optional<const CGovernanceObject> CGovernanceManager::CreateGovernanceTrigger (const std::optional<const CSuperblock>& sb_opt, CConnman& connman)
674
+ std::optional<const CGovernanceObject> CGovernanceManager::CreateGovernanceTrigger (const std::optional<const CSuperblock>& sb_opt, CConnman& connman,
675
+ const CActiveMasternodeManager* const mn_activeman)
675
676
{
677
+ if (!fMasternodeMode ) return std::nullopt ;
678
+
676
679
// no sb_opt, no trigger
677
680
if (!sb_opt.has_value ()) return std::nullopt ;
678
681
@@ -696,12 +699,12 @@ std::optional<const CGovernanceObject> CGovernanceManager::CreateGovernanceTrigg
696
699
return std::nullopt ;
697
700
}
698
701
699
- if (mn_payees.front ()->proTxHash != ::activeMasternodeManager ->GetProTxHash ()) {
702
+ if (mn_payees.front ()->proTxHash != Assert (mn_activeman) ->GetProTxHash ()) {
700
703
LogPrint (BCLog::GOBJECT, " CGovernanceManager::%s we are not the payee, skipping\n " , __func__);
701
704
return std::nullopt ;
702
705
}
703
- gov_sb.SetMasternodeOutpoint (::activeMasternodeManager ->GetOutPoint ());
704
- gov_sb.Sign (*::activeMasternodeManager );
706
+ gov_sb.SetMasternodeOutpoint (mn_activeman ->GetOutPoint ());
707
+ gov_sb.Sign (*mn_activeman );
705
708
706
709
if (std::string strError; !gov_sb.IsValidLocally (m_dmnman->GetListAtChainTip (), strError, true )) {
707
710
LogPrint (BCLog::GOBJECT, " CGovernanceManager::%s Created trigger is invalid:%s\n " , __func__, strError);
@@ -718,11 +721,12 @@ std::optional<const CGovernanceObject> CGovernanceManager::CreateGovernanceTrigg
718
721
return std::make_optional<CGovernanceObject>(gov_sb);
719
722
}
720
723
721
- void CGovernanceManager::VoteGovernanceTriggers (const std::optional<const CGovernanceObject>& trigger_opt, CConnman& connman)
724
+ void CGovernanceManager::VoteGovernanceTriggers (const std::optional<const CGovernanceObject>& trigger_opt, CConnman& connman,
725
+ const CActiveMasternodeManager* const mn_activeman)
722
726
{
723
727
// only active masternodes can vote on triggers
724
728
if (!fMasternodeMode ) return ;
725
- if (::activeMasternodeManager ->GetProTxHash ().IsNull ()) return ;
729
+ if (Assert (mn_activeman) ->GetProTxHash ().IsNull ()) return ;
726
730
727
731
LOCK2 (cs_main, cs);
728
732
@@ -731,7 +735,7 @@ void CGovernanceManager::VoteGovernanceTriggers(const std::optional<const CGover
731
735
assert (!votedFundingYesTriggerHash.has_value ());
732
736
// Vote YES-FUNDING for the trigger we like
733
737
const uint256 gov_sb_hash = trigger_opt.value ().GetHash ();
734
- if (!VoteFundingTrigger (gov_sb_hash, VOTE_OUTCOME_YES, connman)) {
738
+ if (!VoteFundingTrigger (gov_sb_hash, VOTE_OUTCOME_YES, connman, mn_activeman )) {
735
739
LogPrint (BCLog::GOBJECT, " CGovernanceManager::%s Voting YES-FUNDING for new trigger:%s failed\n " , __func__, gov_sb_hash.ToString ());
736
740
// this should never happen, bail out
737
741
return ;
@@ -754,7 +758,7 @@ void CGovernanceManager::VoteGovernanceTriggers(const std::optional<const CGover
754
758
LogPrint (BCLog::GOBJECT, " CGovernanceManager::%s Not voting NO-FUNDING for trigger:%s, we voted yes for it already\n " , __func__, trigger_hash.ToString ());
755
759
continue ;
756
760
}
757
- if (!VoteFundingTrigger (trigger_hash, VOTE_OUTCOME_NO, connman)) {
761
+ if (!VoteFundingTrigger (trigger_hash, VOTE_OUTCOME_NO, connman, mn_activeman )) {
758
762
LogPrint (BCLog::GOBJECT, " CGovernanceManager::%s Voting NO-FUNDING for trigger:%s failed\n " , __func__, trigger_hash.ToString ());
759
763
// failing here is ok-ish
760
764
continue ;
@@ -763,11 +767,14 @@ void CGovernanceManager::VoteGovernanceTriggers(const std::optional<const CGover
763
767
}
764
768
}
765
769
766
- bool CGovernanceManager::VoteFundingTrigger (const uint256& nHash, const vote_outcome_enum_t outcome, CConnman& connman)
770
+ bool CGovernanceManager::VoteFundingTrigger (const uint256& nHash, const vote_outcome_enum_t outcome, CConnman& connman,
771
+ const CActiveMasternodeManager* const mn_activeman)
767
772
{
768
- CGovernanceVote vote (::activeMasternodeManager->GetOutPoint (), nHash, VOTE_SIGNAL_FUNDING, outcome);
773
+ if (!fMasternodeMode ) return false ;
774
+
775
+ CGovernanceVote vote (Assert (mn_activeman)->GetOutPoint (), nHash, VOTE_SIGNAL_FUNDING, outcome);
769
776
vote.SetTime (GetAdjustedTime ());
770
- vote.Sign (*::activeMasternodeManager );
777
+ vote.Sign (*mn_activeman );
771
778
772
779
CGovernanceException exception;
773
780
if (!ProcessVoteAndRelay (vote, exception, connman)) {
@@ -1466,7 +1473,7 @@ UniValue CGovernanceManager::ToJson() const
1466
1473
return jsonObj;
1467
1474
}
1468
1475
1469
- void CGovernanceManager::UpdatedBlockTip (const CBlockIndex* pindex, CConnman& connman)
1476
+ void CGovernanceManager::UpdatedBlockTip (const CBlockIndex* pindex, CConnman& connman, const CActiveMasternodeManager* const mn_activeman )
1470
1477
{
1471
1478
// Note this gets called from ActivateBestChain without cs_main being held
1472
1479
// so it should be safe to lock our mutex here without risking a deadlock
@@ -1478,8 +1485,8 @@ void CGovernanceManager::UpdatedBlockTip(const CBlockIndex* pindex, CConnman& co
1478
1485
}
1479
1486
1480
1487
const auto sb_opt = CreateSuperblockCandidate (pindex->nHeight );
1481
- const auto trigger_opt = CreateGovernanceTrigger (sb_opt, connman);
1482
- VoteGovernanceTriggers (trigger_opt, connman);
1488
+ const auto trigger_opt = CreateGovernanceTrigger (sb_opt, connman, mn_activeman );
1489
+ VoteGovernanceTriggers (trigger_opt, connman, mn_activeman );
1483
1490
1484
1491
nCachedBlockHeight = pindex->nHeight ;
1485
1492
LogPrint (BCLog::GOBJECT, " CGovernanceManager::UpdatedBlockTip -- nCachedBlockHeight: %d\n " , nCachedBlockHeight);
0 commit comments