Cherry-picked commit 32b5343.

Implementing propose_dividend_asset_update
This commit is contained in:
Roman Olearski 2016-11-08 11:34:04 +01:00
parent 1386617465
commit 85102da504
3 changed files with 69 additions and 1 deletions

View file

@ -415,7 +415,7 @@ void database::init_genesis(const genesis_state_type& genesis_state)
a.precision = GRAPHENE_BLOCKCHAIN_PRECISION_DIGITS;
a.options.flags = 0;
a.options.issuer_permissions = 0;
a.issuer = GRAPHENE_NULL_ACCOUNT;
a.issuer = GRAPHENE_COMMITTEE_ACCOUNT;
a.options.core_exchange_rate.base.amount = 1;
a.options.core_exchange_rate.base.asset_id = asset_id_type(0);
a.options.core_exchange_rate.quote.amount = 1;

View file

@ -1499,6 +1499,20 @@ class wallet_api
const variant_object& changed_values,
bool broadcast = false);
/** Propose a dividend asset update.
*
* @param proposing_account The account paying the fee to propose the tx
* @param expiration_time Timestamp specifying when the proposal will either take effect or expire.
* @param changed_values dividend asset parameters to update
* @param broadcast true if you wish to broadcast the transaction
* @return the signed version of the transaction
*/
signed_transaction propose_dividend_asset_update(
const string& proposing_account,
fc::time_point_sec expiration_time,
const variant_object& changed_values,
bool broadcast = false);
/** Approve or disapprove a proposal.
*
* @param fee_paying_account The account paying the fee for the op.
@ -1761,6 +1775,7 @@ FC_API( graphene::wallet::wallet_api,
(get_prototype_operation)
(propose_parameter_change)
(propose_fee_change)
(propose_dividend_asset_update)
(approve_proposal)
(dbg_make_uia)
(dbg_make_mia)

View file

@ -2411,6 +2411,46 @@ public:
return sign_transaction(tx, broadcast);
}
signed_transaction propose_dividend_asset_update(
const string& proposing_account,
fc::time_point_sec expiration_time,
const variant_object& changed_values,
bool broadcast = false)
{
FC_ASSERT( changed_values.contains("asset_to_update") );
const chain_parameters& current_params = get_global_properties().parameters;
asset_update_dividend_operation changed_op;
fc::reflector<asset_update_dividend_operation>::visit(
fc::from_variant_visitor<asset_update_dividend_operation>( changed_values, changed_op )
);
optional<asset_object> asset_to_update = find_asset(changed_op.asset_to_update);
if (!asset_to_update)
FC_THROW("No asset with that symbol exists!");
asset_update_dividend_operation update_op;
update_op.issuer = asset_to_update->issuer;
update_op.asset_to_update = asset_to_update->id;
update_op.new_options = changed_op.new_options;
proposal_create_operation prop_op;
prop_op.expiration_time = expiration_time;
prop_op.review_period_seconds = current_params.committee_proposal_review_period;
prop_op.fee_paying_account = get_account(proposing_account).id;
prop_op.proposed_ops.emplace_back( update_op );
current_params.current_fees->set_fee( prop_op.proposed_ops.back().op );
signed_transaction tx;
tx.operations.push_back(prop_op);
set_operation_fees(tx, current_params.current_fees);
tx.validate();
return sign_transaction(tx, broadcast);
}
signed_transaction approve_proposal(
const string& fee_paying_account,
const string& proposal_id,
@ -3524,6 +3564,16 @@ signed_transaction wallet_api::propose_fee_change(
return my->propose_fee_change( proposing_account, expiration_time, changed_fees, broadcast );
}
signed_transaction wallet_api::propose_dividend_asset_update(
const string& proposing_account,
fc::time_point_sec expiration_time,
const variant_object& changed_fees,
bool broadcast /* = false */
)
{
return my->propose_dividend_asset_update( proposing_account, expiration_time, changed_fees, broadcast );
}
signed_transaction wallet_api::approve_proposal(
const string& fee_paying_account,
const string& proposal_id,
@ -3534,6 +3584,9 @@ signed_transaction wallet_api::approve_proposal(
return my->approve_proposal( fee_paying_account, proposal_id, delta, broadcast );
}
global_property_object wallet_api::get_global_properties() const
{
return my->get_global_properties();