學術 | 5分鐘讀懂區塊鏈分叉

尋夢新聞LINE@每日推播熱門推薦文章,趣聞不漏接❤️

加入LINE好友

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

現在,我們會推出由實驗室教授、博士生以及碩士生主筆撰寫的系列文章。本期文章由北京大學的博士生辛武撰寫。

學術 | 5分鐘讀懂區塊鏈分叉

在學術 | 分叉史上的三次重大事件一文中,我們簡要概述了三次分叉事件,本文會對分叉的類別和原理做出簡要的介紹,務求讓沒有經驗的小白也完全看得懂。

一、

區塊鏈分叉概念

區塊鏈的分叉需要從「系統升級」談起,大家都知道區塊鏈構建的是去中心化的系統,而我們傳統的系統大都是中心化的系統。

對於中心化的系統,其升級比較簡單,可分為:服務器升級和終端(客戶端)升級。對於服務器升級來說,只要在後台部署好,即可一鍵升級;對於終端升級來說,可以選擇在軟件庫或應用商店直接升級,終端版本的不一致並不會影響客戶使用其服務。

對於去中心化的系統,其升級比較複雜。由於其沒有中心機構,沒有服務器,所以不存在服務器升級;對於終端升級來說,可以在各自社區中下載、安裝,然後完成升級。這里需要注意的是:終端版本的不一致,可能影響客戶使用其服務,最終導致其分叉。

區塊鏈分叉就是指區塊鏈在進行「升級」時發生了意見分歧,從而導致區塊鏈分叉,即終端版本不一致。由於沒有中心化機構,數字貨幣每次「代碼升級」都需要獲得社區的一致認可,如果社區無法達成一致,區塊鏈就會形成分叉。

「升級」可能導致「共識機制」不同,共識機制可分為以下幾種:

l 共識算法:NBFT/CFT:Paxos、Raft;BFT:PBFT、 POW、POX

l 區塊大小:1MB、2MB、8MB、32MB、64MB

l 帳戶模型:UTXO、帳戶餘額

l 挖礦難度:時間間隔、Hash函數

l 貨幣總量

l ……

二、

區塊鏈分叉分類

在區塊鏈升級時或終端版本升級時,如果新版本和舊版本中的區塊能夠相互兼容,稱為「軟分叉」,不能相互兼容就稱為「硬分叉」。

軟分叉和硬分叉都「向後兼容」,這樣才能保證新節點可以從頭驗證區塊鏈。而軟分叉還可以「向前兼容」,向前兼容是指舊版本的終端可以接受由新版本的終端所產生的區塊,如下圖所示:

學術 | 5分鐘讀懂區塊鏈分叉

舊版本 新版本 舊版本

三、

比特幣的最長鏈原則

在比特幣挖礦中,存在2個礦工幾乎同時解出題目或計算出Hash值的情況,即同時挖礦成功。在這種情況下2個礦工會形成2個區塊,其數據一定不一樣。接下來對這2個區塊進行分析:

首先,這2個區塊中記錄的第一筆交易為:CoinBase交易(挖礦交易)。這筆交易沒有轉出地址,即沒有任何人付給礦工這筆錢,這筆錢來自系統;礦工可以理所應當的記錄自己獲得了12.5比特幣;所有節點都認可礦工這樣記錄,因此礦工就得到了挖礦收入。由於每個礦工只會把挖礦收入轉入自己的地址,而每個礦工的地址不同,故2個區塊中的第一條記錄肯定不一樣;

其次,這2個區塊中打包的交易數據也不同。由於交易手續費不同,礦工都會優先打包手續費高的交易,當存在相同手續費的交易情況時,每個礦工的選擇也會不同。

由於這2個礦工的區塊數據都不一樣,所以他們解題得出的結果也是不一樣的,即計算出的Hash值不同,但都是正確答案,只是區塊不同。於是,此時區塊鏈中出現了兩個都滿足要求的不同區塊。

那麼,全體礦工這時該怎麼辦呢?

由於在區塊鏈中網路廣播的距離遠近不同,不同的礦工接收到這2個區塊是有先後順序的。通常情況下,礦工們會把自己先看到的區塊復制過來,然後接著在這個區塊開始新的挖礦工作。出現了這樣的情景:

學術 | 5分鐘讀懂區塊鏈分叉

以POW共識機制為例,從分叉的區塊起,由於不同的礦工跟從了不同的區塊,在分叉出來的兩條不同鏈上,算力是有差別的。

由於算力和礦工的數量成正比,因此兩條鏈的增長速度也是不一樣的,在一段時間之後,總有一條鏈的長度要超過另一條。

礦工永遠認為最長鏈是正確的。當礦工發現全網有一條更長的鏈時,他就會拋棄他當前的鏈,把新的更長的鏈全部復制回來,在這條鏈的基礎上繼續挖礦;所有礦工都這樣操作,這條鏈就成為了主鏈。

如下圖所示,分叉出來的鏈會被拋棄掉,之後會消失。在這個分叉過程中:所有礦工都遵從同樣的機制,即「追隨最長鏈原則」。

學術 | 5分鐘讀懂區塊鏈分叉

四、

圍繞區塊鏈分叉的分析

根據前面區塊鏈分叉場景的描述,區塊鏈分叉有以下四種情況:

l 第一種:區塊鏈內部機制——區塊鏈產生孤塊(軟分叉)

數字貨幣正常記帳因網路延遲等技術原因,可能出現了兩個不同內容區塊,當其中一個後面跟的區塊更多時,另一個區塊及跟隨的短鏈就會被拋棄變成「孤塊」,這也就是所謂「追隨最長鏈原則」

l 第二種:終端版本升級——軟分叉

軟分叉是指舊的節點並不會意識到區塊鏈代碼發生改變,並繼續接受由新節點創造的區塊。礦工們可能完全沒意識到區塊鏈已經分叉了。

l 第三種:終端版本升級——硬分叉

硬分叉升級時要求大家都更換到新版本,如果有人還用舊版本,就會產生兩個相互不承認的分叉鏈,這時「最長鏈原則」無效了。但舊版本出的塊往往沒有交易所支持,區塊獎勵一文不值,所以用舊版本的人發現沒人跟隨他出塊,就會找原因,發現新版本就會立刻更新版本,舊版本的鏈就消失了。

l 第四種:社區、鏈、幣的分裂——永久分叉(硬分叉)

如果兩個不兼容的版本不是因為意外而並存,而是因為各有一些人支持不同版本的特徵,堅決反對另一個版本的特徵。

兩個版本就一直有人支持同時運行,互相不接受包含了對方版本特徵的鏈。記出來的區塊鏈就永久分成了兩個鏈,鏈上記載的幣就分成了兩種,社區也分裂成兩個社區。

五、

總結

「區塊鏈分叉」會消失的情況:

l 第一種:區塊鏈內部機制——區塊鏈產生孤塊(軟分叉)

l 第二種:終端版本升級——軟分叉

l 第三種:終端版本升級——硬分叉

「區塊鏈分叉」不會消失的情況

l 第四種:社區、鏈、幣的分裂——永久分叉(硬分叉)

對於不會消失的「區塊鏈分叉」,即永久分叉,並非技術問題,而是一個涉及人性和利益的問題,目前看來,似乎難以解決。

About 尋夢園
尋夢園是台灣最大的聊天室及交友社群網站。 致力於發展能夠讓會員們彼此互動、盡情分享自我的平台。 擁有數百間不同的聊天室 ,讓您隨時隨地都能找到志同道合的好友!