论文标题

动态拜占庭可靠广播[技术报告]

Dynamic Byzantine Reliable Broadcast [Technical Report]

论文作者

Guerraoui, Rachid, Komatovic, Jovan, Kuznetsov, Petr, Pignolet, Yvonne-Anne, Seredinschi, Dragos-Adrian, Tonkikh, Andrei

论文摘要

可靠的广播是一种通信原始保证,可以直观地保证分布式系统中的所有流程传递相同的消息。这种原始吸引力的原因是双重的:(i)我们可以在完全异步的环境中确定性地实施,与更强的原始词(如共识和总订单广播)不同,但(ii)可靠广播足够强大,足以实施重要的应用程序,例如付款系统。 我们在本文中解决的问题是动态可靠广播的问题,即使过程能够加入或离开系统。对于长期寿命的应用程序,此属性是可取的(目的是高度可用),但在以前的异步可靠广播协议中已被排除在外。我们在一般的对抗性(即拜占庭)环境中研究此属性。 我们介绍了动态拜占庭可靠广播(DBRB)原始的第一个规范,该规范可与异步实现相提并论。然后,我们提出了一种在异步网络中实现此规范的算法。我们的DBRB算法可确保如果系统中的任何正确过程都会广播消息,则每个正确的过程都会传递该消息,除非它离开系统。此外,如果一个正确的过程传达了一条消息,则每个未表达其离开系统意愿的正确过程都会传达该消息。我们假设系统中$ 2/3 $的流程始终是正确的,这在我们的上下文中很紧。 我们还表明,如果系统中只有一个进程可以失败 - 并且只能通过崩溃而失败 - 那么不可能实现更强大的原始性,确保系统中的任何正确的过程广播或传递消息,那么系统中的每个正确过程都会传递该消息 - 包括离开的消息。

Reliable broadcast is a communication primitive guaranteeing, intuitively, that all processes in a distributed system deliver the same set of messages. The reason why this primitive is appealing is twofold: (i) we can implement it deterministically in a completely asynchronous environment, unlike stronger primitives like consensus and total-order broadcast, and yet (ii) reliable broadcast is powerful enough to implement important applications like payment systems. The problem we tackle in this paper is that of dynamic reliable broadcast, i.e., enabling processes to join or leave the system. This property is desirable for long-lived applications (aiming to be highly available), yet has been precluded in previous asynchronous reliable broadcast protocols. We study this property in a general adversarial (i.e., Byzantine) environment. We introduce the first specification of a dynamic Byzantine reliable broadcast (DBRB) primitive that is amenable to an asynchronous implementation. We then present an algorithm implementing this specification in an asynchronous network. Our DBRB algorithm ensures that if any correct process in the system broadcasts a message, then every correct process delivers that message unless it leaves the system. Moreover, if a correct process delivers a message, then every correct process that has not expressed its will to leave the system delivers that message. We assume that more than $2/3$ of processes in the system are correct at all times, which is tight in our context. We also show that if only one process in the system can fail---and it can fail only by crashing---then it is impossible to implement a stronger primitive, ensuring that if any correct process in the system broadcasts or delivers a message, then every correct process in the system delivers that message---including those that leave.

扫码加入交流群

加入微信交流群

微信交流群二维码

扫码加入学术交流群,获取更多资源