细说区块链共识机制之PBFT

PBFT意为实用拜占庭容错算法,这个算法是卡斯特罗和利斯科夫在1999年提出来的。解决了原始拜占庭容错算法效率不高的问题,将算法复杂度有指数级降低到多项式级,使得拜占庭容错算法在实际系统应用中变得可行。


使用拜占庭容错算法主要应用于央行的数字货币以及步萌区块链。PBFT是一种状态机制副本复制算法,即服务作为状态机进行建模。状态及在分布式系统不同节点进行副本复制。

每个状态机的副本都保存了服务的状态,同时也实现了服务的操作。将所有的副本组成的集合使用大写字母R表示。使用0到R-1的整数表示每一个副本。为了描述方便,假设R=3f+1。这里的f是有可能失效的副本的最大个数。尽管可能存在多于3f+1个副本。但是额外的副本出来降低性能之外不能提高可靠性。

PBFT的算法流程如下:首先,客户端向主节点发送请求调用服务操作,然后主节点通过广播将请求发送的其他副本。所有副本都执行请求并将结果发回客户端。客户端需要等待f+1个不同副本节点返回相同的结果,作为整个操作的最终结果。

与所有的状态及副本复制技术一样,PBFT对每个副本节点提出了两个限定条件,所有节点必须是确定性的。也就是说,在给定状态和参数相同的情况下操作执行的结果必须相同。其次的话,所有节点必须从相同的状态开始执行。

在这两个限定条件下,即使有失效的副本节点存在,PBFT算法对所有非失效副本节点的请求执行总顺序达成一致,从而保证安全性。

算法不能解决信息保密的问题,失效的副本有可能将信息泄露给攻击者。在一般情况下不可能提供信息保密,因为服务操作需要使用参数和服务状态处理任意的计算。所有的副本都需要这些信息来有效执行操作。当然还是有可能在存在恶意副本的情况下通过秘密分享模式来实现私密性。因为参数和部分状态对服务操作来说是不可见的,PBFT的优点是系统运转可以脱离币的存在。PBFT算法共识各个节点由业务的参与方或者监督方组成。安全性与稳定性由业务相关方保证。共十的时延大约为2到5秒。基本达到商用实时处理的要求。共识效率高,可以满足高频交易量的需求。

缺点是都有1/3以上记账人停止工作,系统将无法提供服务。等有1/3以上记账人联合做恶,而且其他所有的其他记账人被恰好分割为两个网络孤岛时,恶意其他人可以使系统出现分叉。但是会留下密码学证据,去中心化程度不如公有链上的共识机制。更适合有多方参与的多中心商业模式。

你可能感兴趣的:(细说区块链共识机制之PBFT)