解讀 ChainX 2.0 的混合共識機制

買賣虛擬貨幣

CHAINX · PCX

文章來源於 ChainX 社羣投稿

ChainX 2.0 將採用全新的共識機制即“Babe+Grandpa”混合共識機制。該共識機制最顯著的特點就是將確定最終性的任務從區塊生產的流程中分離出來。

什麼是最終性(Finality)

在區塊鏈的環境中,最終性是確認所有格式良好的區塊一旦提交給區塊鏈將不會被撤銷。當使用者進行交易時,他們希望確信一旦他們的交易完成,交易就不能被任意更改或撤銷。因此,在設計區塊鏈共識機制時,最終性(Finality)變得至關重要。

概率最終性vs可證明最終性

PoW(完全的中本聰共識(Nakamoto Consensus)的一部分,是一種讓所有節點對區塊生產者達成一致性的方法)只能實現概率最終性來達到最終共識。概率最終性意味著假設某種特定的條件下,如果我們看到多個區塊在某個區塊上構建了,則有很大概率估計它就是最終了。而這種型別的最終性意味著在接下來的某個時間,所有的節點都將對某一組資料的真實性達成共識。但是最終共識可能需要很長的時間,並且無法確定這個時間有多久。

但是例如 GRANDPA 或以太坊的 Casper FFG 之類的最終性工具,他們被設計出來的目的就是為區塊提供更強更快的最終性,在經過拜占庭協議的一些處理後,它們永遠無法篡改。這種在不可逆的共識下的最終性型別稱為可證明的最終性。

“Babe+Grandpa”的混合機制的好處

它可以同時獲得概率最終性(總是可以產生新的區塊)與可證明最終性(在沒有逆轉機會的規範鏈上達成一致性)兩者的優點。
它還避免了兩者的缺點:概率最終性中不知不覺地遵循錯誤分叉的可能,以及可證明最終性中“暫停”(無法產生新的塊)的問題。
ChainX 透過結合這兩種機制可以快速地生成區塊,把較慢的確定最終性的任務放在單獨的程序中執行,同時不必承擔交易處理慢或暫停的風險。

BABE

BABE(Blind Assignment for Blockchain Extension)是一個基於 PoS 的共識協議。它在驗證人節點之間執行,並確定由哪個驗證人產生新的區塊。以創世區塊為起始,將建立區塊的後續時間劃分為不同的 epoch,再將不同的 epoch 劃分為更小時間間隔的 slot,如圖 1 所示。

圖1

每一個 slot 裡都會透過 VRF (verifiable random function,可以理解為隨機抽獎函式)從眾多的節點中抽出一部分有資格出塊的節點。每一個 slot 選出的出塊節點都可能不同,有可能多個,也可能一個都沒有被選上。總體來說一個節點被選上的概率與它抵押的代幣數量成正比。在 ChainX 中,一個 slot 大概是 6 秒鐘。

圖2

上圖中代表連續 5 個 epoch。每一個 epoch 中又有若干 slot。每一個 slot 中被選中的出塊節點(slot leader)從 0 到多個不等。
代表每一個 epoch 對應的隨機數,用來進行 VRF 計算的。

當一個 slot 有多個驗證人


每個驗證人都會產生一個區塊並將其廣播到網路中。這時就像是一場比賽,誰的塊先傳播到網路中更多的節點誰就會取得勝利。由於網路的拓撲和網路延遲的影響,可能多條鏈都會持續向後生成區塊,直到最終被確定為止。那麼如何決定哪一個分支作為最終主鏈呢?這個時候就需要藉助 GRANDPA 來進行抉擇了。

當一個 slot 中沒有驗證人

此時這個 slot 由 aura(一種安全性略低的演算法)方法選擇一個驗證人去出塊,這種區塊叫做次級區塊(secondary block)。但是一個 slot 中如果已經有了在抽獎中獲勝的驗證人的話,那麼他就會生成一個主要區塊(primary block),就不會再有次級區塊了。因此,我們會看到每一個 slot 中必定會有一個區塊,它要麼是主要區塊,要麼是次級區塊。如圖3 所示,在臨時分叉的鏈中可能既有主要區塊(圖中用 1 表示)也有次級區塊(圖中用 2 表示)。

圖3

GRANDPA

GRANDPA (GHOST-based Recursive ANcestor Deriving Prefix Agreement) 是一個確定最終性的工具。
只要有 2/3 的節點是誠實的,並且可以在非同步的情況下應付 1/5 的拜占庭節點,那麼它就可以在部分同步的網路模型中工作。其中有一個顯著的區別就是,即使在長期的網路分割槽中或者其他的網路故障之後,GRANDPA 協議仍然會就某一條鏈達成共識,而非對某一個區塊達成共識,這就極大的加快了區塊最終確定的過程。

分叉選擇

使用“Babe+Grandpa”混合共識機制在面臨分叉時 ChainX 的選擇就變得很明確。BABE 共識會始終在 GRANDPA 最終確定的鏈上生成區塊。在最後確定的區塊後面可能會有分叉,BABE 共識會透過在具有最多主要區塊(如圖 3 中標有 1 的區塊)的鏈上建立區塊以提供概率確定性。
如圖 3 所示,其中黑色的區塊是已經被最終確定的區塊。圖中標有 1 的區塊代表主要區塊,標有 2 的區塊代表次級區塊。在該圖中,最下面的鏈沒有建立在最新確認的區塊上所以直接忽略。最上面的一條鏈雖然是最長鏈,但是它的主要區塊確是最少的,因此它不符合條件。而第二條鏈中它的區塊總數雖然短,但其主要區塊數確是最多的,因此會選擇第二條鏈。

作者:土方不二,來源:ChainX社羣

免責聲明:

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

推荐阅读

;