1. 程式人生 > >學術 | 分叉史上的三次重大事件

學術 | 分叉史上的三次重大事件

 

Trias聯合“北大軟微-八分量協同創新實驗室”定期舉辦技術沙龍。該實驗室成立於2017年9月份,以可信計算、區塊鏈等作為主要研究方向,致力於推動智慧互聯新時代下的人機互信問題的解決。

現在,我們會推出由實驗室教授、博士生以及碩士生主筆撰寫的系列文章。本期文章由北京大學的博士生辛武撰寫。本文是上篇,旨在回顧重要的分叉事件,下篇會對分叉的類別和原理做出簡要的介紹,務求讓沒有經驗的小白也完全看得懂。

人們對分叉的態度總是莫衷一是,有的人擁護分叉,認為分叉是新事物替代舊事物的良性發展,有的人反對分叉,認為分叉是傷害共識的不利行為。

有的人因為分叉而名利雙收,還有的人因為分叉爭得面紅耳赤,分叉究竟是好是壞,我們不做評價,這裡簡單介紹一下分叉史上的三次著名事件。

一、攻擊者憑空創造出了1840億個比特幣

2010年8月15日,有人在比特幣區塊鏈的第74638塊上發現了一條讓人驚愕的交易,這筆交易裡竟然出現了184,467,440,737.09551616個比特幣,其中各有922億個比特幣被髮送到兩個比特幣地址,如下圖所示:

據技術人員分析,黑客是通過利用大整數溢位漏,繞過了系統的平衡檢查,成功實現了這次攻擊。

通過上面的交易截圖我們可以看到,在2010年的8月礦工打包一個區塊至少可獲得50個比特幣,其中50個比特幣為幣基交易,而剩下的則為其他使用者在轉賬過程中產生的手續費。

該筆交易在向兩個賬戶中分別轉移92233720368.54275808個比特幣,但是轉出的賬戶上僅有的0.5個比特幣,這筆交易怎麼可能會被其他節點檢測通過並打包至區塊中呢?

問題在於,當時的比特幣系統僅檢測了轉出的比特幣總額是否小於未花費輸出,而沒有檢測每一筆轉出是否小於未花費輸出,而這兩筆交易加起來則發生了大數溢位漏洞,兩筆交易加起來為一個負數。

那麼我們用一個易於理解的表示式來看一下上面的交易:

50.51btc=幣基交易+打包區塊獎勵

   =幣基交易+(輸入金額-總輸出金額)

    =幣基交易+(0.50btc-(92233720368.54275808+92233720368.54275808))

    =50btc+(0.50btc-(-0.010btc))

    =50.51btc

所幸的是,在發現這一異常現象後的不到半天的時間,比特幣核心開發人員就開發完成了比特幣補丁版本,並啟動了分叉,在第74691塊,帶補丁版本的比特幣塊鏈終於追趕上並且超越了原有的出現漏洞的塊鏈,最終是有驚無險地解決了這次比特幣歷史上最為重大的危機事件。

在這種場景下,分叉出來的鏈會被拋棄掉,之後會消失。在這個分叉過程中:所有礦工都不會承認多出來的1840億個比特幣。

二、以以太坊分拆事件為例

2016年6月,the DAO事件。DAO基於以太坊平臺進行眾籌,受到漏洞攻擊,造成300多萬以太幣被盜(當時價值超過5000萬美元)

the DAO是在以太坊上做了一個應用,以以太坊為基礎的一個DAO代幣,他們在十幾天的時間內做了當時市值1.6億美金的一個眾籌,這個是目前人類有史以來P2P眾籌裡面最大的單筆眾籌(單位時間之內),從經濟規模上來講也是最大的。

the DAO的失敗或被盜:因為DAO的程式碼寫的有問題,導致被盜了1000萬個ETC,1000萬個ETC其實黑客就只拿走了300萬個,基金會又僱了一幫人把剩下的700萬給搶回來了。

分拆的導火索就是這樣,其實事情並不嚴重,但是基金會通過一個小範圍內的投票,短時間內就決定了分叉;

他們實現的原理就是在新的錢包裡面,把那幾筆地址給凍結了,也就是說那個地址的幣都提取不出來了,就都回滾回去了,當然這不是通過算力去回滾的。

這件事有一個戲劇性的結果,因為以太坊資料被人為篡改,造成了市面上的集體恐慌,不但衝擊了以太坊,還大大影響了比特幣。

明明以太坊城門失火,殃及比特幣池魚。本來當時比特幣的信用評級實際上是4A(高於某些國家主權貨幣)。但是經這麼一鬧騰,它的信用評級直線下降。

在這種場景下,分叉出來的鏈會並沒有被拋棄掉,之後也有消失,以太坊自此分叉為ETC和ETH。

三、以位元現金及其分叉為例

在討論位元現金之前,我們需要先了解一下比特幣的“擴容之爭”。

大家都知道,在比特幣中,區塊的大小有1MB的上限,日常產生的區塊大小為1-2KB左右。2009年比特幣上線之初尚可以滿足需求,但是隨著區塊鏈和數字貨幣的發展,比特幣的交易數已經突破40萬筆/天,在1MB區塊大小的限制下,比特幣7筆/秒的交易處理速度就太緩慢了,交易高峰期常常會導致比特幣網路的擁堵,交易遲遲無法確認。

這個時候比特幣社群中的各方勢力都提出了各自的擴容方案,有名的方案有“隔離見證、閃電網路、雷電網路”等,但這些方案具有導致“中心化”、礦工收入無法保障的後果,於是有開發團隊提出了“大區塊”的擴容方案,其理念為:基於目前演算法效率、網路頻寬和計算機硬體配置的大幅提高,可以直接在鏈上擴容。

2017年8月1日,位元現金BCH上線,比特幣BTC分叉開始。位元現金支援大區塊,其區塊大小的上限為8MB,如下圖所示,其支持者以吳忌寒和澳本聰Craig Wright等為首。

2018年8月8日,Bitcoin ABC和位元大陸提出在11月15日的升級方案或擴容主張,即根據市場需求慢慢擴大區塊容量;而澳本聰則主張將位元現金區塊的大小一次性擴容為128MB,即Bitcoin SV。

ABC和位元大陸反對的是在11月15日的升級中就將位元現金的區塊大小擴大到128M,其認為目前市場處於熊市,沒有擴容的市場需求;BSV的128M擴容方案並不成熟,缺乏測試資料。

在缺乏市場需求、未經充分測試的情況下,貿然在11月15日的升級中擴容到128M既不必要,也有很大風險。

不過ABC和位元大陸表示在11月15日升級之後願意開始測試128MB的擴容方案,如果測試通過後可在位元現金未來的升級進行部署。但是,澳本聰堅持在11月15日的升級中部署128MB的BSV,並宣稱會利用算力攻擊Bitcoin ABC,使得這場“擴容之爭”被外界稱為“算力大戰”。

實際上,雙方都主張擴容,ABC和位元大陸主張在充分測試、保障安全的前提下擴容,而澳本聰要求立即擴容,故此導致BCH分叉為BCH ABC和BCH SV,如下圖所示: