mirror of
https://github.com/monero-project/monero.git
synced 2026-01-02 16:00:10 -08:00
blockchain: fix bitflipping test with quantized block rewards
Block reward may now be less than the full amount allowed. This was breaking the bitflipping test. We now keep track of whether a block which was accepted by the core has a lower than allowed block reward, and allow this in the test.
This commit is contained in:
@@ -941,13 +941,14 @@ bool Blockchain::prevalidate_miner_transaction(const block& b, uint64_t height)
|
||||
}
|
||||
//------------------------------------------------------------------
|
||||
// This function validates the miner transaction reward
|
||||
bool Blockchain::validate_miner_transaction(const block& b, size_t cumulative_block_size, uint64_t fee, uint64_t& base_reward, uint64_t already_generated_coins)
|
||||
bool Blockchain::validate_miner_transaction(const block& b, size_t cumulative_block_size, uint64_t fee, uint64_t& base_reward, uint64_t already_generated_coins, bool &partial_block_reward)
|
||||
{
|
||||
LOG_PRINT_L3("Blockchain::" << __func__);
|
||||
//validate reward
|
||||
uint64_t money_in_use = 0;
|
||||
BOOST_FOREACH(auto& o, b.miner_tx.vout)
|
||||
money_in_use += o.amount;
|
||||
partial_block_reward = false;
|
||||
|
||||
std::vector<size_t> last_blocks_sizes;
|
||||
get_last_n_blocks_sizes(last_blocks_sizes, CRYPTONOTE_REWARD_BLOCKS_WINDOW);
|
||||
@@ -977,6 +978,8 @@ bool Blockchain::validate_miner_transaction(const block& b, size_t cumulative_bl
|
||||
// emission. This modifies the emission curve very slightly.
|
||||
CHECK_AND_ASSERT_MES(money_in_use - fee <= base_reward, false, "base reward calculation bug");
|
||||
base_reward = money_in_use - fee;
|
||||
if(base_reward + fee != money_in_use)
|
||||
partial_block_reward = true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user