LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 区块链资产 > TT链共识系列4:实用拜占庭容错算法(PBFT)

TT链共识系列4:实用拜占庭容错算法(PBFT)

2020-04-26 A加社区联盟 来源:区块链网络

关注ThunderCore

点击了解最具潜力项目

全面洞察区块链最新技术及趋势

上周我们介绍了区块链共识技术的基础知识,以方便大家深入了解。?本周我们给大家详解实用拜占庭容错共识算法(PBFT)。?PaLa等新共识协议被认为是PBFT的升级版,许多新经典共识协议的术语和理念都源于PBFT,因此了解PBFT仍然是了解新共识协议的关键。

我们先研究PBFT来方便我们熟悉搭建PaLa和Thunderella协议的语言和理念。其他开创性的经典共识协议采用和PBFT一样的理念,比如三阶段协议、Paxos协议等,本文就不作过多阐述。需要注意的是,我们在本文中对共识协议内容做了细微修改,以适用于区块链共识。

来源:1999年,OSDI(USENIX操作系统设计与实现座谈会)上提出实用拜占庭容错算法

PBFT操作步骤及视图变化

术语

PBFT共识算法在分布式系统中用状态机来建立模型。分布式系统中有不同节点提供服务。其中一个节点是主节点,其余是备用节点(备用节点统称为副本)。

正常情况的操作步骤

大致来讲,PBFT在正常情况下工作步骤包括:

●?请求:用户向主节点发送交易的请求

●?预先准备:主节点产生一个包含交易信息的提案,并转发给所有副本。

●?准备:收到提案后,备用节点对提案进行验证。如果验证成功,备用节点会向所有其他副本广播准备信息。如果验证失败,备用节点将不执行任何操作。这是第一轮投票。

●?提交:在收到三分之二备用节点的准备信息后,副本现在会广播提交信息。这是第二轮投票。

●?回复:用户看到共识的反馈结果。

在大多数情况下,执行正常情况下的操作步骤即可,主节点能够快速处理新交易。鉴于准备和提交阶段均只需要三分之二备用节点达成一致,因此PBFT已经可以容忍多达三分之一备用节点离线甚至作恶。但是如果是主节点出现故障呢?

视图变化

如果主节点出现故障,系统会执行视图变换子程序。大致来讲,当主节点出现故障,视图变换协议会指定新的主节点,从而保障系统的活跃性。当副本在一段时间后没看到新进展,副本会广播视图变换消息,表示想要变换到下一个视图。当收集到三分之二的副本同意执行视图变换的消息后,便开启视图变换程序。

在视图变换期间,副本或许无法就最新的共识状态达成共识。截至目前,主节点仍负责领导共识。由于我们是在部分同步网络的条件下,即便事实上已经达成了2/3多数,我们也还无法保证所有副本都会在第一轮中看到2/3的多数投票。这是因为一个副本即使在第一轮中看到了三分之二的多数票,也不能假设其他副本也已经看到了一样的票数,因此到目前为止我们还无法达成共识。

正因如此,PBFT需要进行两轮投票:副本直到看到第一轮投票结果后,才能进行第二轮投票。因此,当第二轮投票获得三分之二多数票时,证明至少三分之二的副本已经在第一轮投票中看到结果。这种根据第二轮投票所得的知识来获取第一轮投票信息的巧思取代了同步假设。在同步假设中,我们是用近乎粗暴的方式假设经过一定时间后,节点已经看到信息,因此在这种同步假设情况下只有一轮投票。

采用PBFT共识机制后,在最新的提案已经通过第二轮投票获得三分之二多数票后,新的主节点可以从这个请求开始接手,继续运行共识算法。视图变换的消息还包括备用节点在第一轮投票中已看到获得2/3多数票的最新请求。假设有少于三分之一节点作恶,那如果任何节点在第二轮投票中看到三分之二的多数票,那么肯定存在至少一个诚实的备用节点,这个节点成功地广播了视图变换的消息,表明他们已经在第一轮投票中看到三分之二的多数票。这个证明本质上就是抽屉原理的应用,不过推理过程更为复杂,感兴趣的读者可以查看PBFT ?相关论文。

总结

PBFT是一个开创性的经典共识协议,采用2轮投票的方式进行最终确认。PBFT运用在部分同步网络中,具备三分之一的最佳容错能力。理解了两轮投票是如何保障视图变化的安全性,就掌握了所有经典共识协议的基础知识。PBFT的具体细节相比之下不是那么重要,我们很快就会了解到PaLa是如何在PBFT协议基础上进行严格升级。

PBFT是消息密集型算法,共有3轮消息,每轮消息都必须发送至其他所有副本。因此信息复杂度是O(n^2) ,n是副本数量。

备用方案

PBFT采用基于视图的方法达成共识,其中每个视图均由负责创建新提案的主节点负责。

而基于投票的方法源自Paxos共识协议,并常用于联邦拜占庭协议(FBA)中,如在Stellar共识协议。基于投票的共识中没有明确的主节点。相反,任何节点都可能在一个时间段内共享一个提案,在达成共识之后,由所有达成一致的提案得出最终该时间段的值(比如对所有提案区块中的的所有交易做并集运算)。这种方法避免了由单个节点在短期内负责创建新提案而可能带来的的审查问题。投票的方法仍然需要进行两轮投票才能最终决定。TT链优先考虑采用基于视图的方法,因此我们不再赘述基于投票的方法的细节。

ThunderCore (TT链)是新一代的区块链公链平台。它突破了现今区块链的困境,达成快速、高扩展性、安全,而且又与以太坊虚拟机兼容。

ThunderCore创办团队集结了美国学术界顶级的智能合约,分布式算法先行者,和硅谷的资深创业者, 并独特采用严密数学证明的PoS共识算法, 保障区块链的效率和安全。通过此算法, ThunderCore解决了以太坊高GAS费、低TPS、高交易确认时间的问题。

—-

编译者/作者:A加社区联盟

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...