Wallet API - Calls
The wallet (cli_wallet
) requires a running full node to connect to because
it does not offer P2P or blockchain capabilities directly.
If you have not set up your wallet yet, you can find more information on the Wallet-CLI Tutorial and the CLI Wallet - FAQ pages.
General Calls
help
-
string graphene::wallet::wallet_api::help() const
Returns a list of all commands supported by the wallet API.
This lists each command, along with its arguments and return types. For more detailed help on a single command, use
gethelp()
- Returns:
a multi-line string suitable for displaying on a terminal
gethelp
-
string graphene::wallet::wallet_api::gethelp(const string &method) const
Returns detailed help on a single API command.
- Parameters:
method – the name of the API command you want help with
- Returns:
a multi-line string suitable for displaying on a terminal
info
-
variant graphene::wallet::wallet_api::info() const
Returns info about head block, chain_id, maintenance, participation, current active witnesses and committee members.
- Returns:
runtime info about the blockchain
about
-
variant_object graphene::wallet::wallet_api::about() const
Returns info such as client version, git version of graphene/fc, version of boost, openssl.
- Returns:
compile time info and client and dependencies versions
network_add_nodes
-
void graphene::wallet::wallet_api::network_add_nodes(const vector<string> &nodes) const
network_get_connected_peers
-
vector<variant> graphene::wallet::wallet_api::network_get_connected_peers() const
Wallet Calls
is_new
-
bool graphene::wallet::wallet_api::is_new() const
Checks whether the wallet has just been created and has not yet had a password set.
Calling
set_password
will transition the wallet to the locked state.- Returns:
true if the wallet is new
is_locked
-
bool graphene::wallet::wallet_api::is_locked() const
Checks whether the wallet is locked (is unable to use its private keys).
This state can be changed by calling
lock()
orunlock()
.- Returns:
true if the wallet is locked
lock
-
void graphene::wallet::wallet_api::lock() const
Locks the wallet immediately.
unlock
-
void graphene::wallet::wallet_api::unlock(const string &password) const
Unlocks the wallet.
The wallet remain unlocked until the
lock
is called or the program exits.When used in command line, if typed “unlock” without a password followed, the user will be prompted to input a password without echo.
- Parameters:
password – the password previously set with
set_password()
set_password
-
void graphene::wallet::wallet_api::set_password(const string &password) const
Sets a new password on the wallet.
The wallet must be either ‘new’ or ‘unlocked’ to execute this command.
When used in command line, if typed “set_password” without a password followed, the user will be prompted to input a password without echo.
- Parameters:
password – a new password
dump_private_keys
-
map<public_key_type, string> graphene::wallet::wallet_api::dump_private_keys() const
Dumps all private keys owned by the wallet.
The keys are printed in WIF format. You can import these keys into another wallet using
import_key()
- Returns:
a map containing the private keys, indexed by their public key
import_key
-
bool graphene::wallet::wallet_api::import_key(const string &account_name_or_id, const string &wif_key) const
Imports the private key for an existing account.
The private key must match either an owner key or an active key for the named account.
See also
- Parameters:
account_name_or_id – the account owning the key
wif_key – the private key in WIF format
- Returns:
true if the key was imported
import_accounts
-
map<string, bool, std::less<>> graphene::wallet::wallet_api::import_accounts(const string &filename, const string &password) const
Imports accounts from a BitShares 0.x wallet file. Current wallet file must be unlocked to perform the import.
- Parameters:
filename – the BitShares 0.x wallet file to import
password – the password to encrypt the BitShares 0.x wallet file
- Returns:
a map containing the accounts found and whether imported
import_account_keys
-
bool graphene::wallet::wallet_api::import_account_keys(const string &filename, const string &password, const string &src_account_name, const string &dest_account_name) const
Imports from a BitShares 0.x wallet file, find keys that were bound to a given account name on the BitShares 0.x chain, rebind them to an account name on the 2.0 chain. Current wallet file must be unlocked to perform the import.
- Parameters:
filename – the BitShares 0.x wallet file to import
password – the password to encrypt the BitShares 0.x wallet file
src_account_name – name of the account on BitShares 0.x chain
dest_account_name – name of the account on BitShares 2.0 chain, can be same or different to
src_account_name
- Returns:
whether the import has succeeded
import_balance
-
vector<signed_transaction> graphene::wallet::wallet_api::import_balance(const string &account_name_or_id, const vector<string> &wif_keys, bool broadcast) const
This call will construct transaction(s) that will claim all balances controled by wif_keys and deposit them into the given account.
- Parameters:
account_name_or_id – name or ID of an account that to claim balances to
wif_keys – private WIF keys of balance objects to claim balances from
broadcast – true to broadcast the transaction on the network
suggest_brain_key
-
brain_key_info graphene::wallet::wallet_api::suggest_brain_key() const
Suggests a safe brain key to use for creating your account.
create_account_with_brain_key()
requires you to specify a ‘brain key’, a long passphrase that provides enough entropy to generate cyrptographic keys. This function will suggest a suitably random string that should be easy to write down (and, with effort, memorize).- Returns:
a suggested brain_key
get_transaction_id
-
inline transaction_id_type graphene::wallet::wallet_api::get_transaction_id(const signed_transaction &trx) const
This method is used to convert a JSON transaction to its transactin ID.
- Parameters:
trx – a JSON transaction
- Returns:
the ID (hash) of the transaction
get_private_key
-
string graphene::wallet::wallet_api::get_private_key(const public_key_type &pubkey) const
Get the WIF private key corresponding to a public key. The private key must already be in the wallet.
- Parameters:
pubkey – a public key in Base58 format
- Returns:
the WIF private key
load_wallet_file
-
bool graphene::wallet::wallet_api::load_wallet_file(const string &wallet_filename = "") const
Loads a specified BitShares wallet.
The current wallet is closed before the new wallet is loaded.
Warning
This does not change the filename that will be used for future wallet writes, so this may cause you to overwrite your original wallet unless you also call
set_wallet_filename()
- Parameters:
wallet_filename – the filename of the wallet JSON file to load. If
wallet_filename
is empty, it reloads the existing wallet file- Returns:
true if the specified wallet is loaded
normalize_brain_key
-
string graphene::wallet::wallet_api::normalize_brain_key(const string &s) const
Transforms a brain key to reduce the chance of errors when re-entering the key from memory.
This takes a user-supplied brain key and normalizes it into the form used for generating private keys. In particular, this upper-cases all ASCII characters and collapses multiple spaces into one.
- Parameters:
s – the brain key as supplied by the user
- Returns:
the brain key in its normalized form
save_wallet_file
-
void graphene::wallet::wallet_api::save_wallet_file(const string &wallet_filename = "") const
Saves the current wallet to the given filename.
Warning
This does not change the wallet filename that will be used for future writes, so think of this function as ‘Save a Copy As…’ instead of ‘Save As…’. Use
set_wallet_filename()
to make the filename persist.- Parameters:
wallet_filename – the filename of the new wallet JSON file to create or overwrite. If
wallet_filename
is empty, save to the current filename.
Account Calls
list_my_accounts
-
vector<account_object> graphene::wallet::wallet_api::list_my_accounts() const
Lists all accounts controlled by this wallet. This returns a list of the full account objects for all accounts whose private keys we possess.
- Returns:
a list of account objects
list_accounts
-
map<string, account_id_type, std::less<>> graphene::wallet::wallet_api::list_accounts(const string &lowerbound, uint32_t limit) const
Lists all accounts registered in the blockchain. This returns a list of all account names and their account ids, sorted by account name.
Use the
lowerbound
and limit parameters to page through the list. To retrieve all accounts, start by settinglowerbound
to the empty string""
, and then each iteration, pass the last account name returned as thelowerbound
for the nextlist_accounts()
call.- Parameters:
lowerbound – the name of the first account to return. If the named account does not exist, the list will start at the account that comes after
lowerbound
limit – the maximum number of accounts to return (max: 1000)
- Returns:
a list of accounts mapping account names to account ids
list_account_balances
-
vector<asset> graphene::wallet::wallet_api::list_account_balances(const string &account_name_or_id) const
List the balances of an account. Each account can have multiple balances, one for each type of asset owned by that account. The returned list will only contain assets for which the account has a nonzero balance
- Parameters:
account_name_or_id – the name or id of the account whose balances you want
- Returns:
a list of the given account’s balances
register_account
-
signed_transaction graphene::wallet::wallet_api::register_account(const string &name, const public_key_type &owner, const public_key_type &active, const string ®istrar_account, const string &referrer_account, uint32_t referrer_percent, bool broadcast = false) const
Registers a third party’s account on the blockckain.
This function is used to register an account for which you do not own the private keys. When acting as a registrar, an end user will generate their own private keys and send you the public keys. The registrar will use this function to register the account on behalf of the end user.
See also
- Parameters:
name – the name of the account, must be unique on the blockchain. Shorter names are more expensive to register. The rules are still in flux, but in general names of more than 8 characters with at least one digit will be cheap.
owner – the owner key for the new account
active – the active key for the new account
registrar_account – the account which will pay the fee to register the user
referrer_account – the account who is acting as a referrer, and may receive a portion of the user’s transaction fees. This can be the same as the registrar_account if there is no referrer.
referrer_percent – the percentage (0 - 100) of the new user’s transaction fees not claimed by the blockchain that will be distributed to the referrer, the rest will be sent to the registrar. Will be multiplied by GRAPHENE_1_PERCENT when constructing the transaction.
broadcast – true to broadcast the transaction on the network
- Returns:
the signed transaction registering the account
upgrade_account
-
signed_transaction graphene::wallet::wallet_api::upgrade_account(const string &account_name_or_id, bool broadcast) const
Upgrades an account to prime status. This makes the account holder a ‘lifetime member’.
- Parameters:
account_name_or_id – the name or id of the account to upgrade
broadcast – true to broadcast the transaction on the network
- Returns:
the signed transaction upgrading the account
create_account_with_brain_key
-
signed_transaction graphene::wallet::wallet_api::create_account_with_brain_key(const string &brain_key, const string &account_name, const string ®istrar_account, const string &referrer_account, bool broadcast = false) const
Creates a new account and registers it on the blockchain.
- Todo:
why no referrer_percent here?
See also
See also
- Parameters:
brain_key – the brain key used for generating the account’s private keys
account_name – the name of the account, must be unique on the blockchain. Names with only latin letters and at least one vowel are premium names and expensive to register. Names with only consonants, or at least with a digit, a dot or a minus sign are cheap.
registrar_account – the account which will pay the fee to register the user
referrer_account – the account who is acting as a referrer, and may receive a portion of the user’s transaction fees. This can be the same as the registrar_account if there is no referrer.
broadcast – true to broadcast the transaction on the network
- Returns:
the signed transaction registering the account
transfer
-
signed_transaction graphene::wallet::wallet_api::transfer(const string &from, const string &to, const string &amount, const string &asset_symbol_or_id, const string &memo, bool broadcast = false) const
Transfer an amount from one account to another.
- Parameters:
from – the name or id of the account sending the funds
to – the name or id of the account receiving the funds
amount – the amount to send (in nominal units — to send half of a BTS, specify 0.5)
asset_symbol_or_id – the symbol or id of the asset to send
memo – a memo to attach to the transaction. The memo will be encrypted in the transaction and readable for the receiver. There is no length limit other than the limit imposed by maximum transaction size, but transaction increase with transaction size
broadcast – true to broadcast the transaction on the network
- Returns:
the signed transaction transferring funds
transfer2
-
inline pair<transaction_id_type, signed_transaction> graphene::wallet::wallet_api::transfer2(const string &from, const string &to, const string &amount, const string &asset_symbol_or_id, const string &memo) const
This method works just like transfer, except it always broadcasts and returns the transaction ID (hash) along with the signed transaction.
- Parameters:
from – the name or id of the account sending the funds
to – the name or id of the account receiving the funds
amount – the amount to send (in nominal units — to send half of a BTS, specify 0.5)
asset_symbol_or_id – the symbol or id of the asset to send
memo – a memo to attach to the transaction. The memo will be encrypted in the transaction and readable for the receiver. There is no length limit other than the limit imposed by maximum transaction size, but transaction increase with transaction size
- Returns:
the transaction ID (hash) along with the signed transaction transferring funds
whitelist_account
-
signed_transaction graphene::wallet::wallet_api::whitelist_account(const string &authorizing_account, const string &account_to_list, account_whitelist_operation::account_listing new_listing_status, bool broadcast = false) const
Whitelist and blacklist accounts, primarily for transacting in whitelisted assets.
Accounts can freely specify opinions about other accounts, in the form of either whitelisting or blacklisting them. This information is used in chain validation only to determine whether an account is authorized to transact in an asset type which enforces a whitelist, but third parties can use this information for other uses as well, as long as it does not conflict with the use of whitelisted assets.
An asset which enforces a whitelist specifies a list of accounts to maintain its whitelist, and a list of accounts to maintain its blacklist. In order for a given account A to hold and transact in a whitelisted asset S, A must be whitelisted by at least one of S’s whitelist_authorities and blacklisted by none of S’s blacklist_authorities. If A receives a balance of S, and is later removed from the whitelist(s) which allowed it to hold S, or added to any blacklist S specifies as authoritative, A’s balance of S will be frozen until A’s authorization is reinstated.
- Parameters:
authorizing_account – the account who is doing the whitelisting
account_to_list – the account being whitelisted
new_listing_status – the new whitelisting status
broadcast – true to broadcast the transaction on the network
- Returns:
the signed transaction changing the whitelisting status
get_vesting_balances
-
vector<vesting_balance_object_with_info> graphene::wallet::wallet_api::get_vesting_balances(const string &account_name) const
Get information about a vesting balance object or vesting balance objects owned by an account.
- Parameters:
account_name – An account name, account ID, or vesting balance object ID.
- Returns:
a list of vesting balance objects with additional info
withdraw_vesting
-
signed_transaction graphene::wallet::wallet_api::withdraw_vesting(const string &witness_name, const string &amount, const string &asset_symbol_or_id, bool broadcast = false) const
Withdraw a vesting balance.
- Parameters:
witness_name – The account name of the witness, also accepts account ID or vesting balance ID type.
amount – The amount to withdraw.
asset_symbol_or_id – The symbol or id of the asset to withdraw.
broadcast – true if you wish to broadcast the transaction
- Returns:
the signed transaction
get_account
-
account_object graphene::wallet::wallet_api::get_account(const string &account_name_or_id) const
Returns information about the given account.
- Parameters:
account_name_or_id – the name or ID of the account to provide information about
- Returns:
the public account data stored in the blockchain
get_account_id
-
account_id_type graphene::wallet::wallet_api::get_account_id(const string &account_name_or_id) const
Lookup the id of a named account.
- Parameters:
account_name_or_id – the name or ID of the account to look up
- Returns:
the id of the named account
get_account_history
-
vector<operation_detail> graphene::wallet::wallet_api::get_account_history(const string &account_name_or_id, uint32_t limit) const
Returns the most recent operations on the named account.
This returns a list of operation history objects, which describe activity on the account.
- Parameters:
account_name_or_id – the name or id of the account
limit – the number of entries to return (starting from the most recent)
- Returns:
a list of
operation_history_objects
approve_proposal
-
signed_transaction graphene::wallet::wallet_api::approve_proposal(const string &fee_paying_account, const string &proposal_id, const approval_delta &delta, bool broadcast) const
Approve or disapprove a proposal.
- Parameters:
fee_paying_account – The account paying the fee for the op.
proposal_id – The proposal to modify.
delta – Members contain approvals to create or remove. In JSON you can leave empty members undefined.
broadcast – true if you wish to broadcast the transaction
- Returns:
the signed version of the transaction
Trading Calls
sell_asset
-
signed_transaction graphene::wallet::wallet_api::sell_asset(const string &seller_account, const string &amount_to_sell, const string &symbol_or_id_to_sell, const string &min_to_receive, const string &symbol_or_id_to_receive, uint32_t timeout_sec = 0, bool fill_or_kill = false, bool broadcast = false) const
Place a limit order attempting to sell one asset for another.
Buying and selling are the same operation on BitShares. If you want to buy BTS with USD, you should sell USD for BTS.
The blockchain will attempt to sell the
symbol_or_id_to_sell
for as muchsymbol_or_id_to_receive
as possible, as long as the price is at leastmin_to_receive
/amount_to_sell
.In addition to the transaction fees, market fees will apply as specified by the issuer of both the selling asset and the receiving asset as a percentage of the amount exchanged.
If either the selling asset or the receiving asset is whitelist restricted, the order will only be created if the seller is on the whitelist of the restricted asset type.
Market orders are matched in the order they are included in the block chain.
- Todo:
Document default/max expiration time
- Parameters:
seller_account – the account providing the asset being sold, and which will receive the proceeds of the sale.
amount_to_sell – the amount of the asset being sold to sell (in nominal units)
symbol_or_id_to_sell – the symbol or id of the asset to sell
min_to_receive – the minimum amount you are willing to receive in return for selling the entire amount_to_sell
symbol_or_id_to_receive – the symbol or id of the asset you wish to receive
timeout_sec – if the order does not fill immediately, this is the length of time the order will remain on the order books before it is cancelled and the un-spent funds are returned to the seller’s account
fill_or_kill – if true, the order will only be included in the blockchain if it is filled immediately. if false, an open order will be left on the books to fill any amount that cannot be filled immediately.
broadcast – true to broadcast the transaction on the network
- Returns:
the signed transaction selling the funds
borrow_asset
-
signed_transaction graphene::wallet::wallet_api::borrow_asset(const string &borrower, const string &amount_to_borrow, const string &asset_symbol_or_id, const string &amount_of_collateral, bool broadcast = false) const
Borrow an asset or update the debt/collateral ratio for the loan.
This is the first step in shorting an asset. Call
sell_asset()
to complete the short.- Parameters:
borrower – the name or id of the account associated with the transaction.
amount_to_borrow – the amount of the asset being borrowed. Make this value negative to pay back debt.
asset_symbol_or_id – the symbol or id of the asset being borrowed.
amount_of_collateral – the amount of the backing asset to add to your collateral position. Make this negative to claim back some of your collateral. The backing asset is defined in the
bitasset_options
for the asset being borrowed.broadcast – true to broadcast the transaction on the network
- Returns:
the signed transaction borrowing the asset
cancel_order
-
signed_transaction graphene::wallet::wallet_api::cancel_order(const limit_order_id_type &order_id, bool broadcast = false) const
Cancel an existing order
- Parameters:
order_id – the id of order to be cancelled
broadcast – true to broadcast the transaction on the network
- Returns:
the signed transaction canceling the order
settle_asset
-
signed_transaction graphene::wallet::wallet_api::settle_asset(const string &account_to_settle, const string &amount_to_settle, const string &symbol_or_id, bool broadcast = false) const
Schedules a market-issued asset for automatic settlement.
Holders of market-issued assests may request a forced settlement for some amount of their asset. This means that the specified sum will be locked by the chain and held for the settlement period, after which time the chain will choose a margin posision holder and buy the settled asset using the margin’s collateral. The price of this sale will be based on the feed price for the market-issued asset being settled. The exact settlement price will be the feed price at the time of settlement with an offset in favor of the margin position, where the offset is a blockchain parameter set in the asset’s bitasset options.
- Parameters:
account_to_settle – the name or id of the account owning the asset
amount_to_settle – the amount of the asset to schedule for settlement
symbol_or_id – the symbol or id of the asset to settle
broadcast – true to broadcast the transaction on the network
- Returns:
the signed transaction settling the named asset
get_market_history
-
vector<bucket_object> graphene::wallet::wallet_api::get_market_history(const string &symbol, const string &symbol2, uint32_t bucket, const time_point_sec &start, const time_point_sec &end) const
Get OHLCV data of a trading pair in a time range.
- Parameters:
symbol – symbol or ID of the base asset
symbol2 – symbol or ID of the quote asset
bucket – length of each time bucket in seconds.
start – the start of a time range, E.G. “2018-01-01T00:00:00”
end – the end of the time range
- Returns:
A list of OHLCV data, in “least recent first” order.
get_limit_orders
-
vector<limit_order_object> graphene::wallet::wallet_api::get_limit_orders(const string &a, const string &b, uint32_t limit) const
Get limit orders in a given market.
- Parameters:
a – symbol or ID of asset being sold
b – symbol or ID of asset being purchased
limit – Maximum number of orders to retrieve
- Returns:
The limit orders, ordered from least price to greatest
get_call_orders
-
vector<call_order_object> graphene::wallet::wallet_api::get_call_orders(const string &asset_symbol_or_id, uint32_t limit) const
Get call orders (aka margin positions) for a given asset.
- Parameters:
asset_symbol_or_id – symbol or ID of the debt asset
limit – Maximum number of orders to retrieve
- Returns:
The call orders, ordered from earliest to be called to latest
get_settle_orders
-
vector<force_settlement_object> graphene::wallet::wallet_api::get_settle_orders(const string &a, uint32_t limit) const
Get forced settlement orders in a given asset.
- Parameters:
a – Symbol or ID of asset being settled
limit – Maximum number of orders to retrieve
- Returns:
The settle orders, ordered from earliest settlement date to latest
Asset Calls
list_assets
-
vector<extended_asset_object> graphene::wallet::wallet_api::list_assets(const string &lowerbound, uint32_t limit) const
Lists all assets registered on the blockchain.
To list all assets, pass the empty string
""
for the lowerbound to start at the beginning of the list, and iterate as necessary.- Parameters:
lowerbound – the symbol of the first asset to include in the list.
limit – the maximum number of assets to return (max: 100)
- Returns:
the list of asset objects, ordered by symbol
create_asset
-
signed_transaction graphene::wallet::wallet_api::create_asset(const string &issuer, const string &symbol, uint8_t precision, const asset_options &common, const optional<bitasset_options> &bitasset_opts, bool broadcast = false) const
Creates a new user-issued or market-issued asset.
Many options can be changed later using
update_asset()
Right now this function is difficult to use because you must provide raw JSON data structures for the options objects, and those include prices and asset ids.
- Parameters:
issuer – the name or id of the account who will pay the fee and become the issuer of the new asset. This can be updated later
symbol – the ticker symbol of the new asset
precision – the number of digits of precision to the right of the decimal point, must be less than or equal to 12
common – asset options required for all new assets. Note that 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.
bitasset_opts – options specific to BitAssets. This may be null unless the
market_issued
flag is set in common.flagsbroadcast – true to broadcast the transaction on the network
- Returns:
the signed transaction creating a new asset
update_asset
-
signed_transaction graphene::wallet::wallet_api::update_asset(const string &symbol_or_id, const optional<string> &new_issuer, const asset_options &new_options, bool broadcast = false) const
Update the core options on an asset. There are a number of options which all assets in the network use. These options are enumerated in the asset_object::asset_options struct. This command is used to update these options for an existing asset.
Note
This operation cannot be used to update BitAsset-specific options. For these options,
update_bitasset()
instead.- Parameters:
symbol_or_id – the symbol or id of the asset to update
new_issuer – if changing the asset’s issuer, the name or id of the new issuer. null if you wish to remain the issuer of the asset
new_options – the new asset_options object, which will entirely replace the existing options.
broadcast – true to broadcast the transaction on the network
- Returns:
the signed transaction updating the asset
update_bitasset
-
signed_transaction graphene::wallet::wallet_api::update_bitasset(const string &symbol_or_id, const bitasset_options &new_options, bool broadcast = false) const
Update the options specific to a BitAsset.
BitAssets have some options which are not relevant to other asset types. This operation is used to update those options an an existing BitAsset.
See also
- Parameters:
symbol_or_id – the symbol or id of the asset to update, which must be a market-issued asset
new_options – the new bitasset_options object, which will entirely replace the existing options.
broadcast – true to broadcast the transaction on the network
- Returns:
the signed transaction updating the bitasset
update_asset_feed_producers
-
signed_transaction graphene::wallet::wallet_api::update_asset_feed_producers(const string &symbol_or_id, const flat_set<string> &new_feed_producers, bool broadcast = false) const
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 command is used to specify which accounts may produce feeds for a given BitAsset.
- Parameters:
symbol_or_id – the symbol or id of the asset to update
new_feed_producers – a list of account names or ids which are authorized to produce feeds for the asset. this list will completely replace the existing list
broadcast – true to broadcast the transaction on the network
- Returns:
the signed transaction updating the bitasset’s feed producers
publish_asset_feed
-
signed_transaction graphene::wallet::wallet_api::publish_asset_feed(const string &publishing_account, const string &symbol_or_id, const price_feed &feed, bool broadcast = false) const
Publishes a price feed for the named asset.
Price feed providers use this command 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 object in this command 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 CORE/USD and the short limit price will be USD/CORE. The settlement price may be flipped either direction, as long as it is a ratio between the market-issued asset and its collateral.
- Parameters:
publishing_account – the account publishing the price feed
symbol_or_id – the symbol or id of the asset whose feed we’re publishing
feed – the price_feed object containing the three prices making up the feed
broadcast – true to broadcast the transaction on the network
- Returns:
the signed transaction updating the price feed for the given asset
issue_asset
-
signed_transaction graphene::wallet::wallet_api::issue_asset(const string &to_account, const string &amount, const string &symbol_or_id, const string &memo, bool broadcast = false) const
Create the specified amount of the specified asset and credit into the specified account.
- Parameters:
to_account – the name or id of the account to receive the new supply
amount – the amount to issue, in nominal units
symbol_or_id – the ticker symbol or id of the asset to issue
memo – a memo to include in the transaction, readable by the recipient
broadcast – true to broadcast the transaction on the network
- Returns:
the signed transaction issuing the new supply
get_asset
-
extended_asset_object graphene::wallet::wallet_api::get_asset(const string &asset_symbol_or_id) const
Returns information about the given asset.
- Parameters:
asset_symbol_or_id – the symbol or id of the asset in question
- Returns:
the information about the asset stored in the block chain
get_bitasset_data
-
asset_bitasset_data_object graphene::wallet::wallet_api::get_bitasset_data(const string &asset_symbol_or_id) const
Returns the BitAsset-specific data for a given asset. Market-issued assets’s behavior are determined both by their “BitAsset Data” and their basic asset data, as returned by
get_asset()
.- Parameters:
asset_symbol_or_id – the symbol or id of the BitAsset in question
- Returns:
the BitAsset-specific data for this asset
fund_asset_fee_pool
-
signed_transaction graphene::wallet::wallet_api::fund_asset_fee_pool(const string &from, const string &symbol_or_id, const string &amount, bool broadcast = false) const
Pay into the fee pool for the given asset.
User-issued assets can optionally have a pool of the core asset which is automatically used to pay transaction fees for any transaction using that asset (using the asset’s core exchange rate).
This command allows anyone to deposit the core asset into this fee pool.
- Parameters:
from – the name or id of the account sending the core asset
symbol_or_id – the symbol or id of the asset whose fee pool you wish to fund
amount – the amount of the core asset to deposit
broadcast – true to broadcast the transaction on the network
- Returns:
the signed transaction funding the fee pool
reserve_asset
-
signed_transaction graphene::wallet::wallet_api::reserve_asset(const string &from, const string &amount, const string &symbol_or_id, bool broadcast = false) const
Burns an amount of given asset to its reserve pool.
This command burns an amount of given asset to reduce the amount in circulation.
Note
you cannot burn market-issued assets.
- Parameters:
from – the account containing the asset you wish to burn
amount – the amount to burn, in nominal units
symbol_or_id – the symbol or id of the asset to burn
broadcast – true to broadcast the transaction on the network
- Returns:
the signed transaction burning the asset
global_settle_asset
-
signed_transaction graphene::wallet::wallet_api::global_settle_asset(const string &symbol_or_id, const price &settle_price, bool broadcast = false) const
Forces a global settling of the given asset (black swan or prediction markets).
In order to use this operation, asset_to_settle must have the
global_settle
permission setWhen this operation is executed all open margin positions are called at the settle price. A pool will be formed containing the collateral got from the margin positions. Users owning an amount of the asset may use
settle_asset()
to claim collateral instantly at the settle price from the pool. If this asset is used as backing for other bitassets, those bitassets will not be affected.Note
this operation is used only by the asset issuer.
- Parameters:
symbol_or_id – the symbol or id of the asset to globally settle
settle_price – the price at which to settle
broadcast – true to broadcast the transaction on the network
- Returns:
the signed transaction settling the named asset
Governance
create_committee_member
-
signed_transaction graphene::wallet::wallet_api::create_committee_member(const string &owner_account, const string &url, bool broadcast = false) const
Creates a committee_member object owned by the given account.
An account can have at most one committee_member object.
- Parameters:
owner_account – the name or id of the account which is creating the committee_member
url – a URL to include in the committee_member record in the blockchain. Clients may display this when showing a list of committee_members. May be blank.
broadcast – true to broadcast the transaction on the network
- Returns:
the signed transaction registering a committee_member
get_witness
-
witness_object graphene::wallet::wallet_api::get_witness(const string &owner_account) const
Returns information about the given witness.
- Parameters:
owner_account – the name or id of the witness account owner, or the id of the witness
- Returns:
the information about the witness stored in the block chain
get_committee_member
-
committee_member_object graphene::wallet::wallet_api::get_committee_member(const string &owner_account) const
Returns information about the given committee_member.
- Parameters:
owner_account – the name or id of the committee_member account owner, or the id of the committee_member
- Returns:
the information about the committee_member stored in the block chain
list_witnesses
-
map<string, witness_id_type, std::less<>> graphene::wallet::wallet_api::list_witnesses(const string &lowerbound, uint32_t limit) const
Lists all witnesses registered in the blockchain. This returns a list of all account names that own witnesses, and the associated witness id, sorted by name. This lists witnesses whether they are currently voted in or not.
Use the
lowerbound
and limit parameters to page through the list. To retrieve all witnesss, start by settinglowerbound
to the empty string""
, and then each iteration, pass the last witness name returned as thelowerbound
for the nextlist_witnesss()
call.- Parameters:
lowerbound – the name of the first witness to return. If the named witness does not exist, the list will start at the witness that comes after
lowerbound
limit – the maximum number of witnesss to return (max: 1000)
- Returns:
a list of witnesss mapping witness names to witness ids
list_committee_members
-
map<string, committee_member_id_type, std::less<>> graphene::wallet::wallet_api::list_committee_members(const string &lowerbound, uint32_t limit) const
Lists all committee_members registered in the blockchain. This returns a list of all account names that own committee_members, and the associated committee_member id, sorted by name. This lists committee_members whether they are currently voted in or not.
Use the
lowerbound
and limit parameters to page through the list. To retrieve all committee_members, start by settinglowerbound
to the empty string""
, and then each iteration, pass the last committee_member name returned as thelowerbound
for the nextlist_committee_members()
call.- Parameters:
lowerbound – the name of the first committee_member to return. If the named committee_member does not exist, the list will start at the committee_member that comes after
lowerbound
limit – the maximum number of committee_members to return (max: 1000)
- Returns:
a list of committee_members mapping committee_member names to committee_member ids
create_witness
-
signed_transaction graphene::wallet::wallet_api::create_witness(const string &owner_account, const string &url, bool broadcast = false) const
Creates a witness object owned by the given account.
An account can have at most one witness object.
- Parameters:
owner_account – the name or id of the account which is creating the witness
url – a URL to include in the witness record in the blockchain. Clients may display this when showing a list of witnesses. May be blank.
broadcast – true to broadcast the transaction on the network
- Returns:
the signed transaction registering a witness
update_witness
-
signed_transaction graphene::wallet::wallet_api::update_witness(const string &witness_name, const string &url, const string &block_signing_key, bool broadcast = false) const
Update a witness object owned by the given account.
- Parameters:
witness_name – The name of the witness’s owner account. Also accepts the ID of the owner account or the ID of the witness.
url – Same as for create_witness. The empty string makes it remain the same.
block_signing_key – The new block signing public key. The empty string makes it remain the same.
broadcast – true if you wish to broadcast the transaction.
- Returns:
the signed transaction
create_worker
Create a worker object.
- Parameters:
owner_account – The account which owns the worker and will be paid
work_begin_date – When the work begins
work_end_date – When the work ends
daily_pay – Amount of pay per day (NOT per maint interval)
name – Any text
url – Any text
worker_settings – {“type” : “burn”|”refund”|”vesting”, “pay_vesting_period_days” : x}
broadcast – true if you wish to broadcast the transaction.
- Returns:
the signed transaction
update_worker_votes
-
signed_transaction graphene::wallet::wallet_api::update_worker_votes(const string &account, const worker_vote_delta &delta, bool broadcast = false) const
Update your votes for workers
- Parameters:
account – The account which will pay the fee and update votes.
delta – {“vote_for” : […], “vote_against” : […], “vote_abstain” : […]}
broadcast – true if you wish to broadcast the transaction.
- Returns:
the signed transaction
vote_for_committee_member
-
signed_transaction graphene::wallet::wallet_api::vote_for_committee_member(const string &voting_account, const string &committee_member, bool approve, bool broadcast = false) const
Vote for a given committee_member.
An account can publish a list of all committee_members they approve of. This command allows you to add or remove committee_members from this list. Each account’s vote is weighted according to the number of voting stake owned by that account at the time the votes are tallied.
Note
you cannot vote against a committee_member, you can only vote for the committee_member or not vote for the committee_member.
- Parameters:
voting_account – the name or id of the account who is voting with their stake
committee_member – the name or id of the committee_member’s owner account
approve – true if you wish to vote in favor of that committee_member, false to remove your vote in favor of that committee_member
broadcast – true if you wish to broadcast the transaction
- Returns:
the signed transaction changing your vote for the given committee_member
vote_for_witness
-
signed_transaction graphene::wallet::wallet_api::vote_for_witness(const string &voting_account, const string &witness, bool approve, bool broadcast = false) const
Vote for a given witness.
An account can publish a list of all witnesses they approve of. This command allows you to add or remove witnesses from this list. Each account’s vote is weighted according to the number of voting stake owned by that account at the time the votes are tallied.
Note
you cannot vote against a witness, you can only vote for the witness or not vote for the witness.
- Parameters:
voting_account – the name or id of the account who is voting with their stake
witness – the name or id of the witness’ owner account
approve – true if you wish to vote in favor of that witness, false to remove your vote in favor of that witness
broadcast – true if you wish to broadcast the transaction
- Returns:
the signed transaction changing your vote for the given witness
set_voting_proxy
-
signed_transaction graphene::wallet::wallet_api::set_voting_proxy(const string &account_to_modify, const optional<string> &voting_account, bool broadcast = false) const
Set the voting proxy for an account.
If a user does not wish to take an active part in voting, they can choose to allow another account to vote their stake.
Setting a vote proxy does not remove your previous votes from the blockchain, they remain there but are ignored. If you later null out your vote proxy, your previous votes will take effect again.
This setting can be changed at any time.
- Parameters:
account_to_modify – the name or id of the account to update
voting_account – the name or id of an account authorized to vote account_to_modify’s stake, or null to vote your own stake
broadcast – true if you wish to broadcast the transaction
- Returns:
the signed transaction changing your vote proxy settings
set_desired_witness_and_committee_member_count
-
signed_transaction graphene::wallet::wallet_api::set_desired_witness_and_committee_member_count(const string &account_to_modify, uint16_t desired_number_of_witnesses, uint16_t desired_number_of_committee_members, bool broadcast = false) const
Set your vote for the number of witnesses and committee_members in the system.
Each account can voice their opinion on how many committee_members and how many witnesses there should be in the active committee_member/active witness list. These are independent of each other. You must vote your approval of at least as many committee_members or witnesses as you claim there should be (you can’t say that there should be 20 committee_members but only vote for 10).
There are maximum values for each set in the blockchain parameters (currently defaulting to 1001).
This setting can be changed at any time. If your account has a voting proxy set, your preferences will be ignored.
- Parameters:
account_to_modify – the name or id of the account to update
desired_number_of_witnesses – desired number of active witnesses
desired_number_of_committee_members – desired number of active committee members
broadcast – true if you wish to broadcast the transaction
- Returns:
the signed transaction changing your vote proxy settings
propose_parameter_change
-
signed_transaction graphene::wallet::wallet_api::propose_parameter_change(const string &proposing_account, const time_point_sec &expiration_time, const variant_object &changed_values, bool broadcast = false) const
Creates a transaction to propose a parameter change.
Multiple parameters can be specified if an atomic change is desired.
- Parameters:
proposing_account – The account paying the fee to propose the tx
expiration_time – Timestamp specifying when the proposal will either take effect or expire.
changed_values – The values to change. All other chain parameters are filled in with default values
broadcast – true if you wish to broadcast the transaction
- Returns:
the signed version of the transaction
propose_fee_change
-
signed_transaction graphene::wallet::wallet_api::propose_fee_change(const string &proposing_account, const time_point_sec &expiration_time, const variant_object &changed_values, bool broadcast = false) const
Propose a fee change.
- Parameters:
proposing_account – The account paying the fee to propose the tx
expiration_time – Timestamp specifying when the proposal will either take effect or expire.
changed_values – Map of operation type to new fee. Operations may be specified by name or ID. The “scale” key changes the scale. All other operations will maintain current values.
broadcast – true if you wish to broadcast the transaction
- Returns:
the signed version of the transaction
Privacy Mode
set_key_label
-
bool graphene::wallet::wallet_api::set_key_label(const public_key_type &key, const string &label) const
These methods are used for stealth transfers This method can be used to set a label for a public key
Note
No two keys can have the same label.
- Parameters:
key – a public key
label – a user-defined string as label
- Returns:
true if the label was set, otherwise false
get_key_label
-
string graphene::wallet::wallet_api::get_key_label(const public_key_type &key) const
Get label of a public key.
- Parameters:
key – a public key
- Returns:
the label if already set by
set_key_label()
, or an empty string if not set
get_public_key
-
public_key_type graphene::wallet::wallet_api::get_public_key(const string &label) const
Get the public key associated with a given label.
- Parameters:
label – a label
- Returns:
the public key associated with the given label
get_blind_accounts
-
map<string, public_key_type, std::less<>> graphene::wallet::wallet_api::get_blind_accounts() const
Get all blind accounts.
- Returns:
all blind accounts
get_my_blind_accounts
-
map<string, public_key_type, std::less<>> graphene::wallet::wallet_api::get_my_blind_accounts() const
Get all blind accounts for which this wallet has the private key.
- Returns:
all blind accounts for which this wallet has the private key
get_blind_balances
-
vector<asset> graphene::wallet::wallet_api::get_blind_balances(const string &key_or_label) const
Return the total balances of all blinded commitments that can be claimed by the given account key or label.
- Parameters:
key_or_label – a public key in Base58 format or a label
- Returns:
the total balances of all blinded commitments that can be claimed by the given account key or label
create_blind_account
-
public_key_type graphene::wallet::wallet_api::create_blind_account(const string &label, const string &brain_key) const
Generates a new blind account for the given brain key and assigns it the given label.
- Parameters:
label – a label
brain_key – the brain key to be used to generate a new blind account
- Returns:
the public key of the new account
transfer_to_blind
-
blind_confirmation graphene::wallet::wallet_api::transfer_to_blind(const string &from_account_name_or_id, const string &asset_symbol_or_id, const vector<pair<string, string>> &to_amounts, bool broadcast = false) const
Transfers a public balance from
from_account_name_or_id
to one or more blinded balances using a stealth transfer.- Parameters:
from_account_name_or_id – name or ID of an account to transfer from
asset_symbol_or_id – symbol or ID of the asset to be transferred
to_amounts – map from key or label to amount
broadcast – true to broadcast the transaction on the network
- Returns:
a blind confirmation
transfer_from_blind
-
blind_confirmation graphene::wallet::wallet_api::transfer_from_blind(const string &from_blind_account_key_or_label, const string &to_account_name_or_id, const string &amount, const string &asset_symbol_or_id, bool broadcast = false) const
Transfers funds from a set of blinded balances to a public account balance.
- Parameters:
from_blind_account_key_or_label – a public key in Base58 format or a label to transfer from
to_account_name_or_id – name or ID of an account to transfer to
amount – the amount to be transferred
asset_symbol_or_id – symbol or ID of the asset to be transferred
broadcast – true to broadcast the transaction on the network
- Returns:
a blind confirmation
blind_transfer
-
blind_confirmation graphene::wallet::wallet_api::blind_transfer(const string &from_key_or_label, const string &to_key_or_label, const string &amount, const string &symbol_or_id, bool broadcast = false) const
Transfer from one set of blinded balances to another.
- Parameters:
from_key_or_label – a public key in Base58 format or a label to transfer from
to_key_or_label – a public key in Base58 format or a label to transfer to
amount – the amount to be transferred
symbol_or_id – symbol or ID of the asset to be transferred
broadcast – true to broadcast the transaction on the network
- Returns:
a blind confirmation
blind_history
-
vector<blind_receipt> graphene::wallet::wallet_api::blind_history(const string &key_or_account) const
Get all blind receipts to/form a particular account
- Parameters:
key_or_account – a public key in Base58 format or an account
- Returns:
all blind receipts to/form the account
receive_blind_transfer
-
blind_receipt graphene::wallet::wallet_api::receive_blind_transfer(const string &confirmation_receipt, const string &opt_from, const string &opt_memo) const
Given a confirmation receipt, this method will parse it for a blinded balance and confirm that it exists in the blockchain. If it exists then it will report the amount received and who sent it.
- Parameters:
confirmation_receipt – a base58 encoded stealth confirmation
opt_from – if not empty and the sender is a unknown public key, then the unknown public key will be given the label
opt_from
opt_memo – a self-defined label for this transfer to be saved in local wallet file
- Returns:
a blind receipt
Blockchain Inspection
get_block
-
optional<signed_block_with_info> graphene::wallet::wallet_api::get_block(uint32_t num) const
Returns info about a specified block.
- Parameters:
num – height of the block to retrieve
- Returns:
info about the block, or null if not found
get_account_count
-
uint64_t graphene::wallet::wallet_api::get_account_count() const
Returns the number of accounts registered on the blockchain
- Returns:
the number of registered accounts
get_global_properties
-
global_property_object graphene::wallet::wallet_api::get_global_properties() const
Returns the block chain’s slowly-changing settings. This object contains all of the properties of the blockchain that are fixed or that change only once per maintenance interval (daily) such as the current list of witnesses, committee_members, block interval, etc.
See also
get_dynamic_global_properties()
for frequently changing properties- Returns:
the global properties
get_dynamic_global_properties
-
dynamic_global_property_object graphene::wallet::wallet_api::get_dynamic_global_properties() const
Returns the block chain’s rapidly-changing properties. The returned object contains information that changes every block interval such as the head block number, the next witness, etc.
See also
get_global_properties()
for less-frequently changing properties- Returns:
the dynamic global properties
get_object
-
variant graphene::wallet::wallet_api::get_object(const object_id_type &id) const
Returns the blockchain object corresponding to the given id.
This generic function can be used to retrieve any object from the blockchain that is assigned an ID. Certain types of objects have specialized convenience functions to return their objects — e.g., assets have
get_asset()
, accounts haveget_account()
, but this function will work for any object.- Parameters:
id – the id of the object to return
- Returns:
the requested object
Transaction Builder
begin_builder_transaction
-
transaction_handle_type graphene::wallet::wallet_api::begin_builder_transaction() const
Create a new transaction builder.
- Returns:
handle of the new transaction builder
add_operation_to_builder_transaction
-
void graphene::wallet::wallet_api::add_operation_to_builder_transaction(transaction_handle_type transaction_handle, const operation &op) const
Append a new operation to a transaction builder.
- Parameters:
transaction_handle – handle of the transaction builder
op – the operation in JSON format
replace_operation_in_builder_transaction
-
void graphene::wallet::wallet_api::replace_operation_in_builder_transaction(transaction_handle_type handle, uint32_t operation_index, const operation &new_op) const
Replace an operation in a transaction builder with a new operation.
- Parameters:
handle – handle of the transaction builder
operation_index – the index of the old operation in the builder to be replaced
new_op – the new operation in JSON format
set_fees_on_builder_transaction
-
asset graphene::wallet::wallet_api::set_fees_on_builder_transaction(transaction_handle_type handle, const string &fee_asset = GRAPHENE_SYMBOL) const
Calculate and update fees for the operations in a transaction builder.
- Parameters:
handle – handle of the transaction builder
fee_asset – symbol or ID of an asset that to be used to pay fees
- Returns:
total fees
preview_builder_transaction
-
transaction graphene::wallet::wallet_api::preview_builder_transaction(transaction_handle_type handle) const
Show content of a transaction builder.
- Parameters:
handle – handle of the transaction builder
- Returns:
a transaction
sign_builder_transaction
-
signed_transaction graphene::wallet::wallet_api::sign_builder_transaction(transaction_handle_type transaction_handle, bool broadcast = true) const
Sign the transaction in a transaction builder and optionally broadcast to the network.
- Parameters:
transaction_handle – handle of the transaction builder
broadcast – whether to broadcast the signed transaction to the network
- Returns:
a signed transaction
propose_builder_transaction
-
signed_transaction graphene::wallet::wallet_api::propose_builder_transaction(transaction_handle_type handle, const time_point_sec &expiration = time_point::now() + fc::minutes(1), uint32_t review_period_seconds = 0, bool broadcast = true) const
Create a proposal containing the operations in a transaction builder (create a new proposal_create operation, then replace the transaction builder with the new operation), then sign the transaction and optionally broadcast to the network.
Note: this command is buggy because unable to specify proposer. It will be deprecated in a future release. Please use
propose_builder_transaction2()
instead.- Parameters:
handle – handle of the transaction builder
expiration – when the proposal will expire
review_period_seconds – review period of the proposal in seconds
broadcast – whether to broadcast the signed transaction to the network
- Returns:
a signed transaction
propose_builder_transaction2
-
signed_transaction graphene::wallet::wallet_api::propose_builder_transaction2(transaction_handle_type handle, const string &account_name_or_id, const time_point_sec &expiration = time_point::now() + fc::minutes(1), uint32_t review_period_seconds = 0, bool broadcast = true) const
Create a proposal containing the operations in a transaction builder (create a new proposal_create operation, then replace the transaction builder with the new operation), then sign the transaction and optionally broadcast to the network.
- Parameters:
handle – handle of the transaction builder
account_name_or_id – name or ID of the account who would pay fees for creating the proposal
expiration – when the proposal will expire
review_period_seconds – review period of the proposal in seconds
broadcast – whether to broadcast the signed transaction to the network
- Returns:
a signed transaction
remove_builder_transaction
-
void graphene::wallet::wallet_api::remove_builder_transaction(transaction_handle_type handle) const
Destroy a transaction builder.
- Parameters:
handle – handle of the transaction builder
serialize_transaction
-
string graphene::wallet::wallet_api::serialize_transaction(const signed_transaction &tx) const
Converts a signed_transaction in JSON form to its binary representation.
- Parameters:
tx – the transaction to serialize
- Returns:
the binary form of the transaction, hex encoded.
sign_transaction
-
signed_transaction graphene::wallet::wallet_api::sign_transaction(const signed_transaction &tx, bool broadcast = false) const
Signs a transaction.
Given a fully-formed transaction that is only lacking signatures, this signs the transaction with the necessary keys and optionally broadcasts the transaction
- Parameters:
tx – the transaction to be signed
broadcast – true if you wish to broadcast the transaction
- Returns:
the signed version of the transaction
get_prototype_operation
-
operation graphene::wallet::wallet_api::get_prototype_operation(const string &operation_type) const
Returns an uninitialized object representing a given blockchain operation.
This returns a default-initialized object of the given type. It can be used during early development of the wallet when we don’t yet have custom commands for creating all of the operations the blockchain supports.
Any operation the blockchain supports can be created using the transaction builder’s
add_operation_to_builder_transaction()
, but to do that from the CLI you need to know what the JSON form of the operation looks like. This will give you a template you can fill in. It’s better than nothing.- Parameters:
operation_type – the type of operation to return, must be one of the operations defined in
graphene/protocol/operations.hpp
(e.g., “global_parameters_update_operation”)- Returns:
a default-constructed operation of the given type