Skip to content

Latest commit

 

History

History
70 lines (61 loc) · 9.96 KB

objects.md

File metadata and controls

70 lines (61 loc) · 9.96 KB

BitShares Core - graphene::chain

Object Type

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.

Enumerator
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_typev
worker_object_type
balance_object_type
OBJECT_TYPE_COUNT Sentry value which contains the number of different object types.

Object Names and Detailed Descriptions

graphene::chain Namespace: Class - Objects

Detailed Description
account_balance_object Tracks the balance of a single account/asset pairThis object is indexed on owner and asset_type so that black swan events in asset_type can be processed quickly
account_object This class represents an account on the object graphAccounts are the primary unit of authority on the graphene system. Users must have an account in order to use assets, trade in the markets, vote for committee_members, etc
account_statistics_object This object contains regularly updated statistical data about an account. It is provided for the purpose of separating the account data that changes frequently from the account data that is mostly static, which will minimize the amount of data that must be backed up as part of the undo history everytime a transfer is made.
account_transaction_history_object a node in a linked list of operation_history_objectsAccount history is important for users and wallets even though it is not part of "core validation". Account history is maintained as a linked list stored on disk in a stack. Each account will point to the most recent account history object by ID. When a new operation relativent to that account is processed a new account history object is allcoated at the end of the stack and intialized to point to the prior object
asset_bitasset_data_object contains properties that only apply to bitassets (market issued assets)
asset_dynamic_data_object tracks the asset information that changes frequentlyBecause the asset_object is very large it doesn't make sense to save an undo state for all of the parameters that never change. This object factors out the parameters of an asset that change in almost every transaction that involves the asset
asset_object tracks the parameters of an assetAll assets have a globally unique symbol name that controls how they are traded and an issuer who has authority over the parameters of the asset.
balance_object
blinded_balance_object tracks a blinded balance commitment
block_summary_object tracks minimal information about past blocks to implement TaPOSWhen attempting to calculate the validity of a transaction we need to lookup a past block and check its block hash and the time it occurred so we can calculate whether the current transaction is valid and at what time it should expire.
budget_record_object
buyback_object buyback_authority_object only exists to help with a specific indexing problem. We want to be able to iterate over all assets that have a buyback program. However, assets which have a buyback program are very rare. So rather than indexing asset_object by the buyback field (requiring additional bookkeeping for every asset), we instead maintain a buyback_object pointing to each asset which has buyback (requiring additional bookkeeping only for every asset which has buyback).
call_order_object tracks debt and call price information
chain_property_object Contains invariants which are set at genesis and never changed.
collateral_bid_object bids of collateral for debt after a black swan
committee_member_object tracks information about a committee_member account.A committee_member is responsible for setting blockchain parameters and has dynamic multi-sig control over the committee account. The current set of active committee_members has control.
database tracks the blockchain state in an extensible manner More...
dynamic_global_property_object Maintains global state information (committee_member list, current fees)This is an implementation detail. The values here are calculated during normal chain operations and reflect the current values of global blockchain properties]()
fba_accumulator_object fba_accumulator_object accumulates fees to be paid out via buyback or other FBA mechanism.
force_settlement_object tracks bitassets scheduled for force settlement at some point in the future
global_property_object Maintains global state information (committee_member list, current fees)This is an implementation detail. The values here are set by committee_members to tune the blockchain parameters.
limit_order_object an offer to sell a amount of a asset at a specified exchange rate by a certain timeThis limit_order_objects are indexed by expiration and is automatically deleted on the first block after expiration.
node_property_object Contains per-node database configuration
operation_history_object tracks the history of all logical operations on blockchain stateAll operations and virtual operations result in the creation of an operation_history_object that is maintained on disk as a stack. Each real or virtual operation is assigned a unique ID / sequence number that it can be referenced by.
proposal_object tracks the approval of a partially approved transaction
special_authority_object special_authority_object only exists to help with a specific indexing problem. We want to be able to iterate over all accounts that contain a special authority. However, accounts which have a special_authority are very rare. So rather than indexing account_object by the special_authority fields (requiring additional bookkeeping for every account), we instead maintain a special_authority_object pointing to each account which has special_authority (requiring additional bookkeeping only for every account which has special_authority).
transaction_object The purpose of this object is to enable the detection of duplicate transactions. When a transaction is included in a block a transaction_object is added. At the end of block processing all transaction_objects that have expired can be removed from the index.
vesting_balance_object Vesting balance object is a balance that is locked by the blockchain for a period of time.
withdraw_permission_object Grants another account authority to withdraw a limited amount of funds per interval
witness_object
witness_schedule_object
worker_object Worker object contains the details of a blockchain worker. See The Blockchain Worker System for details.