Database API
The database API is available from the full node via web-sockets.

Objects

get_objects

Get the objects corresponding to the provided IDs.
If any of the provided IDs does not map to an object, a null variant is returned in its position.
1
fc::variants graphene::app::database_api::get_objects(
2
const vector<object_id_type> &ids,
3
optional<bool> subscribe = optional<bool>())const
Copied!
Parameters
Return
  • ids: IDs of the objects to retrieve
  • subscribe: true to subscribe to the queried objects; false to not subscribe; null to subscribe or not subscribe according to current auto-subscription setting (see set_auto_subscription)
The objects retrieved, in the order they are mentioned in ids.

Subscriptions

set_subscribe_callback

Register a callback handle which then can be used to subscribe to object database changes.
Note: auto-subscription is enabled by default and can be disabled with set_auto_subscription
1
void graphene::app::database_api::set_subscribe_callback(
2
std::function<void(const variant&)> cb,
3
bool notify_remove_create, )
Copied!
Parameters
  • cb: The callback handle to register
  • notify_remove_create: Whether subscribe to universal object creation and removal events. If this is set to true, the API server will notify all newly created objects and ID of all newly removed objects to the client, no matter whether client subscribed to the objects. By default, API servers don’t allow subscribing to universal events, which can be changed on server startup.

set_pending_transaction_callback

Register a callback handle which will get notified when a transaction is pushed to database.
Note: A transaction can be pushed to the database and be popped from the database several times while processing, before and after,, included in a block. Every time a push is done, the client will be notified.
1
void graphene::app::database_api::set_pending_transaction_callback(
2
std::function<void(const variant &signed_transaction_object)> cb)
Copied!
Parameters
  • cb: The callback handle to register

set_block_applied_callback

Register a callback handle which will get notified when a block is pushed to database.
1
void graphene::app::database_api::set_block_applied_callback(
2
std::function<void(const variant &block_id)> cb)
Copied!
Parameters
  • cb: The callback handle to register

cancel_all_subscriptions

Stop receiving any notifications.
This unsubscribes from all subscribed markets and objects.
1
void graphene::app::database_api::cancel_all_subscriptions()
Copied!

Blocks and transactions

get_block_header

Retrieve a block header.
1
optional<block_header> graphene::app::database_api::get_block_header(
2
uint32_t block_num)const
Copied!
Parameters
Return
  • block_num: Height of the block whose header should be returned
  • The header of the referenced block, or null if no matching block was foun

get_block

Retrieve a full, signed block.
1
optional<signed_block> graphene::app::database_api::get_block(
2
uint32_t block_num)const
Copied!
Parameters
Return
  • block_num: Height of the block to be returned
The referenced block, or null if no matching block was found.

get_transaction

Fetch an individual transaction.
1
processed_transaction graphene::app::database_api::get_transaction(
2
uint32_t block_num, uint32_t trx_in_block)const
Copied!
Parameters
Return
  • block_num: height of the block to fetch
  • trx_in_block: the index (sequence number) of the transaction in the block, starts from 0
The transaction at the given position.

get_recent_transaction_by_id

1
optional<signed_transaction> graphene::app::database_api::get_recent_transaction_by_id(
2
const transaction_id_type &txid)const
Copied!
Parameters
Return
  • txid: hash of the transaction
The corresponding transaction if found, or null if not found.
If the transaction has not expired, this method will return the transaction for the given ID or it will return NULL if it is not known. Just because it is not known does not mean it wasn’t included in the blockchain.

Globals

get_chain_properties

Retrieve the graphene::chain::chain_property_object associated with the chain.
1
chain_property_object graphene::app::database_api::get_chain_properties()const
Copied!

get_global_properties

1
global_property_object graphene::app::database_api::get_global_properties()const
Copied!

get_config

Retrieve compile-time constants.
1
fc::variant_object graphene::app::database_api::get_config()const
Copied!

get_chain_id

Get the chain ID.
1
chain_id_type graphene::app::database_api::get_chain_id()cons
Copied!

get_dynamic_global_properties

1
dynamic_global_property_object graphene::app::database_api::get_dynamic_global_properties()const
Copied!

Keys

get_key_references

Get all accounts that refer to the specified public keys in their owner authority, active authorities or memo key.
1
vector<flat_set<account_id_type>> graphene::app::database_api::get_key_references(
2
vector<public_key_type> keys)const
Copied!
Parameters
Return
  • keys: a list of public keys to query
ID of all accounts that refer to the specified keys.

Accounts

get_accounts

Get a list of accounts by names or IDs.
This function has semantics identical toget_objects****
1
vector<optional<account_object>> graphene::app::database_api::get_accounts(
2
const vector<std::string> &account_names_or_ids,
3
optional<bool> subscribe = optional<bool>())const
Copied!
Parameters
Return
  • account_names_or_ids: names or IDs of the accounts to retrieve
  • subscribe: true to subscribe to the queried account objects; false to not subscribe; null to subscribe or not subscribe according to current auto-subscription setting (see set_auto_subscription)
The accounts corresponding to the provided names or IDs.

get_full_accounts

Fetch all objects relevant to the specified accounts and optionally subscribe to updates.
This function fetches all relevant objects for the given accounts, and subscribes to updates to the given accounts. If any of the strings innames_or_ids cannot be tied to an account, that input will be ignored. All other accounts will be retrieved and subscribed.
1
std::map<string, full_account> graphene::app::database_api::get_full_accounts(
2
const vector<string> &names_or_ids,
3
optional<bool> subscribe = optional<bool>())
Copied!
Parameters
Return
  • names_or_ids: Each item must be the name or ID of an account to retrieve
  • subscribe: true to subscribe to the queried full account objects; false to not subscribe; null to subscribe or not subscribe according to current auto-subscription setting (see set_auto_subscription)
Map of string from names_or_ids to the corresponding account.

get_account_by_name

Get info of an account by name.
1
optional<account_object> graphene::app::database_api::get_account_by_name(
2
string name)const
Copied!
Parameters
Return
  • name: Name of the account to retrieve
The account holding the provided name.

get_account_references

Get all accounts that refer to the specified account in their owner or active authorities.
1
vector<account_id_type> graphene::app::database_api::get_account_references(
2
const std::string account_name_or_id)const
Copied!
Parameters
Return
  • account_name_or_id: Account name or ID to query
All accounts that refer to the specified account in their owner or active authorities

lookup_account_names

Get a list of accounts by name.
This function has semantics identical to get_objects, but doesn’t subscribe
1
vector<optional<account_object>> graphene::app::database_api::lookup_account_names(
2
const vector<string> &account_names)const
Copied!
Parameters
Return
  • account_names: Names of the accounts to retrieve
The accounts holding the provided names.

lookup_accounts

Get names and IDs for registered accounts.
Note: In addition to the common auto-subscription rules, this API will subscribe to the returned account only if limit is 1.
1
map<string, account_id_type> graphene::app::database_api::lookup_accounts(
2
const string &lower_bound_name,
3
uint32_t limit,
4
optional<bool> subscribe = optional<bool>())const
Copied!
Parameters
Return
  • lower_bound_name: Lower bound of the first name to return
  • limit: Maximum number of results to return must not exceed 1000
  • subscribe: true to subscribe to the queried account objects; false to not subscribe; null to subscribe or not subscribe according to current auto-subscription setting (see set_auto_subscription).
Map of account names to corresponding IDs.

get_account_count

Get the total number of accounts registered with the blockchain.
1
uint64_t graphene::app::database_api::get_account_count()const
Copied!

Balances

get_account_balances

Get an account’s balances in various assets.
1
vector<asset> graphene::app::database_api::get_account_balances(
2
const std::string &account_name_or_id,
3
const flat_set<asset_id_type> &assets)const
Copied!
Parameters
Return
  • account_name_or_id: name or ID of the account to get balances for.
  • assets: IDs of the assets to get balances of; if empty, get all assets account has a balance in.
Balances of the account.

get_named_account_balances

Semantically equivalent to get_account_balances.
1
vector<asset> graphene::app::database_api::get_named_account_balances(
2
const std::string &name,
3
const flat_set<asset_id_type> &assets)const
Copied!
Parameters
Return
  • account_name_or_id: name or ID of the account to get balances for.
  • assets: IDs of the assets to get balances of; if empty, get all assets account has a balance in.
Balances of the account.

get_balance_objects

1
vector<balance_object> graphene::app::database_api::get_balance_objects(
2
const vector<address> &addrs)const
Copied!
Parameters
Return
  • addrs: a list of addresses
All unclaimed balance objects for the addresses.

get_vested_balances

Calculate how much assets in the given balance objects are able to be claimed at current head block time.
1
vector<asset> graphene::app::database_api::get_vested_balances(
2
const vector<balance_id_type> &objs)const
Copied!
Parameters
Return
  • objs: a list of balance object IDs
A list indicating how much asset in each balance object is available to be claimed.

get_vesting_balances

Return all vesting balance objects owned by an account.
1
vector<vesting_balance_object> graphene::app::database_api::get_vesting_balances(
2
const std::string account_name_or_id)const
Copied!
Parameters
Return
  • account_name_or_id: name or ID of an account
All vesting balance objects owned by the account.

Assets

get_assets

Get a list of assets by symbol names or IDs.
Semantically equivalent to get_objects.
1
vector<optional<extended_asset_object>> graphene::app::database_api::get_assets(
2
const vector<std::string> &asset_symbols_or_ids,
3
optional<bool> subscribe = optional<bool>())const
Copied!
Parameters
Return
  • asset_symbols_or_ids: symbol names or IDs of the assets to retrieve
  • subscribe: true to subscribe to the queried asset objects; false to not subscribe; null to subscribe or not subscribe according to current auto-subscription setting (see set_auto_subscription)
The assets corresponding to the provided symbol names or IDs.

list_assets

Get assets alphabetically by symbol name.
1
vector<extended_asset_object> graphene::app::database_api::list_assets(
2
const string &lower_bound_symbol,
3
uint32_t limit)const
Copied!
Parameters
Return
  • lower_bound_symbol: Lower bound of symbol names to retrieve
  • limit: Maximum number of assets to fetch (must not exceed 101)
The assets found.

lookup_asset_symbols

Get a list of assets by symbol names or IDs.
Semantically equivalent to get_objects, but doesn’t subscribe.
1
vector<optional<extended_asset_object>> graphene::app::database_api::lookup_asset_symbols(
2
const vector<string> &symbols_or_ids)const
Copied!
Parameters
Return
  • symbols_or_ids: symbol names or IDs of the assets to retrieve
The assets corresponding to the provided symbols or IDs

Markets / Feeds

get_order_book

Returns the order book for the market base
1
order_book graphene::app::database_api::get_order_book(
2
const string &base,
3
const string &quote,
4
unsigned limit = 50)const
Copied!
Parameters
Return
  • base: symbol name or ID of the base asset
  • quote: symbol name or ID of the quote asset
  • limit: depth of the order book to retrieve, for bids and asks each, capped at 50
Order book of the market.

get_limit_orders

Get limit orders in a given market.
1
vector<limit_order_object> graphene::app::database_api::get_limit_orders(
2
std::string a,
3
std::string b,
4
uint32_t limit)const
Copied!
Parameters
Return
  • a: symbol or ID of asset being sold
  • b: symbol or ID of asset being purchased
  • limit: Maximum number of orders to retrieve
The limit orders, ordered from least price to greatest.

get_call_orders

Get call orders (aka margin positions) for a given asset.
1
vector<call_order_object> graphene::app::database_api::get_call_orders(
2
const std::string &a,
3
uint32_t limit)const
Copied!
Parameters
Return
  • a: symbol name or ID of the debt asset
  • limit: Maximum number of orders to retrieve
The call orders, ordered from earliest to be called to latest

get_settle_orders

Get forced settlement orders in a given asset.
1
vector<force_settlement_object> graphene::app::database_api::get_settle_orders(
2
const std::string &a,
3
uint32_t limit)const
Copied!
Parameters
Return
  • a: Symbol or ID of asset being settled
  • limit: Maximum number of orders to retrieve
The settle orders, ordered from earliest settlement date to latest.

get_margin_positions

Get all open margin positions of a given account.
Similar to get_call_orders_by_account, but without pagination.
1
vector<call_order_object> graphene::app::database_api::get_margin_positions(
2
const std::string account_name_or_id)const
Copied!
Parameters
Return
  • account_name_or_id: name or ID of an account
All open margin positions of the account.

subscribe_to_market

Request notification when the active orders in the market between two assets changes.
Callback will be passed a variant containing a vector<pair<operation, operation_result>>.
The vector will contain, in order, the operations which changed the market, and their results
1
void graphene::app::database_api::subscribe_to_market(std::function<void(
2
const variant&)> callback,
3
const std::string &a,
4
const std::string &b, )
Copied!
Parameters
  • callback: Callback method which is called when the market changes
  • a: symbol name or ID of the first asset
  • b: symbol name or ID of the second asset

unsubscribe_from_market

Unsubscribe from updates to a given market.
1
void graphene::app::database_api::unsubscribe_from_market(
2
const std::string &a,
3
const std::string &b)
Copied!
Parameters
  • a: symbol name or ID of the first asset
  • b: symbol name or ID of the second asset

get_ticker

Returns the ticker for the market assetA:assetB.
1
market_ticker graphene::app::database_api::get_ticker(
2
const string &base,
3
const string &quote)const
Copied!
Parameters
Return
  • base: symbol name or ID of the base asset
  • quote: symbol name or ID of the quote asset
The market ticker for the past 24 hours.

get_24_volume

Returns the 24 hour volume for the market assetA:assetB.
1
market_volume graphene::app::database_api::get_24_volume(
2
const string &base,
3
const string &quote)const
Copied!
Parameters
Return
  • base: symbol name or ID of the base asset
  • quote: symbol name or ID of the quote asset
The market volume over the past 24 hours.

get_trade_history

Returns recent trades for the market base:quote, ordered by time, most recent first.
Note: Currently, timezone offsets are not supported. The time must be UTC.
The range is [stop, start). In case there are more than 100 trades occurring in the same second, this API only returns the first 100 records; use get_trade_history_by_sequence to query for the rest.
1
vector<market_trade> graphene::app::database_api::get_trade_history(
2
const string &base,
3
const string &quote,
4
fc::time_point_sec start,
5
fc::time_point_sec stop,
6
unsigned limit = 100)const
Copied!
Parameters
Return
  • base: symbol or ID of the base asset
  • quote: symbol or ID of the quote asset
  • start: Start time as a UNIX timestamp, the latest trade to retrieve
  • stop: Stop time as a UNIX timestamp, the earliest trade to retrieve
  • limit: Number of transactions to retrieve, capped at 100.
Recent transactions in the market

Witnesses

get_witnesses

Get a list of witnesses by ID.
Semantically equivalent to get_objects, but doesn’t subscribe.
1
vector<optional<witness_object>> graphene::app::database_api::get_witnesses(
2
const vector<witness_id_type> &witness_ids)const
Copied!
Parameters
Return
  • witness_ids: IDs of the witnesses to retrieve
The witnesses corresponding to the provided IDs.

get_witness_by_account

Get the witness owned by a given account.
1
fc::optional<witness_object> graphene::app::database_api::get_witness_by_account(
2
const std::string account_name_or_id)const
Copied!
Parameters
Return
  • account_name_or_id: The name or ID of the account whose witness should be retrieved
The witness object, or null if the account does not have a witness.

lookup_witness_accounts

Get names and IDs for registered witnesses.
1
map<string, witness_id_type> graphene::app::database_api::lookup_witness_accounts(
2
const string &lower_bound_name, uint32_t limit)const
Copied!
Parameters
Return
  • lower_bound_name: Lower bound of the first name to return
  • limit: Maximum number of results to return must not exceed 1000
Map of witness names to corresponding IDs.

get_witness_count

Get the total number of witnesses registered with the blockchain.
1
uint64_t graphene::app::database_api::get_witness_count()const
Copied!

Committee members

get_committee_members

Get a list of committee_members by ID.
Semantically equivalent to get_objects, but doesn’t subscribe.
1
vector<optional<committee_member_object>> graphene::app::database_api::get_committee_members(
2
const vector<committee_member_id_type> &committee_member_ids)const
Copied!
Parameters
Return
  • committee_member_ids: IDs of the committee_members to retrieve
The committee_members corresponding to the provided IDs.

get_committee_member_by_account

Get the committee_member owned by a given account.
1
fc::optional<committee_member_object> graphene::app::database_api::get_committee_member_by_account(
2
const string account_name_or_id)const
Copied!
Parameters
Return
  • account_name_or_id: The name or ID of the account whose committee_member should be retrieved
The committee_member object, or null if the account does not have a committee_member.

lookup_committee_member_accounts

Get names and IDs for registered committee_members.
1
map<string, committee_member_id_type> graphene::app::database_api::lookup_committee_member_accounts(
2
const string &lower_bound_name,
3
uint32_t limit)const
Copied!
Parameters
Return
  • lower_bound_name: Lower bound of the first name to return
  • limit: Maximum number of results to return must not exceed 1000
Map of committee_member names to corresponding IDs

Workers

get_workers_by_account

Get the workers owned by a given account.
1
vector<optional<worker_object>> graphene::app::database_api::get_workers_by_account(
2
const std::string account_name_or_id)const
Copied!
Parameters
Return
  • account_name_or_id: The name or ID of the account whose worker should be retrieved
A list of worker objects owned by the account.

Votes

lookup_vote_ids

Given a set of votes, returns the objects they are voting for.
This will be a mixture of committee_member_objects, witness_objects, and worker_objects
1
vector<variant> graphene::app::database_api::lookup_vote_ids(
2
const vector<vote_id_type> &votes)const
Copied!
Parameters
Return
  • votes: a list of vote IDs
The referenced objects
The results will be in the same order as the votes. Null will be returned for any vote IDs that are not found.

Authority / Validation

get_transaction_hex

Get a hexdump of the serialized binary form of a transaction.
1
std::string graphene::app::database_api::get_transaction_hex(
2
const signed_transaction &trx)const
Copied!
Parameters
Return
  • trx: a transaction to get hexdump from
The hexdump of the transaction.

get_required_signatures

This API will take a partially signed transaction and a set of public keys that the owner has the ability to sign for and return the minimal subset of public keys that should add signatures to the transaction.
1
set<public_key_type> graphene::app::database_api::get_required_signatures(
2
const signed_transaction &trx,
3
const flat_set<public_key_type> &available_keys)const
Copied!
Parameters
Return
  • trx: the transaction to be signed
  • available_keys: a set of public keys
A subset of available_keys that could sign for the given transaction.

get_potential_signatures

This method will return the set of all public keys that could possibly sign for a given transaction. This call can be used by wallets to filter their set of public keys to just the relevant subset prior to calling get_required_signatures to get the minimum subset.
1
set<public_key_type> graphene::app::database_api::get_potential_signatures(
2
const signed_transaction &trx)const
Copied!
Parameters
Return
  • trx: the transaction to be signed
A set of public keys that could possibly sign for the given transaction.

get_potential_address_signatures

This method will return the set of all addresses that could possibly sign for a given transaction.
1
set<address> graphene::app::database_api::get_potential_address_signatures(
2
const signed_transaction &trx)const
Copied!
Parameters
Return
  • trx: the transaction to be signed
A set of addresses that could possibly sign for the given transaction.

verify_authority

Check whether a transaction has all of the required signatures
1
bool graphene::app::database_api::verify_authority(
2
const signed_transaction &trx)const
Copied!
Parameters
Return
  • trx: a transaction to be verified
true if the trx has all of the required signatures, otherwise throws an exception.

verify_account_authority

Verify that the public keys have enough authority to approve an operation for this account.
1
bool graphene::app::database_api::verify_account_authority(
2
const string &account_name_or_id,
3
const flat_set<public_key_type> &signers)const
Copied!
Parameters
Return
  • account_name_or_id: name or ID of an account to check
  • signers: the public keys
true if the passed in keys have enough authority to approve an operation for this account.

validate_transaction

Validates a transaction against the current state without broadcasting it on the network.
1
processed_transaction graphene::app::database_api::validate_transaction(
2
const signed_transaction &trx)const
Copied!
Parameters
Return
  • trx: a transaction to be validated
A processed_transaction object if the transaction passes the validation, otherwise an exception will be thrown.

get_required_fees

For each operation calculate the required fee in the specified asset type.
1
vector<fc::variant> graphene::app::database_api::get_required_fees(
2
const vector<operation> &ops,
3
const std::string &asset_symbol_or_id)const
Copied!
Parameters
Return
  • ops: a list of operations to be query for required fees
  • asset_symbol_or_id: symbol name or ID of an asset that to be used to pay the fees
A **list of objects which indicates required fees of each operation

Proposed Transactions

get_proposed_transactions

Gets a set of proposed transactions (proposals) that the specified account can add approval to or remove approval from.
1
vector<proposal_object> graphene::app::database_api::get_proposed_transactions(
2
const std::string account_name_or_id)const
Copied!
Parameters
Return
  • account_name_or_id: The name or ID of an account
A set of proposed transactions that the specified account can act on.

Blinded balances

get_blinded_balances

Gets the set of blinded balance objects by commitment ID.
1
vector<blinded_balance_object> graphene::app::database_api::get_blinded_balances(
2
const flat_set<commitment_type> &commitments)const
Copied!
Parameters
Return
  • commitments: a set of commitments to query for
The set of blinded balance objects by commitment ID.