blockchain: use effective median block weight for penalty from v12

It was using the raw block weight median, which was not what was
intended in ArticMine's design
This commit is contained in:
moneromooo-monero 2019-10-09 20:01:48 +00:00
parent bf525793c7
commit ab96181e91
No known key found for this signature in database
GPG key ID: 686F07454D6CEFC3
2 changed files with 13 additions and 3 deletions

View file

@ -1176,9 +1176,18 @@ bool Blockchain::validate_miner_transaction(const block& b, size_t cumulative_bl
}
}
std::vector<uint64_t> last_blocks_weights;
get_last_n_blocks_weights(last_blocks_weights, CRYPTONOTE_REWARD_BLOCKS_WINDOW);
if (!get_block_reward(epee::misc_utils::median(last_blocks_weights), cumulative_block_weight, already_generated_coins, base_reward, version))
uint64_t median_weight;
if (version >= HF_VERSION_EFFECTIVE_SHORT_TERM_MEDIAN_IN_PENALTY)
{
median_weight = m_current_block_cumul_weight_median;
}
else
{
std::vector<uint64_t> last_blocks_weights;
get_last_n_blocks_weights(last_blocks_weights, CRYPTONOTE_REWARD_BLOCKS_WINDOW);
median_weight = epee::misc_utils::median(last_blocks_weights);
}
if (!get_block_reward(median_weight, cumulative_block_weight, already_generated_coins, base_reward, version))
{
MERROR_VER("block weight " << cumulative_block_weight << " is bigger than allowed for this blockchain");
return false;