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

比特币减半及总量计算

作者: 吉祥在成长 | 来源:发表于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