拜占庭失败又称为任意失败,它相比于上述两种失败是最不好预测的
。
所谓任意失败是,参与的节点对请求产生不一致的响应,一个说当前数据是 A,而另一个却说它是 B。
这个故障往往是程序 Bug 导致的,可以通过严格软件开发流程管理来尽可能规避
。
但我们都清楚,Bug 在生产系统中是很难避免的,特别是系统版本差异带来的问题是极其常见的。故在运行态,一部分系统并不信任直接从远程节点获得的数据,而是采用交叉检测的方式来尽可能得到正确的结果。
另一种任意失败是一些节点故意发送错误消息,目的是想破坏系统的正常运行,从而牟利。
采用区块链技术的数字货币系统则是使用正面奖励的模式(BFT),来保证系统内大部分节点不“作恶”(做正确事的收益明显高于作恶)。