Implement committee_member_update operation #258
This commit is contained in:
parent
7db477b9d7
commit
695978cfa1
7 changed files with 70 additions and 4 deletions
|
|
@ -133,7 +133,14 @@ struct get_impacted_account_visitor
|
|||
_impacted.insert( op.authorized_account );
|
||||
}
|
||||
|
||||
void operator()( const committee_member_create_operation& op ) {}
|
||||
void operator()( const committee_member_create_operation& op )
|
||||
{
|
||||
_impacted.insert( op.committee_member_account );
|
||||
}
|
||||
void operator()( const committee_member_update_operation& op )
|
||||
{
|
||||
_impacted.insert( op.committee_member_account );
|
||||
}
|
||||
void operator()( const committee_member_update_global_parameters_operation& op ) {}
|
||||
|
||||
void operator()( const vesting_balance_create_operation& op )
|
||||
|
|
|
|||
|
|
@ -48,6 +48,25 @@ object_id_type committee_member_create_evaluator::do_apply( const committee_memb
|
|||
return new_del_object.id;
|
||||
} FC_CAPTURE_AND_RETHROW( (op) ) }
|
||||
|
||||
void_result committee_member_update_evaluator::do_evaluate( const committee_member_update_operation& op )
|
||||
{ try {
|
||||
FC_ASSERT(db().get(op.committee_member).committee_member_account == op.committee_member_account);
|
||||
return void_result();
|
||||
} FC_CAPTURE_AND_RETHROW( (op) ) }
|
||||
|
||||
void_result committee_member_update_evaluator::do_apply( const committee_member_update_operation& op )
|
||||
{ try {
|
||||
database& _db = db();
|
||||
_db.modify(
|
||||
_db.get(op.committee_member),
|
||||
[&]( committee_member_object& com )
|
||||
{
|
||||
if( op.new_url.valid() )
|
||||
com.url = *op.new_url;
|
||||
});
|
||||
return void_result();
|
||||
} FC_CAPTURE_AND_RETHROW( (op) ) }
|
||||
|
||||
void_result committee_member_update_global_parameters_evaluator::do_evaluate(const committee_member_update_global_parameters_operation& o)
|
||||
{ try {
|
||||
FC_ASSERT(trx_state->_is_proposed_trx);
|
||||
|
|
|
|||
|
|
@ -118,6 +118,7 @@ void database::initialize_evaluators()
|
|||
register_evaluator<account_upgrade_evaluator>();
|
||||
register_evaluator<account_whitelist_evaluator>();
|
||||
register_evaluator<committee_member_create_evaluator>();
|
||||
register_evaluator<committee_member_update_evaluator>();
|
||||
register_evaluator<committee_member_update_global_parameters_evaluator>();
|
||||
register_evaluator<custom_evaluator>();
|
||||
register_evaluator<asset_create_evaluator>();
|
||||
|
|
|
|||
|
|
@ -30,6 +30,15 @@ namespace graphene { namespace chain {
|
|||
object_id_type do_apply( const committee_member_create_operation& o );
|
||||
};
|
||||
|
||||
class committee_member_update_evaluator : public evaluator<committee_member_update_evaluator>
|
||||
{
|
||||
public:
|
||||
typedef committee_member_update_operation operation_type;
|
||||
|
||||
void_result do_evaluate( const committee_member_update_operation& o );
|
||||
void_result do_apply( const committee_member_update_operation& o );
|
||||
};
|
||||
|
||||
class committee_member_update_global_parameters_evaluator : public evaluator<committee_member_update_global_parameters_evaluator>
|
||||
{
|
||||
public:
|
||||
|
|
@ -39,5 +48,4 @@ namespace graphene { namespace chain {
|
|||
void_result do_apply( const committee_member_update_global_parameters_operation& o );
|
||||
};
|
||||
|
||||
|
||||
} } // graphene::chain
|
||||
|
|
|
|||
|
|
@ -24,6 +24,28 @@ namespace graphene { namespace chain {
|
|||
void validate()const;
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Update a committee_member object.
|
||||
* @ingroup operations
|
||||
*
|
||||
* Currently the only field which can be updated is the `url`
|
||||
* field.
|
||||
*/
|
||||
struct committee_member_update_operation : public base_operation
|
||||
{
|
||||
struct fee_parameters_type { uint64_t fee = 20 * GRAPHENE_BLOCKCHAIN_PRECISION; };
|
||||
|
||||
asset fee;
|
||||
/// The committee member to update.
|
||||
committee_member_id_type committee_member;
|
||||
/// The account which owns the committee_member. This account pays the fee for this operation.
|
||||
account_id_type committee_member_account;
|
||||
optional< string > new_url;
|
||||
|
||||
account_id_type fee_payer()const { return committee_member_account; }
|
||||
void validate()const;
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Used by committee_members to update the global parameters of the blockchain.
|
||||
* @ingroup operations
|
||||
|
|
@ -50,10 +72,12 @@ namespace graphene { namespace chain {
|
|||
|
||||
} } // graphene::chain
|
||||
FC_REFLECT( graphene::chain::committee_member_create_operation::fee_parameters_type, (fee) )
|
||||
FC_REFLECT( graphene::chain::committee_member_update_operation::fee_parameters_type, (fee) )
|
||||
FC_REFLECT( graphene::chain::committee_member_update_global_parameters_operation::fee_parameters_type, (fee) )
|
||||
|
||||
|
||||
FC_REFLECT( graphene::chain::committee_member_create_operation,
|
||||
(fee)(committee_member_account)(url) )
|
||||
|
||||
FC_REFLECT( graphene::chain::committee_member_update_operation,
|
||||
(fee)(committee_member)(committee_member_account)(new_url) )
|
||||
FC_REFLECT( graphene::chain::committee_member_update_global_parameters_operation, (fee)(new_parameters) );
|
||||
|
|
|
|||
|
|
@ -54,6 +54,7 @@ namespace graphene { namespace chain {
|
|||
withdraw_permission_claim_operation,
|
||||
withdraw_permission_delete_operation,
|
||||
committee_member_create_operation,
|
||||
committee_member_update_operation,
|
||||
committee_member_update_global_parameters_operation,
|
||||
vesting_balance_create_operation,
|
||||
vesting_balance_withdraw_operation,
|
||||
|
|
|
|||
|
|
@ -9,11 +9,17 @@ void committee_member_create_operation::validate()const
|
|||
FC_ASSERT(url.size() < GRAPHENE_MAX_URL_LENGTH );
|
||||
}
|
||||
|
||||
void committee_member_update_operation::validate()const
|
||||
{
|
||||
FC_ASSERT( fee.amount >= 0 );
|
||||
if( new_url.valid() )
|
||||
FC_ASSERT(new_url->size() < GRAPHENE_MAX_URL_LENGTH );
|
||||
}
|
||||
|
||||
void committee_member_update_global_parameters_operation::validate() const
|
||||
{
|
||||
FC_ASSERT( fee.amount >= 0 );
|
||||
new_parameters.validate();
|
||||
}
|
||||
|
||||
|
||||
} } // graphene::chain
|
||||
|
|
|
|||
Loading…
Reference in a new issue