浅谈“区块链”(二)

理解了区块链的去中心化,就将面临信息传递过程中的信任问题,也就是要解决“听谁的”问题。如何保证信息传递过程中信息不会遗失,不会被篡改呢?下面我们将开始介绍区块链中的两个基本信任问题。

一、两军问题

白军驻扎在沟渠里,蓝军和红军分别驻扎在沟渠两边。白军比蓝军和红军中任何一支军队都更为强大,但是蓝军和红军若能同时合力进攻则能够打败白军。蓝军和红军不能够越过沟渠远程地沟通,只能派遣通信兵穿过沟渠去通知对方协商进攻时间。

一天,蓝军派出通信兵向红军发出信息:我方三天后的下午一点半发起进攻,请红军方面一起同时进攻。

红军收到这样的消息后表示同意,于是又派出通信兵给蓝军发出信息:信息收到,我方同意。

蓝军收到信息后,为了让红方知道自己已经收到信息并放心进攻,于是又派出通信兵给红军发出信息:信息收到。

红军收到信息后,为了让蓝方知道自己已经收到信息并放心进攻,于是又派出通信兵给红军发出信息:信息收到。

……

为了让对方完全放心并派兵进攻,取得行动上的一致,总需要给对方一个回执,因此,这样的信息传递理论上会无限循环下去。

除此之外,由于通信兵可能在经过沟渠时被白军俘获,所以,信息还有被篡改的风险。

由此可见,经典情形下,两军问题是不可解的,即红军和蓝军是无法通过信息沟通达成行动上的一致。

在现实生活中,两军问题可以被抽象为,由于信息通道的不可靠,可能会造成信息的遗失、监听和篡改,从而造成两方无法达成共识。

虽然两军问题经典情形下不可解,但是这一问题至关重要,是现代通信系统中必须解决的问题。

那么,区块链技术是怎样解决两军问题的呢?

区块链技术使用非对称加密算法对节点间的消息传递提供签名技术支持。每个节点(蓝方或红方)都有属于自己的密匙(公匙和私匙),唯一标识节点身份。使用非对称加密算法传递消息,能够保证消息传递的私密性,而且消息签名不可抵赖、不可篡改。

具体来讲,使用公匙加密的数据,使用公匙对应的私匙解密;使用私匙进行签名的消息,只需要使用私匙对应的公匙验证签名即可。比如,蓝军想要给红军发送消息,那么只需要使用红军的公匙加密消息,红军收到消息后使用自己的私匙解密消息即可。而如果蓝军想申明自己的身份,那么只需要将消息使用自己的私匙进行签名即可,红军收到消息后就可以使用蓝军的公匙验证消息的来源。

这样就在极大程度上杜绝了信息被篡改、被监听的可能性,但仍然无法完全杜绝。

二、拜占庭将军问题

在拜占庭时代有一个非常富有强大的城邦,它的周围被10个小城邦所包围环绕,小城邦们觊觎大城邦的财富,所以意图侵略它。但大城邦很强大,必须至少一半以上的小城邦联合一起才能成功。

在拜占庭将军问题里,最重要的事情是如何让所有城邦将军达成一致,如果中间出现了被拜占庭帝国收买的将军导致只有半数以下的城邦将军攻打拜占庭,那么基本上这些国家将会灭亡,所以建立信任是攻打拜占庭帝国最关键的一环!

从拜占庭将军问题我们可以发现两个主要的问题:

1、无法保证每个城邦将军都是诚实的。

2、无法保证内部信息的统一,每个城邦将军收到的信息可能有所不同。

再来看区块链,我们知道区块链是一种去中心化的分布式系统,这个系统存在了多个节点,各个节点协同工作。

那么这样区块链和拜占庭将军问题就联系起来了:每个网络节点相当于一个城邦,这些节点最终要共同维护工作。拜占庭将军问题的难点在于:在任意时间系统中可能会存在多个提案,这样就很难在一个时刻对结果进行一致性确认。

而区块链技术的共识算法解决了这个难题:

1、限制一段时间内提案的个数,只有拥有对应权限的节点才可以发起提案。

2、对应一次提案的结果不需要全部的节点马上跟进,只需要在节点能搜寻到的全网络中的所有链条中,选取最长的链条进行后续拓展就可以。这样就能够减少节点间垃圾消息和假消息的传播。

同时,区块链技术使用非对称加密算法,对节点间的消息传递提供签名技术支持,每个节点都有属于自己的秘钥(公钥私钥),唯一标识节点身份。使用非对称加密算法传递消息,能够保证消息传递的私密性,而且消息签名不可抵赖,不可篡改。由此,一个不可信的分布式网络变成了一个可信的网络,所有的参与者可以在某件事在达成一致。

了解了区块链中两个基本信任的问题,下篇我们将开始介绍我们普通人眼中的区块链。谢谢大家!


分享到:


相關文章: