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 );
|
_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 committee_member_update_global_parameters_operation& op ) {}
|
||||||
|
|
||||||
void operator()( const vesting_balance_create_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;
|
return new_del_object.id;
|
||||||
} FC_CAPTURE_AND_RETHROW( (op) ) }
|
} 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)
|
void_result committee_member_update_global_parameters_evaluator::do_evaluate(const committee_member_update_global_parameters_operation& o)
|
||||||
{ try {
|
{ try {
|
||||||
FC_ASSERT(trx_state->_is_proposed_trx);
|
FC_ASSERT(trx_state->_is_proposed_trx);
|
||||||
|
|
|
||||||
|
|
@ -118,6 +118,7 @@ void database::initialize_evaluators()
|
||||||
register_evaluator<account_upgrade_evaluator>();
|
register_evaluator<account_upgrade_evaluator>();
|
||||||
register_evaluator<account_whitelist_evaluator>();
|
register_evaluator<account_whitelist_evaluator>();
|
||||||
register_evaluator<committee_member_create_evaluator>();
|
register_evaluator<committee_member_create_evaluator>();
|
||||||
|
register_evaluator<committee_member_update_evaluator>();
|
||||||
register_evaluator<committee_member_update_global_parameters_evaluator>();
|
register_evaluator<committee_member_update_global_parameters_evaluator>();
|
||||||
register_evaluator<custom_evaluator>();
|
register_evaluator<custom_evaluator>();
|
||||||
register_evaluator<asset_create_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 );
|
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>
|
class committee_member_update_global_parameters_evaluator : public evaluator<committee_member_update_global_parameters_evaluator>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
@ -39,5 +48,4 @@ namespace graphene { namespace chain {
|
||||||
void_result do_apply( const committee_member_update_global_parameters_operation& o );
|
void_result do_apply( const committee_member_update_global_parameters_operation& o );
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
} } // graphene::chain
|
} } // graphene::chain
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,28 @@ namespace graphene { namespace chain {
|
||||||
void validate()const;
|
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.
|
* @brief Used by committee_members to update the global parameters of the blockchain.
|
||||||
* @ingroup operations
|
* @ingroup operations
|
||||||
|
|
@ -50,10 +72,12 @@ namespace graphene { namespace chain {
|
||||||
|
|
||||||
} } // graphene::chain
|
} } // graphene::chain
|
||||||
FC_REFLECT( graphene::chain::committee_member_create_operation::fee_parameters_type, (fee) )
|
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_update_global_parameters_operation::fee_parameters_type, (fee) )
|
||||||
|
|
||||||
|
|
||||||
FC_REFLECT( graphene::chain::committee_member_create_operation,
|
FC_REFLECT( graphene::chain::committee_member_create_operation,
|
||||||
(fee)(committee_member_account)(url) )
|
(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) );
|
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_claim_operation,
|
||||||
withdraw_permission_delete_operation,
|
withdraw_permission_delete_operation,
|
||||||
committee_member_create_operation,
|
committee_member_create_operation,
|
||||||
|
committee_member_update_operation,
|
||||||
committee_member_update_global_parameters_operation,
|
committee_member_update_global_parameters_operation,
|
||||||
vesting_balance_create_operation,
|
vesting_balance_create_operation,
|
||||||
vesting_balance_withdraw_operation,
|
vesting_balance_withdraw_operation,
|
||||||
|
|
|
||||||
|
|
@ -9,11 +9,17 @@ void committee_member_create_operation::validate()const
|
||||||
FC_ASSERT(url.size() < GRAPHENE_MAX_URL_LENGTH );
|
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
|
void committee_member_update_global_parameters_operation::validate() const
|
||||||
{
|
{
|
||||||
FC_ASSERT( fee.amount >= 0 );
|
FC_ASSERT( fee.amount >= 0 );
|
||||||
new_parameters.validate();
|
new_parameters.validate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
} } // graphene::chain
|
} } // graphene::chain
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue