链资讯 链资讯
Ctrl+D收藏链资讯

金色观察 | 硬核解读比特币具体是怎么减半的

作者:

时间:

就在5月12日凌晨3:23,比特币成功完成众所瞩目的第三次减半。

自2009年诞生,比特币已经走过波澜壮阔的十年。从交易所、矿机、投资者到媒体,比特币已经带动加密货币行业形成一个完整的生态系统。比特币区块奖励减半从供给侧直接减少一半的货币供给,显然在边际和投资者心理上都极大彰显了比特币的稀缺性。

因此,四年一次的比特币减半成为整个加密货币行业关注的焦点。

但看了那么多比特币减半的文章,你可能还不知道比特币具体是怎么减半的,比如四年减半一次的四年是怎么来的,怎么计算当前区块的奖励等问题。

值此比特币第三次减半之际,来跟随金色财经记者看看Bitcoin Core的代码是具体怎么执行比特币区块奖励减半的。

比特币减半代码

比特币减半,是比特币区块奖励减半的简称。而比特币的区块奖励减半是比特币共识的一部分,直接写在比特币软件代码里。

具体减半代码在这里,下面是截图。

比特币区块奖励减半代码 来源:Bitcoin Core github

就这6行代码定义的函数GetBlockSubsidy决定着不同区块高度下的比特币区块奖励。中本聪创造的比特币共识设置区块奖励从50个比特币开始每210000个区块比特币奖励减半,减半64次后区块奖励为0。

比特币全网未确认交易64,807笔:金色财经报道,据btc.com数据显示,目前比特币全网未确认交易数为64,807笔,24小时交易速率为3.96 txs/s。目前全网难度为21.43 T,预测下次难度上调2.60%%至21.99 T,距离调整还剩6 天 0 小时。[2021/2/13 19:42:10]

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,文档见这里。

参考资料:

Where in the Code Does the Halving Take Place

BIP042

标签:比特币SUBSUBSUBS买卖比特币会坐牢吗SUBAWU币SUBS价格Substratum

欧易okex官网热门资讯
《鹰视角》第19期——又又又要减半了你还记得车库咖啡吗?

江湖盛传,中国最牛逼的咖啡馆隐藏在北京海淀的创业大街之中——那正是“车库咖啡”。 车库咖啡坐落在北京海淀西大街48号,与隔壁的3W、言几又书店相比,车库咖啡显得朴素,北京街头随便一家卤煮店都比它耀眼。 车库,顾名思义,就是停车的地方。咖啡,词义浅表,就是咖啡馆。车库咖啡就是一家叫“车库”的咖啡馆。 在互联网的世界里,车库是发源地。

直播金句|NGC蔡彦:一年为什么只买入卖出2-3次?

金色财经 · 直播主办的《 币圈 “后浪” 仙女直播周》 ,第一期第7位“后浪”仙女NGC Venture 董事总经理蔡彦,在今天的直播中分享了数字货币的魅力,聊了Crypto Fund的核心竞争力等精彩观点。

南强北弱 山东能否担起北方区块链发展重任?

南强北弱,这一格局是中国经济发展现状,亦是国内各省市区块链发展现状。 5月初以来,贵州省发布了加快区块链技术应用和产业发展的意见;广州印发了推动区块链产业创新发展的实施意见;湖南印发了区块链产业发展三年行动计划……南方多个省份在持续加码区块链领域。

比特币三角形结构末端试探已经开始

过去24小时内XLM抢眼的表现导致热力图中其他币种看起来还在原地踏步,不过相比于前一天来看,昨天主流币种实际上已经走出了比较明显的回暖迹象,BTC在该时段内超3%的上涨带动大多数币种普遍反弹。在BTC减半完成后市场紧张情绪反而有所缓和,不过昨日早盘分析中提到的单边快速行情仍然可能很快出现,所以仍然需要谨慎对待短期风险。

金色趋势丨BTC短期仍有冲高机会 后续还有下砸?

目前价格位于5日和20日线之间小范围波动,5日线死叉10日线,形成短期下压力,日线MACD指标线高位死叉,日线近期仍是空头趋势,下方主要支撑8100-8200之间,这个位置是日线MA120均线支撑区域,最近3天都下跌至8200附近开启反弹,说明该区域存在多头撑盘,这个位置放量跌破,下行空间才会打开,才会继续向下测试7600-7700CME跳空缺口。

凉山日报头版报道:四川凉山落地5个挖矿项目用于水电消纳

吴说区块链获悉,2月份以来,四川凉山水电消纳示范区已落地5个大数据项目,应全为比特币矿场项目。《凉山日报》头版对此进行了报道。 今年2月20日,德昌县与四川生命康生物科技有限公司正式签约永郎云计算中心数据服务基地项目。该项目占地约20余亩,在德昌永郎大型变电站旁建立云计算中心,扩建钢结构厂房、110kv变电站。预计年产值约2亿元,年利税约1000万元。