一、区块奖励基本知识点
- 区块产生的间隔大约是10分钟。实际上有长有短,一两分钟到几十分钟不等。
- 每210000个区块为一个奖励周期,第一个奖励周期是0 ~ 209999区块,第二个奖励周期是210000 ~ 419999区块,第三个奖励周期是420000 ~ 629999区块,……以此类推。
- 在第一个产币周期,每个区块奖励50BTC,以后每个周期奖励减半,即,第二个产币周期,每个区块奖励25BTC,第三个周期12.5BTC,……以此类推。
- 1 BTC = 10^8 Satoshi,即100000000 Satoshi,一亿聪。
- 比特币的最小单位是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 |
网友评论