网工干货知识

超全学习笔记
当前位置:首页 > 干货知识

实用型拜占庭容错机制(Practical Byzantine Fault Tolerance,pBFT)

更新时间:2026年03月27日   作者:spoto   标签(Tag):

实用拜占庭容错算法是由Barbara Liskov和Miguel Castro在20世纪90年代末提出的一种共识算法。该算法旨在在异步系统中高效运行,因为在这种系统中,无法提前确定请求何时会得到响应。该算法的设计目的是以较低的开销实现时间上的优化。它的目标是解决那些已经存在的拜占庭容错解决方案所面临的诸多问题。其应用领域包括分布式计算和区块链技术。

什么是拜占庭容错性?

拜占庭容错性(Byzantine Fault Tolerance,BFT)是一种分布式网络特性,它能够在部分节点无法响应或提供错误信息的情况下,仍然达成一致的决策。BFT机制的目标是通过集体决策来避免系统故障的发生,从而减轻有缺陷节点的负面影响。BFT的概念源自于拜占庭将军问题。

拜占庭将军问题

这个问题在1982年由微软研究院的LESLIE LAMPORT、ROBERT SHOSTAK和MARSHALL PEASE撰写的一篇论文中得到了恰当的阐述。

想象一下,拜占庭军队的多个部队分别驻扎在敌方的城市周围。每个部队都由各自的将领指挥。 这些将军们只能通过信使来互相沟通。 在观察了敌人之后,他们必须制定出共同的行动计划。 不过,有些将军可能是叛徒,他们试图阻止那些忠诚的将军们达成任何协议。 将军们必须决定何时进攻这座城市,但他们需要军队中的绝大多数成员同意才能同时发起攻击。 这些将军们一定有一些算法,来确保:(a)所有忠诚的将军们都能达成一致的行动方案;(b)少数叛徒也无法让忠诚的将军们采取错误的行动方案。 那些忠诚的将军们都会按照算法的指示行事,而那些叛徒则可以随心所欲地做他们想做的事情。 无论那些叛徒们做出什么行为,该算法都必须确保满足条件(a)。 那些忠诚的将领们不仅应该达成一致的意见,还应该制定出合理的计划来实施这些意见。

如果网络中正常运行的节点能够就它们的数值达成一致,那么 Byzantine容错性就能得到实现。 对于丢失的消息,可以设定一个默认的投票值。也就是说,如果某个节点的消息在指定的时间内没有收到,那么我们可以认为该消息是“有问题的”。 此外,如果大多数节点都给出了正确的答案,我们还可以为它们分配一个默认的响应结果。 Leslie Lamport证明,如果我们有3m+1个能够正常工作的处理器,那么只要最多有m个处理器出现故障,我们仍然可以达成一致的决策。这意味着,至少有超过三分之二的处理器是诚实的。

拜占庭式故障的类型:

需要考虑的故障类型有两种。一种是以节点故障为特征的故障,即节点发生故障时会停止运行;另一种则是任意节点的故障。下面列举了一些任意节点的故障情况:

  • 未能返回结果
  • 以错误的结果进行回应
  • 故意给出具有误导性的结果作为回应。
  • 对系统的不同部分给出不同的结果。

pbft的优势:

  • 能源效率pBFT能够在不进行复杂的数学计算的情况下实现分布式共识(就像PoW算法那样)。Zilliqa则结合了pBFT与类似PoW的复杂计算机制,每处理100个区块时就会进行一次这样的计算。
  • 交易的最终性这些交易在最终确定并得到各方认可之后,就不需要再进行多次确认了。与比特币中的工作量证明机制不同,在工作量证明机制下,每个节点都需要单独验证所有的交易,然后再将新区块添加到区块链中。而在这个过程中,确认所需的时间大约为10到60分钟,具体时间取决于有多少实体对新的区块进行确认。
  • 低奖励方差网络中的每个节点都会参与到对客户端请求的响应过程中。因此,每个节点都可以得到相应的激励,从而确保那些在决策过程中发挥重要作用的节点的奖励幅度保持较低水平。

PBFT是如何工作的呢?

PBTF试图提供一种实用的拜占庭式状态机复制机制,即使系统中存在恶意节点时,该机制仍能正常运作。 在一种基于 pBFT 的分布式系统中,各个节点是按照一定的顺序进行排列的。其中,有一个节点被指定为“主节点”,而其他节点则被称为“辅助节点”或“备份节点”。 需要注意的是,系统中的任何符合条件的节点都可以通过从次级状态转变为初级状态来成为主节点(通常是在主节点发生故障时)。 我们的目标是让所有诚实的节点共同努力,通过多数投票的方式来达成对系统状态的共识。 一个实用的拜占庭容错系统,其运行条件为:恶意节点的数量最多只能达到系统中所有节点的三分之一或更小。 随着节点数量的增加,系统的安全性也会得到提升。 PBFt的共识轮次分为4个阶段(参见下图):

  • 客户端向主节点发送请求。
  • 主节点会将该请求广播给所有从节点/备用节点。
  • 这些节点(包括主节点和次级节点)会执行所请求的服务,然后向客户端返回响应。
  • 当客户端从网络中的不同节点接收到“m+1”个具有相同结果的响应时,该请求就成功被满足了。这里的m表示允许存在的最大故障节点的数量。
  • 在每一轮视图处理过程中,主节点都会发生变化,因此主节点可以被替换掉。
  • 查看变更协议
  • 如果已经过去了预定义的时间,而主导节点仍然没有向备份节点发送任何请求的话,那么就需要进行相应的处理。如果需要的话,大多数诚实的节点可以投票来决定当前主导节点的合法性,并将其替换为下一个处于领导地位的新节点。
  • pBFT的局限性:
  • PBFOT共识模型只有在分布式网络中的节点数量较少时才能够高效运行。因为随着网络中节点的数量增加,通信开销会呈指数级增长。
    • Sybil攻击pBFT机制容易受到……的影响。Sybil攻击在这种情况下,一个实体可以控制多个身份。随着网络中节点数量的增加,实施Sybil攻击的难度也会随之增加。不过,由于pBFT机制本身也存在可扩展性方面的问题,因此通常会将pBFT机制与其他机制结合使用。
    • 缩放/调整大小由于PBFRT需要与其他所有节点进行通信,因此其通信开销很大。随着网络中节点数量的增加(随着n的k次方增长,其中n表示消息的数量,k表示节点的数量),响应请求所需的时间也会相应增加。
  • 使用 pBFT 变体的平台:
    • Zilliqa – 将pBFT与……相结合工作量证明共识
    • Hyperledger Fabric——一种基于pBFT机制的许可型版本。
    • Tendermint:pBFT + DPoS(委托权益证明)
  • pBFT的各种变体:
  • 为了提升pBFT在特定应用场景和条件下的质量和性能,人们提出了许多改进措施并采用了这些改进方案。其中一些措施包括:
    • RBFT – 冗余 Byzantine Fault Tolerance
    • 摘要/概述
    • Q/U
    • HQ – 用于 Byzantine Fault Tolerance的混合共识协议
    • 适应
    • Zyzzyva – 一种基于推测的拜占庭容错机制
    • 土豚
              马上抢免费试听资格
意向课程:*必选
姓名:*必填
联系方式:*必填
QQ:
思博SPOTO在线咨询

上一篇: 量子密码学

下一篇: 网络的演变

相关资讯

即刻预约

免费试听-咨询课程-获取免费资料