(2)使用拜占庭容錯(BFT)共識機制
Libra采用了LibraBFT共識協議來保障整個網絡在高交易處理量、低延遲和更高能效的情況下快速達成一致。為了說明LibraBFT的原理,我們需要首先探討是什么樣的需求使其變得如此重要。
拜占庭容錯(Byzantine Fault Tolerance)始于圖靈獎得主Leslie Lamport描述的一個計算機領域經典問題:拜占庭將軍問題。問題大意是拜占庭帝國在歷史上幅員遼闊,其軍隊相互分散。在不存在核心指揮官的情況下,相互聯系只能依靠各個軍隊的將軍間進行兩兩點對點通信。如果需要進攻或有敵軍進犯,各將軍間便需要通過溝通達到協調一致的效果。在現實環境下,可能會有若干因素影響共識達成:消息傳遞通路可能存在問題;部分將軍可能叛變;叛變的將軍可能會惡意傳達錯誤消息給其他將軍;部分軍隊可能被圍困導致無法行動等。在如此惡劣的環境之下,如何保證大部分軍隊取得共識?或者說,到底有多少將軍同時出現問題,才會導致系統的全盤崩潰?
這個比喻跟區塊鏈系統中面臨的問題非常類似。區塊鏈去中心化的根基在于全網需要針對某筆交易(transaction)取得共識。在沒有中心節點的情況下,共識只能依靠網絡中各個節點相互之間點對點通信來進行協商。但實際網絡中通信鏈路可能出錯,各個節點可能會失效,同時可能會發生惡意攻擊。那么如何保證全網能夠順利取得共識呢?
為了解決這個問題,比特幣采用的是工作量證明(PoW)的方式,即由礦工們通過付出大量算力挖礦來爭奪對當前區塊的記賬權,他們的回報就是挖礦得來的比特幣。不誠實的礦工不會愿意付出如此大的代價來換取挖礦收益,但為了破壞整個網絡,他們必須掌握全網50%以上的算力才可掌控新區塊的產生。這在當今世界幾乎是不可能的。但這樣做也有明顯缺陷,其計算復雜導致能源浪費嚴重,同時導致區塊生成的時間過長,確認交易往往需要數十分鐘的等待時間,用作在線支付系統之時實時性難以滿足要求。
LibraBFT由HotStuff算法改進而來。為避免過于復雜的技術討論,本文只簡要說明共識的流程。與比特幣完全工作在網狀網絡不同,BFT算法為了降低流程復雜度,需要工作在有若干重要節點的星型網絡中,即各重要節點之間互相通信,其余節點只跟臨近的一個重要節點之間產生聯系。這也是為何Libra在初期要工作在聯盟鏈,而不是公有鏈上的重要原因。
LibraBFT定義這些重要節點為驗證者(Validator),在網絡中起到接受交易請求和驗證區塊有效性的作用。當一筆交易產生后,它會被最近的一個驗證者接收,此時該驗證者就作為發起者(Leader)來組織驗證程序。它將若干筆交易打包進一個區塊(Block),并廣播給網絡上所有其他驗證者(圖1中步驟①)。其他驗證者收到區塊后進行驗證,如果認可這一區塊,則向發起者回傳投票(Vote)結果(圖1中步驟②)。在收集到足夠多的投票后,發起者生成一個法定人數證明(QC,quorum certification),代表該區塊已經得到了足夠多節點的確認,并把該證明向所有驗證者廣播(圖1中步驟③)。此時所有驗證者節點都將根據這一消息更新本地保存的區塊鏈狀態,將新驗證的內容加入。這一過程稱為一輪(Round)。之后其他交易所產生的驗證內容也會陸續加入。為了避免前述失效或者惡意節點在此過程中進行破壞,新加入的內容將在三輪之后才正式被全網接納或提交(Commit),正式成為整個區塊鏈的一部分。

比特幣所采用的工作量證明機制可以防止50%的節點失效,而且對所有節點一視同仁,可以直接應用在公有鏈上。相比之下,LibraBFT理論上只能防止不超過1/3的節點失效,而且必須指定若干重要節點作為驗證者,使得其看起來不如比特幣強大。但LibraBFT在較大程度上縮短了交易的確認時間,使其可以適應現實交易需求。此外,Libra發布初期將工作在聯盟鏈上,各重要節點均為聯盟成員提供,惡意節點出現的概率將大大降低。從實踐的角度看,LibraBFT在安全性和效率方面是相比于比特幣的更優選擇。
版權申明:本內容來自于互聯網,屬第三方匯集推薦平臺。本文的版權歸原作者所有,文章言論不代表鏈門戶的觀點,鏈門戶不承擔任何法律責任。如有侵權請聯系QQ:3341927519進行反饋。