首先,PBFT中的每個節點都需于每一輪投票中做n-n的通訊,假設n為1000,則每一次的共識都需要至少100,000次的通訊,盡管PBFT已經是BFT家族當中最實用的協議,這么巨量的通訊需求仍是擴展的瓶頸。
如何提升效率?
聚合簽名
為了提升效率,一個直覺的思路是:避免n-n的通訊。我們可以指定網絡中的某節點作為協調者來發送/接收每個節點的投票,這樣每個節點都只需要向協調者發送訊息即可,從而避免了n-n的通訊。然而,在這樣的情境下,協調者有作惡的可能,因為協調者可以在未確實接收到指定數量的訊息前便執行下一輪投票或者進行狀態更新。因此,我們可以使用門坎簽章(Threshold Signature)來保證協調者的正當行為,門坎簽章的可以保證:需集合超過門坎數量(t-of-n)的簽章才有效。也就是說,我們可以指定:唯有當協調者集合 2f+1 個門坎簽章后,協調者才能帶著合法的簽名繼續推進共識。Harmony FBFT便是一個使用聚合簽名以提升效率的BFT家族協議。
圖1:FBFT Signature Aggregation
管線設計
每個內容都必須經過二輪投票/三個階段才能達成共識,如果有m個內容就需要執行2m次投票。管線設計(Pipelining)可以減少投票的次數,它的基本思路如下:讓每個節點在投第 i 輪的prepare階段時,同時也是對其前一個內容 i-1 的commit階段投票。這樣做便可以節省對同一個內容重復投票的冗余,大幅提升效率。這樣的思路首見于2018年發表的HotStuff協議。
圖2:HotStuff Pipelining
只讓部分節點參與共識:最小生成樹
另外一種提高效率的方法,就是避免使所有的節點參與共識,這也正是比原鏈BBFT采取的作法。在BBFT中,節點分為三種:Consensus Node/Gateway Node/Leader Node,這些節點形成樹的結構,樹為網絡中節點的最小生成樹(Minimal Spanning Tree),可能由分布式算法得出,或是由外部服務提供。樹葉的節點即為Consensus Node;樹根為Leader Node;其他部分為Gateway Node。每種節點都有分別的任務:Consensus Node負責進行投票;Gateway Node則不需參與投票,但必須負責聚合由Consensus Node送來的簽章;Leader Node負責與其他Leader Node交換訊息。BBFT的運作流程如下圖所示,BBFT的共識過程,便是訊息由樹根向樹葉傳播再回到樹根的過程。
圖3:BBFT: Minimal Spanning Tree
圖4:BBFT Process
版權申明:本內容來自于互聯網,屬第三方匯集推薦平臺。本文的版權歸原作者所有,文章言論不代表鏈門戶的觀點,鏈門戶不承擔任何法律責任。如有侵權請聯系QQ:3341927519進行反饋。