共识与网络

拜占庭容错

拜占庭容错,是指一个网络在部分参与者不仅出了故障、甚至还在主动撒谎或试图破坏共识的情况下,仍能正确运转的能力。这名字源自一道经典难题:几位将军包围着一座城,他们必须协调成全体进攻或全体撤退,靠信使传递消息——可其中一些将军可能是叛徒,发出自相矛盾的命令。忠诚的将军们还能不能达成一个一致而正确的决定?

这正是一条公链所面对的问题。成千上万匿名的参与者,其中有些可能心怀恶意,必须在彼此不信任的前提下,对同一份共享账本达成一致。如果一个系统只要不诚实的参与者维持在某个阈值以下——经典情形是少于三分之一——就能达成正确的共识,那它就被称为具有拜占庭容错性。一旦越过这个上限,叛徒就能制造混乱;只要在这之下,诚实的多数总能取胜。

每一种区块链共识机制,本质上都是这道难题的一个实用解。工作量证明通过要求真实的计算,让「当一个吵闹的叛徒」代价高昂;权益证明则通过把叛徒自己的押金置于险地,让背叛变得昂贵。无论哪种,设计目标都一样:容忍数量有限的说谎者和故障,仍让诚实的参与者收敛到同一段真实而公认的历史上。拜占庭容错,就是那个让无需信任的网络成为可能的形式化性质。

三分之一这个阈值是一个著名结论:经典的拜占庭共识协议,只有在出错或作恶的参与者少于三分之一时才能保持安全。

又称
BFT拜占庭容错拜占庭容錯拜占庭将军问题拜占庭將軍問題