拜占庭容错
首页
文章
拜占庭容错

拜占庭容错

高阶
发布时间 Dec 6, 2018更新时间 Aug 17, 2023
5m
自2008年,比特币作为一种点对点的电子现金系统诞生以来,许多其他的数字货币也逐渐兴起,且每个数字货币都有其特定的机制。但几乎所有的数字货币都有一个共同点,那就是以区块链为核心架构。

绝大多数情况下,区块链都是被设计成去中心化的,由分布式节点网络维护的电子账本。因此,区块链系统可以让金融交易在没有中间人的情况下完全透明且可靠地执行。数字货币正逐步替代需要高可信度的传统银行支付系统。

正如大多数分布式计算系统一样,数字货币网络的参与者需要定期就区块链的当前状态进行讨论并达成一致,这就是我们所说的达成共识。但是,在分布式网络中以安全高效的方式达成共识绝非易事。

那么,在某些节点可能出现故障或不诚实行为的情况下,分布式计算机节点网络如何就决策达成一致? 这就是所谓的拜占庭将军问题的根本,它产生了拜占庭容错的概念。


什么是拜占庭将军问题?

简单来说,在1982年,拜占庭将军问题被认为是一个逻辑上的困境,它说明了一群拜占庭将军在试图就下一步行动达成统一意见时可能存在的沟通问题。

该困境假设每个将军都有自己的军队,每支军队都位于他们打算攻击的城市周围的不同位置。 这些将军需要就攻击或撤退达成一致。只要所有将军达成共识,即协调后决定共同执行,无论是攻击还是撤退都无关紧要。

因此,我们可以考虑以下条件:

  • 每个将军必须作出决定:攻击或撤退(是或否);
  • 一旦做出决定后无法改变;
  • 所有将军都必须就统一决定达成一致,并同步执行。


上述沟通问题涉及这样一个事实,即一个将军只能通过情报员发送的信息与另一个将军进行通信。因此,拜占庭将军问题的核心挑战是信息可能以某种方式被延迟传达,破坏或丢失。

此外,即使消息成功传递,一个或多个将军也可以选择(出于任何原因)恶意行动并发送欺诈性消息以混淆其他将军,导致行动失败。

如果我们将这个困境对应到区块链上,则每个将军代表一个网络节点,而节点需要就系统的当前状态达成共识。换句话来说,分布式网络中的大多数参与者必须同意并执行相同的操作以避免失败。

因此,在这些类型的分布式系统中达成共识的唯一方法是至少拥有三分之二以上的可靠和诚实的网络节点。这意味着如果网络中的大多数节点决定采取恶意行为,系统就很容易受到故障和攻击(例如51%攻击)。


拜占庭容错(BFT)

简单来说,拜占庭容错(BFT)是能够抵抗拜占庭将军问题所导致的一系列失败的系统属性。 这意味着即使某些节点出现故障或恶意行为,拜占庭容错系统也能够继续运行。

拜占庭将军问题有多种可能的解决方案,因此,有多种方法可以构建拜占庭容错系统。同样地,区块链有各种不同的方法来实现拜占庭容错,这就是我们说的共识算法。


区块链共识算法

我们可以将共识算法定义为区块链网络达成共识的机制。最常见的例子是工作量证明(PoW)和权益证明(PoS)。这里我们以比特币为例。

比特币协议规定了系统的主要规则,工作量证明共识算法说明了如何遵循这些规则以达成共识(例如,在交易的验证和验证期间)。

虽然工作量证明的概念比数字货币更早,但中本聪在原版本上进行了修改,并开发了一种改进后的工作量证明算法,可以将比特币的产生作为一种拜占庭容错系统。

请注意,该工作量证明算法不能完全抵抗拜占庭故障,但由于高成本的挖矿过程和底层加密技术,工作量证明已被证明是区块链网络中的一种最安全可靠的方法。从这个意义上说,由中本聪设计的工作量证明共识算法被许多人认为是拜占庭容错最高明的解决方案之一。

结论 

拜占庭将军问题是一个有趣的困境,最终产生了拜占庭容错系统,这些系统正在各种场景中得到广泛应用。除区块链行业外,拜占庭容错系统的一些使用案例也包括航空,航天和核电行业。

在数字货币领域中,拥有高效的网络通信以及良好的共识机制对于任何区块链生态系统都至关重要。保护这些系统需要持续的努力,现有的共识算法尚未能克服一些限制(例如可扩展性)。尽管如此,工作量证明和权益证明作为拜占庭容错系统来说都是有效的方法,其潜在的应用会激发更多的创新。