就在今夜,比特币迎来众所瞩目的第三次减半。 自2009年诞生,比特币已经走过波澜壮阔的十年。从交易所、矿机、投资者到媒体,比特币已经带动加密货币行业形成一个完整的生态系统。比特币区块奖励减半从供给侧直接减少一半的货币供给,显然在边际和投资者心理上都极大彰显了比特币的稀缺性。 因此,四年一次的比特币减半成为整个加密货币行业关注的焦点。 但看了那么多比特币减半的文章,你可能还不知道比特币具体是怎么减半的,比如四年减半一次的四年是怎么来的,怎么计算当前区块的奖励等问题。 值此比特币第三次减半之际,来跟随金色财经记者看看BitcoinCore的代码是具体怎么执行比特币区块奖励减半的。 比特币减半代码 比特币减半,是比特币区块奖励减半的简称。而比特币的区块奖励减半是比特币共识的一部分,直接写在比特币软件代码里。 下面是代码截图。 比特币区块奖励减半代码来源:BitcoinCoregithub 就这6行代码定义的函数GetBlockSubsidy决定着不同区块高度下的比特币区块奖励。中本聪创造的比特币共识设置区块奖励从50个比特币开始每210000个区块比特币奖励减半,减半64次后区块奖励为0。 210000个区块的时间大约为四年,这也是币圈人说的四年一次减半的由来。因为比特币减半事件是写进比特币软件代码里并有分布在全世界的比特币全节点验证,其共识很难改变,这也是“InCodeWeTrust”的由来。 逐行解读比特币减半 上诉代码主要有几个函数和参数: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)return0;判断减半次数是否大于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万个比特币的释放过程,见下图。 PieterWuille修复了这个bug,有一个专门的比特币改进协议BIP042描述这个bug,文档见这里。 参考资料: WhereintheCodeDoestheHalvingTakePlace BIP042 (责任编辑:张雅洁HF083) 看全文 本文来源:和讯区块链 —- 编译者/作者:和讯区块链 玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。 |
解读比特币具体是怎么减半的
2020-05-13 和讯区块链 来源:火星财经
- 上一篇:三两谈币:登上币圈鄙视链顶端的秘诀是……
- 下一篇:减半过后,将开启新一轮的反弹吗?
LOADING...
相关阅读:
- 欧洲加密货币交易所2gether受到最新威胁2020-08-06
- 以太坊在反弹洗牌市场中成为领导者2020-08-06
- IPFS100.com发布会圆满落幕助力IPFS生态健康良性发展2020-08-06
- 币操胜券:8.6比特币行情分析 还会二次上涨试探上方阻力是否有效2020-08-06
- 币圈短线之王:8.6比特币行情 回调做多 预破新高2020-08-06