由区块链引发的密码技术讨论(番外篇)共识

本故事纯属虚构,如有雷同,纯属巧合。

公元2181年,人类已经掌握可控核聚变,可以栖息在太阳系柯伊伯带以内的大部分区域。根据联合国50年前太阳系域分配的划定,Z国分配到木星的第二颗卫星欧罗巴及其周围的星际空间,欧罗巴是一个表面被冰层覆盖,底层是一片海洋的温和世界。Z国通过自身高效率的开发运作,已经将一部分冰层分解产生了氧气笼罩在星球的周围,这里与地球不一样的是寒冷及较强的木星辐射,所以Z国人民走出室外,还是需要穿上由气凝胶制造而成的抗寒抗辐射服。随着政府的正确领导,Z国已经成为了太阳系区域最强大的国家,其GDP总量占到整个太阳系的百分之五十以上。

此时,由于人类的工业、军事已经向太阳系其他岩石星球转移,地球环境优美,绿荫环绕,鸟语花香,人们享受着幸福的生活,一片祥和的慢节奏,正如古诗所描述:人生代代无穷已,江月年年只相似。地球,成为了太阳系中的佛家所云的极乐净土。

地球以外的太阳系,由于过度的开采,造成环境污染,频繁的核聚变动力,造成辐射污染,捕获小行星改变轨道,造成引力结构的不稳定,总之一片狼藉,人类已经把自己的快乐建立在外界的痛苦之上。

M国占据着火星及火星与木星之间的小行星带,它利用小行星带的优势,获取小行星上的很多重元素,制造了很多战争武器,是太阳系第二强大的国家,它与其同盟Y国、F国、J国、D国、R国均有些不甘心Z国的强大,一直对Z国虎视眈眈。

10月1日,地球温带地区秋高气爽,阳光明媚,人们秋收庄稼,安居乐业。另一边M国与它的同盟国发动对Z国的侵略围攻,战争的主战场就在欧罗巴星球周围,六国侵略者军队全部停靠在小行星带上,飞船无数,每艘船上都装载有核弹,也就是我们通常所说的氢弹,弹头在太阳光的折射下闪闪发亮,犹如天空中无数颗闪亮的星。Z国政府及全体人民面对眼前“黑云压城城欲摧,甲光向日金鳞开”,不畏强权,整装待发,准备着为正义而战,准备着为保卫家园而战,此时剑拔弩张,战争一触继发。

以侵略者的军事实力,必须至少四个国家一起同时发射核导弹才能打败摧毁Z国,不然Z国剩余的核武器力量可以确保摧毁六国。这个就是确保二次核打击,早在冷战时期就存在的一种威慑战略,用粗俗地讲就是:你要么一次性弄死我,不然我只要有一口气在,我就能一口气弄死你。显然,Z国具备这样的能力。六国军队此时并没有越过星际空间国界限,Z国不敢冒然进攻,其实谁先开火谁就会成为历史的罪人。

M国作为战争的主要发动者,它与其他五国建立了军事保密通讯网络,在星际空间上由于一些不可抗拒的因素,通讯可能会造成延时,为了确保六国之间攻击时间的一致性,这个通讯网络采用了分布式架构,以便准确在某一时刻达成共识。地球时间15点00分,M国通过军事保密通讯网络向其他五国发布了消息:“16点00分攻击。”消息在分布式通讯网络中在六国传播,等待确认。这个时候,全世界热爱和平的普通人类周围弥漫着一片死寂,大家开始准备着接收命运的安排,这可能是一次生灵涂汰,或许人类文明就此结束。

Z国著名的将军蔡建华沉默思索着,冷峻脸庞上深邃的眼睛认真地看着作战指挥立方图,顿时,他左眉头一动,立刻命令通讯传媒机构在人类公共信道上重复播放一首歌曲,随着温柔舒缓的旋律响起,动人歌词缓缓而来:

“在军营之前,在大门之前,

有着一盏灯,至今依然点着,

我们要在那里再见一面,

就站在那座灯下,

正如从前,莉莉玛莲,

正如从前,莉莉玛莲……

不论在这个安静的房间里,

或在地球上的任何一片土地,

我都渴望梦见,你那令人迷恋的双唇,

你在夜雾之中旋转飞舞,

我伫立在那座灯下……”

这是两百多年前的那场战争中最著名的歌曲《莉莉玛莲》。在这漫长而又短暂的时间里,世界人们和七个国家的将军士兵很多都听到了这首歌曲,这可能也是在舒缓战争的压力和孤独。

地球时间16点00分,核导弹没有发射,六国侵略者军队一个也没有发射,人们困惑,内心紧绷的弦也松了。16点05分,D国与R国军队一起撤离,留下了一句“我们想起两百多年前的错误”。40分钟后,剩余四国观测到Z国超级核弹飞船已经抵达木星背靠太阳的一面,并瞄准木星赤道上一点准备点燃引爆木星,想利用动量守恒定律把木星慢慢推向太阳系内侧轨道。面对这种鱼死网破的威慑,四国相继离开,战争没有发生。

好了,故事到这里就讲完,不谈论“正义与邪恶”、“战争与和平”这些永恒的复杂话题,或许,人类最大的幸运,就是敢于承认自己的错误。

 


最后给大家留下一个思考题:

故事中,为什么Z国将军通过播放一首歌曲就可以避免战争的发生?为什么D国与R国首先离开?其他四国为什么没有发射核武器?是不是分布式网络发生了什么?

欲知答案请看下面分解。

 

六国之间为确保攻击时间的一致性,通讯网络采用了分布式架构。在一个分布式网络中,没有中心节点的,每个节点要达成一致,避免存在恶意的叛徒,就需要向其他节点询问,当询问完所有节点,超过半数的节点的意识一样,这个节点就要跟随。这个就是区块链技术的基本原理,也就是拜占庭将军问题,1982年由兰伯特提出的点对点通信中的基本问题。分布式网络简单可以理解为下图:

一、达成共识情况

侵略者M国、Y国、F国、J国、D国、R国在战争前夕由M国发布的“16点00分攻击。”需要在他们的分布式网络达成共识,就需要下面的过程。

1、当M国发出A(进攻)命令后,Y国分别向F国、J国、D国、R国询问是不是受到A命令;

2、F国、J国、D国、R国分别答复是收到了A命令,见图中蓝色部分;

3、Y国总共收到了6个节点中5个A命令,所有Y国执行A命令;

4、F国、J国、D国、R国当接收到M国发出A命令后,与Y国一样进行全网询问,图中每个节点都使用不同颜色表示,最终均执行A命令;

5、网络中节点均执行A命令,达成共识。

二、不能达成共识情况

问题来了,当D国和R国回忆起以前的错误,它们不接受攻击命令后,那就可以成为分布式网络中的捣乱者,我们假设X为攻击相反(撤退)的命令或者没有收到M国发出的命令,6个节点共识的流程变成下图:

1、当M国发出A(进攻)命令后,Y国分别向F国、J国、D国、R国询问是不是受到A命令;

2、F国、J国答复是收到了A命令,D国、R国答复是收到了X命令,Y国收到命令的集合是(A,A,X,X),它晕了,2比2,它不知道到底是进攻还是撤退,虽然M国是A命令,但是M国会不会是捣乱者呢?会不会是忽悠呢?所以Y国无法答复M国,共识失败;

3、F国与Y国同样,收到命令的集合是(A,A,X,X),同样2比2,共识失败;

4、D国询问Y国、F国、J国、R国,收到命令的集合是(A,A,A,X),但他本来就是捣乱者,所以D国只会答复M国说它无法答复,共识失败;

5、R国与D国情况一样,共识失败;

6、M国虽然是本次的主导,但是Y国、F国、J国、D国、R国全部无法共识,主导失败,如果进攻,只能自己一国去拼。

三、规则

在一个分布式网络中,尽管有捣乱者,捣乱者可以做任意事情不受限制,比如不响应、发送相反信息、对不同节点发送不同决定、不同错误节点联合起来干坏事等。但是,只要大多数人是好人,就完全有可能去中心化地实现共识。

至于大多数是指多少?兰伯特大神给出了公式:系统全部节点数大于3倍捣乱节点数

上述例子中,系统全部节点数为6,捣乱节点数为2,即系统全部节点数等于3倍捣乱节点数,所以他们共识失败了。

假设一个E国加入侵略战争,它是正常节点,那么D国和R国捣乱,系统全部节点数为7,捣乱节点数为2,即系统全部节点数大于3倍捣乱节点数,共识就能够成功,下面画图证明一下:

1、Y国询问后收到命令的集合是(A,A,X,X,A),3比1,Y国执行进攻,共识成功;

2、F国询问后收到命令的集合是(A,A,X,X,A),3比1,F国执行进攻,共识成功;

3、J国询问后收到命令的集合是(A,A,X,X,A),3比1,J国执行进攻,共识成功;

4、D国询问后收到命令的集合是(A,A,A,X,A),本来就是捣乱者,所以D国只会答复M国说它无法答复,共识失败;

5、R国询问后收到命令的集合是(A,A,A,X,A),本来就是捣乱者,所以R国只会答复M国说它无法答复,共识失败;

6、E国询问后收到命令的集合是(A,A,A,X,X),3比1,E国执行进攻,共识成功;

7、M国得到答复集合(A,A,A,X,X,A),4比2,M国发起的命令被共识,同步到网络中所有节点。

拜占庭将军问题是各种分布式系统共识的基础,也是区块链共识的一个基础。了解了这个问题,有利于我们以后理解其它很多的共识算法。比特币中加入了一个工作量证明,需要花费很大的算力才能称为M国,而算力需要金钱换取,所以保证了M国基本上不会是捣乱者,这是目前拜占庭将军问题的优秀解决方案,但也造成巨大的资源浪费。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值