removed betting_market_group_freeze operation

added freeze to betting_market_group_update operation
This commit is contained in:
Roman Olearski 2017-08-09 11:08:50 +02:00
parent e9f1788eae
commit f417dc0391
13 changed files with 32 additions and 69 deletions

View file

@ -234,7 +234,9 @@
"fee": 100000 "fee": 100000
} }
],[ ],[
55,{} 55,{
"fee": 100000
}
],[ ],[
56,{ 56,{
"fee": 100000 "fee": 100000
@ -244,17 +246,17 @@
"fee": 100000 "fee": 100000
} }
],[ ],[
58,{} 58,{
],[
59,{
"fee": 100000 "fee": 100000
} }
],[
59,{}
] ]
], ],
"scale": 10000 "scale": 10000
}, },
"block_interval": 5, "block_interval": 5,
"maintenance_interval": 6000, "maintenance_interval": 600,
"maintenance_skip_slots": 3, "maintenance_skip_slots": 3,
"committee_proposal_review_period": 900, "committee_proposal_review_period": 900,
"maximum_transaction_size": 2048, "maximum_transaction_size": 2048,

View file

@ -222,7 +222,6 @@ struct get_impacted_account_visitor
void operator()( const betting_market_create_operation& op ) {} void operator()( const betting_market_create_operation& op ) {}
void operator()( const betting_market_update_operation& op ) {} void operator()( const betting_market_update_operation& op ) {}
void operator()( const betting_market_group_resolve_operation& op ) {} void operator()( const betting_market_group_resolve_operation& op ) {}
void operator()( const betting_market_group_freeze_operation& op ) {}
void operator()( const betting_market_group_cancel_unmatched_bets_operation& op ) {} void operator()( const betting_market_group_cancel_unmatched_bets_operation& op ) {}
void operator()( const bet_place_operation& op ) void operator()( const bet_place_operation& op )

View file

@ -119,7 +119,7 @@ object_id_type betting_market_group_create_evaluator::do_apply(const betting_mar
void_result betting_market_group_update_evaluator::do_evaluate(const betting_market_group_update_operation& op) void_result betting_market_group_update_evaluator::do_evaluate(const betting_market_group_update_operation& op)
{ try { { try {
FC_ASSERT(trx_state->_is_proposed_trx); FC_ASSERT(trx_state->_is_proposed_trx);
FC_ASSERT(op.new_event_id.valid() || op.new_description || op.new_rules_id, "nothing to change"); FC_ASSERT(op.new_event_id.valid() || op.new_description.valid() || op.new_rules_id.valid() || op.freeze.valid(), "nothing to change");
// the event_id in the operation can be a relative id. If it is, // the event_id in the operation can be a relative id. If it is,
// resolve it and verify that it is truly an event // resolve it and verify that it is truly an event
@ -151,6 +151,12 @@ void_result betting_market_group_update_evaluator::do_evaluate(const betting_mar
FC_ASSERT( db().find_object(rules_id), "invalid rules specified" ); FC_ASSERT( db().find_object(rules_id), "invalid rules specified" );
} }
if (op.freeze.valid())
{
const auto& _betting_market_group = &op.betting_market_group_id(db());
FC_ASSERT(_betting_market_group->frozen != *op.freeze, "Freeze operation would not change the state of the betting market group");
}
return void_result(); return void_result();
} FC_CAPTURE_AND_RETHROW( (op) ) } } FC_CAPTURE_AND_RETHROW( (op) ) }
@ -167,6 +173,8 @@ void_result betting_market_group_update_evaluator::do_apply(const betting_market
bmgo.event_id = event_id; bmgo.event_id = event_id;
if( op.new_rules_id.valid() ) if( op.new_rules_id.valid() )
bmgo.rules_id = rules_id; bmgo.rules_id = rules_id;
if( op.freeze.valid() )
bmgo.frozen = *op.freeze;
}); });
return void_result(); return void_result();
} FC_CAPTURE_AND_RETHROW( (op) ) } } FC_CAPTURE_AND_RETHROW( (op) ) }
@ -356,23 +364,6 @@ void_result betting_market_group_resolve_evaluator::do_apply(const betting_marke
return void_result(); return void_result();
} FC_CAPTURE_AND_RETHROW( (op) ) } } FC_CAPTURE_AND_RETHROW( (op) ) }
void_result betting_market_group_freeze_evaluator::do_evaluate(const betting_market_group_freeze_operation& op)
{ try {
const database& d = db();
_betting_market_group = &op.betting_market_group_id(d);
FC_ASSERT(_betting_market_group->frozen != op.freeze, "Freeze operation would not change the state of the betting market group");
return void_result();
} FC_CAPTURE_AND_RETHROW( (op) ) }
void_result betting_market_group_freeze_evaluator::do_apply(const betting_market_group_freeze_operation& op)
{ try {
db().modify(*_betting_market_group, [&]( betting_market_group_object& betting_market_group_obj ) {
betting_market_group_obj.frozen = op.freeze;
});
return void_result();
} FC_CAPTURE_AND_RETHROW( (op) ) }
void_result betting_market_group_cancel_unmatched_bets_evaluator::do_evaluate(const betting_market_group_cancel_unmatched_bets_operation& op) void_result betting_market_group_cancel_unmatched_bets_evaluator::do_evaluate(const betting_market_group_cancel_unmatched_bets_operation& op)
{ try { { try {
const database& d = db(); const database& d = db();

View file

@ -205,7 +205,6 @@ struct get_impacted_account_visitor
void operator()(const betting_market_update_operation&){} void operator()(const betting_market_update_operation&){}
void operator()(const bet_place_operation&){} void operator()(const bet_place_operation&){}
void operator()(const betting_market_group_resolve_operation&){} void operator()(const betting_market_group_resolve_operation&){}
void operator()(const betting_market_group_freeze_operation&){}
void operator()(const betting_market_group_resolved_operation &){} void operator()(const betting_market_group_resolved_operation &){}
void operator()(const betting_market_group_cancel_unmatched_bets_operation&){} void operator()(const betting_market_group_cancel_unmatched_bets_operation&){}
void operator()(const bet_matched_operation &){} void operator()(const bet_matched_operation &){}

View file

@ -129,18 +129,6 @@ namespace graphene { namespace chain {
const betting_market_group_object* _betting_market_group; const betting_market_group_object* _betting_market_group;
}; };
class betting_market_group_freeze_evaluator : public evaluator<betting_market_group_freeze_evaluator>
{
public:
typedef betting_market_group_freeze_operation operation_type;
void_result do_evaluate( const betting_market_group_freeze_operation& o );
void_result do_apply( const betting_market_group_freeze_operation& o );
private:
const betting_market_group_object* _betting_market_group;
};
class betting_market_group_cancel_unmatched_bets_evaluator : public evaluator<betting_market_group_cancel_unmatched_bets_evaluator> class betting_market_group_cancel_unmatched_bets_evaluator : public evaluator<betting_market_group_cancel_unmatched_bets_evaluator>
{ {
public: public:

View file

@ -116,6 +116,8 @@ struct betting_market_group_update_operation : public base_operation
optional<object_id_type> new_rules_id; optional<object_id_type> new_rules_id;
optional<bool> freeze;
extensions_type extensions; extensions_type extensions;
account_id_type fee_payer()const { return GRAPHENE_WITNESS_ACCOUNT; } account_id_type fee_payer()const { return GRAPHENE_WITNESS_ACCOUNT; }
@ -217,20 +219,6 @@ struct betting_market_group_resolved_operation : public base_operation
share_type calculate_fee(const fee_parameters_type& k)const { return 0; } share_type calculate_fee(const fee_parameters_type& k)const { return 0; }
}; };
struct betting_market_group_freeze_operation : public base_operation
{
struct fee_parameters_type { uint64_t fee = GRAPHENE_BLOCKCHAIN_PRECISION; };
asset fee;
betting_market_group_id_type betting_market_group_id;
bool freeze; // the new state of the betting market
extensions_type extensions;
account_id_type fee_payer()const { return GRAPHENE_WITNESS_ACCOUNT; }
void validate()const;
};
struct betting_market_group_cancel_unmatched_bets_operation : public base_operation struct betting_market_group_cancel_unmatched_bets_operation : public base_operation
{ {
struct fee_parameters_type { uint64_t fee = GRAPHENE_BLOCKCHAIN_PRECISION; }; struct fee_parameters_type { uint64_t fee = GRAPHENE_BLOCKCHAIN_PRECISION; };
@ -381,7 +369,7 @@ FC_REFLECT( graphene::chain::betting_market_group_create_operation,
FC_REFLECT( graphene::chain::betting_market_group_update_operation::fee_parameters_type, (fee) ) FC_REFLECT( graphene::chain::betting_market_group_update_operation::fee_parameters_type, (fee) )
FC_REFLECT( graphene::chain::betting_market_group_update_operation, FC_REFLECT( graphene::chain::betting_market_group_update_operation,
(fee)(betting_market_group_id)(new_description)(new_event_id)(new_rules_id)(extensions) ) (fee)(betting_market_group_id)(new_description)(new_event_id)(new_rules_id)(freeze)(extensions) )
FC_REFLECT( graphene::chain::betting_market_create_operation::fee_parameters_type, (fee) ) FC_REFLECT( graphene::chain::betting_market_create_operation::fee_parameters_type, (fee) )
FC_REFLECT( graphene::chain::betting_market_create_operation, FC_REFLECT( graphene::chain::betting_market_create_operation,
@ -401,10 +389,6 @@ FC_REFLECT( graphene::chain::betting_market_group_resolved_operation::fee_parame
FC_REFLECT( graphene::chain::betting_market_group_resolved_operation, FC_REFLECT( graphene::chain::betting_market_group_resolved_operation,
(bettor_id)(betting_market_group_id)(resolutions)(winnings)(fees_paid)(fee) ) (bettor_id)(betting_market_group_id)(resolutions)(winnings)(fees_paid)(fee) )
FC_REFLECT( graphene::chain::betting_market_group_freeze_operation::fee_parameters_type, (fee) )
FC_REFLECT( graphene::chain::betting_market_group_freeze_operation,
(fee)(betting_market_group_id)(freeze)(extensions) )
FC_REFLECT( graphene::chain::betting_market_group_cancel_unmatched_bets_operation::fee_parameters_type, (fee) ) FC_REFLECT( graphene::chain::betting_market_group_cancel_unmatched_bets_operation::fee_parameters_type, (fee) )
FC_REFLECT( graphene::chain::betting_market_group_cancel_unmatched_bets_operation, FC_REFLECT( graphene::chain::betting_market_group_cancel_unmatched_bets_operation,
(fee)(betting_market_group_id)(extensions) ) (fee)(betting_market_group_id)(extensions) )

View file

@ -112,7 +112,6 @@ namespace graphene { namespace chain {
bet_place_operation, bet_place_operation,
betting_market_group_resolve_operation, betting_market_group_resolve_operation,
betting_market_group_resolved_operation, // VIRTUAL betting_market_group_resolved_operation, // VIRTUAL
betting_market_group_freeze_operation,
betting_market_group_cancel_unmatched_bets_operation, betting_market_group_cancel_unmatched_bets_operation,
bet_matched_operation, // VIRTUAL bet_matched_operation, // VIRTUAL
bet_cancel_operation, bet_cancel_operation,

View file

@ -60,11 +60,6 @@ void betting_market_group_resolve_operation::validate() const
FC_ASSERT( fee.amount >= 0 ); FC_ASSERT( fee.amount >= 0 );
} }
void betting_market_group_freeze_operation::validate() const
{
FC_ASSERT( fee.amount >= 0 );
}
void betting_market_group_cancel_unmatched_bets_operation::validate() const void betting_market_group_cancel_unmatched_bets_operation::validate() const
{ {
FC_ASSERT( fee.amount >= 0 ); FC_ASSERT( fee.amount >= 0 );

View file

@ -1659,6 +1659,7 @@ class wallet_api
fc::optional<internationalized_string_type> description, fc::optional<internationalized_string_type> description,
fc::optional<object_id_type> event_id, fc::optional<object_id_type> event_id,
fc::optional<object_id_type> rules_id, fc::optional<object_id_type> rules_id,
fc::optional<bool> freeze,
bool broadcast = false); bool broadcast = false);
signed_transaction propose_create_betting_market( signed_transaction propose_create_betting_market(

View file

@ -5308,6 +5308,7 @@ signed_transaction wallet_api::propose_update_betting_market_group(
fc::optional<internationalized_string_type> description, fc::optional<internationalized_string_type> description,
fc::optional<object_id_type> event_id, fc::optional<object_id_type> event_id,
fc::optional<object_id_type> rules_id, fc::optional<object_id_type> rules_id,
fc::optional<bool> freeze,
bool broadcast /*= false*/) bool broadcast /*= false*/)
{ {
FC_ASSERT( !is_locked() ); FC_ASSERT( !is_locked() );
@ -5318,7 +5319,7 @@ signed_transaction wallet_api::propose_update_betting_market_group(
betting_market_group_update_op.new_description = description; betting_market_group_update_op.new_description = description;
betting_market_group_update_op.new_event_id = event_id; betting_market_group_update_op.new_event_id = event_id;
betting_market_group_update_op.new_rules_id = rules_id; betting_market_group_update_op.new_rules_id = rules_id;
//betting_market_group_create_op.asset_id = asset_id; betting_market_group_update_op.freeze = freeze;
proposal_create_operation prop_op; proposal_create_operation prop_op;
prop_op.expiration_time = expiration_time; prop_op.expiration_time = expiration_time;

View file

@ -693,11 +693,12 @@ BOOST_AUTO_TEST_CASE(betting_market_group_update_test)
const betting_market_rules_object& new_betting_market_rules = create_betting_market_rules({{"en", "NHL Rules v2.0"}}, {{"en", "The winner will be the team with the most points at the end of the game. The team with fewer points will not be the winner."}}); const betting_market_rules_object& new_betting_market_rules = create_betting_market_rules({{"en", "NHL Rules v2.0"}}, {{"en", "The winner will be the team with the most points at the end of the game. The team with fewer points will not be the winner."}});
fc::optional<object_id_type> new_rule = new_betting_market_rules.id; fc::optional<object_id_type> new_rule = new_betting_market_rules.id;
fc::optional<bool> freeze;
update_betting_market_group(moneyline_betting_markets.id, new_desc, empty_object_id, empty_object_id); update_betting_market_group(moneyline_betting_markets.id, new_desc, empty_object_id, empty_object_id, freeze);
update_betting_market_group(moneyline_betting_markets.id, dempty, new_event, empty_object_id); update_betting_market_group(moneyline_betting_markets.id, dempty, new_event, empty_object_id, freeze);
update_betting_market_group(moneyline_betting_markets.id, dempty, empty_object_id, new_rule); update_betting_market_group(moneyline_betting_markets.id, dempty, empty_object_id, new_rule, freeze);
update_betting_market_group(moneyline_betting_markets.id, new_desc, new_event, new_rule); update_betting_market_group(moneyline_betting_markets.id, new_desc, new_event, new_rule, freeze);
transfer(account_id_type(), bob_id, asset(10000000)); transfer(account_id_type(), bob_id, asset(10000000));
place_bet(bob_id, capitals_win_market.id, bet_type::lay, asset(1000000, asset_id_type()), 2 * GRAPHENE_BETTING_ODDS_PRECISION, 1000000 / 50 /* chain defaults to 2% fees */); place_bet(bob_id, capitals_win_market.id, bet_type::lay, asset(1000000, asset_id_type()), 2 * GRAPHENE_BETTING_ODDS_PRECISION, 1000000 / 50 /* chain defaults to 2% fees */);

View file

@ -1357,13 +1357,15 @@ const betting_market_group_object& database_fixture::create_betting_market_group
void database_fixture::update_betting_market_group(betting_market_group_id_type betting_market_group_id, void database_fixture::update_betting_market_group(betting_market_group_id_type betting_market_group_id,
fc::optional<internationalized_string_type> description, fc::optional<internationalized_string_type> description,
fc::optional<object_id_type> event_id, fc::optional<object_id_type> event_id,
fc::optional<object_id_type> rules_id) fc::optional<object_id_type> rules_id,
fc::optional<bool> freeze)
{ try { { try {
betting_market_group_update_operation betting_market_group_update_op; betting_market_group_update_operation betting_market_group_update_op;
betting_market_group_update_op.betting_market_group_id = betting_market_group_id; betting_market_group_update_op.betting_market_group_id = betting_market_group_id;
betting_market_group_update_op.new_description = description; betting_market_group_update_op.new_description = description;
betting_market_group_update_op.new_event_id = event_id; betting_market_group_update_op.new_event_id = event_id;
betting_market_group_update_op.new_rules_id = rules_id; betting_market_group_update_op.new_rules_id = rules_id;
betting_market_group_update_op.freeze = freeze;
process_operation_by_witnesses(betting_market_group_update_op); process_operation_by_witnesses(betting_market_group_update_op);
} FC_CAPTURE_AND_RETHROW( (betting_market_group_id)(description)(event_id)(rules_id)) } } FC_CAPTURE_AND_RETHROW( (betting_market_group_id)(description)(event_id)(rules_id)) }

View file

@ -309,7 +309,8 @@ struct database_fixture {
void update_betting_market_group(betting_market_group_id_type betting_market_group_id, void update_betting_market_group(betting_market_group_id_type betting_market_group_id,
fc::optional<internationalized_string_type> description, fc::optional<internationalized_string_type> description,
fc::optional<object_id_type> event_id, fc::optional<object_id_type> event_id,
fc::optional<object_id_type> rules_id); fc::optional<object_id_type> rules_id,
fc::optional<bool> freeze);
const betting_market_object& create_betting_market(betting_market_group_id_type group_id, internationalized_string_type payout_condition); const betting_market_object& create_betting_market(betting_market_group_id_type group_id, internationalized_string_type payout_condition);
void update_betting_market(betting_market_id_type betting_market_id, void update_betting_market(betting_market_id_type betting_market_id,