淺析Facebook LibraBFT與比原鏈Bystack BBFT共識

買賣虛擬貨幣

作者 | 蜂鳴

如果說什麼是區塊鏈的靈魂,那一定是共識機制。

它是區塊鏈的根基。無論公鏈或是聯盟鏈,共識機制都從基礎上限制了區塊鏈的交易處理能力和擴充套件性。

2019年6月18日,Facebook 釋出了自己 Libra 專案的白皮書,引發廣泛關注。作為 Facebook 試圖創造國際流通數字貨幣的重要專案,Libra 區塊鏈採用的是 LibraBFT 共識機制,是一個為 Libra 設計的魯棒的高效的狀態複製系統。它基於一種新型的 BFT 共識演算法,HotStuff。

就在 Facebook Libra 專案白皮書釋出之前不久,5月17日,比原鏈釋出了 BaaS 平臺 Bystack。這是一個一主多側鏈架構的商用區塊鏈系統,主鏈採用 PoW 共識保證多樣資產安全和去中心化,側鏈提供可插拔的共識以滿足不同業務需求。同時,Bystack 本身還針對側鏈獨創了一種 DPoS+BBFT 的共識演算法。

同樣是 BFT 類共識機制,LibraBFT 和 BBFT 兩者有什麼不同呢?

Bystack一主鏈多側鏈架構(圖片來源:Bystack白皮書)

1

區塊鏈共識機制的意義和現狀

共識(Consensus)是分散式系統中節點對資料或網路最終狀態達成的協議。由於網路環境和節點狀態的不可控,共識機制需要同時考慮效能、可靠性、安全性等多方面問題。

共識機制從大的方面,可分為 PoW 等中本聰共識機制,和拜占庭容錯(BFT)類共識機制兩大類。BFT 共識機制廣泛應用於各類聯盟鏈。

PoW 共識在非許可(Permissionless)鏈上應用廣泛,但是它的概率模型在提供較高可靠性的同時,犧牲了效率,浪費了大量計算資源。在具體商業應用環境中,許可(Permissioned)機制已經保證了一定程度上的節點可信度(Semi-Trust)。這樣的前提下,使用者更關心執行效率(TPS)和最終確定性(Finality)。這是BFT共識在聯盟鏈中流行的原因。

主流共識機制對比

2

BFT共識機制

BFT( Byzantine Fault Tolerance)即拜占庭容錯。它是分散式計算容錯技術。

由於硬體錯誤、網路擁塞或中斷、以及遭到惡意攻擊等原因,計算機和網路可能出現不可預料的行為。拜占庭容錯技術被設計用來處理這些異常,在容錯的基礎上達成共識。

與從比特幣衍生出的中本聰共識不同,在BFT類協議中,一旦達成共識,則直接形成確定性結果,而不是中本聰共識的概率上的最終一致。

BFT 類共識在金融場景及聯盟鏈場景中應用甚廣。同時隨著技術進步,公有鏈場景下應用的 BFT 共識也在不斷出現。

3

PBFT 共識機制

實用拜占庭容錯演算法(Practical Byzantine Fault Tolerance Algorithm,PBFT)是首個實用的在非同步分散式網路中實現拜占庭容錯的共識演算法。

PBFT 演算法可工作在非同步環境中,並且最佳化了原始拜占庭容錯演算法效率不高的問題,將演算法複雜度由指數級降低到多項式級,使得拜占庭容錯演算法在實際系統應用中變得可行——這點已得到廣泛驗證。PBFT 演算法可以在失效節點不超過總數1/3的情況下同時保證一致性(Safety)和交付保證(Liveness)。

無論 Facebook Libra 的 LibraBFT 共識協議,還是比原鏈 Bystack 的 BBFT共識機制,都在底層上充分吸收了 PBFT 的優點,採用了已有的經過時間驗證的處理方式,並在 PBFT 的一些短板和不足之處分別做出了各自不同方向的革新。

4

Facebook Libra 的 LibraBFT 共識協議

前面已經說到,Libra 採用基於 HotStuff 的 LibraBFT 共識。

HotStuff 是一個三階段的 BFT 演算法。它將檢視切換流程和正常流程進行合併,不再有單獨檢視切換流程,降低了檢視切換的複雜度。

在 HotStuff 中切換檢視時,系統中的某個節點無需確認「足夠多的節點希望進行檢視切換」這一訊息再通知新的主節點,而是可以直接切換到新檢視並通知新主節點。HotStuff 把確認「足夠多的節點希望進行檢視切換」這一訊息的行為放進了正常流程中。由此把 PBFT 的兩階段確認擴充套件成了三階段確認。

HotStuff 的另一個重要改變,是將 PBFT 的網狀通訊網路拓撲變成了星形通訊網路拓撲。HotStuff 中,每次通訊都依靠主節點。

節點不再透過 p2p 網路將訊息廣播給其它節點,而是將訊息傳送給主節點,由主節點處理後傳送給其它節點。得益於星型通訊網路拓撲,系統的通訊複雜度大大降低。和 PBFT 類似,主節點會提議進行狀態遷移,其它節點收到該狀態遷移要求後,會檢查其合法性。

LibraBFT 在 3f+1 個驗證節點之間收集投票,這些驗證者可能是誠實的節點也可能是拜占庭節點。在網路中存在 2f+1 個誠實節點的前提下,Libra能夠抵禦 f 個驗證節點的雙花攻擊和分叉攻擊。

LibraBFT在一個有全域性統一時間(GST),並且網路最大延時(ΔT)可控的部分同步網路中是有效的。並且,LibraBFT在所有驗證節點重啟的情況下,也能夠保證網路一致性。

5

比原鏈 Bystack 的 BBFT共識機制

區塊鏈應用分層與不可能三角(圖片來源:Bystack白皮書)

根據 Bystack 白皮書,BBFT 是一種基於實用拜占庭容錯 PBFT 的衍生共識,是一種分層拜占庭容錯共識演算法。在保證拜占庭容錯,即允許少量節點(f≤N/3)作惡的情況下,具有以下特性:

(1)配置性(Configurable)

採用模組化可插拔設計,按需配置,並在一定程度上保證對新技術的相容(Future-Proof)。

這是 Bystack 的一個核心競爭點。跨鏈概念近幾年一直有受到廣泛關注,也是區塊鏈發展的重要方向。支援模組化的插拔,使得 Bystack 擁有跨鏈方向的想象空間,有能力形成一個真正擴充套件性強、能相容其他主流共識機制的區塊鏈系統。

這樣的相容能力使得 BBFT 有能力讓其他的聯盟鏈公鏈成為自己的側鏈,讓自己不僅僅是一個區塊鏈作業系統,而且形成一個區塊鏈作業系統生態。這樣一來,想象空間就大了。

不過當然,要達到這樣的程度,技術實現上可能任重道遠。相容性是一個動輒消耗大量研發成本的方向,它不難,但是繁瑣。BBFT 很難一步登頂一開始就做到最好,目前只能一步一步來。

(2)適應性(Adaptive)

即針對不同網路環境提供穩定的執行效率。

BFT 需要節點之間互相交換驗證結果以取得多數共識。一般來說,每個節點需要得到足夠多(≥(2/3)*N)的來自其他節點的回覆才能做出有效判斷。網路延時直接影響資訊互動效率,特別在跨地域跨境應用中,延時將成為網路執行的瓶頸。

在 BBFT 中,共識節點維護當前網路拓撲,按最短路徑原理相近的節點採取優先通訊。對通訊的聚合可以進一步降低延時。同時類似PBFT,BBFT 中領導節點(Leader)的角色被弱化,共識節點拿到超過2/3票數就可以做出判定,從而在領導節點通訊受到阻塞的情況下,也不會對整個網路決策產生巨大影響。

(3)擴充套件性(Scalable)

保證共識複雜度隨網路容量線性(Linear)或低於線性(Sub-Linear)增加。

一方面共識節點越多網路的可靠性相對越高;另一方面,傳統 PBFT 中節點通訊的複雜度 O(N^2) 隨網路容量指數級增長,極大限制了節點數目。BBFT中對訊息的有效聚合可以有效減少訊息傳送的次數,從而保證 O(N) 的複雜度要求。與網路拓撲相結合,可以把網路分割為多層結構,訊息資料可以在同層內有效共享,以多籤聚合的形式跨層傳播。多籤資訊驗證可以使用現有的成熟的

方案,例如基於 Shnorr 簽名的 MuSig 演算法,可以在保證多籤驗證效率的同時,抵禦Rogue Key Attack攻擊。

(4)異構性(Heterogeneous)

分離共識的驗證和通訊。

共識達成需要驗證和通訊,但兩者並沒有很強的關聯。採取低耦合的共識框架可以進一步提高網路可靠性和效率。

驗證模組往往取決於具體使用者邏輯,對算力和安全性都有一定要求。通訊模組和使用者邏輯相對獨立,主要處理網路連線和請求。網路拓撲和最短路徑的計算和選擇可以在這裡完成。由於和使用者邏輯無關,通訊模組可以以抽象層(AbstractionLayer)或者中介軟體(Middleware)的形式和驗證對接。

異構帶來的優勢還體現在用最優的工具做最適合的事。驗證和通訊允許執行在不同的系統上、不同的操作環境中,針對不同硬體的算力優勢和安全保證(TrustZone)來發揮最大效能。

BBFT 的兩大主要特點在於:

多層結構:根據網路進行分層。傳統 BFT 是單層結構,只有一個領導節點和若干處於同等地位的共識節點。BBFT 的創新在於大領導下面還有小領導,如果領匯出問題,不至於對網路產生較大影響,相當於弱化了領導的作用。而且由於是多層結構,可以把網路通訊分流再組合,最佳化網路通訊的延時和數量。

傳統 PBFT 的通訊複雜度是指數級的,難以擴充套件,網路裡面隨著節點數暴漲,整個網路延遲可能很嚴重。BBFT 透過分層和加密簽名的聚合,對整個網路結構有效組合,可以保證通訊複雜度線性增長,而不是指數級增長。

可配置性:Bystack 上的側鏈工程其實分三個模組,一是底層共識演算法,二是網路劃分,三是簽名聚合。其中,網路劃分和簽名聚合是相對獨立的模組,可以使用不同的網路分層演算法、簽名聚合演算法與共識層的演算法進行搭配。可以根據具體使用者場景靈活選用不同的合理方案。

6

LibraBFT vs BBFT:共同和差異

LibraBFT 與 BBFT

LibraBFT 將 PBFT 的網狀通訊網路拓撲變成了星形通訊網路拓撲,以降低系統通訊複雜度;BBFT則使用多層結構把網路通訊分流再組合,最佳化網路通訊的延時和數量。

LibraBFT 將檢視切換流程和正常流程進行了合併,把 PBFT 的兩階段確認擴充套件成了三階段確認;BBFT 則將經典 BFT 演算法中產生、預最終狀態與最終狀態三個狀態修改為只有一個最終確認狀態。

兩者都可看做是 PBFT 共識的升級,吸收了現有 BFT 類共識的成果和優點,並在此基礎上做出不同方向的擴充套件。LibraBFT 共識機制更多是 PBFT 基礎上的一種革新,更多關注演算法本身,對 PBFT 有很多修改和最佳化的方面;BBFT 更多是在層級上進行分層控制,更多是一種系統全域性思維。BBFT 希望達到的,不只是一種高效的共識機制,更是能融合其他共識機制的共識機制。維度上,BBFT 是可以讓 LibraBFT 直接接入,在側鏈上利用對方所有優勢的。

LibraBFT 是第一序改變,BBFT 是第二序改變。

可以明顯看出,Bystack 更加關注利用好現有共識機制,將不同的共識機制整合、取長補短,這在 Bystack 整體架構上表現就十分突出,比如主側鏈採用不同共識並有機結合、側鏈使用 DPoS+BBFT 的混合共識演算法並具備可配置性……Bystack 不只是想做區塊鏈的作業系統,它實際上有做作業系統的作業系統的意思。

區塊鏈共識機制的研究,已經進行很長一段時間,但從 PoW 共識提出到現在,並沒有說得上正規化突破的進展。

也許讓區塊鏈相容其他鏈的共識機制,實現平滑跨鏈,讓任何一條鏈都可以作為一個側連結入進來,可以成為區塊鏈方向的一個正規化突破,帶來全新的想象空間。也許這也是現在跨鏈概念比較火爆的原因。

也許正像 Bystack 共識演算法負責人王煒所說,“單一公鏈單一演算法”這種模式已經行不通了,因為使用者場景實在太多,一條公鏈是解決不了所有問題的。

免責聲明:

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

推荐阅读

;