Compare commits

...

1 commit

Author SHA1 Message Date
sierra19XX
ceba16abc7 GPOS Handle the block missing cases 2020-07-22 07:06:35 +00:00
2 changed files with 9 additions and 5 deletions

View file

@ -800,7 +800,11 @@ uint32_t database::get_gpos_current_subperiod()
// variables needed
const fc::time_point_sec period_end = period_start + vesting_period;
const auto number_of_subperiods = vesting_period / vesting_subperiod;
const auto now = this->head_block_time();
auto now = this->head_block_time();
// This might happen due to missing blocks, we really don't want to cause assert failures
if(now > period_end) {
now = period_end;
}
auto seconds_since_period_start = now.sec_since_epoch() - period_start.sec_since_epoch();
FC_ASSERT(period_start <= now && now <= period_end);
@ -926,8 +930,8 @@ void rolling_period_start(database& db)
if(now.sec_since_epoch() >= (period_start + vesting_period))
{
// roll
db.modify(db.get_global_properties(), [now](global_property_object& p) {
p.parameters.extensions.value.gpos_period_start = now.sec_since_epoch();
db.modify(db.get_global_properties(), [period_start, vesting_period](global_property_object& p) {
p.parameters.extensions.value.gpos_period_start = period_start + vesting_period;
});
}
}

View file

@ -630,6 +630,7 @@ BOOST_AUTO_TEST_CASE( voting )
generate_blocks( HARDFORK_GPOS_TIME );
generate_block();
auto now = HARDFORK_GPOS_TIME;
const auto& core = asset_id_type()(db);
// send some asset to alice and bob
@ -651,7 +652,6 @@ BOOST_AUTO_TEST_CASE( voting )
BOOST_CHECK_EQUAL(db.get_global_properties().parameters.gpos_period_start(), HARDFORK_GPOS_TIME.sec_since_epoch());
// update default gpos for test speed
auto now = db.head_block_time();
// 5184000 = 60x60x24x60 = 60 days
// 864000 = 60x60x24x10 = 10 days
update_gpos_global(5184000, 864000, now);
@ -754,7 +754,7 @@ BOOST_AUTO_TEST_CASE( voting )
advance_x_maint(5);
// a new GPOS period is in but vote from user is before the start. Whoever votes in 6th sub-period, votes will carry
now = db.head_block_time();
BOOST_CHECK_EQUAL(db.get_global_properties().parameters.gpos_period_start(), now.sec_since_epoch());
BOOST_CHECK_EQUAL(db.get_global_properties().parameters.gpos_period_start(), HARDFORK_GPOS_TIME.sec_since_epoch()+db.get_global_properties().parameters.gpos_period());
generate_block();