Skip to content

Commit

Permalink
Implement committee_member_update operation #258
Browse files Browse the repository at this point in the history
  • Loading branch information
theoreticalbts committed Aug 26, 2015
1 parent 7db477b commit 695978c
Show file tree
Hide file tree
Showing 7 changed files with 70 additions and 4 deletions.
9 changes: 8 additions & 1 deletion libraries/app/impacted.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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 )
Expand Down
19 changes: 19 additions & 0 deletions libraries/chain/committee_member_evaluator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
1 change: 1 addition & 0 deletions libraries/chain/db_init.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand All @@ -39,5 +48,4 @@ namespace graphene { namespace chain {
void_result do_apply( const committee_member_update_global_parameters_operation& o );
};


} } // graphene::chain
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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) );
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
8 changes: 7 additions & 1 deletion libraries/chain/protocol/committee_member.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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

0 comments on commit 695978c

Please sign in to comment.