Honey Badger 共识是什么?不猜网络快慢也能达成拜占庭共识 图 1
Honey Badger 共识是什么?不猜网络快慢也能达成拜占庭共识 · 图 1

一句话先说清

HoneyBadgerBFT 出自 Miller、Xia、Croman、Shi、Song 五人 2016 年的论文(发表于 ACM CCS 2016),是自经典的 Brave/Rabin 式理论协议以来第一套能跑出实用吞吐的异步拜占庭容错(aBFT)协议。它的激进之处在于一个“不”:不做任何网络计时假设——不设超时、不等“最迟响应”,哪怕网络被随机延迟、链路被敌手拖延,协议照样推进。代价是没有轮次节拍,吞吐由消息本身“攒够份额”的速度决定。

Honey Badger 共识是什么?不猜网络快慢也能达成拜占庭共识 图 2
Honey Badger 共识是什么?不猜网络快慢也能达成拜占庭共识 · 图 2

同步假设到底借了什么

主流 BFT 协议(PBFT 及其后继、HotStuff 等)运行在“部分同步”模型:消息延迟存在一个未知的上界,超时了就换领导者。这个机制平时很好用,但论文指出它的软肋——活性依赖“网络行为符合预期”。敌手不需要破解签名,只要持续把延迟推高到超时线附近,就能让基于超时的协议反复换主、陷入无休止的视图转换。异步模型直接放弃计时:消息可以任意慢、可以随机延迟,只要最终会送达(公平投递假设),协议必须能推进。

两项关键技术:RBC 与 ACS

HoneyBadgerBFT 的地基是异步原子广播(ACS):每个节点把一个值广播给所有人,且大家最终提交的“值的序列”顺序一致。构造分两层。第一层是可靠广播(RBC):把一个消息用信息分发编码切成 n 份,给每个节点发一份并广播全部份额。节点不必等“完整的消息”,只要凑齐任意 n-f 份就能用解码器还原原文——于是最慢的那条链路不再挡路,这正是异步下的扩散姿势。第二层把 n 路 RBC 的输出按“子序列”收拢:每当从某一路 RBC 解码出一个值就记一笔,同时用随机抽签决定每条流的接受概率,随时间推移把所有流的输出以一致顺序合并成公共日志。随机份额替代了“第几轮”的钟。

慢就是快,快也要慢

实测上论文报告在广域网与上百节点规模达到每秒数万交易的吞吐,甚至能在 Tor 这类不可预测的链路上做 BFT 实验而无需调参。但异步不是免费盔甲:没有节拍器意味着坏时候“能前进”,好时候也未必比同步协议快;异步模型的权威不可能性结果(如 Consensus 在纯异步下无法确定性地解决)由随机化绕开,代价是收敛概率而非必然时刻。理解 aBFT 最有用的心法是:同步协议赌网络正常,异步协议赌密码份额迟早凑齐。

一条直觉线

把每个节点要广播的数据压成一袋拼图分发给全网。同步协议的做法是等所有人把整袋图寄到再开盒;异步协议是“看到 2/3 的碎片就能重画图”,谁寄得快先拼,剩下的人补碎片即可——于是没有人在等一个永远不会来的快递员。

快速问答

问:异步 BFT 会不会被“永不送达”卡死?异步模型的假设就是消息最终送达(只是延迟不可控);若网络彻底分区,任何协议都无能为力,这是模型的地板而非实现缺陷。 问:它现在用在哪?直接照搬原版 HoneyBadgerBFT 的公链很少,但“异步可靠广播 + 份额聚合”的技术路线影响了 Aardvark、Cinder 等一系列后续协议,学术上也被视作对超时攻击的理论解。 问:为什么它不删掉同步协议?同步假设在常态下给出确定的轮次与延迟上界,工程上更好排障;aBFT 是为“敌手能操控延迟”的极端环境准备的备用哲学。

常见误区

一是把“无超时”读成“无延迟”:异步协议照样受真实延迟折磨,只是不再用超时做正确性决策。二是把随机抽签当成共识投票:抽签只是决定各流何时被纳入公共日志,安全性来自 RBC 的子序列引理。三是以为异步等于更强安全:它换来的是活性鲁棒性,对抗超过三分之一作恶者时的安全性与同步 BFT 同样有硬上限。

风险提示:本文为分布式共识机制科普,不构成任何投资建议。