兄弟相見不相識?淺談軟硬分叉

買賣虛擬貨幣

最近島叔沉迷於吃雞手遊無法自拔。前段時間,吃雞手遊更新版本,本島叔沒注意到,結果不能和小夥伴們愉快的開黑了。於是本島叔退出,立刻更新了版本。

對於這類傳統的APP,我完全不用擔心找不到小夥伴,因為這類APP,資料系統儲存都是集中的,版本管理也是集中的,如果是重大升級,完全可以設定為若不更新到最新版本就不能進行登入操作,從而確保使用者使用的總是正確的版本。

這些都是傳統的中心化的APP,而當我們使用的應用不再是中心化管理,比如區塊鏈要升級,也是一鍵升級,等待版本更新那麼簡單嗎?

我們知道,區塊鏈是一種去中心化的使用方式。一旦有了新的軟體版本釋出後,是不是每個人都會去升級到新版本,我們無法預知。

除此之外,還會出現新的版本增加了新的資料結構,之前版本不能有效識別的問題。因為部分使用者升級了新版,還有一部分使用者還沒升級,而這些新舊版本的軟體仍然在各自不停的挖礦、驗證、打包區塊,一段時間過後就會變成這樣:

行業內把這種情況叫做分叉。分叉又被分為兩種情況,硬分叉和軟分叉。

分叉問題,就如同兩個新生嬰兒,一個留在家中養育,一個流浪在外長大,本是同根生,卻互不相識。

軟分叉

我們先來聊一聊什麼是軟分叉。老節點不能發現新協議的變化,從而繼續接受新節點用新協議所挖出的區塊,這種情況下叫軟分叉,此時老節點礦工可能在它們完全不能理解和驗證的新區塊上繼續新增區塊。

乍一看,好像很難理解,其實很簡單。

所謂的區塊鏈,就是一個個的區塊資料,透過區塊的雜湊值串聯起來的,如此形成一個鏈條般的賬本資料。

在形成區塊3的時候,區塊鏈突然升級了,那麼區塊3之後則變成了新版本,區塊1和區塊2就變成了老版本,在這種情況下,區塊1和2依然能夠識別新版本出現的資料結構,新老版本能夠相容。

其實在這個過程中,新版本不過是使用了障眼法,因為在老版本中一直存在備用的資料欄位,這個資料欄位一直都是閒置的,在老版本中也沒有使用備用欄位,因此對於這個新版本發出的區塊是依然能接受的,相當於欺騙了老版本節點。

硬分叉

解釋完軟分叉,我們再聊一聊關於硬分叉的那些事情。

當系統中出現新版本的軟體,並且和之前版本軟體不能相容,老節點無法接受新節點挖出的全部或者部分割槽塊,導致同時出現兩條鏈,這種情況下被稱為硬分叉。

當部分人升級了區塊鏈,還有部分人沒有升級區塊鏈的時候,由於新老節點認為對方的交易是不合法的,版本不能相容,則會出現老節點只認識老節點的交易,新節點只承認新節點的交易,那麼區塊鏈則會變成這樣:

目前就BTC/" target="_blank"">比特幣出現數個不同的版本,包括Bitcoin Core,還有新推出的Bitcoin Clsaaic、Bitcoin XT以及Bitcoin Unlimited。

而以太坊經歷了著名的THE DAO合約漏洞攻擊事件後直接就進行了硬分叉,分為以太坊經典和以太坊,這其中又糾結了各種價值觀的問題,利益問題。

就現在而言,實際運用過程中,在區塊應用程式進行重大升級時,都會事先取得社羣的投票同意。保證大部分的執行節點的算力要大於老版本的節點,所以一旦完成升級後,後續的打包區塊基本是新版本節點發出的,也就不太會發生老版本區塊和新版本區塊交錯連結的情況。

免責聲明:

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

推荐阅读

;