区块见闻 区块见闻
Ctrl+D收藏区块见闻
首页 > OKB > 正文

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

作者:

时间:

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

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

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

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

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

比特币减半代码

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

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

比特币区块奖励减半代码 来源: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,文档见这里。

参考资料:

Where in the Code Does the Halving Take Place

BIP042

标签:比特币SUBSUBSUBS比特币价格走势图gov币subdaoSUBS币HUBS价格

OKB热门资讯
四川亮剑矿场终于合规化 矿业或成资本进圈第一站

区块链已“拨乱反正”,挖矿头上“落后产业”的帽子,也该摘一摘了。 最近,四川关于挖矿的这两个政策,很多矿工都踊跃转发。 4月,四川雅安政府部门发文称,要建设水电消纳示范区,并将雅安建设成为全国有影响力的区块链产业集聚地。 5月,四川甘孜州举办区块链产业发展座谈会,与会州委书记刘成鸣发言力挺区块链,称要建设甘孜州水电消纳园区。

视频|区块链简史:激荡十二年

今年我们迎来了比特币的第三次产能减半。区块链和比特币已经走过12年的激荡岁月,然而在12年之前,有多少人为这全新的世界默默付出了一切。 正如中本聪研究院所说:比特币不是在真空中创造的,而是基于这些学者的工作,使得比特币融入到了更广泛的密码学和自由的历史之中。

金色趋势丨BTC再次回补了CME大缺口 下一个在哪?

比特币现货交易全年无休,而CME的比特币期货只在工作日交易,这使得如果周末比特币现货市场的价格变化较大,在周一CME开盘时,比特币期货和现货价格就会存在较大差异,这会推动现货市场价格的变动,这一规律在之前已经多次验证,这是因为跳空则有获利盘,有获利盘说明有反向压力,这种情况往往需要回补缺口释放压力后重新上涨或下跌。

比特白银 币圈又一黑马诞生

比特家族诞生的又一黑马,那就是BTR比特白银。它称得上是近期币圈最为火爆的风口之一了!但其应当如何操作以及收益效果如何,很多人是一知半解。

BTC凌晨减半 多空将尘埃落定

文章开始前,先吹波牛,走一波关注!你懂的。 前期大饼崩盘前,本人在03月04日参加金色沙龙、即BTC血崩前,就看空2020减半!以及早在大半年之前,2019.09.03比特币还是一万刀以上的时候,就预知了熊市将要来临。 并且。本人的看空并不是空穴来风的看空,都有一二三点充分理由。

用例不只有支付 闪电网络还有这三大使用场景:聊天、游戏、Defi

当人们谈到比特币闪电网络的时候,第一个想到的是作为在比特币区块链基础上搭建的第二层网络,它可以实现更便宜、更快的支付,但这并不是闪电网络的全部功能。 Lightning Labs的首席执行官Elizabeth Stark看到了开发人员在闪电网络上进行试验时的大量用例。