114 / 691BGP

拜占庭将军问题

在任意或敌对故障下达成分布式一致的精确定义问题;可解性取决于参与者数量、认证和网络时序。比特币改变了这些假设,而不是简单实现经典BFT。

拜占庭将军问题研究:当故障进程任意行动,并向不同接收者发送矛盾消息时,正确进程能否达成单一决定。Lamport、Shostak 和 Pease 于1982年的表述证明,无签名口头消息模型容忍 m 个叛徒至少需要 3m+1 个参与者,并描述了口头和签名消息的递归算法。这些结果建立在精确假设上,不是所有区块链共识的同义词。

Lamport、Shostak与Pease于1982年7月在ACM TOPLAS发表这一寓言,用来说明复制计算机系统的交互一致性。彼此分隔的将军必须选定同一方案,而叛徒可向不同接收者发送不同说法。拜占庭故障比宕机更强:故障组件可以撒谎、前后矛盾、遗漏消息,或只在部分观察者看来正常。 [Lamport, Shostak & Pease — The Byzantine Generals Problem (1982)] [Pease, Shostak & Lamport — Reaching Agreement in the Presence of Faults (1980)]

论文区分两项条件。IC1:所有忠诚副官执行同一命令。IC2:若司令忠诚,所有忠诚副官执行他发出的命令。现代术语通常对应一致性或安全性、有效性以及终止性或活性。只有同时说明网络模型、认证假设和最大故障数,这些保证才有明确含义。 [Lamport, Shostak & Pease — The Byzantine Generals Problem (1982)] [Pease, Shostak & Lamport — Reaching Agreement in the Presence of Faults (1980)]

在口头消息模型中,接收者知道直接发送者,能发现消息缺失,任意两进程可通信;但叛徒可发送不同值。OM(m)递归转发收到的值,再使用确定性多数函数。容忍m个拜占庭进程至少需要3m+1个参与者,即忠诚者严格超过三分之二。三进程无法容忍一名叛徒,因为忠诚者不能区分撒谎的司令与撒谎的同伴。 [Lamport, Shostak & Pease — The Byzantine Generals Problem (1982)]

不可伪造签名会暴露相互矛盾的发送,并阻止叛徒篡改忠诚者签署的命令。算法转发尚未见过的签名值,再对收集集合执行统一的确定性选择。在论文的理想签名假设下,可处理任意数量叛徒。但签名只证明来源,不证明内容真实、及时送达或私钥未被攻破;Dolev与Strong后来严格化了认证协议和轮次下界。 [Lamport, Shostak & Pease — The Byzantine Generals Problem (1982)] [Dolev & Strong — Authenticated Algorithms for Byzantine Agreement (1983)]

能否保证推进取决于时序。Fischer–Lynch–Paterson 在1985年的结果表明,在完全异步、确定性的消息传递系统中,即使只有一个进程可能崩溃,也存在无法终止共识的合法执行。FLP并不是说实际系统永远不能达成一致。活性保证需要额外假设,例如最终成立的时间界限、具有指定性质的故障检测器,或者改用随机化协议。仅仅指定领导者并不足够。长期网络分区期间,安全的协议可能停止完成操作。 [Fischer, Lynch & Paterson — Impossibility of Distributed Consensus with One Faulty Process (1985)] [NIST IR 8460 Initial Public Draft — State Machine Replication and Consensus with Byzantine Adversaries]

Miguel Castro和Barbara Liskov于1999年提出的PBFT将拜占庭一致转化为复制状态机。在基本配置n = 3f+1中,它容忍f个拜占庭副本。准备就绪包括主副本的pre-prepare和2f条匹配的prepare消息;本地提交要求准备就绪及2f+1条匹配的commit消息。法定人数的交集和视图切换规则防止相互矛盾的提交。认证、序号、检查点和视图切换处理伪造、重放、日志增长及故障领导者。已知副本集合与确定性最终性不同于开放的Proof of Work网络。 [Castro & Liskov — Practical Byzantine Fault Tolerance (1999)]

Bitcoin不运行OM或PBFT,也不按具名节点计票。抵抗Sybil攻击的Proof of Work按累计工作量衡量竞争历史;每个Full Node独立拒绝违反共识规则的区块,并跟随累计工作量最大的有效链。暂时分叉是预期现象。在诚实工作量占优和通信条件的假设下,改写概率随确认深度增加而降低,但这不是数学上的不可逆性。Bitcoin Backbone模型在明确的攻击者工作量占比和网络条件下形式化共同前缀、链增长和链质量。 [Nakamoto — Bitcoin: A Peer-to-Peer Electronic Cash System] [Garay, Kiayias & Leonardos — The Bitcoin Backbone Protocol]

Bitcoin解决了拜占庭将军问题”这一简写掩盖了模型变化。经典一致从身份已知的固定群体与故障上限f出发;Bitcoin允许变化的化名参与者并使用外部稀缺资源。其保证仍需要具体的消息交付假设。Proof of Work限制Sybil身份的影响,但不阻止日蚀攻击、审查、自私挖矿、软件错误或多数算力重组。威胁模型必须说明攻击者、时序、成员和最终性;仅标注BFT并不够。 [Nakamoto — Bitcoin: A Peer-to-Peer Electronic Cash System] [Garay, Kiayias & Leonardos — The Bitcoin Backbone Protocol] [NIST IR 8460 Initial Public Draft — State Machine Replication and Consensus with Byzantine Adversaries]

要获得更完整的理解,请将本词条与以下词条结合阅读: 中本聪共识, Proof of Work, 共识规则, 双花, Bitcoin, 概率结算终局性.

DOC · 001Lamport, Shostak & Pease — The Byzantine Generals Problem (1982)一手来源DOC · 002Pease, Shostak & Lamport — Reaching Agreement in the Presence of Faults (1980)一手来源DOC · 003Dolev & Strong — Authenticated Algorithms for Byzantine Agreement (1983)一手来源DOC · 004Fischer, Lynch & Paterson — Impossibility of Distributed Consensus with One Faulty Process (1985)一手来源DOC · 005Castro & Liskov — Practical Byzantine Fault Tolerance (1999)一手来源DOC · 006Nakamoto — Bitcoin: A Peer-to-Peer Electronic Cash System一手来源DOC · 007Garay, Kiayias & Leonardos — The Bitcoin Backbone Protocol一手来源DOC · 008NIST IR 8460 Initial Public Draft — State Machine Replication and Consensus with Byzantine Adversaries文档
来源优先 · 非投资建议