什么是拜占庭将军问题
拜占庭将军问题(Byzantine failures),是由莱斯利·兰伯特提出的点对点通信中的基本问题。含义是在存在消息丢失的不可靠信道上试图通过消息传递的方式达到一致性是不可能的。因此对一致性的研究一般假设信道是可靠的,或不存在本问题。
起源
拜占庭位于如今的土耳其的伊斯坦布尔,是东罗马帝国的首都。由于当时拜占庭罗马帝国国土辽阔,为了防御目的,因此每个军队都分隔很远,将军与将军之间只能靠信差传消息。 在战争的时候,拜占庭军队内所有将军和副官必须达成一致的共识,决定是否有赢的机会才去攻打敌人的阵营。但是,在军队内有可能存有叛徒和敌军的间谍,左右将军们的决定又扰乱整体军队的秩序。在进行共识时,结果并不代表大多数人的意见。这时候,在已知有成员谋反的情况下,其余忠诚的将军在不受叛徒的影响下如何达成一致的协议,拜占庭问题就此形成。
问题阐述
拜占庭将军问题是一个协议问题,拜占庭帝国军队的将军们必须全体一致的决定是否攻击某一支敌军。问题是这些将军在地理上是分隔开来的,并且将军中存在叛徒。叛徒可以任意行动以达到以下目标:欺骗某些将军采取进攻行动;促成一个不是所有将军都同意的决定,如当将军们不希望进攻时促成进攻行动;或者迷惑某些将军,使他们无法做出决定。如果叛徒达到了这些目的之一,则任何攻击行动的结果都是注定要失败的,只有完全达成一致的努力才能获得胜利。
拜占庭假设是对现实世界的模型化,由于硬件错误、网络拥塞或断开以及遭到恶意攻击,计算机和网络可能出现不可预料的行为。拜占庭容错协议必须处理这些失效,并且这些协议还要满足所要解决的问题要求的规范。这些算法通常以其弹性t作为特征,t表示算法可以应付的错误进程数。
很多经典算法问题只有在n ≥ 3t+1时才有解,如拜占庭将军问题,其中n是系统中进程的总数。
问题分析
在计算机技术及网络还未完全发展到2000年以后这么成熟时,任何人想要尝试解决拜占庭将军问题,都失败了。
在不使用当今的计算机及网络通信技术,那么点对点的通信一般都是通过“口头传递信息”或“书面传递信息”的方式来进行。
口头传递信息最大的问题就是无法验证消息的真伪,容易被偷听,也无法追溯消息的源头,是最不靠谱的通信方式,就是在今天,我们在工作时,如果为了避免扯皮,一般都建议用书面方式来沟通,至少书面的沟通,还有个记录,可以防止抵赖。
书面传递信息它确实也解决了口头传递信息可能存在的“空口无凭”的问题,但书面传递在不使用计算机或网络通信技术的前提下,它存在延时的问题,另外一个仍然是消息的真伪性仍然无法验证,有人或许会提出,签字盖章,但是看过古装剧的人,恐怕都看过,书信仍然是很容易伪造的,模仿字体,私刻签章。
那么拜占庭将军问题是不是就真的无解了?
当然不是!
如何解决拜占庭将军问题
莱斯利·兰伯特提出了“拜占庭将军问题”,但真正完美解决这以难题的是——中本聪。
终极解决方案:区块链技术
互联网的存在,首先降低了信息的流通成本。每个将军配一台电脑,就解决了”书面协议“中骑马通讯造成时间延迟的问题。
如果10个将军中的几个同时发起消息,势必会造成系统的混乱,造成各说各的攻击时间方案,行动难以一致。
谁都可以发起进攻的信息,但由谁来发出呢?中本聪巧妙地在个系统加入了发送信息的成本,即:一段时间内只有一个节点可以传播信息。
它加入的成本就是”工作量“——节点必须完成一个计算工作才能向各城邦传播消息,当然,谁第一个完成工作,谁才能传播消息。
当某个节点发出统一进攻的消息后,各个节点收到发起者的消息必须签名盖章,确认各自的身份。中本聪在这里引用现代加密技术为这个信息签名。
这种加密技术——非对称加密完全可以解决古代难以解决的签名问题:
• 消息传送的私密性
• 能够确认身份
• 签名不可伪造、篡改
非对称加密算法的加密和解密使用不同的两个密钥.这两个密钥就是我们经常听到的"公开密钥"(公钥)和"私有密钥"(私钥).
公钥和私钥一般成对出现, 如果消息使用公钥加密,那么需要该公钥对应的私钥才能解密; 同样,如果消息使用私钥加密,那么需要该私钥对应的公钥才能解密.
非对称加密的作用是:保护消息内容, 并且让消息接收方确定发送方的身份.
比如,将军A想给将军B发送消息,为防止消息泄露,将军A只需要使用B的公钥对信息加密,而B的公钥是公开的,B只需要用只有他自己只的私钥解密即可。
将军B想要在信件上声明自己的身份,他可以自己写一段”签名文本“,并用私钥签名,并广播出去,所有人可以根据B的公钥来验证该签名,确定的B的身份。
由此,一个不可信的分布式网络变成了一个可信的网络,所有的参与者可以在某件事在达成一致。
为什么是比特币
这里是比特币为何如此特别的关键:它代表了一个对于一个困难的算法上的难题的解决方案,这一解决方案在一系列的历史事件发生之前是不可能的。
这些事件有:
1. 互联网的创造
2. 公钥加密算法的发明
3. 点对点Bitorrent(BT)协议的发明。BT协议最开始是开发来用于在网络上的相对小的用户子集之间共享许多文件的,但比特币用它来在所有用户之间共享单个文件。
4. 人们意识到,在系统中添加一个简单的时间延迟,同时使用公钥加密算法以验证每笔交易,可以解决这个问题。
如果说一些最棒的想法在事后看来是很简单的,那么上述的第四点就完全符合条件,尽管整个项目是站在了巨人的肩膀上的。
最后,这一对于拜占庭将军问题的解决方案,可以推广到任何核心问题是在分布式网络上缺乏信任的领域。如我们已经提到的,人们正在为互联网建设一个分布式的域名系统,以及为政治选举建设分布式的投票系统(还没有网站)。
如果人们认为单纯的文件分享搅乱了这个世界,那么比特币解决方案,才刚刚打开洪水的闸门。
参考博文:
浅谈区块链(二十):拜占庭将军问题
中本聪与拜占庭将军问题
比特币与拜占庭将军问题