实用拜占庭容错 (pBFT)

2025 年 4 月 20 日 | 阅读 4 分钟

实用拜占庭容错 (pBFT) 是一种一致性算法。它由 **Barbara Liskov** 和 **Miguel Castro** 在 90 年代提出。它旨在高效地执行工作操作。它经过优化,可在短时间内工作。其主要目标是在短时间内解决任何问题。实用拜占庭容错 (pBFT) 的应用领域包括区块链和分布式计算。

什么是拜占庭容错?

拜占庭容错是分布式网络系统的一种特性,通过它我们可以在某些节点无法响应或提供不正确信息时恢复网络。拜占庭容错的主要目标是提供系统故障的保障。它的另一个目标是减少故障节点。这个问题最初源于拜占庭将军问题。

拜占庭将军问题

如果正常工作的节点就网络值达成一致,则可以控制拜占庭容错。应该有一个网络值提供给网络的每个节点。这意味着如果我们假设存在一个故障节点,网络值可能无法达成一致。但是我们可以借助拜占庭将军问题克服这个问题。此外,如果每个节点都给出多数的特定值,那么我们将该特定值分配给网络中的所有节点。Leslie Lamport 证明,如果完美工作的处理器数量为 3m+1,则 m 是故障进程的数量。

拜占庭故障的类型

拜占庭故障有两种类型。这两种故障是任意节点故障和故障停止故障。一些任意节点故障如下。

  1. 未能返回结果。
  2. 返回不正确的结果。
  3. 返回故意误导的结果。
  4. 向系统的不同部分返回不同的结果。

实用拜占庭容错 (pBFT) 的优点

1. 能源效率

实用拜占庭容错 (pBFT) 无需计算复杂的数学运算即可实现一致性。Zilliqa 的员工将复杂的数学运算与实用拜占庭容错 (pBFT) 的每第 100 个区块结合起来执行。

2. 交易终结性

在实用拜占庭容错 (pBFT) 中,分布式网络不需要多次确认。在比特币机制的情况下,比特币的每个节点都单独连接到多个节点,并且每个节点都验证每个传入和传出交易。每个交易的确认需要 10-60 分钟才能完成整个操作。整个操作的完成取决于连接的节点数量。

3. 低奖励差异

每个节点都有责任响应客户端的请求、解决查询并回复客户端。因此,每个节点都具有做出决策的功能。

pBFT 如何工作?

pBFT 尝试提供一种实用的拜占庭状态机复制,即使系统中存在恶意节点也能工作。

pBFT 启用的分布式系统中的节点按顺序排列,其中一个节点是主节点(或领导节点),其他节点称为次节点(或备份节点)。请注意,系统中的任何合格节点都可以通过从次节点转换为主节点(通常在主节点故障的情况下)成为主节点。目标是所有诚实节点都通过多数规则帮助就系统状态达成共识。

实用拜占庭容错系统可以运行的条件是,恶意节点的最大数量不得大于或等于系统中所有节点的三分之一。随着节点数量的增加,系统变得更安全。

pBFT 共识轮分为 4 个阶段(请参考下图)

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

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

pBFT 的局限性

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

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

使用 pBFT 变体的平台

有一些平台用于 pBFT 变体。它们如下:

  1. Zilliqa:这是 PoW 共识与 pBFT 的组合。
  2. Hyperledger Fabric:这是 pBFT 的许可版本。
  3. Tendermint:这是 DPoS 和 pBFT 的组合。