diff --git a/src/avalanche/test/stakingrewards_tests.cpp b/src/avalanche/test/stakingrewards_tests.cpp --- a/src/avalanche/test/stakingrewards_tests.cpp +++ b/src/avalanche/test/stakingrewards_tests.cpp @@ -22,13 +22,6 @@ gArgs.ForceSetArg("-avalanche", "1"); - bilingual_str error; - g_avalanche = avalanche::Processor::MakeProcessor( - *m_node.args, *m_node.chain, m_node.connman.get(), - *Assert(m_node.chainman), m_node.mempool.get(), *m_node.scheduler, - error); - - BOOST_CHECK(g_avalanche); BOOST_CHECK(isAvalancheEnabled(gArgs)); // Before Cowperthwaite activation @@ -56,11 +49,6 @@ BOOST_CHECK_EQUAL(IsStakingRewardsActivated(params, &block), expectActivation); - // If g_avalanche is null, staking rewards are disabled - g_avalanche.reset(nullptr); - BOOST_CHECK(!g_avalanche); - BOOST_CHECK(!IsStakingRewardsActivated(params, &block)); - gArgs.ClearForcedArg("-avalanche"); } }; diff --git a/src/policy/block/stakingrewards.h b/src/policy/block/stakingrewards.h --- a/src/policy/block/stakingrewards.h +++ b/src/policy/block/stakingrewards.h @@ -15,18 +15,24 @@ struct Params; } +namespace avalanche { +class Processor; +} + class StakingRewardsPolicy : public ParkingPolicy { private: + const avalanche::Processor &m_avalanche; const CBlock &m_block; const Amount &m_blockReward; const Consensus::Params &m_consensusParams; const CBlockIndex &m_blockIndex; public: - StakingRewardsPolicy(const Consensus::Params &consensusParams, + StakingRewardsPolicy(const avalanche::Processor &avalanche, + const Consensus::Params &consensusParams, const CBlockIndex &blockIndex, const CBlock &block, const Amount &blockReward) - : m_block(block), m_blockReward(blockReward), + : m_avalanche(avalanche), m_block(block), m_blockReward(blockReward), m_consensusParams(consensusParams), m_blockIndex(blockIndex) {} bool operator()(BlockPolicyValidationState &state) override; diff --git a/src/policy/block/stakingrewards.cpp b/src/policy/block/stakingrewards.cpp --- a/src/policy/block/stakingrewards.cpp +++ b/src/policy/block/stakingrewards.cpp @@ -32,8 +32,8 @@ std::vector<CScript> winners; if (!IsStakingRewardsActivated(m_consensusParams, m_blockIndex.pprev) || - !g_avalanche->getStakingRewardWinners( - m_blockIndex.pprev->GetBlockHash(), winners)) { + !m_avalanche.getStakingRewardWinners(m_blockIndex.pprev->GetBlockHash(), + winners)) { LogPrint(BCLog::AVALANCHE, "Staking rewards for block %s: not ready yet\n", blockhash.ToString()); @@ -76,8 +76,7 @@ bool IsStakingRewardsActivated(const Consensus::Params ¶ms, const CBlockIndex *pprev) { - return IsCowperthwaiteEnabled(params, pprev) && g_avalanche && - isAvalancheEnabled(gArgs) && + return IsCowperthwaiteEnabled(params, pprev) && isAvalancheEnabled(gArgs) && gArgs.GetBoolArg("-avalanchestakingrewards", params.enableStakingRewards); } diff --git a/src/validation.cpp b/src/validation.cpp --- a/src/validation.cpp +++ b/src/validation.cpp @@ -2651,8 +2651,8 @@ if (g_avalanche) { parkingPolicies.emplace_back( std::make_unique<StakingRewardsPolicy>( - consensusParams, *pindexNew, blockConnecting, - blockReward)); + *g_avalanche, consensusParams, *pindexNew, + blockConnecting, blockReward)); if (m_mempool) { parkingPolicies.emplace_back(