9 #include <fc/exception/exception.hpp>
14 data_service_factory_i& svc_factory,
20 , _account_svc(account_svc)
21 , _reg_pool_dba(reg_pool_dba)
22 , _reg_committee_dba(reg_committee_dba)
23 , _reg_pool_delegation_dba(reg_pool_delegation_dba)
36 if (!is_delegation_exists)
38 FC_ASSERT(op.
scorumpower.
amount > 0,
"Account has no delegated SP from registration pool");
39 FC_ASSERT(_reg_pool_dba.get().balance.amount >= op.
scorumpower.
amount,
"Registration pool is exhausted.");
47 _reg_pool_delegation_dba.
create([&](reg_pool_sp_delegation_object& o) {
54 const auto& delegation = _reg_pool_delegation_dba.
get_by<by_delegatee>(op.
delegatee);
57 FC_ASSERT(_reg_pool_dba.get().balance.amount >= extra_sp.amount,
"Registration pool is exhausted.");
66 _reg_pool_delegation_dba.
update(delegation, [&](reg_pool_sp_delegation_object& o) { o.sp += extra_sp; });
68 _reg_pool_delegation_dba.
remove(delegation);
const object_type & create(modifier_type modifier)
const object_type & get_by(const Key &arg) const
bool is_exists_by(const Key &arg) const
const object_type & update(modifier_type modifier)
delegate_sp_from_reg_pool_evaluator(data_service_factory_i &, account_service_i &, dba::db_accessor< registration_pool_object > &, dba::db_accessor< registration_committee_member_object > &, dba::db_accessor< reg_pool_sp_delegation_object > &)
void do_apply(const protocol::delegate_sp_from_reg_pool_operation &op)
virtual void check_account_existence(const account_name_type &, const optional< const char * > &context_type_name=optional< const char * >()) const =0
virtual void increase_received_scorumpower(account_name_type account_name, const asset &amount)=0
account_name_type delegatee
account_name_type reg_committee_member