Reliable broadcast and consensus are the two pillars that support a lot of non-trivial fault-tolerant distributed middleware and fault-tolerant distributed systems. While they have close definitions, they strongly differ in the underlying assumptions needed to implement each of them. Reliable broadcast can be implemented in asynchronous systems in the presence of crash or Byzantine failures while Consensus cannot. This key difference stems from the fact that consensus involves synchronization between multiple processes that concurrently propose values, while reliable broadcast simply involves delivering a message from a predefined sender. This paper strikes a balance between these two agreement abstractions in the presence of Byzantine failures. It proposes CAC, a novel agreement abstraction that enables multiple processes to broadcast messages simultaneously, while guaranteeing that (despite potential conflicts, asynchrony, and Byzantine behaviors) the non-faulty processes will agree on messages deliveries. We show that this novel abstraction can enable more efficient algorithms for a variety of applications (such as money transfer where several people can share a same account). This is obtained by focusing the need for synchronization only on the processes that actually need to synchronize.
翻译:可靠广播与共识是支撑众多非平凡容错分布式中间件及容错分布式系统的两大支柱。尽管它们在定义上相近,但二者在各自实现所需的基础假设上存在显著差异。可靠广播可在异步系统中容忍崩溃或拜占庭故障,而共识则无法实现。这一关键差异源于共识要求多个并发提议值的进程进行同步,而可靠广播仅涉及从预定义发送者处投递消息。本文在存在拜占庭故障的情况下平衡了这两种一致性抽象,提出了CAC这一新型一致性抽象,使得多个进程能够同时广播消息,同时确保(尽管存在潜在冲突、异步性及拜占庭行为)无故障进程能就消息投递达成一致。我们证明,这种新型抽象可针对多种应用(例如多人共享同一账户的转账场景)实现更高效的算法。其核心在于将同步需求仅聚焦于实际需要同步的进程。