Merge pull request #199 from peerplays-network/BLOCKBACK_164
BLOCKBACK-164 Eliminate time gap between two consecutive vesting periods
This commit is contained in:
commit
e63452cb3c
3 changed files with 26 additions and 17 deletions
|
|
@ -833,7 +833,7 @@ void rolling_period_start(database& db)
|
||||||
auto vesting_period = db.get_global_properties().parameters.gpos_period();
|
auto vesting_period = db.get_global_properties().parameters.gpos_period();
|
||||||
|
|
||||||
auto now = db.head_block_time();
|
auto now = db.head_block_time();
|
||||||
if(now.sec_since_epoch() > (period_start + vesting_period))
|
if(now.sec_since_epoch() >= (period_start + vesting_period))
|
||||||
{
|
{
|
||||||
// roll
|
// roll
|
||||||
db.modify(db.get_global_properties(), [now](global_property_object& p) {
|
db.modify(db.get_global_properties(), [now](global_property_object& p) {
|
||||||
|
|
@ -1390,10 +1390,10 @@ void database::perform_chain_maintenance(const signed_block& next_block, const g
|
||||||
distribute_fba_balances(*this);
|
distribute_fba_balances(*this);
|
||||||
create_buyback_orders(*this);
|
create_buyback_orders(*this);
|
||||||
|
|
||||||
rolling_period_start(*this);
|
|
||||||
|
|
||||||
process_dividend_assets(*this);
|
process_dividend_assets(*this);
|
||||||
|
|
||||||
|
rolling_period_start(*this);
|
||||||
|
|
||||||
struct vote_tally_helper {
|
struct vote_tally_helper {
|
||||||
database& d;
|
database& d;
|
||||||
const global_property_object& props;
|
const global_property_object& props;
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
// GPOS HARDFORK Friday, March 15, 2019 11:57:28 PM
|
// GPOS HARDFORK Tuesday, October 22, 2019 05:00:00 AM GMT
|
||||||
#ifndef HARDFORK_GPOS_TIME
|
#ifndef HARDFORK_GPOS_TIME
|
||||||
#define HARDFORK_GPOS_TIME (fc::time_point_sec( 1552694248 ))
|
#define HARDFORK_GPOS_TIME (fc::time_point_sec( 1571720400 ))
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -95,6 +95,15 @@ struct gpos_fixture: database_fixture
|
||||||
BOOST_CHECK_EQUAL(db.get_global_properties().parameters.gpos_subperiod(), vesting_subperiod);
|
BOOST_CHECK_EQUAL(db.get_global_properties().parameters.gpos_subperiod(), vesting_subperiod);
|
||||||
BOOST_CHECK_EQUAL(db.get_global_properties().parameters.gpos_period_start(), period_start.sec_since_epoch());
|
BOOST_CHECK_EQUAL(db.get_global_properties().parameters.gpos_period_start(), period_start.sec_since_epoch());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void update_maintenance_interval(uint32_t new_interval)
|
||||||
|
{
|
||||||
|
db.modify(db.get_global_properties(), [new_interval](global_property_object& p) {
|
||||||
|
p.parameters.maintenance_interval = new_interval;
|
||||||
|
});
|
||||||
|
BOOST_CHECK_EQUAL(db.get_global_properties().parameters.maintenance_interval, new_interval);
|
||||||
|
}
|
||||||
|
|
||||||
void vote_for(const account_id_type account_id, const vote_id_type vote_for, const fc::ecc::private_key& key)
|
void vote_for(const account_id_type account_id, const vote_id_type vote_for, const fc::ecc::private_key& key)
|
||||||
{
|
{
|
||||||
account_update_operation op;
|
account_update_operation op;
|
||||||
|
|
@ -497,26 +506,26 @@ BOOST_AUTO_TEST_CASE( rolling_period_start )
|
||||||
// period start rolls automatically after HF
|
// period start rolls automatically after HF
|
||||||
try {
|
try {
|
||||||
// advance to HF
|
// advance to HF
|
||||||
generate_blocks(HARDFORK_GPOS_TIME);
|
|
||||||
generate_block();
|
|
||||||
|
|
||||||
// update default gpos global parameters to make this thing faster
|
// update default gpos global parameters to make this thing faster
|
||||||
auto now = db.head_block_time();
|
update_gpos_global(518400, 86400, HARDFORK_GPOS_TIME);
|
||||||
update_gpos_global(518400, 86400, now);
|
generate_blocks(HARDFORK_GPOS_TIME);
|
||||||
|
update_maintenance_interval(3600); //update maintenance interval to 1hr to evaluate sub-periods
|
||||||
|
BOOST_CHECK_EQUAL(db.get_global_properties().parameters.maintenance_interval, 3600);
|
||||||
|
|
||||||
|
auto vesting_period_1 = db.get_global_properties().parameters.gpos_period_start();
|
||||||
|
|
||||||
|
auto now = db.head_block_time();
|
||||||
// moving outside period:
|
// moving outside period:
|
||||||
while( db.head_block_time() <= now + fc::days(6) )
|
while( db.head_block_time() <= now + fc::days(6) )
|
||||||
{
|
{
|
||||||
generate_block();
|
generate_block();
|
||||||
}
|
}
|
||||||
generate_blocks(db.get_dynamic_global_properties().next_maintenance_time);
|
|
||||||
|
|
||||||
// rolling is here so getting the new now
|
|
||||||
now = db.head_block_time();
|
|
||||||
generate_block();
|
generate_block();
|
||||||
|
auto vesting_period_2 = db.get_global_properties().parameters.gpos_period_start();
|
||||||
|
|
||||||
// period start rolled
|
//difference between start of two consecutive vesting periods should be 6 days
|
||||||
BOOST_CHECK_EQUAL(db.get_global_properties().parameters.gpos_period_start(), now.sec_since_epoch());
|
BOOST_CHECK_EQUAL(vesting_period_1 + 518400, vesting_period_2);
|
||||||
}
|
}
|
||||||
catch (fc::exception &e) {
|
catch (fc::exception &e) {
|
||||||
edump((e.to_detail_string()));
|
edump((e.to_detail_string()));
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue