比特币也有过大BUG

2010年8月15日,数字货币出现了第一次溢出漏洞,比特币区块链的第74638块上出现了184,467,440,737.09551616个比特币交易,而比特币本身设计只有2100万枚。这一溢出漏洞及时被技术人员发现,并通过软分叉的方式解决。

事件具体过程和关键时间点如下:

1、因比特币程序bug在74,637区块产生内有错误数据的区块,UTC时间为2018/8/15 5:02:43PM(下图时间为北京时间,-8小时得UTC时间)。

image

2、有人发现区块内数据有错,在bitcoinorg论坛上提交了问题:

image

3、中本聪确认后于UTC时间2018/8/15 9:40:19PM左右(问题提交后的2小时36分钟后)提供升级补丁(强制回退至错误区块之前的正确区块重新挖),此时原区块链正常出块中(平均10分钟左右出块),且当前链内的74,638区块有错误交易。

image

3、此时

升级了的矿机:回退至74,637重新挖矿,但此时由于算力较少,出块很慢,正确的74638区块于 UTC时间的2018/8/15 11:53:59PM被挖出,即升级补丁发布后的2小时13分钟之后;

未升级的矿机:继续在最长链上进行出块;

image

4、由于短时间内矿机均在升级,算力增长极快,正确的比特币区块链快速出块和变长中;同时有错误数据的旧链则因算力流失,出块越来越慢(比特币的难度系数调整通常需要2016个区块才能调整一次

5、在高度74691区块的位置(UTC时间2018/8/16 8:20:08),新链的长度超过了旧链,未升级的矿机遵循最长链原则,也切换到新链,旧链被放弃。

image

作为此时分叉的结果,UTC时间在2018/8/15 5:02:43PM至2018/8/15 11:53:59PM期间正常挖出的块,以及期间的交易只存在于旧链上,因而均作废,旧链不会再增长并被修剪掉,此次分叉成为软分叉,但如果新链从此再也没有赶上旧链,这就会成为硬分叉了。

你可能感兴趣的:(比特币也有过大BUG)