第313章 拜占庭容错算法
  “所以,我挨个问一遍『將军b对你们说了什么』,如果『进攻』比较多,那我就把將军b的意见记为『进攻』;
  “然后再挨个问一遍『將军c对你们说了什么』,如果『撤退』比较多,那我就把將军c的意见记为『撤退』。
  “就这样,我通过反覆套娃的方式,不断地排除少数派答案,最后得出的结论,就是更准確的『多数派答案』。
  “在满足『拜占庭容错』的情况下,我们强制要求所有將军都遵守这一套策略,並且必须坚决执行最终的结论。
  “那我们就可以確保大家一起进攻或者一起撤退。”
  郑杰有些困惑:“在满足『拜占庭容错』的情况下?也就是蔡哥你之前说过的,叛徒人数必须少於三分之一?”
  蔡志远点了点头:“是的。
  “我们用3名將军的情况来举个例子:
  “假设3名將军里面,將军c是叛徒,故意传递错误的信息。
  “將军a会首先向將军b和c说『进攻』。
  “但是將军b接到命令之后无法確认將军a是不是叛徒,所以他要先问將军c,『將军a给你的命令是什么』,而將军c是叛徒,所以会故意说『將军a给我的命令是撤退』。
  “因为只有三个將军,所以將军b就无法判断將军a和將军c到底哪个是叛徒,因为『进攻』和『撤退』的命令各一票,无法形成多数。
  “同理,將军b在执行这个策略的时候,也没法判断將军a和將军c哪个是叛徒。
  “这是最简单的一种情况,如果將军的数量变多,比如同时有7个將军,其中有2个是叛徒的话,情况会变得复杂很多,要套娃很多次才能最终得到结论。
  “所以我才说,这种问题不需要自己真的推算,只要记住结论就行了。