拜占庭问题又叫做拜占庭将军(Byzantine Generals Problem)问题,常接触区块链技术的人应该对这个专有名词不陌生,因为可以经常看到什么新公链推出的演算法解决了拜占庭将军问题等新闻,但究竟什么是拜占庭将军问题呢?
拜占庭问题是Leslie Lamport 1982 年提出用来解释分散式系统一致性问题的虚构模型,在论文中Leslie Lamport 提出一个抽象的案例来举例:
拜占庭是古代东罗马帝国的首都,由于地域宽广,守卫边境的多个将军(就像是系统中的多个节点)需要透过信使来传递消息,达成是否一起进攻或撤退的决定。今天帝国派出了10 支军队去包围这个敌人,但由于这个敌人过于强大,这10 支军队必须在分开的包围状态下同时攻击,任一支军队单独进攻都毫无胜算,而且还至少要6 支军队(半数以上)同时袭击才能成功攻下敌国。
因此,这些将军们需要找到一种共识机制,可以远端协商战术才能赢取战斗。在不确定将军之中是否有叛徒会擅自变更进攻意向或者进攻时间的情况下,拜占庭将军们如何才能保证有多于6支军队在同一时间一起发起进攻,从而赢取战斗?
论文中, Leslie Lamport 用数学证明,当叛徒不超过1/3 时,存在有效的演算法,不论叛徒如何折腾,忠诚的将军们总能达成一致的结果,但如果叛徒超过1/3 则无法保证一定能达到共识,而这就是所谓的拜占庭问题。今天区块链之所以也会与拜占庭问题扯上关系,是因为区块链想解决的也是一样概念的问题:
每个节点(将军)给所有的其它节点(将军)发送消息,且节点(将军)根据接收到的所有消息来决定最终的决策,如何避免恶意节点(叛徒)影响共识的达成就是区块链的特点了。
达成共识的过程中,如果有一个节点故意拒绝合作(恶意节点)或根本没有说任何事情(错误的节点),就是拜占庭将军中所谓的叛徒。因此在比特币的区块链网路设计中,中本聪借助密码学、工作量证明机制PoW(Proof of Work)等技巧来制约、惩罚这些叛徒。透过工作量证明机制PoW ,节点必须付出大量的工作量(算力)去证明自己没有恶意,才能成功打包交易去通知其他节点。
最长链机制则是约定好所有节点都确认并沿着已知最长的链进行下去。所以即使恶意节点有试图破坏,也会付出很大的经济代价(付出超过系统一半的算力)。可以说只要每个节点都足够理性、想让自己利益最大化的情况下,工作量证明机制PoW的确有效抑制了叛徒作恶的动机,进而解决了拜占庭问题。
本文链接地址:https://www.wwsww.cn/qkl/1416.html
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。