區塊鏈與密碼學全民課堂第1-6講:分叉大戰

買賣虛擬貨幣

導語:本課堂用通俗易懂的系列內容為大家呈現區塊鏈與密碼學領域相關知識。這裡有知識也有故事,從感興趣到有樂趣,全民課堂等你來學。

這個系列中的課程內容首先從比特幣著手進行入門介紹,再延伸至區塊鏈的相關技術原理與發展趨勢,然後深入淺出地依次介紹在區塊鏈中應用的各類密碼學技術。歡迎大家訂閱本公眾號,持續進行學習。

【本課堂內容全部選編自PlatON首席密碼學家、武漢大學國家網路安全學院教授、博士生導師何德彪教授的《區塊鏈與密碼學》授課講義、教材及網際網路,版權歸屬其原作者所有,如有侵權請立即與我們聯絡,我們將及時處理。】

1.6

比特幣的分叉

我們日常在用的手機APP,系統更新猶如家常便飯,偶爾還會上幾個新功能。而這看似簡單的更新在比特幣系統中卻是難上加難,為什麼呢?

軟體由於方案最佳化、BUG修復等原因進行升級是一種非常常見的現象。如手機應用等傳統軟體,升級非常簡單,只需廠商釋出,使用者接受升級即可。

但是對於比特幣這種去中心化的系統,升級是非常困難的,需要協調網路中每個參與者。軟體升級意味著執行邏輯的改變,但是在比特幣中,升級必然會導致不同節點在一定時間內執行不同的版本,於是就會產生分叉。

分叉主要包含軟分叉和硬分叉兩種。如果比特幣升級後,新的程式碼邏輯向前相容,即新規則產生的區塊仍然會被舊節點接受,則為軟分叉;如果新的程式碼邏輯無法向前相容,即新產生的規則產生的區塊無法被舊節點接受,則為硬分叉。

圖:軟分叉/硬分叉示意圖

下面我們就來看看什麼是軟分叉和硬分叉。

1.6.1

軟分叉

軟分叉由於向前相容,新舊節點仍然執行在同一條區塊鏈上,並不會產生兩條鏈,對整個系統影響相對較小。到目前為止,比特幣發生過多次軟分叉,BIP-34,BIP-65,BIP-66,BIP-9。

此處以BIP-34為例,簡單說明軟分叉的過程。在舊版本中,存在一個無意義的欄位"coinbase data”,礦工不會去驗證該欄位的內容。BIP-34升級的新版本則要求該欄位必須包含區塊高度,同時將版本資訊由“1”修改為“2”。該升級共包含三個階段。

第一階段-礦工將版本號修改為“2”,此時所有礦工驗證區塊時,按照舊的規則驗證,即不關心“coinbase data”欄位內容,所有礦工不論以新規則還是舊規則打包區塊,均可以被整個網路接受。

第二階段-如果最新產生的1000個區塊中,版本號為“2”的區塊個數超過75%時,則要求版本號為“2”的礦工必須按照新的規則打包區塊,升級的礦工收到版本號為“2”的區塊時,只會接受“coinbase data”欄位包含區塊高度的區塊,對於版本號為“1”的區塊,仍然不校驗該欄位並接受。

第三階段-如果最新產生的1000個區塊中,版本號為“2”的區塊個數超過95%,則升級的礦工只接受版本號為“2”的區塊,並會對“coinbase data”欄位進行校驗,版本號為“1”的區塊則不被接受,以此來逼迫剩餘少量礦工進行升級。

軟分叉雖然對系統的影響較小,但是為了保證向前相容,不能新增欄位,只能在現有資料結構下修改,即可升級的內容非常有限。同時,因為這些限制,軟分叉一般升級方案比較複雜,複雜的方案往往更容易產生BUG,並且可維護性很差。

比特幣科普之“第一次”分叉

凡是都有第一次,讓我們看看比特幣第一次分叉是怎麼回事兒呢?

第一次軟分叉

比特幣的第一個軟分叉協議升級後禁用了協議特性的OP_RETURN。從技術上講,這是一個UASF,但在早期,實際上只是中本聰在制定協議規則。升級沒有導致區塊鏈分叉。

第一次硬分叉

比特幣的第一次硬叉協議升級增加了一個新功能OP_NOP,而且也是由中本聰指定的。然而,並不是所有人都認為這次升級實際上是一個硬分叉。從結果來看,它沒有導致區塊鏈分叉。

1.6.2

硬分叉

硬分叉就像議會表決一樣,會出現“吵翻天”的情況。

硬分叉相比軟分叉則會“暴力”很多,由於不向前相容,舊版本礦工無法驗證新版本的區塊而拒絕接受,仍然按照舊的邏輯只接受舊版本礦工打包的區塊。而新版本產生的區塊則會被新版本礦工接受,因此新版本礦工儲存的區塊會和舊版本礦工儲存的區塊產生差別,即會形成兩條鏈。

硬分叉修改餘地很大,方案設計比較簡單,但是如果整個網路中有兩種不同的意見,就會導致整個生態的分裂。

當前比特幣影響最廣泛的硬分叉事件即為2017年8月1日的硬分叉,比特幣由一條鏈分叉產生一條新的鏈“位元現金(Bitcoin Cash,BCH)“。這是一場開發者與礦工之間沒有硝煙的戰爭!

下面我們就來還原這次事件的原委。

這次硬分叉的起因是開發者與礦工在比特幣擴容方案上的分歧。比特幣區塊大小為1MB,按照每10分鐘一個區塊的速度,全球每秒只能完成大約7筆交易。比特幣發展初期,1MB的區塊足夠打包出塊間隔內產生的所有交易,但是在比特幣如此火爆的今天,這種處理速度顯然達不到要求。

為了解決以上問題,經過社羣討論,最終形成了兩個改進方案,分別是擴容方案和隔離見證方案。

擴容方案的想法比較直接,既然現在因為區塊太小而導致交易處理速度低下,那就直接擴大區塊的容量,使其能容納更多的交易。原來1MB不夠用,那麼就擴成2MB、8MB,甚至直接擴到32MB.

隔離見證方案的想法是,將交易分為兩部分,一部分是交易資訊,另一部分是見證資訊,這兩部分資訊分開進行處理。好比一輛車太小,要搭車的人太多,於是讓車上所有人將揹包和行李放在另一輛跟著的貨車上,這樣原來的車就可以容納更多的人了。

支援擴容方案的主要是礦工們。採用擴容方案,礦工可以在每個區塊中包含更多的交易,從而獲取更多的手續費,然而若使用隔離見證的擴容方案,小額的交易將不透過區塊確認,礦工的手續費收益會大幅降低,因此礦工更傾向於支援擴容方案。

隔離見證方案的支持者主要是比特幣開發團隊的部分核心成員。他們認為,擴容方案是一個“揚湯止沸”的方案,畢竟不可能無限制地對區塊的容量進行擴大。同時,區塊的變大會使得挖礦的門檻提高,從而降低普通礦工的參與度,導致比特幣系統的去中心化程度減弱。

2016年2月和2017年3月,爭議雙方兩次進行商討,希望雙方“握手言和”,接受一個折中的方案。該方案中,區塊容量將會被擴大到2MB,同時也對比特幣部署隔離見證的方案。但是,由於期間有參與方反悔或者反對,導致最終沒有達成共識,這也給“硬分叉”埋下了導火索。

在2017年8月1日,位元大陸投資的礦池ViaBTC團隊,採用位元大陸提出的UAHF(使用者啟用的硬分叉)方案,挖出了第一個區塊,對比特幣區塊鏈進行了硬分叉。自此,與比特幣競爭的分叉幣比特幣現金誕生。比特幣現金區塊鏈的區塊容量達到了8MB,且沒有采用隔離見證方案。可以說這是一次礦工的勝利。

硬分叉後稱為比特幣現金(BCH),隨後比特幣黃金(BTG)、比特幣鑽石(BCD)、超級比特幣(SBTC)等密碼貨幣出現。

全民課堂第1-6講今天就上到這裡啦,下一期我們將聊聊比特幣的後繼者們,盤點其他密碼貨幣的來龍去脈,敬請期待!

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;