区块链技术用解决拜占庭将军问题_AITD小课堂第十四课:拜占庭将军问题

之前的课程为大家介绍过,分布式账本可以说是区块链的框架,每个人都可以自由地参与进来,共同处理区块链中的数据。而基于这一点,区块链实际上就是一个大的分布式计算网络。它并没有一个类似中央指挥室的东西来发号施令,整个网络是完全分散的,要依靠不同的节点间交换信息,达成共识后才能统一行动,整个过程就像无领导的小组讨论一样。

对此,就会有人提出疑问了:万一有节点发送了错误的信息,从而干扰了网络正常运行或者大家产生了分歧该怎么办呢?

于是,学者们便建立了一个模型,统一将这类问题,称为拜占庭将军问题。拜占庭将军问题是Leslie Lamport(2013年的图灵将得主)用来为描述分布式系统一致性问题(Distributed Consensus)在论文中抽象出来一个著名的例子。

1baa42b9c2f212b1d6ddcb46d06716e9.png

关于拜占庭将军问题是这样的。拜占庭帝国想要攻打一个国家,所以派出了多支军队进行围攻,但敌国军事实力也很强。将军们必须在同一时间一起发动进攻,才能获得胜利。现在的问题就在于,每个将军都分散在敌国四周,只能依靠通信兵骑马相互通信,才能确定进攻的时间。

可是,一方面通讯兵可能会在送信的过程中被地方击杀。另一方面,根据不可靠消息,这些将军中有叛徒的存在,可能会像其他将军传达虚假指令,而影响他人的判断。在拜占庭将军问题中并不去考虑通信兵是否会被截获或无法传达信息等问题,即消息传递的信道绝无问题。Lamport已经证明了在消息可能丢失的不可靠信道上试图通过消息传递的方式达到一致性是不可能的。所以,在研究拜占庭将军问题的时候,已经假定了信道是没有问题的.

单从上面的说明可能无法理解这个问题的复杂性,我们来简单分析一下:

先看在没有叛徒情况下,假如一个将军A提一个进攻提议(如:明日下午1点进攻,你愿意加入吗?)由通信兵通信分别告诉其他的将军,如果幸运中的幸运,他收到了其他6位将军以上的同意,发起进攻。如果不幸,其他的将军也在此时发出不同的进攻提议(如:明日下午2点、3点进攻,你愿意加入吗?),由于时间上的差异,不同的将军收到(并认可)的进攻提议可能是不一样的,这是可能出现A提议有3个支持者,B提议有4个支持者,C提议有2个支持者等等。

再加一点复杂性,在有叛徒情况下,一个叛徒会向不同的将军发出不同的进攻提议(通知A明日下午1点进攻, 通知B明日下午2点进攻等等),一个叛徒也会可能同意多个进攻提议(即同意下午1点进攻又同意下午2点进攻)。

如果整个分布式网络相当于拜占庭帝国,每个节点就相当于里面的将军。那么在这种状态下,该怎么做才能保证网络中的全部节点对于某个事情达成一致呢?这就是拜占庭将军问题。

36840dd9e3ba6f72a29801e8be6987de.png

总的来说,拜占庭将军问题是分布式网络必须解决的问题。如同刚才描述的,不仅各个节点之间的通讯,可能由于网络故障导致延后或者中断,更可能存在恶意节点故意发送错误的信息干扰网络的运行。

而叛徒发送前后不一致的进攻提议,被称为“拜占庭错误”,而能够处理拜占庭错误的这种容错性称为“拜占庭容错”「Byzantine fault tolerance」,简称为BFT。简单来说就是信息的伪造或者错误观念不重要,只要诚实的将军数量大于总数的三分之二,即使有少部分不诚实的将军存在,整个系统也可以达成一致。

于是,大家就以此为基础设计了很多解决方案。区块链四大核心技术之一的共识机制就是为了解决这个问题而诞生的一个方案。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值