Water Cooler Small Talk, Ep. 12: Byzantine Fault Tolerance
TL;DR · AI 摘要
拜占庭容错机制是分布式系统应对恶意节点的核心方案,区块链是其优雅的现代应用。
核心要点
- 拜占庭容错要求系统在最多1/3节点作恶时仍能达成共识
- 区块链通过工作量证明和智能合约实现拜占庭容错
- Leslie Lamport等人1982年论文首次提出该理论模型
结构提纲
按章节快速跳转。
思维导图
用一张图看清主题之间的关系。
查看大纲文本(无障碍 / 无 JS 友好)
- 拜占庭容错
- 历史背景
- 拜占庭将军问题
- Lamport 1982论文
- 技术实现
- 共识算法
- 区块链应用
- 现代挑战
- 安全验证
- 性能优化
金句 / Highlights
值得收藏与分享的关键句。
拜占庭容错要求系统在最多1/3节点作恶时仍能达成共识
区块链通过工作量证明和智能合约实现拜占庭容错
Leslie Lamport等人1982年论文首次提出该理论模型
水冷器闲聊,第12期:拜占庭容错 | Towards Data Science
区块链
水冷器闲聊,第12期:拜占庭容错
当房间里没有人值得信任时,如何做出决策?
Maria Mouschoutzi
2026年7月20日
10分钟阅读
分享
作者使用ChatGPT Images 2.0生成的图片
最近我进行了一项小研究,花了一些时间了解区块链,幸运的是不是从加密货币交易员的视角,而是出于对它实际运作机制的纯粹好奇。在深入探索的过程中,我不断遇到一个此前从未听说过的概念——拜占庭容错。
简而言之,拜占庭容错是一种系统特性,它使系统即使包含一些恶意参与者时仍能正常运行。因此,这次水冷器闲聊将围绕拜占庭容错展开:解释它是什么、起源何处、为何重要,以及区块链为何成为解决一个古老问题的优雅方案。
那么,让我们开始吧!
从拜占庭将军到计算机
拜占庭容错这一系统特性得名于一个博弈论问题,即拜占庭将军问题:
一群拜占庭将军包围了一座堡垒。他们必须共同决定是进攻还是撤退。无论是撤退还是进攻,只要所有人协调一致就能成功。协调一致的进攻会成功,协调一致的撤退也会成功。但如果有些将军进攻而另一些撤退,结果将是失败。将军之间的通信是全连接的,他们只能通过互相派信使进行沟通。然而,其中一些将军可能是叛徒。具体来说,叛徒不仅会投错误的票,还会通过向不同将军发送矛盾信息来欺骗其他将军。例如,叛徒可能告诉一位将军进攻,同时告诉另一位将军撤退,刻意制造分裂。与此同时,忠诚的将军事先无法知道谁是叛徒。问题是:在这样的将军设置中,是否有可能达成共识?如果可能,又是如何实现的?需要满足哪些条件?
这个问题最早由计算机科学家Leslie Lamport、Robert Shostak和Marshall Pease在1982年的论文中正式描述。尽管场景设定在中世纪军事背景中,但所描述的问题是计算机科学中最基础的挑战之一。也就是说,当分布式系统中某些参与者可能发送虚假信息时,如何达成可靠的共识?
在分布式计算机系统中,将军被替换为节点:单个计算机或服务器,每个节点都保存着共享状态(数据库、账本、交易记录)的副本。分布式系统的所有节点都需要就这个共享的真实状态达成一致。就像将军们通过互相发送信息进行沟通一样,这些节点中的一些可能存在问题。
但为什么不能简单投票?直观上,人们可能会认为每个将军只需将投票结果(进攻或撤退)发送给所有其他将军,然后统计票数,按照多数意见行动。如果超过半数投票进攻,就进攻;如果超过半数投票撤退,就撤退。
问题在于,这种机制只有在每个将军(节点)真正信任接收到的消息时才能正常工作。但在这样的网络中,可能包含叛徒,他们可能会向不同的将军发送不同的投票,以制造决策分裂。例如,将军A可能收到一条“我投票进攻”的消息,而将军B则收到同一名叛徒发送的“我投票撤退”的消息。这样一来,将军A和B可能会对网络多数意见产生不同的理解。换句话说,我们不能再单纯依赖多数投票,因为每个节点所认为的“多数”可能基于不同的消息。这种无法达成共识的问题,对那些假设中的拜占庭将军和分布式计算机网络来说,都是一个真正的挑战。
本质上,这就是拜占庭故障的定义。拜占庭故障是指分布式系统中的一种故障,其中某个组件并非简单地失效,而是以不可预测的方式运行。这意味着它可能向不同节点发送相互矛盾的信息,对某些节点表现得正常,而对其他节点则出现故障,主动生成错误的输出等。尽管如此,拜占庭故障并不一定源于网络中的恶意行为者,它也可能由电气故障、软件错误或硬件故障引起,导致节点产生任意输出。具有这种行为的节点被称为拜占庭节点。
每个将军从其他所有将军那里收到的信息。忠诚的将军发送一致的投票;叛徒则向不同接收者发送不同的投票。
无论如何,在1982年的原始论文中,作者通过数学证明表明,对于一个包含n个节点的系统,若要继续正常运行(即容忍f个拜占庭(叛徒)节点),则至少需要n ≥ 3f + 1个总节点数。换句话说,如果拜占庭节点数量超过总节点的三分之一,那么从数学上讲,这样的系统将无法可靠地达成共识,也没有算法能让这样的系统继续运行。一个系统如果至少有三分之二的节点未被破坏,并且能够正常运行并达成共识,就具有拜占庭容错特性,也被称为拜占庭容错系统。
区块链又如何?
在1982年论文发表后的数十年里,拜占庭容错一直是一个理论问题,只有在像航空航天系统、核电站等高度受控的环境中,才存在实际的解决方案。在这些环境中,每个节点都可提前审查并保证有不到三分之一的节点会叛变。换句话说,网络中的节点之间需要一定的信任,即使某些节点变成叛徒,这些叛徒的数量仍会低于三分之一(希望如此)。
#### 1. 比特币与工作量证明
这种情况一直持续到2008年,当时比特币白皮书发布,完全绕过了传统的投票方式。与此前存在的分布式网络不同,这些网络通过(希望是可信的)多数投票达成共识,而比特币白皮书提出了一种运行无需信任的分布式系统的机制。这意味着,与核电站中节点之间事先存在信任不同,比特币可以在没有任何节点相互信任的情况下运行,因为比特币的共识机制本身保证了交易的有效性。
比特币实现这一目标的具体机制称为工作量证明(Proof of Work,PoW)。简单来说,PoW通过使参与共识过程的计算成本高昂,以及使作恶行为的成本更加高昂(实际上不可能)来实现安全性。更具体地说,要添加一笔新交易,节点必须解决一个需要巨大计算能力的密码学难题。这个难题对提出交易的节点来说难以解决,但对其他节点验证解是否正确却很容易。
一个试图破坏系统并提出虚假交易的恶意节点,不仅需要重新完成其想要篡改交易的计算工作,还必须为之后每笔交易重复这一过程。这需要极其庞大的计算量!此外,它还必须比整个诚实网络的总计算能力更快地完成这些工作。实际上,这需要控制全网超过50%的算力,而这一成本极其高昂——几乎不可能实现。因此,作弊的成本会远超作弊可能带来的任何潜在收益,从而使作弊行为在经济上变得不理性。尽管如此,即使PoW能够在无信任的去中心化系统中实现可靠的交易,它也伴随着高昂的成本和高延迟(比特币交易可能需要长达10分钟才能完成)——这是由于需要进行大量计算。
#### 2. 现代区块链与权益证明(PoS)
在进一步拓展“使作弊行为在经济上变得不理性”这一理念的同时,现代区块链还尝试让系统本身运行得更快,另一种共识机制是权益证明(Proof of Stake,PoS)。自2022年起,以太坊区块链以及Solana、Sui等现代区块链均采用PoS机制。PoS的原理与PoW相同,但其通过让网络节点提交经济抵押物来直接使作弊行为成本高昂,而非通过计算间接实现。具体来说,在PoS区块链中,验证者(提出交易的节点)必须锁定大量区块链原生代币,才能获得提出和验证交易的资格。如果某个节点提出错误交易,系统将对其进行惩罚并没收部分抵押物。与PoW的区别在于,PoS通过经济惩罚而非计算不可行性来应对拜占庭行为。
PoS的另一个特点在于,它确实使系统更接近拜占庭容错(BFT)机制。与完全绕过经典BFT投票模型、将作恶阈值设定为全网50%算力的PoW不同,PoS使我们重新回到原始的拜占庭容错框架。在PoS系统中,验证者通过质押的代币数量作为权重,对交易的有效性进行投票。这意味着1982年原始论文中提到的1/3阈值再次适用:如果拜占庭验证者控制的总质押价值超过1/3,共识机制可能崩溃。从经典意义上讲,PoS是明确的拜占庭容错机制,而PoW则不是——它只是解决了同一问题的不同版本。
我的思考:超越区块链的BFT
✨ 感谢阅读!✨
如果你读到这里,可能会对 pialgorithms 感兴趣:这是我们正在构建的一个平台,帮助团队在一个地方安全地管理组织知识。
喜欢这篇文章?来我的 💌 Substack 和 💼 LinkedIn 加入我吧
所有图片均由作者创作,除非另有说明
作者信息
查看 Maria Mouschoutzi 的所有文章
数据科学
,
以太坊
博弈论
数学
技术
分享本文
- 在 Facebook 上分享
- 在 LinkedIn 上分享
- 在 X 上分享
Towards Data Science 是一个社区出版物。提交你的见解以触达全球受众,并通过 TDS 作者支付计划获得收益。
更新 href 为你的实际提交 URL
为 TDS 撰写文章
✦ 结束 CTA ✦