1. 首页 > 产业新闻 > 节能环保

分布式网络的信任难题——拜占庭将军问题

拜占庭将军问题(Byzantine Generals Problem)是由莱斯利·兰波特(LeslieLamport)与另外两人在1982年提出的一个虚拟模型,并由此引申到计算领域,提出了分布式对等网络的通信容错问题。

1.问题描述

引用一个经典的例子,相距甚远的拜占庭将军分别率领一支军队要共同围困一座城市,将军间必须通过投票来达成一致行动(进攻或撤退)。

每位将军都将自己进攻”或撤退”的决定通过信使分别通知其他将军,然后每位将军根据所有的消息决定进攻还是撤退。

但是,当将军中出现叛徒”时,情况就变复杂了。叛徒不仅可以投票给错误的决策,还可能会选择性地发送投票,叛徒的存在会影响一致性的建立。

讲解在军中可能有叛徒传递错误消息的情况下,保障忠诚的将军行动一致,这就是拜占庭将军问题。

拜占庭将军问题的前提是假定消息传递的信道绝对可靠(即不存在两军问题),在这个前提下,拜占庭将军问题的实质就是一致性”和正确性”。

一致性”指所有忠诚将军的行为一致;正确性”指的是每个忠诚的将军都真

实的表达了自己的消息。

2.传统解决方法

在经典场景中,解决拜占庭将军问题有两种方法,口头协议和书面协议。采用口头协议,若叛徒数少于1/3,则拜占庭将军问题可解。

使用口头协议的传递消息时,每位将军除了给其他将军传递消息,还会将自己收到的消息分别转给其他将军,最后每位将军根据收到的所有消息选择与大多数将军的行为保持一致。使用口头协议时,不能溯源,知道有叛徒也不能确定谁是叛徒。

书面协议规定在发送消息时添加发送者的签名,伪造签名会被发现并且任何人可以验证签名的可靠性,这使得消息可以追本溯源。

采用书面协议,叛徒人数多于1/3时,拜占庭将军问题仍然有解。书面协议真正的实现需要考虑诸多问题,比如可信的签名体系等。

3.区块链解决方法

随着时代的发展和技术的完善,区块链站在巨人的肩膀上提出了拜占庭将军问题的解决方案–共识机制和非对称加密技术。

共识机制使得一段时间内只有一个节点发送消息,其他节点验证即可。由于区块链消息全网广播,故各个节点接收到的消息是一致的。(访问链接:有声阅读||分布式信仰的基础–共识机制,了解更多共识机制相关内容)

非对称加密技术保护消息内容, 同时让消息接收方确定发送方的身份。A发给B的消息通过B的公钥加密,B通过私钥解密。

若A想申明自己的身份,只需要将消息使用自己的私钥进行签名即可,B收到消息后就可以使用A的公钥验证消息的来源。

由此,一个不可信的分布式网络变成了一个可信的网络,所有的参与者可以在某件事达成一致。

区块链的拥趸认为区块链核心贡献是解决多点信息交互过程中的信任问题——“拜占庭将军问题”。本期的币众课堂第二讲,就给网介绍拜占庭将军问题。

拜占庭将军问题

实际上这个问题并不是起源于5世纪的拜占庭罗马帝国,而是在1982年,由LeslieLamport与另外两人提出来的。设定的场景是:由于帝国国土辽阔,帝国军队的将军们在地理上是分隔开来的,并且将军中存在叛徒,叛徒会误导将军决策,从而使得他们无法获胜,而让将军们基于正确的信息达成一致决议成为了一个难题。

在那原始的战争时代,将军与将军、将军与下属之间只能靠“出行靠走,通讯靠吼”的口头传输。在这种情况下,真伪很难辨别。科学家针对拜占庭问题进行研究最终得出结论:只有当叛徒总数不超过1/3时,形成“拜占庭容错系统”时,才能实现最终的一致行为。而在只有三个将军的前提下,其中一个是叛变者的话,那么此时无解。

讲解解决拜占庭将军问题

科学家们提出了口头信息方案和书面协议两个方案。但这两个方案都存在很明显的缺点。口头协议并不会告知消息的上一个来源是谁,也就是消息不可追根溯源,出现信息不一致也很难找到叛徒在哪。书面协议相比口头协议,所有的消息都是有记录的,解决了追根溯源的问题。但在现实中仍然可能面临各种问题,例如无法避免签名造假的问题。真正解决“拜占庭将军问题”的便是中本聪。他在系统中加入了发送信息的成本,即:一段时间内只有一个节点可以传播信息。引入了“工作量证明”和现代的加密技术。同时设计了时间戳,为每个将军在解好题的时间(出块时间)盖上时间印章。将一个不可信的分布式网络变成了一个可信的网络。

拜占庭将军问题需要解决的是谁来发起信息,讲解实现信息的统一同步的问题。而区块链上的共识机制主要解决由谁来构造区块,以及讲解维护区块链统一的问题。中本聪对拜占庭将军问题的解决方案,实际上是融合了各种高新技术,为解决任何核心问题是分布式网络上缺乏信任的领域提供了一个新思路。

本文采摘于网络,不代表本站立场,转载联系作者并注明出处:http://www.fjxmta.com/chanye/jieneng/63778.html

联系我们

在线咨询:点击这里给我发消息

微信号:wx123456