分布式系统(E05):NOPaxos、Streamlet 与 HoneyBadger 的假设边界
“微秒级”“简洁区块链”“异步BFT”不是三档性能套餐。NOPaxos把排序能力下沉到网络设备,以特殊网络原语缩短崩溃容错快路径;Streamlet用epoch、leader和公证链给出易讲清的拜占庭共识;HoneyBadgerBFT用随机化和密码学组件在异步网络中获得概率活性。它们改变的是系统模型,不能只按吞吐或延迟排成一条榜单。
分布式系统(E04):Lambda 与 SkyPilot 的执行和调度边界比较协议前先固定四个条件
至少要写清网络时序、故障类型、成员/身份和完成定义。一个协议的“快”可能依赖可编程交换机;另一个协议的“活”可能只承诺概率1最终完成;BFT证书还依赖认证密钥没有被正确节点滥用。
flowchart LR
P[协议主张] --> N[网络模型]
P --> F[故障模型]
P --> I[身份/密码学]
P --> C[完成与测量口径]
N --> J[可比较结论]
F --> J
I --> J
C --> J
NOPaxos:网络排序换掉一部分协议工作
NOPaxos论文提出Ordered Unreliable Multicast。网络排序器给请求分配序号,正确副本在正常路径上看到相同顺序,从而避免传统共识为每个请求交换排序消息。低延迟来自把工作放进网络,不是“共识不再需要网络”。
unreliable一词很关键。副本可能看到序号缺口,排序器或leader也会故障;协议仍需gap recovery、view change和持久化边界。若普通网络不能提供论文要求的有序原语,NOPaxos的快路径前提就不成立。
sequenceDiagram
participant C as Client
participant S as Network Sequencer
participant R1 as Replica1
participant R2 as Replica2
C->>S: request
S->>R1: seq=4
S->>R2: seq=4
Note over R1: 若只见1,2,4则停在gap
R1-->>R2: recovery/view change
论文中的微秒级数字绑定当时硬件、网络、批量、请求大小和实现。换成跨区域网络、软件交换或不同持久化设备后,数字不能直接迁移。
Streamlet:三段连续公证形成最终化证据
Streamlet把时间分成epoch,每个epoch选一个leader提出区块。区块获得超过三分之二投票后被notarized。若一条链上出现三个连续epoch的notarized blocks,中间块及其祖先可以finalize。只有两个公证块,或epoch编号有缺口,都不足以触发这条规则。
flowchart LR
B1[epoch e 已公证] --> B2[epoch e+1 已公证]
B2 --> B3[epoch e+2 已公证]
B3 --> F[finalize B2及祖先]
X[epoch e 已公证] --> Y[epoch e+2 已公证]
Y --> N[不能套三连续规则]
在4节点、至多1个Byzantine节点时,证书取3票。任意两个3票集合至少交2个节点;即使其中一个是故障节点,交集仍有正确节点。证明还要结合正确节点投票规则和链结构,不能只写交集算术。
活性依赖epoch足够长以容纳网络传输,并最终出现诚实leader。永久异步延迟可以让固定轮次无法推进,因此Streamlet与HoneyBadger的网络承诺不同。
HoneyBadger:不用时钟上界,但要随机性与密码学
HoneyBadgerBFT组合可靠广播、异步二元一致和异步共同子集,让n >= 3f+1的副本在异步拜占庭模型下输出共同批次。对手可以任意延迟消息,但不能永久阻止正确节点之间的消息交付;随机化打破FLP式确定性僵局,终止是概率性质。
flowchart TD
TX[加密交易批] --> RBC[可靠广播]
RBC --> ABA[异步二元一致]
ABA --> ACS[异步共同子集]
ACS --> DEC[共同解密与输出]
“不假设已知延迟上界”不表示有限时间SLA。某个有限前缀没有决定,既可能是允许的消息延迟,也可能是实现故障。安全性与概率终止需按完整模型判断。
条件矩阵比性能榜单更有用
| 协议 | 网络关键前提 | 故障 | 核心快/活性来源 | 不能直接声称 |
|---|---|---|---|---|
| NOPaxos | 网络提供有序不可靠多播 | crash | 网络序号缩短正常路径 | 普通网络也有相同延迟 |
| Streamlet | 认证且epoch最终覆盖消息延迟 | Byzantine < 1/3 | leader、公证与三链规则 | 完全异步仍确定推进 |
| HoneyBadger | 异步、消息最终交付 | Byzantine < 1/3 | 随机化ACS与密码学 | 固定截止时间或最低延迟 |
工程选择还要算实现复杂度、密钥管理、批量等待、恢复路径和硬件依赖。只比较论文峰值会把不同任务、不同年份和不同故障模型混在一起。
运行有限检查
1 | |
程序枚举4节点3票证书所有配对和故障位置,检查交集仍含正确节点;另验证三种公证epoch序列、有序网络缺号和异步有限延迟边界。完整结果见观察结果,来源见实验证据,限制见验证说明。
两个推演练习
NOPaxos副本收到1、2、4,为什么不能直接执行4?
序号3可能只是延迟,也可能已经被其他副本看到。越过缺口会让副本执行不同前缀,必须按协议恢复缺失请求或切换视图。
HoneyBadger运行十秒没有输出,能否证明活性违例?
不能。异步概率活性没有固定十秒截止;需要区分允许的有限延迟、随机选择和实现卡死。运维SLA仍须另设监控与超时策略。
E06把“证明程序应该满足什么”推进到可执行规格与实现级证明,比较TLA+/PlusCal有限模型和IronFleet。
参考资料
- Li 等,2016,Just Say NO to Paxos Overhead。
- Chan、Shi,2020,Streamlet。
- Miller 等,2016,The Honey Badger of BFT Protocols。
- Cachin 等,2000,Practical Asynchronous Byzantine Agreement。
