宇宙链 宇宙链
Ctrl+D收藏宇宙链
首页 > SOL > 正文

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

作者:

时间:1900/1/1 0:00:00

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

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

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

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

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

比特币减半代码

金色财经挖矿数据播报:BTC今日全网算力上涨1.02%:金色财经报道,据蜘蛛矿池数据显示:

BTC全网算力150.290EH/s,挖矿难度21.72T,目前区块高度671897,理论收益0.00000713/T/天。

ETH全网算力411.520TH/s,挖矿难度5330.57T,目前区块高度11916999,理论收益0.01075159/100MH/天。

BSV全网算力0.577EH/s,挖矿难度0.08T,目前区块高度675758,理论收益0.00155886/T/天。

BCH全网算力0.911EH/s,挖矿难度0.19,目前区块高度676042,理论收益0.00098836/T/天。[2021/2/24 17:46:57]

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

金色热搜榜:ONT居于榜首:根据金色财经排行榜数据显示,过去24小时内,ONT搜索量高居榜首。具体前五名单如下:ONT、WAVES、HPT、BTM、LINK。[2020/9/24]

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

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

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

210000个区块的时间大约为四年,这也是币圈人说的四年一次减半的由来。因为比特币减半事件是写进比特币软件代码里并有分布在全世界的比特币全节点验证,其共识很难改变,这也是“In Code We Trust”的由来。

金色晨讯 | 8月23日隔夜重要动态一览:21:00-7:00关键词:南宁、互金协会、巴哈马

1.南宁市深入推进“区块链+”人社应用和“打包快办”服务改革

2.河北将举办数字经济重大项目签约活动,重点筛选区块链等项目

3.巴哈马央行已将其数字货币Sand Dollar列入官方资产负债表

4.互金协会会长:应用区块链等数字技术创新,打造更多数字金融应用场景

5.麻省理工学院数字货币计划主任:比特币加速了关于数字货币的讨论[2020/8/23]

逐行解读比特币减半

上诉代码主要有几个函数和参数:GetBlockSubsidy、nHeight、Consensus.nSubsidyHalvingInterval、halving、nSubsidy。它们的涵义如下:

GetBlockSubsidy主要是活的当前区块高度下的区块奖励(nSubsidy );

金色财经独家整理:Cointelegraph作者分析上周数字货币走势 揭示影响因素长短期相互转化:上周,诸多关键因素影响者加密货币投资者关于牛熊市的预期。技术分析来看,大多加密货币呈现下跌的走势,跌破200日均线,而一些利好因素又使市场经历了强波动。短期看,三大顶尖广告平台(谷歌,脸书,推特)均禁止加密货币相关广告、币安出走马耳他是看跌两个主因,而G20会议成果的政策放松则是看涨的主因。但文章也揭示了短期因素在长期的相反作用:禁止广告将起到筛选和减少欺诈的作用,长期利好投资者信心,而G20暂时政策上的放松也并未排除可能在远期某一时刻进行更严格的监管措施的可能。[2018/3/27]

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

标签:比特币SIDUBSBSI比特币美元指数President DogeBUBS币BSI币

SOL热门资讯
金色前哨丨谷歌与区块链视频网络Theta Labs达成合作

金色财经 区块链5月27日讯  谷歌已经与Theta Labs达成合作,旨在通过“谷歌云”(Google Cloud)为视频传输网络用户提供支持.

1900/1/1 0:00:00
金色百科|什么是边缘计算 它与区块链有何关系?

在很多政府会议与文件上,都提到鼓励发展5G、大数据、人工智能、区块链、边缘计算等新技术。其中5G、AI、区块链这些词语我们都很熟悉,但边缘计算是什么?它经常和区块链出现在一起,它们之间又怎么样的联系?边缘计算起源于传媒领域,是指在靠近.

1900/1/1 0:00:00
金色前哨 | IMF官员:央行可与私营部门合作建立CBDC

今天在由Circle首席执行官Jeremy Allaire举办的线上活动中,国际货币基金组织(IMF)货币与资本市场部副部长Tommaso Mancini-Griffoli表示.

1900/1/1 0:00:00
金色观察 | 减半“后遗症”:矿业加速洗牌

 5月12日03:23,比特币正式完成奖励减半。此次是比特币诞生以来的第三次减半,减半后每个区块的奖励将变为6.25BTC.

1900/1/1 0:00:00
刘昌用:比特币减半与2021牛市

刘昌用:知密大学发起人,北京大学经济学博士所谓比特币减半,是指比特币的新币发行速度减半,从现在的每10分钟发行12.5个,减半到6.25个,每天由新发行1800个缩减到900个。按现在的价格,减半前每天增发新币价值约1亿元.

1900/1/1 0:00:00
5.19早间行情:行情波动巨大 庄家为什么有恃无恐?

昨日BTC突然快速下挫,短时间内从9800跌至9500下方,所幸行情未继续恶化,当前稳定在9700附近.

1900/1/1 0:00:00