美文网首页
比特币减半及总量计算

比特币减半及总量计算

作者: 吉祥在成长 | 来源:发表于2019-04-19 06:55 被阅读0次

    一、区块奖励基本知识点

    1. 区块产生的间隔大约是10分钟。实际上有长有短,一两分钟到几十分钟不等。
    2. 每210000个区块为一个奖励周期,第一个奖励周期是0 ~ 209999区块,第二个奖励周期是210000 ~ 419999区块,第三个奖励周期是420000 ~ 629999区块,……以此类推。
    3. 在第一个产币周期,每个区块奖励50BTC,以后每个周期奖励减半,即,第二个产币周期,每个区块奖励25BTC,第三个周期12.5BTC,……以此类推。
    4. 1 BTC = 10^8 Satoshi,即100000000 Satoshi,一亿聪。
    5. 比特币的最小单位是Satoshi(聪),因此在减半过程中,没有0.5Satoshi的情况。第28个产币周期,每个区块奖励37聪,到第29个产币周期,每个区块奖励减半,不是18.5聪,而是18聪,舍弃小数点。到第31个产币周期,每个区块奖励不是4.5聪,而是4聪。

    二、Python程序

    bitcoin.py
    程序参考了《Mastering Bitcoin》(第二版),第十章,10.1节。

    from datetime import datetime, timedelta
    
    delta = timedelta(minutes=10*210000)
    
    time0 = datetime.strptime('2009-1-3 18:15:05', '%Y-%m-%d %H:%M:%S')
    
    # Original block reward for miners was 50 BTC
    start_block_reward = 50
    # 210000 is around every 4 years with a 10 minute block interval
    reward_interval = 210000
    
    def max_money():
        # 50 BTC  = 50 0000 0000 Satoshis
        current_reward = 50 * 10 ** 8
        total = 0
        i = 0
        while current_reward > 0:
            print('{0:>2} {1:>12} Satoshi  {2}'.format(i+1, current_reward, time0+delta*i))
            total += reward_interval * current_reward
            current_reward //= 2
            i += 1
    
        return total
    
    # print("Total BTC to ever be created:")
    print('\nTotal: {0} Satoshi'.format(max_money()))
    

    结果:

     1   5000000000 Satoshi  2009-01-03 18:15:05
     2   2500000000 Satoshi  2013-01-01 02:15:05
     3   1250000000 Satoshi  2016-12-29 10:15:05
     4    625000000 Satoshi  2020-12-26 18:15:05
     5    312500000 Satoshi  2024-12-24 02:15:05
     6    156250000 Satoshi  2028-12-21 10:15:05
     7     78125000 Satoshi  2032-12-18 18:15:05
     8     39062500 Satoshi  2036-12-16 02:15:05
     9     19531250 Satoshi  2040-12-13 10:15:05
    10      9765625 Satoshi  2044-12-10 18:15:05
    11      4882812 Satoshi  2048-12-08 02:15:05
    12      2441406 Satoshi  2052-12-05 10:15:05
    13      1220703 Satoshi  2056-12-02 18:15:05
    14       610351 Satoshi  2060-11-30 02:15:05
    15       305175 Satoshi  2064-11-27 10:15:05
    16       152587 Satoshi  2068-11-24 18:15:05
    17        76293 Satoshi  2072-11-22 02:15:05
    18        38146 Satoshi  2076-11-19 10:15:05
    19        19073 Satoshi  2080-11-16 18:15:05
    20         9536 Satoshi  2084-11-14 02:15:05
    21         4768 Satoshi  2088-11-11 10:15:05
    22         2384 Satoshi  2092-11-08 18:15:05
    23         1192 Satoshi  2096-11-06 02:15:05
    24          596 Satoshi  2100-11-04 10:15:05
    25          298 Satoshi  2104-11-01 18:15:05
    26          149 Satoshi  2108-10-30 02:15:05
    27           74 Satoshi  2112-10-27 10:15:05
    28           37 Satoshi  2116-10-24 18:15:05
    29           18 Satoshi  2120-10-22 02:15:05
    30            9 Satoshi  2124-10-19 10:15:05
    31            4 Satoshi  2128-10-16 18:15:05
    32            2 Satoshi  2132-10-14 02:15:05
    33            1 Satoshi  2136-10-11 10:15:05
    
    Total: 2099999997690000 Satoshi
    
    Process finished with exit code 0
    

    减半时间是按10分钟计算的,而实际上并不是。
    创世区块信息)
    第一次减半是2012年11月28日(区块210000
    ),第一次减半是2016年07月09日(区块420000),都比理论早。
    第三次大约是2020年5月24日,参见 减半 。(减半,点击 区块630000 查看。)


    附录:

    区块 格林尼治时间 北京时间
    浏览器 https://www.blockchain.com/ https://btc.com/
    0 2009-01-03 18:15:05 2009-01-04 02:15:05
    210000 2012-11-28 15:24:38 2012-11-28 23:24:38
    420000 2016-07-09 16:46:13 2016-07-10 00:46:13

    相关文章

      网友评论

          本文标题:比特币减半及总量计算

          本文链接:https://www.haomeiwen.com/subject/rajfgqtx.html