就在5月12日凌晨3:23,比特币成功完成众所瞩目的第三次减半。
自2009年诞生,比特币已经走过波澜壮阔的十年。从交易所、矿机、投资者到媒体,比特币已经带动加密货币行业形成一个完整的生态系统。比特币区块奖励减半从供给侧直接减少一半的货币供给,显然在边际和投资者心理上都极大彰显了比特币的稀缺性。
因此,四年一次的比特币减半成为整个加密货币行业关注的焦点。
但看了那么多比特币减半的文章,你可能还不知道比特币具体是怎么减半的,比如四年减半一次的四年是怎么来的,怎么计算当前区块的奖励等问题。
值此比特币第三次减半之际,来跟随金色财经记者看看Bitcoin Core的代码是具体怎么执行比特币区块奖励减半的。
比特币减半代码
金色财经行情播报丨BTC横盘整理,局部多头弱势:据火币行情显示,昨日下午BTC加速下跌,最低探至9047USDT,随后横盘震荡整理,下午局部价格整体徘徊在9120USDT附近,多头弱势。日线图均线MA5压力位构成打压,并且延续下行通道,目前连续下跌4日或有修补动作。4小时图震荡整理后未能站稳MA5,1小时图持续横盘过程中均线MA30的压力制约多头。截至18:30,主流币的具体表现如下:[2020/7/17]
比特币减半,是比特币区块奖励减半的简称。而比特币的区块奖励减半是比特币共识的一部分,直接写在比特币软件代码里。
具体减半代码在这里,下面是截图。
金色财经独家分析 区块链或已经成为广东省金融科技改革开放与创新应用的重要一环:今日,国务院印发进一步深化福建、天津、广东自由贸易试验区改革开放方案的通知。其中在广东的通知中提到:将建设广东区域性股权市场,根据资本市场对外开放进程,适时引进港澳及国际投资机构参与交易。大力发展金融科技,在依法合规前提下,加快区块链、大数据技术的研究和运用。在《国务院关于印发进一步深化中国(广东)自由贸易试验区改革开放方案的通知》之前,广州与深圳已经是我国区块链产业的重地。同时,上一周佛山市南海区出台《佛山市南海区人民政府关于推进“区块链+”金融科技产业发展的实施意见》,该意见围绕金融、科技、产业融合发展战略部署,推动广东金融高新区“区块链+”金融科技产业集聚创新发展。可见,区块链已经成为广东省金融科技改革开放与创新应用的重要一环。[2018/5/24]
比特币区块奖励减半代码 来源:Bitcoin Core github
金色财经现场报道 区块链创业学院院长沈大海:区块链3.0离我们很远:金色财经现场报道,在4月3日举办的2018年世界区块链峰会现场,区块链创业学院院长沈大海:“区块链一共有1.0、2.0、3.0,1.0是比特币为主的数字货币,这是区块链的1.0。2.0是以太网为核心的智能合约平台。3.0就是高性能的区块链的应用场景和平台。所以我简单总结,1.0是挖矿、炒币;2.0是ICO、发币;3.0是项目的落地,如何使用token。那么在这个过程中,3.0离我们非常远,但是好多项目在2.0阶段是以行业解决方案为切入点,通过结合区块链、结合行业,让区块链能够在某个行业进行落地。”[2018/4/3]
就这6行代码定义的函数GetBlockSubsidy决定着不同区块高度下的比特币区块奖励。中本聪创造的比特币共识设置区块奖励从50个比特币开始每210000个区块比特币奖励减半,减半64次后区块奖励为0。
金色财经讯:10月4日新华社:对虚拟货币交易平台隐匿的风险甚至犯罪情形,须进一步加强监管,以“零容忍”的态度从源头上堵住金融安全隐患。[2017/10/9]
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
金色财经讯,4月30日,微众银行发布2019年年报。年报显示,去年全年该行营收148亿元,同比增长48.26%;净利润39.5亿元,同比增长59.66%.
1900/1/1 0:00:00算力是在减半期间一个值得关注的指标。以前减半的算力往往显示出与价格相似的趋势。由于有传言说BTC的价格与网络的算力高度相关,所以之前的减半是否可以预示着下一次减半会发生什么?总体而言,大多数专家.
1900/1/1 0:00:00金色财经 区块链5月4日讯 在2020年第一季度电话财报会议上,速汇金(MoneyGram)董事长兼首席执行官亚历山大·福尔摩斯(Alexander Holmes)透露.
1900/1/1 0:00:00前面回踩并未有效跌破14000-10500的下降趋势线支撑,昨日迎来反弹,再次逼近10000关口,10000不是关键压力位,近期主要压力还是14000下来的0.618点位10100附近.
1900/1/1 0:00:00比特币第三次减半进入倒计时!再过4天,北京时间5月12日09:54左右,比特币区块奖励将减半至6.25枚比特币.
1900/1/1 0:00:00文章系金色财经专栏作者牛七的区块链分析记供稿,发表言论仅代表其个人观点,仅供学习交流!金色盘面不会主动提供任何交易指导,亦不会收取任何费用指导交易,请读者仔细甄别,谨防上当.
1900/1/1 0:00:00