bitpie钱包安卓下载|实用拜占庭容错(pBFT)

作者: 佚名 分类: bitpie百科 发布时间: 2022-11-13 08:15

Practical Byzantine Fault Tolerance 是一种共识算法,由 Barbara Liskov 和 Miguel Castro 在 90 年代后期引入。pBFT 旨在在异步(何时收到对请求的响应没有上限)系统中高效工作。它针对低开销时间进行了优化。它的目标是解决与现有拜占庭容错解决方案相关的许多问题。应用领域包括分布式计算和区块链。

什么是拜占庭容错?拜占庭容错(BFT)是分布式网络的特性,即使网络中的某些节点无法响应或响应不正确的信息,也能达成共识(对相同值的协议)。BFT 机制的目标是通过采用集体决策(包括正确节点和故障节点)来防止系统故障,旨在减少故障节点的影响。BFT 源自拜占庭将军问题。

拜占庭将军的问题1982 年,LESLIE LAMPORT、ROBERT SHOSTAK 和 MARSHALL PEASE 在微软研究院的一篇论文中恰当地解释了这个问题:

推荐阅读 1

Solidity 简介:值得拥有的工具

2

Web3 中你应该知道的 35 个术语

想象一下,拜占庭军队的几个师在敌城外扎营,每个师都由自己的将军指挥。将军们只能通过信使相互交易所。在观察敌人之后,他们必须决定一个共同的行动计划。但是,有些将军可能是叛徒,试图阻止忠诚的将军达成协议。将军们必须决定何时进攻这座城市,但他们需要一支强大的军队同时进攻。将军们必须有一个算法来保证(a)所有忠诚的将军们决定相同的行动计划,以及(b)少数叛徒不会导致忠诚的将军们采取一个糟糕的计划。忠诚的将军们都会做算法说他们应该做的事情,但叛徒可以做他们想做的任何事情。无论叛徒做什么,算法都必须保证条件(a)。忠诚的将领不仅要达成协议,而且要商定一个合理的计划。

如果网络中正确工作的节点就其值达成一致,则可以实现拜占庭容错。可以为丢失的消息赋予默认投票值,即,如果在特定时间限制内未收到消息,我们可以假设来自特定节点的消息是“错误的”。此外,如果大多数节点以正确的值响应,我们还可以分配默认响应。

Leslie Lamport 证明,如果我们有 3m+1 个正确工作的处理器,那么如果最多 m 个处理器出现故障,就可以达成共识(关于相同状态的协议),这意味着严格来说,超过三分之二的处理器总数应该是诚实的。

拜占庭故障的类型:考虑了两类故障。一种是故障停止(其中节点发生故障并停止运行),另一种是任意节点故障。下面给出了一些任意节点故障:

  • 未能返回结果
  • 以错误的结果回应
  • 以故意误导的结果回应
  • 以不同的结果响应系统的不同部分

pbft的优点:

  • 能源效率:pBFT 无需执行复杂的数学计算(如 PoW)即可实现分布式共识。Zilliqa 将 pBFT 与类似 PoW 的复杂计算相结合,每 100 个区块进行一轮。
  • 交易最终确定性:交易不需要多次确认(例如比特币中的 PoW 机制,每个节点在将新块添加到区块链之前单独验证所有交易;确认可能需要 10-60 分钟,具体取决于有多少实体确认新区块)在他们最终确定并达成一致之后。
  • 低奖励方差:网络中的每个节点都参与响应客户端的请求,因此可以激励每个节点,从而导致奖励有助于决策的节点的低方差。

pBFT 是如何工作的?pBFT 试图提供一种实用的拜占庭状态机复制,即使恶意节点在系统中运行也能正常工作。启用 pBFT 的分布式系统中的节点按顺序排序,其中一个节点是主节点(或领导节点),其他节点称为辅助节点(或备份节点)。请注意,系统中任何符合条件的节点都可以通过从辅助节点转换到主节点来成为主节点(通常在主节点故障的情况下)。目标是所有诚实节点都有助于使用多数规则就系统状态达成共识。一个实用的拜占庭容错系统可以在恶意节点的最大数量不能大于或等于系统中所有节点的三分之一的条件下运行。随着节点数量的增加,系统变得更加安全。

pBFT 共识轮分为 4 个阶段(参见下图):

    • 客户端向主(领导)节点发送请求。
    • 主(领导)节点将请求广播到所有辅助(备份)节点。
    • 节点(主节点和辅助节点)执行请求的服务,然后将回复发送回客户端。
    • 当客户端收到来自网络中不同节点的“m+1”个具有相同结果的回复时,请求成功服务,其中 m 是允许的最大故障节点数。

主要(领导)节点在每个视图(pBFT 共识轮次)期间都会更改,并且如果经过预定义的时间量而领导节点没有向备份(辅助)广播请求,则可以由视图更改协议代替。如果需要,大多数诚实节点可以对当前领先节点的合法性进行投票,并将其替换为排队的下一个领先节点。

pBFT 的局限性:pBFT 共识模型仅在分布式网络中的节点数量较少时才能有效工作,因为通信开销会随着网络中每个额外节点呈指数级增长而增加。

      • Sybil 攻击:pBFT 机制容易受到Sybil 攻击,其中一个实体(一方)控制多个身份。随着网络中节点数量的增加,女巫攻击变得越来越难以实施。但由于 pBFT 机制也存在可扩展性问题,因此 pBFT 机制与其他机制结合使用。
      • 缩放:pBFT 不能很好地缩放,因为它的通信(在每一步都与所有其他节点)开销。随着网络中节点数量的增加(增加为 O(n^k),其中 n 是消息,k 是节点数),响应请求所需的时间也会增加。

使用 pBFT 变体的平台:

      • Zilliqa – pBFT 与PoW共识相结合
      • Hyperledger Fabric – pBFT 的许可版本
      • Tendermint – pBFT + DPoS(委托权益证明)

pBFT 的变体:为了针对特定用例和条件提高 pBFT 的质量和性能,提出并采用了许多变体。他们之中有一些是 :

    • RBFT – 冗余 BFT
    • 摘要
    • Q/U
    • HQ – BFT 的混合Arbitrum协议
    • 适应
    • Zyzzyva – 投机拜占庭容错
    • 土豚

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!