1 概述
Libra 的共識機制采用的是 LibraBFT 共識,是一個為 Libra 設計的健壯、高效的狀態復制系統,它基于一種新型的 BFT 共識演算法,HotStuff(BFT Consensus in Lens of Blockchain),在擴展性和一致性上達到了較高的水平,LibraBFT 在 HotStuff 的基礎上引入顯示活躍度的機制并提供了具體的延時分析,
LibraBFT 在 3f+1 個驗證節點之間收集投票,這些驗證者可能是誠實的節點也可能是拜占庭節點,在網路中有 2f+1 個誠實節點的前提下, Libra 能夠抵御 f 個驗證節點的雙花攻擊和分叉攻擊,
LibraBFT 在一個有全域統一時間(GST),并且網路最大延時(ΔT)可控的 Partial Synchrony 的網路中是有效的,并且, LibraBFT 在所有驗證節點都重啟的情況下,也能夠保證網路的一致性,
為了能夠更好地理解 LibraBFT,我們回顧一下 PBFT 和 HotStuff 共識協議,
2 PBFT
原始的拜占庭容錯系統由于需要展示其理論上的可行性而缺乏實用性,另外需要額外的時鐘同步機制支持,演算法的復雜度也是隨節點增加而指數級增加,Castro and Liskov 在 1999 年提出實用拜占庭容錯系統(Practical Byzantine Fault Tolerance,PBFT),降低了拜占庭協議的運行復雜度,從指數級別降低到多項式級別(Polynomial),使拜占庭協議在分布式系統中應用成為可能,
PBFT 是一類狀態機拜占庭系統,要求整個系統共同維護一個狀態,所有節點采取的行動一致,為此,需要運行三類基本協議,包括一致性協議、檢查點協議和視圖更換協議,視圖轉換協議保證共識協議的活性(liveness),當主節點出故障時能保證共識能繼續進行,PBFT 的視圖轉換協議是非常復雜的,涉及到很多訊息的重傳,HotStuff 的最重要的改進,主要是針對視圖更換的協議,
3 HotStuff
HotStuff 的基本假設是系統有固定的節點數 n = 3f+1,其中 f 是系統能容忍的最大拜占庭節點數,系統通信是點對點的認證和可靠通信,網路通信的假設是半同步,也就是說,網路有一個知道的延遲 D,以及一個不知道的全網穩定時間(Global Stabilization Time,簡稱 GST),當 GST 過后,任意兩個節點之間的通信都將在 D 時間內完成,HotStuff 能總保證正確性(safety),在 GST 后的訊息時延在一定限度(D)內能保證活性 (liveness),
HotStuff 采用門限簽名機制,門限設定是(k, n),n 個節點中所有的節點共用一個公鑰,但每一個節點有自己的私鑰,每個節點用自己的私鑰簽名訊息 m,叫部分簽名訊息,多個節點的部分簽名訊息可以用來生成一個聯合簽名訊息,當至少有 k = 2f+1 個節點提供部 分簽名訊息時,其它任何一個節點能用公鑰驗證該聯合簽名訊息,其中 f 是系統能容忍的拜 占庭節點總數,n = 3f+1,
HotStuff 論文中提出一個“認證復雜度”的概念,認證復雜度簡單來說,統計協議交 互時通信的認證訊息數,也就是部分簽名或聯合簽名訊息的個數,
HotStuff 兩個重要的優點
一個是 linearity,指的是通信的復雜程度和節點數成線性關系;
另一個是 responsiveness,指的是當網路通信成為同步的時候,HotStuff 能產生 正確的 Leader 來推動協議在網路延遲的實際值內而非最大值達到共識,
HotStuff 在原先諸多的 BFT 共識協議中提升了效率,降低了復雜度,基于這些特性, HotStuff 適合于構建大規模的狀態復制服務,因此,不難看出,Libra 從眾多的區塊鏈共識演算法中挑選 HotStuff,看中的是 HotStuff 的效率、線性的擴展性,以及拜占庭容錯的安全性,
這也體現了 Libra 的平衡術 – 在去中心、安全、擴展性這個棘手的區塊鏈三難問題上, 巧妙的選擇一個平衡點,
4 LibraBFT
嚴格說來,LibraBFT 是基于 HotStuff 的一個變種,叫鏈式HotStuff(Chained HotStuff),鏈式 HotStuff 是在基本 HotStuff(Basic HotStuff)上引入流水線概念,進一步提升效率的一個改進共識協議,LibraBFT 最扯訓選擇一些在不同地理上分布的創始成員做共識節點,以后逐漸的,共識節點會對外開放,并基于 libra 穩定幣的多少來選擇共識節點,也就是轉變成 PoS 機制,
LibraBFT 的共識流程是分為不同輪次(rounds),每一輪中一個 Leader 主節點被選出,主節點會提議一個區塊,里面包括多個交易,該區塊將廣播給其它共識節點,其它共識節點會驗證區塊里的交易,并對其投票,主節點收到大多數(超過 2f+1,f 是系統中能容忍的拜占庭節點數)節點的投票后,主節點把確認訊息發給所有共識節點確認,如果主節點沒收到大多數投票,或者主節點出現故障,副本共識節點的定時將超時,副本節點會發起新的一輪提議,
LibraBFT 在 HotStuff 基礎上的改進主要在于提供一個詳細的參與同步輪次的 Pacemaker 設計和實作,并提供對實際交易確認的活性分析,LibraBFT 提供對共識節點投票權力的重配置機制,同時它給出了對提議節點和投票節點激勵的機制,白皮書給出了如何檢測投票節點破壞正確性的行為,為今后在協議中加入懲罰機制打下基礎,同時白皮書也詳 細討論如何做同步,使得投票節點能同步它們的狀態,libraBFT 白皮書采用 Rust 語言來描 述協議,
在 LibraBFT 中,為了更好地支持 Libra 生態系統的目標,LibraBFT 以多種方式擴展和調整了核心 HotStuff 協議和實作,重要的是,LibraBFT 重新定義了安全條件,并提供了安全、存活度和更高回應度的擴展證明,LibraBFT 還實作了一些附加功能,
首先,通過讓驗證器對塊的結果狀態(而不僅僅是交易序列)進行集體簽名,LibraBFT 使協議更能抵抗非確定性錯誤,還允許客戶端使用法定人數證書來驗證讀取的資料庫,
其次,LibraBFT 設計了一個發出明確超時的起搏器,驗證器依靠法定人數來進入下一輪 - 不需要同步時鐘,
第三, LibraBFT 打算設計一個不可預測的領導者選舉機制,其中一輪的領導者由最新提交的塊的 提議者使用可驗證的隨機函式 VRF 確定,這種機制限制了攻擊者可以針對領導者發起有效拒絕服務攻擊的時間視窗,
第四,LibraBFT 使用聚合簽名來保留簽署仲裁證書的驗證者的身份,這使我們能夠為有助于仲裁證書的驗證人提供激勵,聚合簽名也不需要復雜的密鑰閾值設定,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/404027.html
標籤:區塊鏈
上一篇:預言機在什么場景下使用?
下一篇:基金知識學習
