Compare commits
1 commit
master
...
BLOCKBACK-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
801aba02e4 |
1 changed files with 31 additions and 10 deletions
|
|
@ -725,13 +725,8 @@ void deprecate_annual_members( database& db )
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
double database::calculate_vesting_factor(const account_object& stake_account)
|
uint32_t database::get_gpos_current_subperiod()
|
||||||
{
|
{
|
||||||
// get last time voted form stats
|
|
||||||
const auto &stats = stake_account.statistics(*this);
|
|
||||||
fc::time_point_sec last_date_voted = stats.last_vote_time;
|
|
||||||
|
|
||||||
// get global data related to gpos
|
|
||||||
const auto &gpo = this->get_global_properties();
|
const auto &gpo = this->get_global_properties();
|
||||||
const auto vesting_period = gpo.parameters.gpos_period();
|
const auto vesting_period = gpo.parameters.gpos_period();
|
||||||
const auto vesting_subperiod = gpo.parameters.gpos_subperiod();
|
const auto vesting_subperiod = gpo.parameters.gpos_subperiod();
|
||||||
|
|
@ -741,7 +736,6 @@ double database::calculate_vesting_factor(const account_object& stake_account)
|
||||||
const fc::time_point_sec period_end = period_start + vesting_period;
|
const fc::time_point_sec period_end = period_start + vesting_period;
|
||||||
const auto number_of_subperiods = vesting_period / vesting_subperiod;
|
const auto number_of_subperiods = vesting_period / vesting_subperiod;
|
||||||
const auto now = this->head_block_time();
|
const auto now = this->head_block_time();
|
||||||
double vesting_factor;
|
|
||||||
auto seconds_since_period_start = now.sec_since_epoch() - period_start.sec_since_epoch();
|
auto seconds_since_period_start = now.sec_since_epoch() - period_start.sec_since_epoch();
|
||||||
|
|
||||||
FC_ASSERT(period_start <= now && now <= period_end);
|
FC_ASSERT(period_start <= now && now <= period_end);
|
||||||
|
|
@ -757,6 +751,28 @@ double database::calculate_vesting_factor(const account_object& stake_account)
|
||||||
current_subperiod = period;
|
current_subperiod = period;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
return current_subperiod;
|
||||||
|
}
|
||||||
|
|
||||||
|
double database::calculate_vesting_factor(const account_object& stake_account)
|
||||||
|
{
|
||||||
|
// get last time voted form stats
|
||||||
|
const auto &stats = stake_account.statistics(*this);
|
||||||
|
fc::time_point_sec last_date_voted = stats.last_vote_time;
|
||||||
|
|
||||||
|
// get global data related to gpos
|
||||||
|
const auto &gpo = this->get_global_properties();
|
||||||
|
const auto vesting_period = gpo.parameters.gpos_period();
|
||||||
|
const auto vesting_subperiod = gpo.parameters.gpos_subperiod();
|
||||||
|
const auto period_start = fc::time_point_sec(gpo.parameters.gpos_period_start());
|
||||||
|
|
||||||
|
// variables needed
|
||||||
|
const auto number_of_subperiods = vesting_period / vesting_subperiod;
|
||||||
|
double vesting_factor;
|
||||||
|
|
||||||
|
// get in what sub period we are
|
||||||
|
uint32_t current_subperiod = get_gpos_current_subperiod();
|
||||||
|
|
||||||
if(current_subperiod == 0 || current_subperiod > number_of_subperiods) return 0;
|
if(current_subperiod == 0 || current_subperiod > number_of_subperiods) return 0;
|
||||||
if(last_date_voted < period_start) return 0;
|
if(last_date_voted < period_start) return 0;
|
||||||
|
|
||||||
|
|
@ -829,7 +845,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) {
|
||||||
|
|
@ -1386,10 +1402,9 @@ 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;
|
||||||
|
|
@ -1558,6 +1573,12 @@ void database::perform_chain_maintenance(const signed_block& next_block, const g
|
||||||
p.pending_parameters->extensions.value.permitted_betting_odds_increments = p.parameters.extensions.value.permitted_betting_odds_increments;
|
p.pending_parameters->extensions.value.permitted_betting_odds_increments = p.parameters.extensions.value.permitted_betting_odds_increments;
|
||||||
if( !p.pending_parameters->extensions.value.live_betting_delay_time.valid() )
|
if( !p.pending_parameters->extensions.value.live_betting_delay_time.valid() )
|
||||||
p.pending_parameters->extensions.value.live_betting_delay_time = p.parameters.extensions.value.live_betting_delay_time;
|
p.pending_parameters->extensions.value.live_betting_delay_time = p.parameters.extensions.value.live_betting_delay_time;
|
||||||
|
if( !p.pending_parameters->extensions.value.gpos_period.valid() )
|
||||||
|
p.pending_parameters->extensions.value.gpos_period = p.parameters.extensions.value.gpos_period;
|
||||||
|
if( !p.pending_parameters->extensions.value.gpos_subperiod.valid() )
|
||||||
|
p.pending_parameters->extensions.value.gpos_subperiod = p.parameters.extensions.value.gpos_subperiod;
|
||||||
|
if( !p.pending_parameters->extensions.value.gpos_vesting_lockin_period.valid() )
|
||||||
|
p.pending_parameters->extensions.value.gpos_vesting_lockin_period = p.parameters.extensions.value.gpos_vesting_lockin_period;
|
||||||
p.parameters = std::move(*p.pending_parameters);
|
p.parameters = std::move(*p.pending_parameters);
|
||||||
p.pending_parameters.reset();
|
p.pending_parameters.reset();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue