-
-
Notifications
You must be signed in to change notification settings - Fork 1
Howto propose council actions
This page shows how the council account can act using the proposed
transaction system. Specifically, as an example I'm using the
creation of Graphene proposal 1.10.21, a proposal to update a
council-controlled SecAsset 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
{
...
"secasset_data_id": "2.4.13"
}
Then check its secasset 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_secasset
to update the options. Note we copy-paste
other fields from above; there is no way to selectively update only one field.
>>> update_secasset "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 Secured Asset (i.e. a user asset with feed),
you could simply set the broadcast
parameter of the above command to
true
and be done.
However this is a council-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 council account and set review period to at least
council_proposal_review_period
- Much of this could be automated by a better wallet command.