This operation is used to create assets
struct asset_create_operation : public base_operation{struct fee_parameters_type {uint64_t symbol3 = 500000 * ECHO_BLOCKCHAIN_PRECISION;uint64_t symbol4 = 300000 * ECHO_BLOCKCHAIN_PRECISION;uint64_t long_symbol = 5000 * ECHO_BLOCKCHAIN_PRECISION;uint32_t price_per_kbyte = 10; /// only required for large memos.};​asset fee;/// This account must sign and pay the fee for this operation. Later, this account may update the assetaccount_id_type issuer;/// The ticker symbol of this assetstring symbol;/// Number of digits to the right of decimal point, must be less than or equal to 12uint8_t precision = 0;​/// Options common to all assets.////// @note common_options.core_exchange_rate technically needs to store the asset ID of this new asset. Since this/// ID is not known at the time this operation is created, create this price as though the new asset has instance/// ID 1, and the chain will overwrite it with the new asset's ID.asset_options common_options;/// Options only available for BitAssets. MUST be non-null if and only if the asset is a bitassetoptional<bitasset_options> bitasset_opts;​extensions_type extensions;​account_id_type fee_payer()const { return issuer; }share_type calculate_fee( const fee_parameters_type& k )const;};
​asset asset_options bitasset_options​
[7,{"fee": {"amount": 0,"asset_id": "1.3.0"},"issuer": "1.2.0","symbol": "","precision": 0,"common_options": {"max_supply": "1000000000000000","issuer_permissions": 15,"flags": 0,"core_exchange_rate": {"base": {"amount": 0,"asset_id": "1.3.0"},"quote": {"amount": 0,"asset_id": "1.3.0"}},"whitelist_authorities": [],"blacklist_authorities": [],"description": "","extensions": []},"extensions": []}]
Update options common to all assets.
There are a number of options which all assets in the network use. These options are enumerated in the asset_options
struct. This operation is used to update these options for an existing asset.
struct asset_update_operation : public base_operation{struct fee_parameters_type {uint64_t fee = 500 * ECHO_BLOCKCHAIN_PRECISION;uint32_t price_per_kbyte = 10;};​asset_update_operation(){}​asset fee;account_id_type issuer;asset_id_type asset_to_update;​/// If the asset is to be given a new issuer, specify his ID here.optional<account_id_type> new_issuer;optional<asset_options> new_options;​extensions_type extensions;​account_id_type fee_payer()const { return issuer; }share_type calculate_fee(const fee_parameters_type& k)const;};
​asset asset_options​
[8,{"fee": {"amount": 0,"asset_id": "1.3.0"},"issuer": "1.2.0","asset_to_update": "1.3.0","extensions": []}]
Update options specific to BitAssets.
BitAssets have some options which are not relevant to other asset types. This operation is used to update those options for existing BitAsset.
struct asset_update_bitasset_operation : public base_operation{struct fee_parameters_type { uint64_t fee = 500 * ECHO_BLOCKCHAIN_PRECISION; };​asset fee;account_id_type issuer;asset_id_type asset_to_update;​bitasset_options new_options;​extensions_type extensions;​account_id_type fee_payer()const { return issuer; }};
​asset bitasset_options​
[9,{"fee": {"amount": 0,"asset_id": "1.3.0"},"issuer": "1.2.0","asset_to_update": "1.3.0","new_options": {"feed_lifetime_sec": 86400,"minimum_feeds": 1,"short_backing_asset": "1.3.0","extensions": []},"extensions": []}]
Update the set of feed-producing accounts for a BitAsset.
BitAssets have price feeds selected by taking the median values of recommendations from a set of feed producers. This operation is used to specify which accounts may produce feeds for a given BitAsset.
struct asset_update_feed_producers_operation : public base_operation{struct fee_parameters_type { uint64_t fee = 500 * ECHO_BLOCKCHAIN_PRECISION; };​asset fee;account_id_type issuer;asset_id_type asset_to_update;​flat_set<account_id_type> new_feed_producers;​extensions_type extensions;​account_id_type fee_payer()const { return issuer; }};
​asset​
[10,{"fee": {"amount": 0,"asset_id": "1.3.0"},"issuer": "1.2.0","asset_to_update": "1.3.0","new_feed_producers": [],"extensions": []}]
Asset issue to account.
struct asset_issue_operation : public base_operation{struct fee_parameters_type {uint64_t fee = 20 * ECHO_BLOCKCHAIN_PRECISION;};​asset fee;account_id_type issuer; ///< Must be asset_to_issue->asset_id->issuerasset asset_to_issue;account_id_type issue_to_account;​extensions_type extensions;​account_id_type fee_payer()const { return issuer; }share_type calculate_fee(const fee_parameters_type& k)const;};
​asset​
[11,{"fee": {"amount": 0,"asset_id": "1.3.0"},"issuer": "1.2.0","asset_to_issue": {"amount": 0,"asset_id": "1.3.0"},"issue_to_account": "1.2.0","extensions": []}]
Used to take an asset out of circulation, returning to the issuer
struct asset_reserve_operation : public base_operation{struct fee_parameters_type { uint64_t fee = 20 * ECHO_BLOCKCHAIN_PRECISION; };​asset fee;account_id_type payer;asset amount_to_reserve;​extensions_type extensions;​account_id_type fee_payer()const { return payer; }};
​asset​
[12,{"fee": {"amount": 0,"asset_id": "1.3.0"},"payer": "1.2.0","amount_to_reserve": {"amount": 0,"asset_id": "1.3.0"},"extensions": []}]
Used to transfer asset from account to asset fee pool. For more information see Asset Fee Pool.
struct asset_fund_fee_pool_operation : public base_operation{struct fee_parameters_type { uint64_t fee = ECHO_BLOCKCHAIN_PRECISION; };​asset fee; ///< core assetaccount_id_type from_account;asset_id_type asset_id;share_type amount; ///< core asset​extensions_type extensions;​account_id_type fee_payer()const { return from_account; }};
​asset​
[13,{"fee": {"amount": 0,"asset_id": "1.3.0"},"from_account": "1.2.0","asset_id": "1.3.0","amount": 0,"extensions": []}]
Publish price feeds for market-issued assets (BitAssets).
Price feed providers use this operation to publish their price feeds for market-issued assets. A price feed is used to tune the market for a particular market-issued asset. For each value in the feed, the median across all committee_member feeds for that asset is calculated and the market for the asset is configured with the median of that value.
The feed in the operation contains three prices: a call price limit, a short price limit, and a settlement price. The call limit price is structured as (collateral asset) / (debt asset) and the short limit price is structured as (asset for sale) / (collateral asset). Note that the asset IDs are opposite to eachother, so if we're publishing a feed for USD, the call limit price will be ECHO/USD and the short limit price will be USD/ECHO. The settlement price may be flipped either direction, as long as it is a ratio between the market-issued asset and its collateral.
struct asset_publish_feed_operation : public base_operation{struct fee_parameters_type { uint64_t fee = ECHO_BLOCKCHAIN_PRECISION; };​asset fee; ///< paid for by publisheraccount_id_type publisher;asset_id_type asset_id; ///< asset for which the feed is publishedprice core_exchange_rate;​extensions_type extensions;​account_id_type fee_payer()const { return publisher; }};
​asset​
[14,{"fee": {"amount": 0,"asset_id": "1.3.0"},"publisher": "1.2.0","asset_id": "1.3.0","core_exchange_rate": {"base": {"amount": 0,"asset_id": "1.3.0"},"quote": {"amount": 0,"asset_id": "1.3.0"}},"extensions": []}]
Used to transfer accumulated fees back to the issuer's balance
struct asset_claim_fees_operation : public base_operation{struct fee_parameters_type {uint64_t fee = 20 * ECHO_BLOCKCHAIN_PRECISION;};​asset fee;account_id_type issuer;asset amount_to_claim; /// amount_to_claim.asset_id->issuer must == issuer​extensions_type extensions;​account_id_type fee_payer()const { return issuer; }};
​asset​
[15,{"fee": {"amount": 0,"asset_id": "1.3.0"},"issuer": "1.2.0","amount_to_claim": {"amount": 0,"asset_id": "1.3.0"},"extensions": []}]