Skip to content

Latest commit

 

History

History
50 lines (42 loc) · 2.2 KB

Readme.md

File metadata and controls

50 lines (42 loc) · 2.2 KB

The following Python code calculates the total Bismuth coin supply when the block_height > 1450000.
There was a hard fork which changed the mining rewards at block_height=1450000, and that explains why the total coin supply functions are written like this.

Note also the SQL code after the comment symbol #: It calculates all mining rewards R0 from the genesis up to the hard fork at block_height=1450000.

  • The variable R1 contains the sum of all hypernode reward before block height 1450000.
  • The constant delta1=91e-8 describes how much the mining rewards decrease for every new block, while delta=33e-8 desribes how much the pos (hypernode) rewards decrease for each block.
  • The constant pow=5.5 describes the mining reward at block_height=1450000 and the variable N is the number of new blocks since the hardfork.
  • The constant dev_rew takes into account the 10% developer rewards which are calculated based on the mining rewards, and currently not on the hypernodes rewards.
def coin_supply(block):
    # select sum(reward) from transactions where block_height>0 and block_height<=1450000;
    R0 = 19061426.9635592
    # select sum(amount) from transactions where recipient='3e08b5538a4509d9daa99e01ca5912cda3e98a7f79ca01248c2bde16' and block_height>=-1450000;
    R1 = 920008
    delta1 = 91e-8
    delta2 = 33e-8
    pos = 2.4
    pow = 5.5
    N = block - 1450000
    dev_rew = 1.1
    R = dev_rew*R0 + R1 + N*((pos - N/2*delta2) + dev_rew*(pow - N/2*delta1))
    return R;

x = 1500000
print("Coin Supply at block {} = {}".format(x,coin_supply(x)))

Another approximate function of the Bismuth coin supply based on timestamps instead of the Bismuth block_height is shown below:

from datetime import datetime

def coin_supply(t):
    R0 = 19061426.9635592
    R1 = 920008
    t0 = datetime(2019,11,27,21,16,2).timestamp() # Hardfork UTC time
    delta1 = 91e-8
    delta2 = 33e-8
    pos = 2.4
    pow = 5.5
    N = (t - t0) / 60 # Estimated number of block since HF
    dev_rew = 1.1
    R = dev_rew*R0 + R1 + N*((pos - N/2*delta2) + dev_rew*(pow - N/2*delta1))
    return R;

x = datetime.now().timestamp() # Assuming system returns UTC time
print("Coin Supply at timestamp {} = {}".format(x,coin_supply(x)))