两军问题和拜占庭将军问题的区块链解读(一)
转自:https://www.jianshu.com/p/c543794cd731
说起区块链,有两个模型经常被提起,那就是两军问题和拜占庭将军问题。对于这两个模型,之前查看了一些资料,但个人理解得仍然不是很透。尽管如此,本篇尽量用通俗的语言解释一下这两个模型,不当之处请指正。
首先要明确,这两个模型仅仅是用讲故事的方式提出了问题,但是并没有提出解决问题的方法。让我们先来了解一下这两个问题的具体内容是什么。
本篇先说两军问题:
白军驻扎在沟渠里,蓝军和红军分别驻扎在沟渠两边。白军比蓝军和红军中任何一支军队都更为强大,但是蓝军和红军若能同时合力进攻则能够打败白军。蓝军和红军不能够越过沟渠远程地沟通,只能派遣通信兵穿过沟渠去通知对方协商进攻时间。
一天,蓝军派出通信兵向红军发出信息:我方三天后的下午一点半发起进攻,请红军方面一起同时进攻。
红军收到这样的消息后表示同意,于是又派出通信兵给蓝军发出信息:信息收到,我方同意。
蓝军收到信息后,为了让红方知道自己已经收到信息并放心进攻,于是又派出通信兵给红军发出信息:信息收到。
红军收到信息后,为了让蓝方知道自己已经收到信息并放心进攻,于是又派出通信兵给红军发出信息:信息收到。
……
为了让对方完全放心并派兵进攻,取得行动上的一致,总需要给对方一个回执,因此,这样的信息传递理论上会无限循环下去。
除此之外,由于通信兵可能在经过沟渠时被白军俘获,所以,信息还有被篡改的风险。
由此可见,经典情形下,两军问题是不可解的,即红军和蓝军是无法通过信息沟通达成行动上的一致。
在现实生活中,两军问题可以被抽象为,由于信道的不可靠,可能会造成信息的遗失、监听和篡改,从而造成两方无法达成共识。
虽然两军问题经典情形下不可解,但是这一问题至关重要,是现代通信系统中必须解决的问题。基于通信成本和技术成熟度的考虑,目前TCP协议被作为“解决”两军问题的主流方案。
TCP协议“解决”两军问题的原理如下:
TCP协议中,蓝军先向红军发出一个随机数x,红军收到x了以后,发给蓝军另一个随机数y以及x+1作为答复,这样蓝军就知道红军已经收到了,因为要破解随机数x可能性并不大;然后蓝军再发回y+1给红军,这样红军就知道蓝军已经收到了。这样,蓝军和红军之间就建立一个可靠的连接,彼此相信对方已经收到并确认了信息。
而事实上,红军并不会知道蓝军是否收到了y+1;并且,由于信道的不可靠性,x或者y都是可能被截获的,这些问题说明了即使是“三次握手”(可以理解为三次单方通信),也并不能够彻底解决两军问题,只是在现实成本可控的条件下,我们把TCP协议当作了两军问题的现实可解方法。
那么,区块链技术是怎样解决两军问题的呢?
区块链技术使用非对称加密算法对节点间的消息传递提供签名技术支持。每个节点(蓝方或红方)都有属于自己的密匙(公匙和私匙),唯一标识节点身份。使用非对称加密算法传递消息,能够保证消息传递的私密性,而且消息签名不可抵赖、不可篡改。
具体来讲,使用公匙加密的数据,使用公匙对应的私匙解密;使用私匙进行签名的消息,只需要使用私匙对应的公匙验证签名即可。比如,蓝军想要给红军发送消息,那么只需要使用红军的公匙加密消息,红军收到消息后使用自己的私匙解密消息即可。而如果蓝军想申明自己的身份,那么只需要将消息使用自己的私匙进行签名即可,红军收到消息后就可以使用蓝军的公匙验证消息的来源。
这样就在极大程度上杜绝了信息被篡改、被监听的可能性,但仍然无法完全杜绝。
这是因为,虽然破解非对称加密算法非常困难,但绝非完全没有可能。一旦量子计算机从实验阶段走上实用阶段,非对称加密算法的破解就会成为一件相对简单的事情。
因此,如何解决两军问题,是一个需要不断研究的课题。那么,有没有一个终极办法可以完全解决两军问题呢?
从目前的科研成果来看,量子通讯协议很有可能成为两军问题的终极解决方案。
量子通讯协议的基础是量子纠缠理论。这个理论由爱因斯坦提出,后被其他科学家证实。这个理论认为,处于量子纠缠态的两个粒子,无论相隔多远都能够彼此同步。
因此我们可以相信,至少理论上两军问题是可解的,即存在一种方法,即使利用了不可靠的信道,也能保证信息传递的可靠性。
【两军问题和拜占庭将军问题的区块链解读(一)】以上为两军问题和拜占庭将军问题的区块链解读的第一部分,下篇会单独说一下拜占庭将军问题,希望对你有所帮助。
推荐阅读
- 急于表达——往往欲速则不达
- parallels|parallels desktop 解决网络初始化失败问题
- 第三节|第三节 快乐和幸福(12)
- 20170612时间和注意力开销记录
- 2.6|2.6 Photoshop操作步骤的撤消和重做 [Ps教程]
- 对称加密和非对称加密的区别
- 眼光要放高远
- jhipster|jhipster 升级无效问题
- 樱花雨
- 前任