Bracha's Reliable Broadcast
Table of Contents
1. 简介
1987 年,Gabriel Bracha 在论文 Asynchronous Byzantine agreement protocols 中提出分布式网络中的一种“Byzantine Fault Tolerance(BFT)”算法,我们把它称为 Bracha's Reliable Broadcast。注:这个算法其实在 1984 年,Gabriel Bracha 在论文 An Asynchronous [(n-1)/3]-Resilient Consensus Protocols 中就提出了。
在一个节点数为
- 如果
是正常节点,则所有正常节点都会接受这个值。 - 如果
是恶意节点,则所有正常节点都或者接受一个相同的值,或者不接受任何值。
2. Bracha's Reliable Broadcast 协议
下面介绍 Bracha's Reliable Broadcast 协议。
假设所有的通信消息都有一个编号,比如第
这个协议中使用了 3 种类型的消息:initial/echo/ready:
- 消息 (initial, v) 表示节点
想通过广播来设置变量 v 的值; - 消息 (echo, v) 表示某节点向所有其它节点广播,我收到了 initial 消息;
- 消息 (ready, v) 表示某节点向所有其它节点广播,我准备好了。
Bracha's Reliable Broadcast 协议如图 1 所示。
Figure 1: Bracha's Reliable Broadcast
有一些实现把图 1 中的 step1 作了一些简化,仅当收到 (initial, v) 消息后才会广播 (echo, v),如图 2(摘自 State Machine Replication with Byzantine Faults)所示。
Figure 2: Bracha's Reliable Broadcast
图 3(摘自:https://youtu.be/u0nypF5AIF4?t=710 )形象地展示了消息的发送过程。
Figure 3: Bracha's Reliable Broadcast
2.1. Bracha's Reliable Broadcast 协议优缺点
Bracha's Reliable Broadcast 协议的优点:协议简单,代码实现比较容易;它经常是其它一些 BFT 算法的基本构件。但它有个缺点:当主节点出问题时没有恢复机制会导致协议失败,在论文 Practical Byzantine Fault Tolerance 中对这个缺点的描述是:“unable to survive primary failures”。