首先,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进行反馈。