第一性原理 / 货币与价值
减半:发行曲线的折点如何被写进共识
2100 万上限是一条求和的结果:把每一个时期的区块补贴加总,得到略低于 2100 万的总数。求和之所以收敛,是因为补贴不是恒定的,而是每隔一段固定的区块数就折半一次——这就是"减半"(halving)。本文只处理机制本身:折点写在哪里、如何计算、已经发生过几次、终局是什么形态,以及补贴趋近于零之后,矿工收入的另一半——手续费——如何衔接。关于减半与价格的关系,本文不做任何推断:减半改变的是发行规则,不是需求。
事实一:折点由区块高度定义,不由日历定义
减半的触发条件是区块高度,不是日期。共识参数中有一个常量:nSubsidyHalvingInterval = 210000,即每 210,000 个区块为一个补贴周期。按比特币约 10 分钟一个区块的目标间隔估算,210,000 个区块约合 3.99 年,所以通俗说法称"约四年一次"。但"约"字不可省:出块间隔围绕 10 分钟随机波动,难度每 2,016 个区块按实际速度回调,因此每次减半的实际日期只能在事后确定,事前只能估算。把减半写成"某年某月某日自动执行"的日历事件,是对机制的误读——全节点不看日历,只数高度。
创世时期的补贴是每区块 50 BTC。高度 210,000 是第一个折点:从这个区块起,补贴变为 25 BTC;高度 420,000 起变为 12.5 BTC,以此类推。高度区间与补贴值的对应表,本站已在《2100 万:一个数字的协议含义》中列出,此处不重复。
事实二:补贴的计算是一次整数右移
减半在代码中的实现出乎意料地短。Bitcoin Core 的 GetBlockSubsidy 函数(src/validation.cpp)核心只有几行:
- 先算已完成的减半次数:
halvings = nHeight / nSubsidyHalvingInterval(整数除法); - 若
halvings >= 64,直接返回 0(对右移位数的保护); - 初始补贴
nSubsidy = 50 * COIN(即 50 亿聪); - 执行
nSubsidy >>= halvings:把补贴值按二进制右移 halvings 位,再返回。
右移一位在二进制整数上等于除以 2 并向下取整。这带来两个值得注意的后果。
第一,减半不是浮点除法,没有四舍五入的争议。补贴以最小单位"聪"(1 BTC = 10⁸ 聪)为整数计算,右移丢弃的低位比特直接截断。到了第 32 个周期,补贴被移成 1 聪;第 33 个周期起右移结果为 0。这正是总发行量不是整 2100 万、而是约 20,999,999.9769 BTC 的原因:每个周期的截断误差累积起来,少发了约 0.0231 BTC。所谓上限,从代码看是一个整数运算的副产品。
第二,任何节点都能用同一函数复算任意高度的合法补贴。矿工在 coinbase 交易中给自己记入的金额若超过该高度的补贴加本块手续费之和,区块即被全网节点拒绝。减半不需要"宣布"或"执行",它只是每个节点在验证每个区块时都要过一遍的算术。
事实三:已经发生的四次减半
截至本文写作时,减半已发生四次,高度、日期(UTC)与补贴变化如下,均可由链上数据直接复核(第 210,000、420,000、630,000、840,000 号区块的时间戳):
| 次序 | 区块高度 | 日期(UTC) | 补贴变化 |
|---|---|---|---|
| 第一次 | 210,000 | 2012-11-28 | 50 → 25 BTC |
| 第二次 | 420,000 | 2016-07-09 | 25 → 12.5 BTC |
| 第三次 | 630,000 | 2020-05-11 | 12.5 → 6.25 BTC |
| 第四次 | 840,000 | 2024-04-20 | 6.25 → 3.125 BTC |
第四次的日期在部分报道中写作 4 月 19 日,那是北美时区的本地日期;按区块时间戳的 UTC 口径为 4 月 20 日。这类一日的出入不改变任何规则事实,也再次说明:权威的坐标是高度,不是日期。下一次减半的高度是确定的——1,050,000,补贴将变为 1.5625 BTC;它的日历日期则只能估算在 2028 年前后。
另一个常被忽略的事实是,四次减半的"事件感"并不相同。2012 年时比特币的流通量尚小、补贴占矿工收入的比例却接近全部;2024 年时补贴的绝对量(每日约 450 BTC)已降至 2009 年的十六分之一,手续费在矿工收入中的占比显著高于早期。减半的机制从未变过,变的是它在整个激励结构中的权重——这正是下一节的主题。
事实四:终局不是悬崖,而是补贴的指数消退
按右移规则推演:第 32 个周期(高度 6,720,000 起)补贴为 1 聪;第 33 个周期(高度 6,930,000 起)补贴为 0,此后再无新币产生。按约四年的周期长度折算,终点约在 2140 年前后。需要强调形态:这不是某一天突然"挖完",而是一条指数衰减曲线在最小单位处的自然截断——最后几十年里,每个区块的补贴早已小到不足交易手续费的零头。从经济结构上看,“补贴时代"与"手续费时代"之间没有断裂点,只有权重此消彼长的长过渡带。
白皮书第六节对终局早有预设:“一旦预定数量的货币进入流通,激励就可以完全过渡到手续费”(见本站白皮书页)。也就是说,手续费接棒不是后人对减半的补救方案,而是原始设计中与减半写在同一节里的另一半。
衔接:补贴退场后,安全预算由什么支付
把矿工的总收入拆开,只有两项:区块补贴 + 本块全部交易的手续费。减半每次把第一项砍半,第二项则完全由市场决定——取决于届时人们愿意为区块空间支付多少。由此可以得到几个只涉及机制的推论:
第一,减半不直接改变网络的安全性参数,只改变安全预算的来源结构。工作量证明的安全性最终由矿工的总收入(折算为现实成本)支撑;补贴下降后,要维持同等量级的安全支出,手续费收入需要相应上升,或者币价上升使同额补贴的购买力上升。本文只指出这个会计恒等式,不判断哪条路径会实现。
第二,手续费市场的成熟程度因此是减半机制的内生变量,而不是外部话题。一笔交易为什么要付费、费率如何形成、拥堵时如何竞价,是另一篇的主题(见《手续费市场:从免费中继到费率竞价》)。在这里只需记住次序:先有"补贴必然归零"的发行曲线,才有"手续费必须接棒"的长期问题;两者是同一份设计的一体两面。
第三,减半的可预期性本身就是设计的一部分。全部折点的位置、每一步的补贴值,在 2009 年的第一版代码里就已完全确定,此后从未修改。这与法币体系形成对照:法币的发行量由委员会按届时情况裁量,比特币的发行量由一条任何人都可以提前 100 年读完的时间表给定。可预期不等于价格可预期——它只意味着,供给侧不存在"意外"这个变量。
回看四次减半,最容易被叙事掩盖的事实是:每一次减半在技术上都"什么也没有发生”——没有版本发布、没有投票、没有切换时刻的协调动作,只是一个普通的新区块恰好跨过了某个高度,全网节点用同一个函数算出了新的补贴值。一个货币体系把自己最重要的参数变更做成了一件不需要任何人到场的事,这才是减半作为"第一性原理"话题的真正分量。讨论它时,值得把注意力从"减半之后会怎样"移开,放到"为什么它可以不需要任何人做决定"上。
