北京时间5月12日3时23分,比特币完成第三次减半。对于大多数人来说,只是知道有这么回事,但对什么比特币减半的原理并不了解,比特币具体是怎么减半的?四年减半一次的四年是怎么来的?怎么计算当前区块的奖励?本文从技术上分析Bitcoin Core的代码是具体怎么执行比特币区块奖励减半。
自2009年诞生,比特币已经走过波澜壮阔的十年。从交易所、矿机、投资者到媒体,比特币已经带动加密货币行业形成一个完整的生态系统。比特币区块奖励减半从供给侧直接减少一半的货币供给,显然在边际和投资者心理上都极大彰显了比特币的稀缺性。
因此,四年一次的比特币减半成为整个加密货币行业关注的焦点。
比特币减半代码
比特币减半,是比特币区块奖励减半的简称。而比特币的区块奖励减半是比特币共识的一部分,直接写在比特币软件代码里。

比特币区块奖励减半代码 来源:Bitcoin Core github
就这6行代码定义的函数GetBlockSubsidy决定着不同区块高度下的比特币区块奖励。中本聪创造的比特币共识设置区块奖励从50个比特币开始每210000个区块比特币奖励减半,减半64次后区块奖励为0。
210000个区块的时间大约为四年,这也是币圈人说的四年一次减半的由来。因为比特币减半事件是写进比特币软件代码里并有分布在全世界的比特币全节点验证,其共识很难改变,这也是“In Code We Trust”的由来。
逐行解读比特币减半
上诉代码主要有几个函数和参数:GetBlockSubsidy、nHeight、Consensus.nSubsidyHalvingInterval、halving、nSubsidy。它们的涵义如下:
GetBlockSubsidy主要是活的当前区块高度下的区块奖励(nSubsidy );
nHeight为当前区块高度;
Consensus.nSubsidyHalvingInterval为比特币共识决定的区块奖励减半间隔区块,此值为一个常数,为210000。
halvings为减半次数,是一个整数变量,也就是对nHeight/210000取整;
COIN为常数,为100000000,也就是说,在比特币代码里,比特币的单位是聪。
nSubsidy为区块奖励。
1239行代码调用GetBlockSubsidy函数。
1240行代码:halvings=nHeight/Consensus.nSubsidyHalvingInterval,计算当前区块对应的减半次数。比如截止本文发稿,区块高度为629929,629929/210000=2.99,取整halvings=2。当区块高度达到630000时,halvings=3。
1242和1243行代码:if (halvings >= 64) return 0;判断减半次数是否大于64,如果减半次数大于等于64,则区块奖励为0。这也是来自比特币共识,只有64次减半,64次减半后区块奖励为0。
1245行代码nSubsidy=50*COIN,比特币软件每次执行代码都把区块奖励设置成50* COIN,也就是5000000000。
1247行代码nSubsidy>>=halvings,这一句是真正起作用的比特币区块奖励减半代码。>>= 是二进制右移操作,nSubsidy>>=halvings等价于nSubsidy=nSubsidy除以2的halvings次方。
1248行代码返回给比特币节点当前节点的区块奖励值。
上述代码最后的实质是下面的公式:

因此,1-209999区块每个区块奖励为50/(2^0) =50枚比特币;210000-419999区块奖励减半为50/(2^1)=25枚比特币,420000-629999区块奖励减半至50/(2^2)=12.5个BTC。区块高度630000后减至50/(2^3)=6.25枚比特币。
大神也有BUG
不过,上述6行代码不是中本聪的原始代码,中本聪的原始代码如下:

尽管中本聪是大神,但不代表其代码就没有bug。因为nSubsidy是个64位的有符号整数,而>>= 超过64在C++中属于未定义行为,会导致数值环回,最终导致BTC数量不断重复2100万个比特币的释放过程,见下图。

Pieter Wuille修复了这个bug,有一个专门的比特币改进协议BIP042描述这个bug。
日本FSA拟允许银行投资比特币与加密资产,重塑零售加密市场格局
21Shares携手法国兴业银行,强化德国及东欧市场加密ETP流动性
Mogo斥资入股Digital Commodities,加码比特币与黄金储备策略,强化双轮增长模式
Moomoo推出Moomoo Crypto:进军美国加密货币市场
CME集团6月30日推出现货报价期货:比特币、以太坊及标普500等长达5年持有
eToro推出加密资产转账与兑现功能:比特币、以太坊可无缝投资多资产
21Shares在纳斯达克斯德哥尔摩上市三款领先加密ETP:比特币费用低至0.21%
nxtAssets GmbH携手SIX推出比特币与以太坊ETP:加密资产交易总数达398
Clearstream携手Crypto Finance推出加密资产托管服务,德意志交易所集团引领机构投资者新风潮
西班牙BBVA获批推出比特币和以太坊交易服务,零售客户可通过手机银行直接管理加密资产
MIH推出比特币小时二元期权BTCRB,MIAXdx创新再升级
华尔街矿工面临利润紧缩,比特币生产成本达到 49,500 美元
尽管比特币上涨,加密货币矿业收入仍下跌 12%
比特币矿业公司多元化进入AI和高性能计算领域,探索380亿美元市场潜力
俄罗斯新挖矿政策引发加密市场大反弹,比特币价格剧烈波动
Riot平台收购Block Mining,提升比特币产能
欧洲刑警组织为何将网络犯罪猖獗归咎于比特币和人工智能
芝商所推出以微欧元计价的比特币和以太坊期货
SEC 驳回最新现货比特币 ETF 申请,称其不充分
芝商所宣布开始比特币期货事件合约交易



