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

@ -165,6 +165,7 @@
#define HF_VERSION_SAME_MIXIN 12 #define HF_VERSION_SAME_MIXIN 12
#define HF_VERSION_REJECT_SIGS_IN_COINBASE 12 #define HF_VERSION_REJECT_SIGS_IN_COINBASE 12
#define HF_VERSION_ENFORCE_MIN_AGE 12 #define HF_VERSION_ENFORCE_MIN_AGE 12
#define HF_VERSION_EFFECTIVE_SHORT_TERM_MEDIAN_IN_PENALTY 12
#define PER_KB_FEE_QUANTIZATION_DECIMALS 8 #define PER_KB_FEE_QUANTIZATION_DECIMALS 8

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; uint64_t median_weight;
get_last_n_blocks_weights(last_blocks_weights, CRYPTONOTE_REWARD_BLOCKS_WINDOW); if (version >= HF_VERSION_EFFECTIVE_SHORT_TERM_MEDIAN_IN_PENALTY)
if (!get_block_reward(epee::misc_utils::median(last_blocks_weights), cumulative_block_weight, already_generated_coins, base_reward, version)) {
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"); MERROR_VER("block weight " << cumulative_block_weight << " is bigger than allowed for this blockchain");
return false; return false;