自 2008 年比特币作为一种点对点电子金融系统诞生以来,许多数字货币已经被创建,每种货币都以特殊的机制运行。但所有数字货币的共同点是区块链作为其结构的基本元素。

所有区块链都被有意设计为去中心化的,除了少数例外,它们充当由分布式计算机节点网络维护的数字分类账。因此,区块链技术允许创建值得信赖的经济系统,在该系统中,金融交易可以以透明且可靠的方式进行,而无需中介机构。

目前,数位货币的使用被认为是严重依赖信任的传统银行系统和支付方式的可行替代方案。

与大多数分散式运算系统的情况一样,加密货币网路的参与者需要定期就区块链运行的当前状态达成一致,这就是我们所说的共识成就。然而,以安全可靠的方式就分散式网路达成共识是一项非常困难的任务。

那么,分散式电脑节点网路如何就某些节点是否可能发生故障或进行非法行为达成一致?这就是所谓的拜占庭将军问题的基本问题,拜占庭容错的概念就是由此产生的。


拜占庭将军的问题是什么?

简而言之,1982 年的拜占庭将军问题被认为是一个逻辑困境,说明一群拜占庭将军在试图就计划的下一步达成一致时可能会出现相互沟通的问题。

这个困境假设每位将军都有自己的军队,每个部队位于他打算攻击的城市周围的不同位置,并且每位将军必须同意进攻或撤退。无论是进攻还是撤退,只要全体将领达成共识,即达成共同决策,并协调执行即可。

因此,我们可以考虑以下目标:

  • 每位将军必须决定:进攻或撤退(是或否)。

  • 一旦做出决定,就不能改变。

  • 所有将军必须就同一决定达成一致并同步执行。

上述通讯问题与以下事实有关:每位将军只能透过承运人/快递员发送的讯息与另一位将军进行通讯。因此,拜占庭将军面临的主要挑战是讯息可能会延迟、损坏或遗失。

此外,即使讯息成功传递,一名或多位将军也可能(出于任何原因)选择恶意行事并发送欺骗讯息来迷惑其他将军,导致任务彻底失败。

如果我们将这种困境应用到区块链的背景下,每个世代都代表一个网路节点,并且节点必须就系统的当前状态达成共识。换句话说,分散式网路中的大多数参与者必须同意并执行相同的操作,以避免完全失败。

因此,在这些类型的分散式系统中达成共识的唯一方法是拥有 ⅔(三分之二)或更多的诚实节点。这意味著,如果网路的大多数决定进行恶意行为,系统将容易遭受故障和攻击(例如 51% 攻击)。


拜占庭容错 - BFT

简而言之,拜占庭容错(BFT)是系统能够抵抗源自拜占庭将军问题的故障类型的属性。这意味著即使某些节点发生故障或出现恶意行为,BFT 系统也能够继续运作。

拜占庭将军问题的可能解决方案不只一种,这意味著建构 BFT 系统的方法有很多种。同样,区块链有多种不同的方法来实现拜占庭容错,这导致了我们所谓的共识演算法。


区块链共识演算法

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

虽然比特币协议规定了系统的基本规则,但被称为工作量证明 (PoW) 的共识演算法定义了如何遵循这些规则以达成共识(例如,在交易验证期间)。

尽管工作量证明的概念比加密货币更古老,但中本聪开发了它的修改版本作为一种演算法,使得比特币能够创建为 BFT 系统。

请注意,工作量证明 (PoW) 演算法并非 100% 拜占庭容错,但由于成本密集的挖矿过程和加密技术,PoW 已被证明是区块链网路最安全、最值得信赖的实现之一。

因此,中本聪设计的工作量证明演算法被许多人视为拜占庭错误最巧妙的解决方案之一。


结论

拜占庭将军问题是一个有趣的困境,最终催生了广泛应用于各种场景的 BFT 系统。即使在区块链产业之外,BFT 的一些用例也包括航空、航太和核能产业。

在数位货币的背景下,拥有高效的通讯网路和共识机制对于任何区块链系统都至关重要。确保这些系统的安全性是一项持续的工作,现有的共识演算法仍在努力克服一些限制(例如可扩展性)。然而,工作量证明(PoW)和权益证明(PoS)是 BFT 系统的两种非常有趣的方法,潜在的应用无疑是广泛灵感的来源。