问题:
在一个3节点的同步分布式系统中,如果存在一个Byzantine故障节点,则不存在针对这个系统的Byzantine Agreement算法。请用自己的语言说明证明思路。
证明:
设有三个节点A、B、C,三个节点中有一个是Byzantine故障节点。
不失一般性,我们以A节点此时发送消息举例。
当A发出消息比如“进攻”时,此时有两种情况:
- B或者C是Byzantine故障节点
- A是Byzantine故障节点
首先分析(1)
不失一般性,我们假设B是Byzantine故障节点,B可能发送给C,它收到的是“逃跑”的消息。这时C收到一个“进攻”,一个“逃跑“,于是C被信息迷惑,而无法判断正确的消息。
接着分析(2)
此时A是Byzantine故障节点,A会发送给B“进攻”的消息,发送给C“逃跑”的消息。当C发送给B,C收到的是“逃跑”的消息时,B由于收到了A发送的“进攻”的消息,从而无法与C保持一致。
正由于上述原因,在只有三个节点的系统中,只要有一个是Byzantine故障节点,即Byzantine故障节点数量所占比例等于或大于1/3,Byzantine问题便不可解。所以得证,即在一个3节点的同步分布式系统中,如果存在一个Byzantine故障节点,则不存在针对这个系统的Byzantine Agreement算法