Hive Developer logo

Hive Developer Portal

Understanding Dynamic Global Properties

Maintains global state information

Intro

Dynamic Global Properties represents a set of values that are calculated during normal chain operations and reflect the current values of global blockchain properties.

The API returns an object containing information that changes every block interval such as the head block number, the total vesting fund, etc.

Sections

average_block_size

Removed in 0.20.6, see: #3029

Average block size is updated every block to be: average_block_size = (99 * average_block_size + new_block_size) / 100. This property is used to update the current_reserve_ratio to maintain approximately * 50% or less utilization of network capacity.


confidential_sbd_supply

Total asset held in confidential balances.


confidential_supply

Total asset held in confidential balances.


current_aslot

The current absolute slot number. Equal to the total number of slots since genesis. Also equal to the total number of missed slots plus head_block_number.


current_reserve_ratio

Removed in 0.20.6, see: #3029

Any time average_block_size <= 50% maximum_block_size this value grows by 1 until it reaches HIVE_MAX_RESERVE_RATIO. Any time average_block_size is greater than 50% it falls by 1%. Upward adjustments happen once per round, downward adjustments happen every block.


current_sbd_supply

HBD currently in existence.


current_supply

HIVE currently in existence.


current_witness

Account name of the current witness.


downvote_pool_percent

Used by a separate downvote pool that is a percentage of the max size of the voting mana. Downvotes will be taken from the downvote pool first, and then the upvote pool once the downvote pool has been consumed. The downvote pool will follow the same rules as the upvote pool, regenerating over five days and filling instantly and proportionally to new Hive Power and delegations.

See: #3336, #3344


head_block_id

Used to implement TaPoS (Transaction as Proof of Stake). The first 4 bytes (8 hex digits) of the block ID represents the block number. E.g., 01709398 in hex is 24155032 in decimal.

See: RIPEMD-160 hashes


head_block_number

Block height at the head of the blockchain. This represents the latest block produced by witnesses.


last_budget_time

Used to compute payments for every proposal.

See: blocktradesdevs/steem#7, sps_fund


last_irreversible_block_num

The latest block number that has been confirmed by two thirds of all block producers and is thus irreversible.


max_virtual_bandwidth

Removed in 0.20.6, see: #3029

The maximum bandwidth the blockchain can support is max_bandwidth = maximum_block_size * HIVE_BANDWIDTH_AVERAGE_WINDOW_SECONDS / HIVE_BLOCK_INTERVAL; The maximum virtual bandwidth is: max_bandwidth * current_reserve_ratio


maximum_block_size

Maximum block size is decided by the set of active witnesses which change every round. Each witness posts what they think the maximum size should be as part of their witness properties, the median size is chosen to be the maximum block size for the round.

Note: the minimum value for maximum_block_size is defined by the protocol to prevent the network from getting stuck by witnesses attempting to set this too low.


next_maintenance_time

Used to compute payments for every proposal.

See: blocktradesdevs/steem#7, sps_fund


num_pow_witnesses

The current count of how many pending POW witnesses there are, determines the difficulty of doing pow.

See: #770


participation_count

Used to compute witness participation.


recent_slots_filled

Used to compute witness participation.


required_actions_partition_percent

The size of the block that is partitioned for actions. Required actions can only be delayed if they take up more than this amount. More can be included, but are not required. Block generation should only include transactions up to maximum_block_size - required_actions_parition_size to ensure required actions are not delayed when they should not be.


reverse_auction_seconds

Curation reverse auction duration.

See: #1874


sbd_interest_rate

This property defines the interest rate that HBD deposits receive.


sbd_start_percent

Start reducing printing of HBD at n% marketcap.

See: #2140


sbd_stop_percent

Stop printing HBD at n% marketcap.

See: #2140


target_votes_per_period

The number of votes regenerated per day (over HIVE_VOTING_MANA_REGENERATION_SECONDS). Any user voting slower than this rate will be “wasting” voting power through spillover; any user voting faster than this rate will have their votes reduced.

See: #1252, #1411


time

Point in time (UTC) that the block was included in the chain.

Used to synchronize events like Hard Fork activation.

When 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.

For new transactions, expirations originate from this time.


total_pow

The total POW accumulated, aka the sum of num_pow_witness at the time new POW is added.

See: #770


total_reward_fund_steem

HIVE available in the reward pool.


total_reward_shares2

Now deprecated way to get the number of shares in the pool.

Use condenser_api.get_reward_fund instead.


total_vesting_fund_steem

Now deprecated way to get HIVE that is invested in HIVE POWER (powered up).

Use condenser_api.get_reward_fund instead.


total_vesting_shares

VESTS that are invested in HIVE POWER (powered up).


virtual_supply

The virtual supply is the supply of all HIVE + all HBD if all HBD were converted to HIVE at the current median price.


vote_power_reserve_rate

The number of votes regenerated per day. Any user voting slower than this rate will be “wasting” voting power through spillover; any user voting faster than this rate will have their votes reduced.

See: #1252, #1411


Not Covered

Fields not covered in this recipe are:

Example Method Call

To retrieve the current results for condenser_api.get_dynamic_global_properties, we can retrieve the current state information using curl:

curl -s --data '{"jsonrpc":"2.0", "method":"condenser_api.get_dynamic_global_properties", "params":[], "id":1}' https://api.steemit.com

Example Output

{
   "id":1,
   "jsonrpc":"2.0",
   "result":{
      "head_block_number":24238248,
      "head_block_id":"0171d8a833dc369abd034b0c67d8725f96df9e5b",
      "time":"2018-07-16T22:41:24",
      "current_witness":"xeldal",
      "total_pow":514415,
      "num_pow_witnesses":172,
      "virtual_supply":"283434761.199 STEEM",
      "current_supply":"271729171.190 STEEM",
      "confidential_supply":"0.000 STEEM",
      "current_sbd_supply":"15498201.173 SBD",
      "confidential_sbd_supply":"0.000 SBD",
      "total_vesting_fund_steem":"192913644.627 STEEM",
      "total_vesting_shares":"391296886352.617261 VESTS",
      "total_reward_fund_steem":"0.000 STEEM",
      "init_sbd_supply":"7000000.000 TBD",
      "total_reward_shares2":"0",
      "pending_rewarded_vesting_shares":"379159224.860656 VESTS",
      "pending_rewarded_vesting_steem":"185294.019 STEEM",
      "sbd_interest_rate":0,
      "sbd_print_rate":2933,
      "maximum_block_size":65536,
      "current_aslot":24315228,
      "recent_slots_filled":"340282366920938463463374607431768211400",
      "participation_count":128,
      "last_irreversible_block_num":24238230,
      "vote_power_reserve_rate":10
      "required_actions_partition_percent":2500,
      "target_votes_per_period":50,
      "vote_power_reserve_rate":50,
      "delegation_return_period":432000,
      "reverse_auction_seconds":300,
      "available_account_subsidies":137414104,
      "sbd_stop_percent":1000,
      "sbd_start_percent":900,
      "next_maintenance_time":"2019-11-15T01:44:39",
      "last_budget_time":"2019-11-15T00:44:39",
      "content_reward_percent":6500,
      "vesting_reward_percent":1500,
      "sps_fund_percent":1000,
      "sps_interval_ledger":"15.162 TBD",
      "downvote_pool_percent":2500
   }
}