比特币剩余数量的核心算法,是用理论上限减去链上已经通过区块补贴发行的数量。常见口径会写成:剩余数量=2100万枚-累计发行量。这里的累计发行量并不是交易所余额,也不是钱包里能看到的持币总和,而是每个区块产生的区块补贴总额。交易手续费属于矿工从用户交易中收取的转账价值,不会增加比特币总量,因此计算剩余供应时不能把手续费和区块补贴混在一起。

具体到区块高度,协议会先计算某个区块经历了几次减半,再确定该区块最多能产生多少新币。公式可以简化为:单个区块补贴=50×2的负次方,次方数等于区块高度除以210000后取整数;在程序层面,计算以聪为单位,通过整数右移完成,避免浮点数误差。高度0至209999区间的补贴是50 BTC,210000高度后降为25 BTC,420000高度后为12.5 BTC,630000高度后为6.25 BTC,840000至1049999高度区间则是3.125 BTC。每经历210000个区块,补贴减少一半,时间上大致相当于四年,但真正的触发条件始终是区块高度,而不是日历日期。
想手动计算某一阶段发行了多少枚,可以把各个减半周期分别相加。第一个周期是210000×50,第二个周期是210000×25,第三个周期是210000×12.5,后面继续按照一半递减。完整累加后,理论最大供应量并非数学意义上精确的2100万枚,而是约20999999.9769 BTC,市场通常仍将其四舍五入称为2100万枚。原因在于比特币最小单位是聪,奖励减半后会发生整数截断,最后一个仍有补贴的阶段每个区块只产生1聪,之后区块补贴归零。

实际做链上统计时,不能只看2100万减去某个估算流通量。更严谨的做法,是读取当前主链高度,逐区块核对coinbase交易中实际领取的补贴,再从理论总量中扣除。协议规定矿工不能超额领取区块补贴,但矿工可以少领,部分早期区块也存在没有拿满奖励的情况,因此实际已发行数量可能略低于按照满额补贴推算的结果。也正因为区块浏览器显示的已挖出数量、理论发行量和可流通数量,可能存在细小差异。

还要区分未挖出的比特币和市场上真正可用的比特币。前者可以按照减半曲线计算,属于协议层面的剩余供应;后者还会受到丢失私钥、销毁地址、无法花费的创世区块奖励以及长期休眠地址等因素影响。链上只能确认哪些UTXO仍然存在,无法证明持有人是否已经永久失去控制权,所以所谓市场实际还剩多少枚没有统一精确答案。按照现有补贴计划,新增发行会持续递减,预计在2140年前后接近归零;届时矿工收入将主要依赖交易手续费,而比特币剩余数量的计算也将从总量减新增发行转向对现有UTXO的统计。
