区块链/等级 II · 运作机制/2.3 区块与链/课程 7
2100万供应时间表
稀缺性的算术与试图打破它的漏洞
材料提供实时供应数据的区块浏览器GetBlockSubsidy的Bitcoin Core源代码一种能够计算几何级数的计算器
好奇
- 有限的数字是如何从无限次的减半过程中产生的?
- 当软件漏洞造出的货币超过协议允许的数量时,会发生什么?
- 为什么实际流通供应量低于理论最大值?
探索
- 2100万的限制并非某种承诺,而是区块生成机制所带来的数学结果。新的比特币仅通过区块奖励进入流通领域,该奖励在2009年1月为每块区块50枚比特币。这一奖励金额每210,000个区块就会减半,大约相当于四年时间。其计算公式实际上是一个几何级数之和:210,000个区块乘以50枚比特币,再乘以1/2的幂次之和(1 + ½ + ¼ + …)。这个无穷级数的和恰好为21,000,000枚比特币。
- 由于比特币的价值以整数聪来计量(1聪相当于0.000000001比特币),因此每次减半都会进行四舍五入处理。在大约2136年或2137年的第6,720,000个区块时,补贴金额会降至最低单位——1聪。到大约2140年的第6,930,000个区块时,2100万枚比特币几乎全部发行完毕。由于这些四舍五入的操作,实际的最大数值略低于2100万,约为20,999,999.9769枚比特币。
- 由于多种原因,实际有效供应量低于理论上限。创世区块的50 BTC奖励按设计无法花费。一些矿工领取的补贴少于全额,未领取的部分从未被创造出来。还有一些币被发送到了可证明无法花费的输出,许多私钥也因硬件故障或遗忘密码而永久丢失。这些因素使流通供应量低于协议的硬性上限。
- 这一上限由Bitcoin Core软件中的共识规则来执行,而非依靠外部权威。每个节点都会验证没有任何区块超出允许的补贴。2010年8月,一个数值溢出漏洞(CVE-2010-5139)使一笔交易在第74,638个区块中凭空造出了超过1840亿枚BTC。大约五小时内就发布了修补后的客户端,运行该客户端的矿工构建了一条不含这笔错误交易的链,并在53个区块之后超越了原链,从而抹掉了这些币。这一事件表明,上限的可靠程度取决于执行它的节点软件,同时也表明网络能够迅速协调起来捍卫它。
- 2018年,Bitcoin Core 0.15至0.16.2版本中又发现了另一个增发漏洞(CVE-2018-17144):矿工本可以通过一笔将同一输入列出两次的交易凭空造币。该漏洞已被修复,目前没有已知的利用案例。这两起事件都表明,发行时间表的落实既依赖于正确的软件,也依赖于持续盯防它的人。
- 打开区块浏览器,查看当前流通在市场上的比特币数量,并与21,000,000 BTC这一数值进行比较。注意理论上的最大值与实际流通量之间的差异。同时留意下一次减半日期,计算出从3.125 BTC降至1.5625 BTC之前还剩多少个区块。通过这些检查可以确认比特币的发行计划正在按照既定规则正常推进。
关键事实
- 从理论上讲,发行时间表的总量合计为21,000,000 BTC。
- 区块补贴每210,000个区块减少一半,起始值为50比特币,到2140年左右将降至零。
- 由于聪的整数取整,其实际最大供应量略低于2100万。
- 创世区块的50 BTC奖励无法花费,这减少了有效供应量。
- 2010年8月,一个漏洞(CVE-2010-5139)在链重组之前造出了超过1840亿枚BTC。
- 矿工领取的补贴可能少于全额补贴;未领取的部分不会被创建。
练习 九、六、三、一
9收集列出9种供应量固定或设有上限的资产或货币。注明它们的最大数量,以及由谁来执行这一上限。
6归类按执行机制将这9种分为6类:代码强制、合约强制、物理稀缺、法律法令、市场惯例或其他。
3提炼将这6类归纳为供应上限可能失效或被更改的3个原因。
1凝结用一句话说明硬编码的上限与政治承诺有何区别。
事实核查
日期、数字及数据均依据下方列出的已发表资料进行核实。