在已知的论文Impossibility of Distributed Consensus with one Faulty Process (JACM85)中,FLP(Fisher,Lynch和Paterson)证明了令人惊讶的结果,即没有完全异步的共识协议甚至可以容忍一个未宣布的过程死亡。
在引理3中,在显示D包含0价和1价配置之后,它说:
除了他们声称存在这样的C 0和C 1之外,我可以遵循整个证据。你能给我一些提示吗?如果一个步骤中的另一个配置邻居,则调用两个邻居。通过简单的归纳,存在邻域C 0,C1∈C,使得Dᵢ= e(Cᵢ)是i-valent,i = 0,1。
答案 0 :(得分:5)
D
(将e
应用于C
的元素后的可能配置集)包含0价和1价配置(并假设不包含二价配置) 。
即 - e
将C
中的每个元素映射为0价或1价配置。根据{{1}}的定义,必须有一个根元素通过一系列“邻居”关系连接到所有其他元素,因此必须是一个边界点,其中{ C
与C
中的元素相邻,导致e
之后导致1价配置的{0}配置导致0价配置。
答案 1 :(得分:2)
我曾经走过阅读所有这些论文的道路,只是为了发现它完全浪费时间。
结果并不奇怪。
你提到的论文“[分布式共识与一个错误的不可能性 处理]“1
是一长串复杂的数学证明,仅仅等同于:
1)共识是一种确定性状态
2)环境中的一个(或多个)故障系统是非确定性环境
3)在非确定性环境中,不能达到确定性的状态,行动或结果。
结束。不需要进一步考虑。
这是它在亚科达米亚以外的现实世界中的运作方式。
如果您希望代理达成共识,则必须添加同步(时序模型)近似构造,以使环境在给定的约束集内具有确定性。例如,像Timeouts,Ack / Nack,Handshake,Witness这样的简单构造,或者更复杂的构造。
您越接近同步确定性模型,结构就越复杂。假设的同步模型将具有无限复杂的结构。还要记住,在非平凡的分布式系统中永远无法实现完全确定的同步模型。这是因为在任何具有可变初始状态的非平凡动态多变量系统中,在任何时间点都存在无数个可能的状态,动作和结果。 Chaos Theory
考虑用于检测丢弃的TCP数据包的构造的复杂性,因为在跳数为21的路由器中存在缓冲区溢出错误。检测到相同的缓冲区溢出错误的复杂性导致检测信号从构造本身丢失。
答案 2 :(得分:1)
定义映射f
,使得f(C) = 0
,如果e(C)
是0价,否则f(C) = 1
,如果e(C)
是1价。
由于e(C)
不能是二价的,如果我们假设D
没有二价配置,f(C)
只能是0或1。
从树中的初始二价配置排列可访问的配置,树中必须有两个邻居C0,C1 f(C0) != f(C1)
。因为,如果不是,则所有f(C)
都是相同的,这意味着D
只有所有0价配置或所有1价配置。