就在5月12日凌晨3:23,比特币成功完成众所瞩目的第三次减半。
自2009年诞生,比特币已经走过波澜壮阔的十年。从交易所、矿机、投资者到媒体,比特币已经带动加密货币行业形成一个完整的生态系统。比特币区块奖励减半从供给侧直接减少一半的货币供给,显然在边际和投资者心理上都极大彰显了比特币的稀缺性。
因此,四年一次的比特币减半成为整个加密货币行业关注的焦点。
但看了那么多比特币减半的文章,你可能还不知道比特币具体是怎么减半的,比如四年减半一次的四年是怎么来的,怎么计算当前区块的奖励等问题。
值此比特币第三次减半之际,来跟随金色财经记者看看Bitcoin Core的代码是具体怎么执行比特币区块奖励减半的。
比特币减半代码
金色相对论丨林晗:以太坊2.0通过“信标链+多分片链”模式提高网络的可扩展性:在今日举行的金色相对论中,针对“以太坊2.0相对于以太坊1.0主要改进在哪里?”的提问,OKEx矿池运营总监林晗发言指出:以太坊2.0和现有以太坊网络的最大区别之处在于,改用PoS机制代替PoW机制来对交易顺序达成共识。PoS和PoW一个显著的区别在于,PoW机制的网络中,是算力决定话语权;而在PoS机制的网络中,是持币的数量和时间决定话语权。以太坊2.0的目标是提高以太坊的可扩展性、安全性和可编程性。通过“信标链+多分片链”模式,每一条分片链都是一条单独的链,很多条分片链由信标链统一起来,这将有效提高整个网络的可扩展性。所以以太坊2.0之所以转为PoS机制,最重要的一个原因其实是出于本身性能优化的考虑。当然,转为PoS机制的以太坊,相对于PoW机制而言,也会降低参与门槛,让更多的普通用户参与到整个区块链网络的治理中。[2020/6/17]
比特币减半,是比特币区块奖励减半的简称。而比特币的区块奖励减半是比特币共识的一部分,直接写在比特币软件代码里。
金色晨讯 | 马耳他批准了14个加密资产代理商并已发放金融牌照:1.雄岸科技控股股东出售股份。
2.巴基斯坦国家银行正在考虑到2025年推出数字货币。
3.马耳他批准了14个加密资产代理商并已发放金融牌照。
4.GateChain将在今年第三或第四季度发布测试网和主网。
5.易见股份提示风险:对区块链的探索及应用仍处初期阶段。
6.安永会计师事务所提议将QuadrigaCX重组程序转为破产程序。
7.奥地利数字和经济事务部长:不需要对区块链进行监管。
8.百度牵手湖南省政府依托区块链等技术推进百度大脑等落地。
9.信息发展:已提交区块链备案申请并待工信部正式颁布。[2019/4/3]
具体减半代码在这里,下面是截图。
金色晨讯 | 怀俄明州通过认定加密货币为货币的法案 以太坊开发者决定推迟ProgPow升级:1.怀俄明州通过认定加密货币为货币的法案。
2.ADA首席执行官:ADA不受POS v3数字货币漏洞影响。
3.以太坊开发者决定推迟ProgPow升级。
4.Grin全职开发者完成本轮筹款计划既定目标。
5.毕马威:加密资产具有颠覆性潜力 但必须机构化。
6.马来西亚证券委员会修订其“认可市场指南” 引入加密货币交易平台法规。
7.雄安发布《垃圾处理过渡设施项目招标公告》 用区块链进行项目资金管理。
8.马来西亚数字资产交易市场将与股权众筹(ECF)、P2P融资合并。
9.刘强东新年公开信:通过区块链等科技提升用户体验和升级商业模式。[2019/2/2]
比特币区块奖励减半代码 来源:Bitcoin Core github
分析 | 金色盘面: ETH/USDT在280形成短线关键支撑:金色盘面综合分析:ETH/USDT受短线资金持续流出影响,多次下探280形成关键支撑,此位置是短线多空分水岭,若跌破将进入新的空头格局,不破则还有继续上冲的机会,建议密切关注。[2018/8/21]
就这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
随着2020年各地两会的陆续闭幕,各省、自治区、直辖市的政府工作报告纷纷出炉。政府工作报告是对2019年的政府工作进行总结,并对2020年的政府工作进行安排部署,既安排具体的工作,也对每一项工作.
1900/1/1 0:00:00#加入币核科技和霍比特的吐槽战队#这个pizza节朱啸虎在朋友圈否认被拘留传闻:6月18日消息,今日,有传闻称金沙江创投管理合伙人朱啸虎被拘留.
1900/1/1 0:00:00▲图1GMI 简介GMI (Guan Mou Index),又称官某指数,由 Morecoin 数据研究院首席摸鱼达人官某推出,是一个基于价格变化速率和永续合约资金费率状态的牛熊指数.
1900/1/1 0:00:005月20日,2009年2月产生的远古比特币地址17XiVVooLcdCUCMf9s4t4jTExacxwFS5uh转出了约50个比特币引发市场关注。目前,这50个BTC已经有了新的动向.
1900/1/1 0:00:00金色财经近期推出金色硬核(Hardcore)栏目,为读者提供热门项目介绍或者深度解读。按:离比特币减半只有3天,5月8日早间比特币突破10000美元大关.
1900/1/1 0:00:00前言:加密美元是加密世界当前最大的用例之一。蓝狐笔记发现,根据CMC的统计,USDT的昨日交易量超过BTC,是BTC+LTC+EOS的总和。加密美元在区块链上每天都进行大量的转移.
1900/1/1 0:00:00