我正在研究实用的拜占庭容错。在准备阶段和提交阶段,所有副本都将其消息广播到所有副本,包括他们自己。为什么这很重要?广播是否保证所有非故障节点都知道彼此决定什么以排除不正确的节点?
答案 0 :(得分:1)
复制品广播的原因是为了验证在预备阶段可能由拜占庭有缺陷的领导者发送的消息。正确的副本需要交换消息,因为有缺陷的领导者可能会向不同的副本发送不同的消息,这会导致状态不一致(即违反安全属性)
让我们假设领导者是拜占庭式的。在准备前阶段,领导者为从客户端发送的给定相同请求分配不同的序列号。领导者向所有副本广播<PRE-PREPARE>
消息。这里正确的副本并不简单地认为<PRE-PREPARE>
消息在所有副本中完全相同,因此它们通过广播消息来检查接收的消息是否相同。在广播之后,如果正确的副本收集匹配的2f + 1个<PRE-PREPARE>
的数字,副本就会知道来自领导者的接收消息在正确的副本中是相同的。
为什么他们播出?为什么这很重要?因为决定从单一来源发送的消息可能会破坏允许拜占庭故障领导者的网络下的安全属性(即正确副本之间的一致性)。他们交换信息,以便在达成共识后确保正确的副本中的相同状态。