12 namespace database_ns {
27 if (dprops_service.
head_block_time() < SCORUM_WITNESS_REWARD_MIGRATION_DATE)
33 = ctx.
services().witness_reward_in_sp_migration_service();
35 if (!witness_reward_in_sp_migration_service.
is_exists())
42 using recipients_type = std::map<account_name_type, share_type>;
45 recipients_type witnesses;
54 total_payment -= payment;
56 witnesses[block.
witness] += payment;
62 wlog(
"Migration rest is not enough. ${n} blocks left",
65 if (total_payment > 0)
67 wlog(
"Migration rest is too large. Left ${r}", (
"r",
asset(total_payment,
SP_SYMBOL)));
70 for (
const auto& witness_reward : witnesses)
72 charge_witness_reward(ctx, witness_reward.first, witness_reward.second);
75 witness_reward_in_sp_migration_service.
update(
80 witness_reward_in_sp_migration_service.
remove();
90 if (dprops_service.
head_block_time() > SCORUM_WITNESS_REWARD_MIGRATION_DATE)
103 = ctx.
services().witness_reward_in_sp_migration_service();
107 witness_reward_in_sp_migration_service.
update(
113 void process_witness_reward_in_sp_migration::charge_witness_reward(
block_task_context& ctx,
117 data_service_factory_i& services = ctx.
services();
120 const auto& account = account_service.
get_account(witness);
124 if (reward.value != 0)
data_service_factory_i & services() const
block_info & get_block_info() const
virtual void push_virtual_operation(const operation &op)
virtual void on_apply(block_task_context &)
void adjust_witness_reward(block_task_context &, asset &witness_reward)
static const share_type old_reward_to_migrate
static const uint32_t old_reward_alg_switch_reward_block_num
static const share_type migrate_deferred_payment
static const share_type new_reward_to_migrate
uint32_t head_block_number
Current head block number.
#define debug_log(CTX, FORMAT,...)
fc::safe< share_value_type > share_type
fc::fixed_string_16 account_name_type
virtual const asset create_scorumpower(const account_object &to_account, const asset &scorum)=0
virtual const account_object & get_account(const account_name_type &) const =0
virtual bool is_exists() const =0
virtual void update(const modifier_type &modifier)=0
virtual const object_type & get() const =0
virtual optional< signed_block > fetch_block_by_number(uint32_t num) const =0
virtual fc::time_point_sec head_block_time() const =0
asset_symbol_type symbol() const