仅供协议分析教育参考。解决一种拜占庭一致模型,不能证明实际网络安全、有活性、实现正确、去中心化、具备最终性或能够保障资产。
直接答案
拜占庭将军问题追问:只能通过消息通信的无故障参与者,怎样在部分参与者可任意行动、甚至向不同接收者发送矛盾说法时作出一致决定。军事故事是分布式系统“交互一致性”的类比,不是历史事件,也不是某一种区块链共识算法。
在“司令—副官”表述中,IC1 要求所有忠诚副官执行同一命令,IC2 要求司令忠诚时,每名忠诚副官执行司令的命令。只达成一致还不够:永远选择撤退的规则虽能一致,却会违背忠诚司令发出的有效进攻命令。
在论文的“口头消息”模型中,若叛徒最多为 m,仅当 n>3m 时问题才可解;参与者数量为整数时等价于 n>=3m+1。该模型假定忠诚者发出的消息能被正确送达、接收者知道发送者是谁,且能够发现预期消息缺失。“口头”表示未经认证的内容可被伪造成其他参与者的转述,并不等于信使可以永远消失且无人察觉。
论文的“签名消息”模型加入不可伪造、任何人可验证的签名,因而改变容错结论。它不会使签名内容变真,不会保证送达、解决完全异步终止、保护被盗密钥,或证明现代协议安全。拜占庭将军问题、两军问题或协调攻击问题、FLP、BFT 协议、工作量证明和权益证明彼此相关,却是不同模型或构造。
分析方法
- 定义一致任务。 说明参与者、输入、输出,以及准确的一致性、有效性和终止属性。对司令模型,应明确写出
IC1与IC2,而不是只说“达成共识”。 - 定义身份与信道。 说明点对点消息是否认证、可靠送达、有序、防重放和可归责;消息缺失能否发现;广播是基本原语还是靠逐个发送实现。
- 定义时序。 区分延迟有上界的同步、未知稳定时间后的部分同步与完全异步。不能给一个模型加入消失的信使,却沿用为另一个模型证明的定理。
- 定义故障预算。 记录参与者总数
n、拜占庭参与者上限m、腐化是静态还是自适应,以及故障是否包括遗漏、矛盾消息、串谋、密钥盗取或信道故障。 - 递归追踪信息。 对每名忠诚参与者列出直接说法和转述说法,包括发送者路径、缺失消息默认值和确定性平局规则;比较两名忠诚者从本地视图能区分哪些执行。
- 同时核对定理与算法。 把下界和充分性对应到准确的口头或签名模型、连通性与故障预算。一个阈值不等式既不是实现,也不是证明。
- 映射到实际部署。 核验部署协议的
OM(m)、SM(m)或其他机制,以及消息域、轮次、锁定、证书、成员变更、超时、客户端行为、最终性规则与应用确认政策。
关键证明技术是不可区分性。忠诚参与者只能看到自己的本地消息;若两次执行在它看来完全相同,却因有效性要求不同决定,那么任何确定性规则都无法始终正确选择。协议通过增加足够多的独立参与者、认证证据、时序假设、随机性或其他结构,使必要的执行变得可区分,或者改变所承诺的保证。
计算示例
1. 三名口头消息将军为何不能容忍一名叛徒
设 n=3、m=1。必要条件 n>3m 变为 3>3,不成立。假设司令 A 告诉副官 B ATTACK,却告诉副官 C RETREAT。B 无法判断是 A 作为叛徒发送矛盾命令,还是 C 作为叛徒谎报 A 的说法;C 面临对称的不确定性。
任何能在相应“忠诚 A”执行中保留忠诚司令命令的确定性选择,都可能迫使 B 和 C 在“叛徒 A”执行中作出不同决定。转发消息不会创造第四个独立来源,因此无法同时保证 IC1 与 IC2。
2. 四名口头消息将军与一名叛徒
在 OM(1) 中,n=4、m=1。司令向三名副官发送命令;每名副官把收到的值转发给另外两名;每名忠诚副官采用同一个多数规则与默认值。若司令忠诚并发送 v,忠诚副官看到的值可为 v、v 和叛徒可能发送的 x,所以选择 v。
若司令是唯一叛徒,三名副官全都忠诚,并如实转发各自收到的内容。因此三者重建出同一组“司令向各副官发送的说法”,并采用相同确定性规则。他们未必找回司令的“真实意图”,但能满足一致性。
3. 口头消息的一般下界
当 n=7、m=2 时,7>6 成立,所以参与者数量满足前提;在其他假设也成立时,递归口头消息构造最多容忍两名叛徒。对 n=6,6>6 不成立。对 n=10、m=3,10>9 成立。通过不等式只是必要条件,仍须正确实现轮次、转发、多数、默认值和信道。
4. 签名改变了什么
在三名将军的 SM(1) 示例中,叛徒司令为发给 B 的 ATTACK 和发给 C 的 RETREAT 分别签名。忠诚副官转发两份签名命令,所以双方都得到同一个集合 {ATTACK, RETREAT},并采用同一个规定默认值,例如 RETREAT。司令发送矛盾命令的行为可以归责。
在该模型下,签名防止忠诚参与者的命令被伪造或被无痕修改。它不会揭示叛徒两份命令中的哪一份代表“真实意图”,不会保证及时送达,也不能阻止控制合法私钥的攻击者同时签署两份内容。
风险与审查失误
问题与模型
- 只复述寓言,不给出准确的一致性、有效性与终止条件。
- 把拜占庭将军问题当作历史围城、单一算法或区块链的同义词。
- 与两军问题混淆;后者关注不可靠信道上的共同知识。
- 加入无法发现的永久消息丢失,却引用口头消息假设排除此情形的定理。
- 把
n>3m套到所有认证、异步、加权、无许可或按资源竞争的协议。 - 把崩溃、遗漏、矛盾消息、任意计算、信道故障和密钥泄露视为同一种故障。
- 假设参与者数量等于独立实体、质押、算力或委员会权重。
- 在有效性条件中遗漏忠诚司令与叛徒司令的区别。
算法与实现
- 只看最终多数,不递归追踪发送者路径及每名忠诚参与者的本地视图。
- 各实现采用不同的缺失消息默认值、平局规则、成员快照或消息顺序。
- 接受未绑定协议、链、任务、高度、轮次、值、发送者和成员时期的消息。
- 跨执行、轮次、分叉、网络或成员变更重放、拼接消息。
- 假设签名能够证明真实、新鲜、授权语境、送达、可用或密钥被诚实保管。
- 引用
OM(m)或SM(m),却未实现所需轮次、转发、验证与连通性。 - 只测试一种叛徒位置,不测试司令、副官、串谋、遗漏和矛盾消息情形。
部署与解释
- 宣称某共识协议“解决了拜占庭问题”,却不说明准确的安全、活性与网络假设。
- 把对字节达成一致当作应用执行或链外事实正确的证明。
- 忽略共同客户端、运营方、云服务、密钥系统或治理造成的相关故障。
- 在达到所需最终性条件前记入充值、铸造跨链资产或结算不可逆操作。
- 从容错标签推断去中心化、资产安全、法律事实或代币价值。
常见误区
- 这个问题就是 51% 攻击。 它研究明确一致模型下的任意与矛盾行为;资源多数攻击属于特定协议。
- 多数总能解决问题。 在经典口头消息模型中,容忍
m名叛徒要求参与者总数超过其三倍,不只是诚实者比叛徒多一名。 - 数字签名证明消息是真的。 签名可认证密钥并保护完整性;恶意或已泄露的密钥仍能签署虚假、矛盾内容。
- 原始口头消息结果已经涵盖不可靠送达。 该结果包含明确的送达、发送者身份和可发现遗漏假设;其他时序与信道模型需要其他结论。
- 达成一致表示系统获知了现实真相。 除非另有验证规则,忠诚节点也可能对无效应用输出或错误外部数据达成一致。
相关主题
资料来源
- The Byzantine Generals Problem - ACM Transactions on Programming Languages and Systems(访问日期:2026-08-19)
- Reaching Agreement in the Presence of Faults - Journal of the ACM(访问日期:2026-08-19)
- Impossibility of Distributed Consensus with One Faulty Process - Journal of the ACM(访问日期:2026-08-19)
- Consensus in the Presence of Partial Synchrony - Journal of the ACM(访问日期:2026-08-19)
- Practical Byzantine Fault Tolerance - USENIX OSDI(访问日期:2026-08-19)
- CometBFT Consensus Algorithm - CometBFT(访问日期:2026-08-19)
- HotStuff: BFT Consensus with Linearity and Responsiveness - arXiv(访问日期:2026-08-19)
- Blockchain Technology Overview - NIST(访问日期:2026-08-19)