喜欢了解区块链的币友可能会经常见到拜占庭将军这个词,这个词大多出现在算法共识所涉及的问题环节中。今天我们用简短的故事,给大家说说拜占庭将军具体含义以及它和区块链的关系。拜占庭将军是图灵奖得主Leslie Lamport在1982年提出的一个关于计算机容错方面的假想问题:
中世纪的拜占庭帝国拥有巨大的财富,拜占庭周围有十个邻邦。但拜占庭高墙耸立,固若金汤,没有一个单独的邻邦能够成功入侵。任何单个邻邦入侵都会失败。十个邻邦中,需有一半以上也就是6个国家同时进攻,才有可能攻破拜占庭。
然而,如果其中的一个或者几个邻邦本身答应好一起进攻,但实际过程出现背叛,那么入侵者可能都会被歼灭。于是每一方都小心行事,不敢轻易相信邻国。这就是拜占庭将军问题的雏形。
解决这个问题时,会受到下面几个限制:
1)这10个邻邦将军不能聚到一起开会商量。
2)这10个邻邦将军中可能有叛徒,叛徒会违反承诺或者擅自变更作战计划。
国家之间可以通过信使来协商是否进攻和进攻时间。信使传递的核心信息为:“我是X国将军,我提议x月x日xx时一起进攻拜占庭,是否同意?”这一机制又会引发四个问题:
3)信使可能会把信息弄丢、或者被杀害;
4)信息可能会被截获;
5)无法确认消息的发出者真的是该国将军;
6)叛变的将军可能会向另外9个将军发布9个不一样的消息;
7)10个将军对进攻时间的商议过程可能会浪费很多天时间。
由于以上7个问题的存在,将军们想要就进攻拜占庭的计划达成一致,看起来像是个不可能完成的任务。拜占庭将军问题是网络世界的模型化。比如在比特币的世界里,你可以把每个比特币交易账号看成一个将军,这些账号分布在世界各地,不能聚在一起、可能会有恶意账号;而账号之间的沟通也可能由于机器坏了、网断了、黑客攻击等受到破坏,并且账号之间关于支付与否、支付数额是多少的讨论也会浪费很多时间。
比特币通过创造了区块链技术完美的解决了这一问题。它是怎样解决的呢?最核心的是引入了矿工制度。矿工相当于拜占庭将军问题里的信使,区别是在拜占庭每个将军都能派出信使,这使得信使数量过多、且质量不可控。而比特币中,矿工数量很多,但是能够记账(相当于传递消息)的矿工只有一个,这一个矿工是通过算力竞赛选出来的。在竞赛中胜出的矿工才有权记录交易信息(处理区块),并把这条信息盖上时间戳、将其与之前形成的交易信息放到一起(形成区块链),然后告知所有的比特币节点。而因为所有的节点都收到了这条交易信息,如果某个“叛徒”节点想谎称“自己并没有收到一笔钱”或者“自己向xx打的钱数额更多"等,其他节点就很容易被识破他的谎言。至于如何确定信息的发布者真的是它说宣称的那样,比特币引入了公钥制度。发布者可以用自己的公钥给信息加密,就相当于给信息加入了数字签名。由于公钥是公开的,所有人都用公钥验证发布者是谁。交易的接收方收到信息后,用自己的私钥即可解密。矿工制度加上公钥加密,使得原本不可信的网络变得可信,因此,任何人都可以在这个可信的网络中,在某些事情上达成一致。因此区块链技术完美地解决了拜占庭将军问题。
币界网免责声明:
1.本网站所提供的所有信息仅供参考,不构成任何投资建议。
2.用户在使用本网站的信息时应自行判断和承担风险。
3.币界网不对用户因使用本网站信息而导致的任何损失负责。
4.用户在进行任何投资活动前应自行进行调查和研究。
5.币界网不对用户基于本网站信息做出的任何投资决策负责。
6.用户在本网站发布的任何内容均由其个人负责,与币界网无关。