From 5aba9603430f169a67520dd16d88042241b98b5c Mon Sep 17 00:00:00 2001 From: Konstantin Akimov Date: Wed, 12 Jul 2023 21:20:45 +0700 Subject: [PATCH] some debug changes (WIP) --- src/evo/creditpool.cpp | 3 ++- src/evo/deterministicmns.cpp | 3 ++- src/masternode/payments.cpp | 11 +++++++---- src/miner.cpp | 11 +++++++++-- src/test/block_reward_reallocation_tests.cpp | 7 +++++++ 5 files changed, 27 insertions(+), 8 deletions(-) diff --git a/src/evo/creditpool.cpp b/src/evo/creditpool.cpp index c86d61076b9970..6efe7366620fc4 100644 --- a/src/evo/creditpool.cpp +++ b/src/evo/creditpool.cpp @@ -272,8 +272,9 @@ bool CCreditPoolDiff::setTarget(const CTransaction& tx, TxValidationState& state CAmount blockReward = 0; for (const CTxOut& txout : tx.vout) { blockReward += txout.nValue; + LogPrintf("CreditPool: next output in tx: %lld\n", txout.nValue); } - masternodeReward = GetMasternodePayment(cbTx.nHeight, blockReward, params.BRRHeight); + masternodeReward = 0.375 * GetMasternodePayment(cbTx.nHeight, blockReward, params.BRRHeight); LogPrintf("CreditPool: set target to %lld with MN reward %lld\n", *targetLocked, masternodeReward); return true; diff --git a/src/evo/deterministicmns.cpp b/src/evo/deterministicmns.cpp index 8aa7f6704daf1a..05fff8a58c9bc1 100644 --- a/src/evo/deterministicmns.cpp +++ b/src/evo/deterministicmns.cpp @@ -224,7 +224,8 @@ std::vector CDeterministicMNList::GetProjectedMNPayees(int auto remaining_hpmn_payments = 0; CDeterministicMNCPtr hpmn_to_be_skipped = nullptr; - bool isMNRewardReallocated = llmq::utils::IsMNRewardReallocationActive(pIndex); + // TODO GetProjectedMNPayees should work correctly for v20+ too - no quadruple Evo MN + bool isMNRewardReallocated = false ; // llmq::utils::IsMNRewardReallocationActive(pIndex); ForEachMNShared(true, [&](const CDeterministicMNCPtr& dmn) { if (dmn->pdmnState->nLastPaidHeight == nHeight) { // We found the last MN Payee. diff --git a/src/masternode/payments.cpp b/src/masternode/payments.cpp index 081ccc76cc6ac1..ed96c667798f2c 100644 --- a/src/masternode/payments.cpp +++ b/src/masternode/payments.cpp @@ -280,15 +280,18 @@ bool CMasternodePayments::GetBlockTxOuts(int nBlockHeight, CAmount blockReward, CAmount masternodeReward = GetMasternodePayment(nBlockHeight, blockReward, Params().GetConsensus().BRRHeight); - bool fMNRewardReallocated = llmq::utils::IsMNRewardReallocationActive(::ChainActive().Tip()); + const CBlockIndex* pindex = WITH_LOCK(cs_main, return ::ChainActive()[nBlockHeight - 1]); + bool fMNRewardReallocated = llmq::utils::IsMNRewardReallocationActive(pindex); if (fMNRewardReallocated) { - LogPrintf("CMasternodePayments::%s -- MN reward %lld reallocated to credit pool\n", __func__, masternodeReward); + constexpr double platformShare = 0.375; + CAmount platformReward = masternodeReward * platformShare; + assert(MoneyRange(platformReward)); + masternodeReward -= platformReward; + LogPrintf("CMasternodePayments::%s -- MN reward %lld goes to credit pool, %lld to masternode\n", __func__, platformReward, masternodeReward); voutMasternodePaymentsRet.emplace_back(masternodeReward, CScript() << OP_RETURN); - return true; } - const CBlockIndex* pindex = WITH_LOCK(cs_main, return ::ChainActive()[nBlockHeight - 1]); auto dmnPayee = deterministicMNManager->GetListForBlock(pindex).GetMNPayee(pindex); if (!dmnPayee) { return false; diff --git a/src/miner.cpp b/src/miner.cpp index 0d84a2ae836fb3..67f09550a497e2 100644 --- a/src/miner.cpp +++ b/src/miner.cpp @@ -234,14 +234,21 @@ std::unique_ptr BlockAssembler::CreateNewBlock(const CScript& sc assert(creditPoolDiff); bool fMNRewardReallocated = llmq::utils::IsMNRewardReallocationActive(pindexPrev); - if (fMNRewardReallocated) { + if (true || fMNRewardReallocated) { if (!CMasternodePayments::GetMasternodeTxOuts(nHeight, blockReward, pblocktemplate->voutMasternodePayments)) { - LogPrint(BCLog::MNPAYMENTS, "%s -- no masternode to pay (MN list probably empty)\n", __func__); +// LogPrint(BCLog::MNPAYMENTS, "%s -- no masternode to pay (MN list probably empty)\n", __func__); } + LogPrintf("CreateNewBlock() %d realloc: %lld\n", fMNRewardReallocated, blockReward * 0.375); + if (pblocktemplate->voutMasternodePayments.size() > 2) { + /* for (const auto& txout : pblocktemplate->voutMasternodePayments) { LogPrintf("CreateNewBlock() add MN reward %lld to credit pool\n", txout.nValue); creditPoolDiff->addRewardRealloced(txout.nValue); } + */ + LogPrintf("CreateNewBlock() realloc: %lld\n", blockReward * 0.375); + creditPoolDiff->addRewardRealloced(blockReward * 0.375); + } } cbTx.assetLockedAmount = creditPoolDiff->getTotalLocked(); } diff --git a/src/test/block_reward_reallocation_tests.cpp b/src/test/block_reward_reallocation_tests.cpp index 811b9fa5398341..b896f9864535a2 100644 --- a/src/test/block_reward_reallocation_tests.cpp +++ b/src/test/block_reward_reallocation_tests.cpp @@ -24,12 +24,14 @@ #include #include #include +#include #include #include #include #include +#include #include #include @@ -248,6 +250,11 @@ BOOST_FIXTURE_TEST_CASE(block_reward_reallocation, TestChainBRRBeforeActivationS for ([[maybe_unused]] auto i : irange::range(10)) { for ([[maybe_unused]] auto k : irange::range(10)) { CreateAndProcessBlock({}, coinbaseKey); + bool isv19Active = llmq::utils::IsV19Active(::ChainActive().Tip()); + bool isv20Active = llmq::utils::IsV20Active(::ChainActive().Tip()); + bool isMNRewardReallocated = llmq::utils::IsMNRewardReallocationActive(::ChainActive().Tip()); + LogPrintf("height: %lld feature activation: v19: %d v20: %d mnrr: %d\n",::ChainActive().Height(), + isv19Active, isv20Active, isMNRewardReallocated); } LOCK(cs_main); auto masternode_payment = GetMasternodePayment(::ChainActive().Height(), GetBlockSubsidy(::ChainActive().Tip()->nBits, ::ChainActive().Height(), consensus_params), 2500);