- 能夠擴充套件到數十億帳戶,這要求區塊鏈具有極高的交易吞吐量和低延遲等特點,並擁 有一個高效且高容量的儲存系統。
- 高度安全可靠,可保障資金和金融資料的安全。
- 靈活多變,為未來金融服務創新提供動力。
- 設計和使用 move 程式語言。
- 使用拜占庭容錯 (bft) 共識機制。
- 迭代改善已廣泛採用的區塊鏈資料結構
move 從本質上令人更加 輕鬆地編寫符合作者意圖的程式碼,從而降低了出現意外漏洞或安全事件的風險。具體而 言,move 從設計上可防止數字資產被複制。它使得將數字資產限制為與真實資產具有相同屬性的“資源型別”成為現實:每個資源只有唯一的所有者, 資源只能花費一次,並限制建立新資 源。
libra 協會致力於對智慧合約實施適當的審查和風險控制。首先,只有協會批准和釋出 的智慧合約才能與 libra 支付系統直接互動。隨著時間的推移,協會將探索適當的控制措施, 以允許第三方方釋出智慧合約。
- 首先,它可以在網路中建立信任,因為即使某些驗證者節點(最多三分之一的網路)被破 壞或發生故障,bft 共識協議的設計也能夠確保網路正常執行。
- 第二,與其他一些區塊鏈中使用的“工作量證明”機制相比,這類共識協議還可實現高 交易處理量、低延遲和更高能效的共識方法。
- 第三,librabft 協議有助於清楚地描述交易的最終性,因此當參與者看到來自足夠數量 驗證者的交易確認時,他們可以確保交易已經完成。
該網路的結構是為了加 強驗者執行軟體的保證,包括利用關鍵程式碼分離等技術、測試共識演算法的創新方法以及對依 賴關係的謹慎管理。最後,libra 網路將定義在出現嚴重漏洞或需要升級時重新配置 libra 區 塊鏈的策略及過程。
除了在這些情況下確保系統的安全恢復之外,這種準備將阻止攻擊,因為 攻擊者將知道他們的行為可以被反擊。
上述設計決策的一個結果是,libra 區塊鏈將提供公共可驗證性,這意味著任何人(驗證 者、libra 網路、虛擬資產服務提供商(vasp)、執法部門或任何第三方)都可以稽覈所有操作 的準確性。交易將以加密方式簽名,以便即使所有驗證者都被破壞,也不能接受來自具有安全 簽名金鑰的偽造交易。該設計與硬體金鑰管理和高價值金鑰的離線儲存相容。
上述設計決策的另一個結果是,libra 區塊鏈將支援一種隱私方方法,該方法將考慮網路 上參與者的多樣性。協會會監督 libra 區塊鏈協議和網路的發展,並在考慮適用的監管要求的 同時,不斷評估新技術以增強區塊鏈上的隱私合規性。
librabft 在 3f+1 個驗證節點之間收集投票, 這些驗證者可能是誠實的節點也可能是拜占庭節點。在網路中有 2f+1 個誠實節點的前提下, libra 能夠抵禦 f 個驗證節點的雙花攻擊和分叉攻擊。
librabft 在一個有全域性統一時間 (gst),並且網路最大延時(δt)可控的 partial synchrony 的網路中是有效的。並且, librabft 在所有驗證節點都重啟的情況下,也能夠保證網路的一致性。
為了能夠更好地理解 librabft,我們回顧一下 pbft 和 hotstuff 共識協議。
pbft 是一類狀態機拜占庭系統,要求整個系統共同維護一個狀態,所有節點採取的 行動一致。為此,需要執行三類基本協議,包括一致性協議、檢查點協議和檢視更換協議。 檢視轉換協議保證共識協議的活性(liveness)。當主節點出故障時能保證共識能繼續進行。pbft 的檢視轉換協議是非常複雜的,涉及到很多訊息的重傳。hotstuff 的最重要的改進, 主要是針對檢視更換的協議。
hotstuff 採用門限簽名機制,門限設定是(k, n)。n 個節點中所有的節點共用一個 公鑰,但每一個節點有自己的私鑰。每個節點用自己的私鑰簽名訊息 m,叫部分簽名訊息, 多個節點的部分簽名訊息可以用來生成一個聯合簽名訊息,當至少有 k = 2f+1 個節點提供部 分簽名訊息時,其它任何一個節點能用公鑰驗證該聯合簽名訊息。其中 f 是系統能容忍的拜 佔庭節點總數,n = 3f+1。
hotstuff 論文中提出一個“認證複雜度”的概念。認證複雜度簡單來說,統計協議交 互時通訊的認證訊息數,也就是部分簽名或聯合簽名訊息的個數。
hotstuff 兩個重要的優點
- 一個是 linearity,指的是通訊的複雜程度和節點數成線性關係;
- 另一個是 responsiveness,指的是當網路通訊成為同步的時候,hotstuff 能產生 正確的 leader 來推動協議在網路延遲的實際值內而非最大值達到共識。
這也體現了 libra 的平衡術 – 在去中心、安全、擴充套件性這個棘手的區塊鏈三難問題上, 巧妙的選擇一個平衡點。
librabft 的共識流程是分為不同輪次(rounds),每一輪中一個 leader 主節點被選 出。主節點會提議一個區塊,裡面包括多個交易。該區塊將廣播給其它共識節點。其它共識 節點會驗證區塊裡的交易,並對其投票。主節點收到大多數(超過 2f+1,f 是系統中能容忍 的拜占庭節點數)節點的投票後,主節點把確認訊息發給所有共識節點確認。如果主節點沒 收到大多數投票,或者主節點出現故障,副本共識節點的定時將超時,副本節點會發起新的 一輪提議。
librabft 在 hotstuff 基礎上的改進主要在於提供一個詳細的參與同步輪次的 pacemaker 設計和實現。並提供對實際交易確認的活性分析。librabft 提供對共識節點投 票權力的重配置機制。同時它給出了對提議節點和投票節點激勵的機制。白皮書給出瞭如何 檢測投票節點破壞正確性的行為,為今後在協議中加入懲罰機制打下基礎。同時白皮書也詳 細討論如何做同步,使得投票節點能同步它們的狀態。librabft 白皮書採用 rust 語言來描 述協議。
在 librabft 中,為了更好地支援 libra 生態系統的目標,librabft 以多種方式擴充套件 和調整了核心 hotstuff 協議和實現。重要的是,librabft 重新定義了安全條件,並提供了 安全、存活度和更高響應度的擴充套件證明。librabft 還實現了一些附加功能。
首先,透過讓 驗證器對塊的結果狀態(而不僅僅是交易序列)進行集體簽名,librabft 使協議更能抵抗非確 定性錯誤。 還允許客戶端使用法定人數證書來驗證讀取的資料庫。
其次,librabft 設計了 一個發出明確超時的起搏器,驗證器依靠法定人數來進入下一輪 - 不需要同步時鐘。
第三, librabft 打算設計一個不可預測的領導者選舉機制,其中一輪的領導者由最新提交的塊的 提議者使用可驗證的隨機函式 vrf 確定。 這種機制限制了攻擊者可以針對領導者發起有效 拒絕服務攻擊的時間視窗。
第四,librabft 使用聚合簽名來保留簽署仲裁證書的驗證者的 身份。 這使我們能夠為有助於仲裁證書的驗證人提供激勵,聚合簽名也不需要複雜的 金鑰 閾值設定。
- txnmanager 是記憶體池元件的介面,支援拉取交易以及刪除已提交的交易。 提議者使 用來自記憶體池中的按需拉取交易來形成提議塊。
- statecomputer 是訪問執行元件的介面。 它可以執行塊,提交塊,並可以同步狀態。
- blockstore 維護提議塊樹,塊執行,投票,仲裁證書和持久儲存。 它負責維護這些 資料結構組合的一致性,並且可以由其他子元件同時訪問。
- eventprocessor 負責處理各個事件 (例如, process_new_round, process_proposal, process_vote). 它公開每個事件型別的非同步處理函式和驅動協議。
- pacemaker 負責共識協議的活躍性。 它由於超時證書或仲裁證書而改變輪次,並在 它是當前輪次的提議者時提出阻止。
- safetyrules 負責共識協議的安全性。 它處理仲裁證書和分類資訊以瞭解新的提交, 並保證遵循兩個投票規則 — 即使在重啟的情況下(因為所有安全資料都持久儲存到 本地儲存)。
librabft 基於鏈式 hotstuff,其確認規則遵從 3-chain 的確認規則。libra 能在眾多 的共識協議中選擇 hotstuff,顯示了 libra 團隊的眼光,以及在區塊鏈三難問題上巧妙的平 衡術。librabft 繼承了 hotstuff,使得它的共識協議具有正確性(safety),在半同步網路 下的活性(liveness),最終性(finality);同時具有通訊線性複雜度(linearity)和響 應性(responsiveness)。
libra 的實現也展示了簡易性(simplicity)和模組化 (modularity)的實現。同時也體現了 sustainability(可持續性),不需要工作量證明以 降低能耗。
- 《libra 白皮書 2.0》
- 《librabft 共識協議》(鄒均)