From 58c040804028098ad0f19fcc8e3fe4c00cb596a5 Mon Sep 17 00:00:00 2001 From: xuyp1991 Date: Fri, 5 Jul 2019 19:26:41 +0800 Subject: [PATCH] reward block lack mortgage modify last_block_amount --- contracts/force.system/producer.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/contracts/force.system/producer.cpp b/contracts/force.system/producer.cpp index 140fd4e62..19d0d7da6 100644 --- a/contracts/force.system/producer.cpp +++ b/contracts/force.system/producer.cpp @@ -308,16 +308,17 @@ namespace eosiosystem { if(bp_mortgage < asset(MORTGAGE * reward_pre_block)) { print(sch->producers[i].bpname," Insufficient mortgage, please replenish in time \n"); - continue; } + auto drain_block_num = CYCLE_PREBP_BLOCK + bp->last_block_amount - sch->producers[i].amount; if (force_change) { drain_block_num = 0; } bps_tbl.modify(bp, 0, [&]( bp_info& b ) { - b.block_age += (sch->producers[i].amount >= b.last_block_amount ? sch->producers[i].amount - b.last_block_amount : sch->producers[i].amount) * b.block_weight; - total_block_out_age += (sch->producers[i].amount >= b.last_block_amount ? sch->producers[i].amount - b.last_block_amount : sch->producers[i].amount) * b.block_weight; - + if(asset(MORTGAGE * reward_pre_block) < bp_mortgage) { + b.block_age += (sch->producers[i].amount >= b.last_block_amount ? sch->producers[i].amount - b.last_block_amount : sch->producers[i].amount) * b.block_weight; + total_block_out_age += (sch->producers[i].amount >= b.last_block_amount ? sch->producers[i].amount - b.last_block_amount : sch->producers[i].amount) * b.block_weight; + } if(drain_block_num != 0) { b.block_weight = BLOCK_OUT_WEIGHT; b.mortgage -= asset(reward_pre_block * 2 * drain_block_num,CORE_SYMBOL);