詳解Libra區塊鍊及其共識協議 – 創業投資賺錢綜合門戶 創業投資賺錢綜合門戶

詳解Libra區塊鍊及其共識協議

欄目:教程專區 評論:0 點擊: 16 次

01 Libra 區塊鏈簡介

Libra 區塊鏈的目標是成為金融服務的基礎,包括打造一種新的全球支付系統,滿足數十 十億人的日常金融需求。通過對現有區塊鏈解決方案的評估, Libra 決定基於下列三項要求構 建一個新的區塊鏈:

能夠擴展到數十億帳戶,這要求區塊鏈具有極高的交易吞吐量和低延遲等特點,並擁 有一個高效且高容量的存儲系統。

高度安全可靠,可保障資金和金融數據的安全。

靈活多變,為未來金融服務創新提供動力。

Libra 區塊鏈就是為了了全面滿足這些要求,並從現有項目和研究中獲得的經驗教訓為基礎。 Libra 區塊鏈的三項核心決策:

設計和使用 Move 編程語言。

使用拜占庭容錯 (BFT) 共識機制。

迭代改善已廣泛採用的區塊鏈數據結構

02 設計和使用 Move 編程語言

“Move”是一種新的編程語言, 用於在 Libra 區塊鏈中實現自定義交易邏輯和“智能 合約”。由於 Libra 協會的目標是有朝一日為數十億人服務,因此 Move 語言的設計首先考慮 到安全性和可靠性。 Libra 開發團隊從以往區塊鏈平台中發生的與智能合約相關的安全事件 中吸取經驗教訓, 從而創造的一種新的智能合約編程語言 Move。

Move 從本質上令人更加 輕鬆地編寫符合作者意圖的代碼,從而降低了出現意外漏洞或安全事件的風險。具體而 言,Move 從設計上可防止數字資產被複製。它使得將數字資產限制為與真實資產具有相同屬性的“資源類型”成為現實:每個資源只有唯一的所有者, 資源只能花費一次,並限制創建新資 源。

Move 語言還便於自動驗證交易是否滿足特定屬性。例如,僅更改付款人和收款人帳戶 餘額的付款交易。通過優先實現這些特性,Move 可幫助保持 Libra 區塊鏈的安全性。 Move 允許輕鬆和安全地定義 Libra 網絡的核心元素,例如支付傳輸和驗證節點的管理。最後,Move 是將合規機制(例如促進旅行規則合規和協議級制裁篩選的機制)構建到 Libra 網絡中的一種 方式。

Libra 協會致力於對智能合約實施適當的審查和風險控制。首先,只有協會批准和發布 的智能合約才能與 Libra 支付系統直接交互。隨著時間的推移,協會將探索適當的控制措施, 以允許第三方方發布智能合約。

03 使用拜占庭容錯 (BFT) 共識機制

Libra 區塊鏈採用了基於 LibraBFT 共識協議的 BFT 機制,來實現所有驗證者節點就將 要執行的交易及其執行的順序達成一致。這種機制實現了三個重要目標:

首先,它可以在網絡中建立信任,因為即使某些驗證者節點(最多三分之一的網絡)被破 壞或發生故障,BFT 共識協議的設計也能夠確保網絡正常運行。

第二,與其他一些區塊鏈中使用的“工作量證明”機制相比,這類共識協議還可實現高 交易處理量、低延遲和更高能效的共識方法。

第三,LibraBFT 協議有助於清楚地描述交易的最終性,因此當參與者看到來自足夠數量 驗證者的交易確認時,他們可以確保交易已經完成。

BFT 的安全性取決於驗證者的質量,因此協會將對潛在驗證者進行盡職調查。 Libra 網絡的設 計以安全第一為原則,並考慮到了複雜的網絡和關鍵基礎設施攻擊。

該網絡的結構是為了加 強驗者運行軟件的保證,包括利用關鍵代碼分離等技術、測試共識算法的創新方法以及對依 賴關係的謹慎管理。最後,Libra 網絡將定義在出現嚴重漏洞或需要升級時重新配置 Libra 區 塊鏈的策略及過程。

除了在這些情況下確保系統的安全恢復之外,這種準備將阻止攻擊,因為 攻擊者將知道他們的行為可以被反擊。

04 迭代改善已廣泛採用的區塊鏈數據結構

為了保障所存儲的交易數據的安全,Libra 區塊鏈中的數據會受到默克爾樹(Merkle tree)的保護,它是一種已在其他區塊鏈中被廣泛使用的數據結構,可以偵測到現有數據的任何變化。與以往將區塊鏈視為交易區塊集合的區塊鏈項目不同,Libra 區塊鍊是一種單一的數據結構,其可⻓期記錄交易歷史和狀態。這種實現方式簡化了訪問區塊鏈的應用程序的工作量, 允許它們從任何時間點讀取任何數據,並使用統一框架驗證該數據的完整性。

上述設計決策的一個結果是,Libra 區塊鏈將提供公共可驗證性,這意味著任何人(驗證者、Libra 網絡、虛擬資產服務提供商(VASP)、執法部門或任何第三方)都可以審核所有操作的準確性。交易將以加密方式簽名,以便即使所有驗證者都被破壞,也不能接受來自具有安全 簽名密鑰的偽造交易。該設計與硬件密鑰管理和高價值密鑰的離線存儲兼容。

上述設計決策的另一個結果是,Libra 區塊鏈將支持一種隱私方方法,該方法將考慮網絡 上參與者的多樣性。協會會監督 Libra 區塊鏈協議和網絡的發展,並在考慮適用的監管要求的 同時,不斷評估新技術以增強區塊鏈上的隱私合規性。

1595566871550200.png

05 LibraBFT 詳解

5.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 共識協議。

5.2 PBFT

原始的拜占庭容錯系統由於需要展示其理論上的可行性而缺乏實用性,另外需要額外 的時鐘同步機制支持,算法的複雜度也是隨節點增加而指數級增加。 Castro and Liskov 在1999 年提出實用拜占庭容錯系統(Practical Byzantine Fault Tolerance,PBFT),降低了拜占庭協議的運行複雜度,從指數級別降低到多項式級別(Polynomial),使拜占庭協議在分佈式系統中應用成為可能。

PBFT 是一類狀態機拜占庭系統,要求整個系統共同維護一個狀態,所有節點採取的 行動一致。為此,需要運行三類基本協議,包括一致性協議、檢查點協議和視圖更換協議。視圖轉換協議保證共識協議的活性(liveness)。當主節點出故障時能保證共識能繼續進行。 PBFT 的視圖轉換協議是非常複雜的,涉及到很多消息的重傳。 HotStuff 的最重要的改進, 主要是針對視圖更換的協議。

 5.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 的平衡術 – 在去中心、安全、擴展性這個棘手的區塊鏈三難問題上, 巧妙的選擇一個平衡點。

5.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 使用聚合簽名來保留簽署仲裁證書的驗證者的 身份。這使我們能夠為有助於仲裁證書的驗證人提供激勵,聚合簽名也不需要復雜的 密鑰 閾值設置。

5.5 實現細節

LibraBFT 共識組件最主要的是實現了 Actor 程序模型,它使用消息傳遞在不同的子 組件之間進行通信,其中 tokio 框架用作任務運行時。 Actor 模型的主要例外是(因為它是由 幾個子組件並行訪問的)是共識數據結構 BlockStore,它管理塊、執行、仲裁證書和其他共 享數據結構。共識組件中的主要子組件是:

TxnManager 是內存池組件的接口,支持拉取交易以及刪除已提交的交易。提議者使 用來自內存池中的按需拉取交易來形成提議塊。

StateComputer 是訪問執行組件的接口。它可以執行塊,提交塊,並可以同步狀態。

BlockStore 維護提議塊樹,塊執行,投票,仲裁證書和持久存儲。它負責維護這些 數據結構組合的一致性,並且可以由其他子組件同時訪問。

EventProcessor 負責處理各個事件 (例如, process_new_round, process_proposal, process_vote). 它公開每個事件類型的異步處理函數和驅動協議。

Pacemaker 負責共識協議的活躍性。它由於超時證書或仲裁證書而改變輪次,並在 它是當前輪次的提議者時提出阻止。

SafetyRules 負責共識協議的安全性。它處理仲裁證書和分類信息以了解新的提交, 並保證遵循兩個投票規則 — 即使在重啟的情況下(因為所有安全數據都持久保存到 本地存儲)。

所有共識消息都由其創建者簽名,並由其接收者驗證。消息驗證發生在離網絡層最近的地方, 以避免無效或不必要的數據進入協商一致協議。

06 總結

Libra 區塊鏈的架構設計汲取了 Bitcoin 和 Ethereum 的兩大區塊鏈技術的精華,使 用了新的智能合約語言。如果把Bitcoin 的腳本指令比作彙編語言(ASM),那麼Ethereum 的Solidity 就是類似於JavaScript 的動態語言, 彙編語言效率最高但難於編寫, 動態語言靈活強大但容易產生難於覺察的bug, 這兩種語言用來編寫和金融相關的業務都不是最優的。 Move 語言借鑒了 Rust 語言的所有權(ownership)管理機制,在編寫智能合 約時既保證了安全性又不失靈活性。

libraBFT 基於鍊式 HotStuff,其確認規則遵從 3-chain 的確認規則。 libra 能在眾多 的共識協議中選擇 HotStuff,顯示了 libra 團隊的眼光,以及在區塊鏈三難問題上巧妙的平 衡術。 libraBFT 繼承了 HotStuff,使得它的共識協議具有正確性(safety),在半同步網絡 下的活性(Liveness),最終性(Finality);同時具有通信線性複雜度(linearity)和響 應性(responsiveness)。

Libra 的實現也展示了簡易性(simplicity)和模塊化 (modularity)的實現。同時也體現了 sustainability(可持續性),不需要工作量證明以 降低能耗。

參誇文獻 :

《Libra 白皮書 2.0》

《LibraBFT 共識協議》(鄒均)



聲明: 本文由( 北極圈 )編輯整理,轉載請保留鏈接: 詳解Libra區塊鍊及其共識協議