6. Objects and IDs¶
Table of Contents
In contrast to most cryptocurrency wallets, the BitShares 2.0 has a different model to represent the blockchain, its transactions and accounts. This chapter wants to given an introduction to the concepts of objects as they are used by the BitShares 2.0 client. Furthermore, we will briefly introduce the API and show how to subscribe to object changes (such as new blocks or incoming deposits). Afterwards, we will show how exchange may monitor their accounts and credit incoming funds to their corresponding users.
6.1. Objects¶
On the BitShares blockchains there are no addresses, but objects identified by a unique id, an type and a space in the form::
space.type.id
6.1.1. List of commonly used objects¶
| ID | Object Type |
|---|---|
| 1.1.x | base object |
| 1.2.x | account object |
| 1.3.x | asset object |
| 1.4.x | force settlement object |
| 1.5.x | committee member object |
| 1.6.x | witness object |
| 1.7.x | limit order object |
| 1.8.x | call order object |
| 1.9.x | custom object |
| 1.10.x | proposal object |
| 1.11.x | operation history object |
| 1.12.x | withdraw permission object |
| 1.13.x | vesting balance object |
| 1.14.x | worker object |
| 1.15.x | balance object |
| 2.0.x | global_property_object |
| 2.1.x | dynamic_global_property_object |
| 2.3.x | asset_dynamic_data |
| 2.4.x | asset_bitasset_data |
| 2.5.x | account_balance_object |
| 2.6.x | account_statistics_object |
| 2.7.x | transaction_object |
| 2.8.x | block_summary_object |
| 2.9.x | account_transaction_history_object |
| 2.10.x | blinded_balance_object |
| 2.11.x | chain_property_object |
| 2.12.x | witness_schedule_object |
| 2.13.x | budget_record_object |
| 2.14.x | special_authority_object |
6.1.2. Examples¶
To get a feeling about what these objects do, we recommend to obtain these exemplary objects.
2.0.0(global blockchain parameters)2.1.0(current blockchain data)1.2.0(committee-account details)1.3.0(core asset details)
6.1.3. Examples - Accounts¶
The BitShares blockchain users are requires to register each account with a unique username and a public key on the blockchain. The blockchain assigns an incremental user id and offers to resolve the name-to-id pair.
| Object ID | Translates to |
|---|---|
| 2.6.80 | # implementation space / account-balance / id: 80 |
| 2.7.80 | # implementation space / account-statistics / id: 80 |
| 2.10.80 | # implementation space / account-transactions / id: 80 |
| 2.8.80 | # implementation space / transactions / id: 80 |
| 2.9.80 | # implementation space / block-summary / id: 80 |
- A programmatic description of all fields can be found in the sources
Example Call and a result: account object (id: 1.2.x):
unlocked >>> get_account_id "user123"
get_account_id "user123"
"1.2.539269"
unlocked >>>
Example Call and a result: asset object (id: 1.3.x):
unlocked >>> list_assets "BTS" "2"
list_assets "BTS" "2"
[{
"id": "1.3.0",
"symbol": "BTS",
"precision": 5,
"issuer": "1.2.3",
....
"dynamic_asset_data_id": "2.3.368"
}
]
6.2. Definitions¶
For advanced users that want to deal with the C++ code of graphene, we here
list the definition of object_type and impl_object_type:
6.2.1. Protocol Space (1.x.x)¶
-
enum
graphene::chain::object_type List all object types from all namespaces here so they can be easily reflected and displayed in debug output. If a 3rd party wants to extend the core code then they will have to change the packed_object::type field from enum_type to uint16 to avoid warnings when converting packed_objects to/from json.
Values:
-
null_object_type
-
base_object_type
-
account_object_type
-
asset_object_type
-
force_settlement_object_type
-
committee_member_object_type
-
witness_object_type
-
limit_order_object_type
-
call_order_object_type
-
custom_object_type
-
proposal_object_type
-
operation_history_object_type
-
withdraw_permission_object_type
-
vesting_balance_object_type
-
worker_object_type
-
balance_object_type
-
OBJECT_TYPE_COUNT Sentry value which contains the number of different object types.
-
6.2.2. Implementation Space (2.x.x)¶
-
enum
graphene::chain::impl_object_type Values:
-
impl_global_property_object_type
-
impl_dynamic_global_property_object_type
-
impl_reserved0_object_type
-
impl_asset_dynamic_data_type
-
impl_asset_bitasset_data_type
-
impl_account_balance_object_type
-
impl_account_statistics_object_type
-
impl_transaction_object_type
-
impl_block_summary_object_type
-
impl_account_transaction_history_object_type
-
impl_blinded_balance_object_type
-
impl_chain_property_object_type
-
impl_witness_schedule_object_type
-
impl_reserved1_object_type
-
impl_buyback_object_type
-
impl_fba_accumulator_object_type
-
impl_collateral_bid_object_type
-