两种“共识”,两个问题设定
分布式系统研究早在 1980 年代就把“共识”写成定理:几个进程各自有存储,部分会宕机,如何对一串操作达成一致?Paxos(Lamport 等提出)和其后更易理解的 Raft 给出的答案属于崩溃容错(CFT)家族:只要多数节点活着,协议就能继续——宕机的节点只是沉默,不说假话。区块链引入的场景多了一个恶意维度:节点可以任意撒谎、串谋、伪造消息。拜占庭容错(BFT)与工作量证明(PoW)是为这个更坏设定长出的两支。
Raft 过半数为什么防不住坏人
Raft 的多数派假设建立在“节点身份来自受控名单”的前提上。放进无许可网络,只要攻击者能以低成本伪造身份,多数派就能被伪造的“一万人”淹没——这正是女巫攻击教给一切协议的第一课。所以公链要么给身份定价(PoW 烧电、PoS 烧押金),要么在许可制里预先把名单发给实名成员。Paxos/Raft 家族因此几乎全部栖息在企业联盟链与内部数据库里,而不是公有账本里。
BFT 是“带谎言设定的 Raft”
PBFT 一类协议可以理解为 CFT 的恶意增强版:节点仍是实名、集合固定,但允许最多约三分之一节点任意作恶,通过预准备、准备、提交三轮消息确认和验收集合抵御伪造。代价是消息复杂度随节点数平方增长,规模一大就喘。于是两条路线各自演化出家族树:联盟链在“实名集合+拜占庭容错”内做工程优化;公链在“无许可身份+经济权重”里找活路。两者的安全定理几乎从不互相适用,引用论文时混用定理是常见的翻车现场。
FLP 定理:三兄弟头顶的同一朵云
1985 年的 FLP 结果给这场讨论定了天花板:在完全异步的网络里,哪怕只有一个节点可能故障,也不存在保证终止的确定性共识。所有幸存方案都在偷偷加假设:Paxos/Raft 依赖超时与部分同步性,BFT 同理,PoW 则把最终性改成概率。看共识论文时先找它偷偷借了哪条假设,比看结论更有信息量。
联盟链与公链的分岔地图
把“名单是否受控”和“能否撒谎”当两个坐标轴,四个象限一目了然:名单受控且诚实——Raft/Paxos(数据库复制、联盟链常见底座);名单受控但可撒谎——PBFT 家族(同业联盟、跨机构清算);名单开放但要求诚实——几乎无现实方案;名单开放且可撒谎——PoW/PoS 与女巫防线。这张图解释了为什么“我们把 Raft 改成区块链”类提案总在评审中阵亡:缺的是身份经济层,不是代码分支。
为什么这条谱系值得记住
把这条线画出来:单机故障靠冗余复制,多数派裁决靠 Paxos 与 Raft,节点可能说谎加 BFT,参与名单无限扩张加女巫经济防线,最终性诉求再把“概率确认”补成检查点与罚则。区块链不是凭空发明的全新学科,而是把分布式计算四十年的定理表搬进了“参与方互不信任且匿名”的极端象限。看论文时的分辨方法也简单:先看定理假设里有没有“最多 f 个节点故障”还是“最多 f 个节点拜占庭”,再看身份假设是名单制还是资源制。两个坐标定下来,这篇文章属于哪一族、结论能不能搬去另一族,一目了然。
快速问答
区块链发明前的共识研究算数吗? 算,BFT 与 PoW 的很多安全证明直接沿用其模型语言。联盟链安全吗? 它的安全来自成员身份与法律约束,和公链的“陌生人不互信”是两回事。Raft 能上公链吗? 现有定理不支持,除非引入外部身份定价机制。
常见误区
一是把“最终一致性”当“最终性”混用——前者是数据库复制语义,后者是账本不可逆。二是把 PoW 说成“解决拜占庭将军问题”的唯一答案,BFT 在无许可约束缺失时同样成立。三是把 FLP 读成“共识不可能”,它只否定特定异步模型里的确定性保证。
风险提示:本文为计算机科学与协议机制科普,不构成任何投资建议。
发表评论
还没有评论,来说两句吧。
评论区为展示样式,提交不会被处理。