我不明白Byzantine Reliable Broadcast如何通过其整体属性确保如果某个消息由任何正确的进程传递,则每个正确的进程最终都会传递消息。 在发送者是正确的情况下,我理解拜占庭可靠广播是如何工作的,但如果发送者是拜占庭人,我不知道。 例如,考虑一个场景,其中有四个进程:A,B,C和D,A是拜占庭发送方,因此我们尊重进程总数N(即4)大于数量的三倍的约束。错误的进程f(即3f = 3)。现在,如果A仅向B和C发送消息m,拜占庭可靠广播如何确保D也传递消息m?
答案 0 :(得分:0)
你的问题是......
给定四个过程(N = 4,f = 1):A,B,C,D;和A是拜占庭故障节点, 如果A只向B和C发送消息m,拜占庭可靠广播如何确保D也传递消息m?
在回答你的问题之前,让我明确一件事。你为什么要考虑D传递信息?我的意思是,总体属性只表示" 如果某些消息是由任何正确的进程提供的 ,那么每个都是正确的 流程最终发送消息。"在您的方案中,B和C都还没有传递消息。所以D不需要确保m被交付。
但是,如果您打算询问如何在正确的流程之间实现一致性,即使在拜占庭发件人向不同流程发送不同消息的情况下,我也可以回答这个问题。
这是因为B和C广播从A发送的消息以验证A实际上是否是拜占庭发送者。然后,D没有收到来自A的消息的情况得到解决,因为B和C都被认为是正确的。
如果你看一下拜占庭可靠广播的详细协议,你还有两个步骤没有在你的问题中提及。因此,如果C在第一阶段没有收到来自发件人的任何消息,C将在第二阶段知道这一事实,因为B和C都将广播该消息并尝试收集匹配的2f + 1号码(法定数量)消息。