This page shows how the committee account can act using the proposed
transaction system. Specifically, as an example I'm using the
creation of BitShares proposal 1.10.21, a proposal to update a
committee-controlled BitAsset to reduce maximum_force_settlement_volume
for asset CNY
from 2000 (20%) to 200 (2%).
First check the asset to see what its current configuration is:
>>> get_asset CNY
{
...
"bitasset_data_id": "2.4.13"
}
Then check its bitasset object to get the currently active options:
>>> get_object 2.4.13
{
...
"options": {
"feed_lifetime_sec": 86400,
"minimum_feeds": 7,
"force_settlement_delay_sec": 86400,
"force_settlement_offset_percent": 0,
"maximum_force_settlement_volume": 2000,
"short_backing_asset": "1.3.0",
"extensions": []
},
...
}
Then do update_bitasset
to update the options. Note we copy-paste
other fields from above; there is no way to selectively update only one field.
>>> update_bitasset "CNY" {"feed_lifetime_sec" : 86400, "minimum_feeds" : 7, "force_settlement_delay_sec" : 86400, "force_settlement_offset_percent" : 0, "maximum_force_settlement_volume" : 200, "short_backing_asset" : "1.3.0", "extensions" : []} false
If this was a privatized BitAsset (i.e. a user-issued asset with feed),
you could simply set the broadcast
parameter of the above command to
true
and be done.
However this is a committee-issued asset, so we have to use a proposed
transaction to update it. To create the proposed transaction, we use
the transaction builder API. Create a transaction builder
transaction with begin_builder_transaction
command:
>>> begin_builder_transaction
This returns a numeric handle used to refer to the transaction being built.
In the following commands you need to replace $HANDLE
with the
number returned by begin_builder_transaction
above.
>>> add_operation_to_builder_transaction $HANDLE [12,{"fee": {"amount": 100000000, "asset_id": "1.3.0"}, "issuer": "1.2.0", "asset_to_update": "1.3.113", "new_options": { "feed_lifetime_sec": 86400, "minimum_feeds": 7, "force_settlement_delay_sec": 86400, "force_settlement_offset_percent": 0, "maximum_force_settlement_volume": 200, "short_backing_asset": "1.3.0", "extensions": []}, "extensions": []}]
>>> propose_builder_transaction2 $HANDLE init0 "2015-12-04T14:55:00" 3600 false
The propose_builder_transaction
command is broken and deprecated. You
need to recompile with
this patch
in order to use the new propose_builder_transaction2
command which allows you to set the proposing account.
Then set fees, sign and broadcast the transaction:
>>> set_fees_on_builder_transaction $HANDLE BTS
>>> sign_builder_transaction $HANDLE true
Notes:
propose_builder_transaction2
modifies builder transaction in place. It is not idempotent, running it once will get you a proposal to execute the transaction, running it twice will cause you to get a proposal to propose the transaction!- Remember to transfer enough to cover the fee to committee account and set review period to at least
committee_proposal_review_period
- Much of this could be automated by a better wallet command.