三分钟教您看懂中本聪是如何解决拜占庭将军问题的
拜占庭将军问题很多人可能听过,但不知道是什么意思,今天金猫kinmall就让你三分钟看懂区块链智慧是如何解决拜占庭将军问题的。
故事大概是这么说的:
拜占庭帝国即中世纪的土耳其,拥有巨大的财富,周围10个邻邦垂诞已久,但拜占庭高墙耸立,固若金汤,没有一个单独的邻邦能够成功入侵。任何单个邻邦入侵的都会失败,同时也有可能自身被其他9个邻邦入侵。拜占庭帝国防御能力如此之强,至少要有十个邻邦中的一半以上同时进攻,才有可能攻破。
然而,如果其中的一个或者几个邻邦本身答应好一起进攻,但实际过程出现背叛,那么入侵者可能都会被歼灭。
于是每一方都小心行事,不敢轻易相信邻国。这就是拜占庭将军问题。
其实,在拜占庭问题里,各邻国最重要的事情是:所有国家如何能过达成共识去攻打拜占庭帝国。
针对这种情况,有科学家们提出了两种方案,即口头协议和书面协议。
解决方案一:口头协议
各个国家派信兵向其他所有国家传达口信,每个国家再将自己收到的口信传达给其他国家以供决策,最终多数投票即为共识。最终达成以下三点:
1、每个被发送的消息都能够被正确投递;
2、信息接受者知道消息是谁发的;
3、沉默(不发消息 ) 可以被检测;
但这个方案存在的缺陷也很明显:消息无法溯源,无法确定消息的上一来源是谁,如有叛徒,则难以找到叛徒所在。
解决方案二:书面协议
如果不形成共识会导致失败
各个国家派信兵向其他国家发送书面信息,并附其签章,其他国家收到书信后附上自己的意见与签章再发给剩余国家,最终得到共识。实现了以下三点:
1、签章有记录,解决溯源问题
2、签章难以伪造,篡改会被发现
3、任何国家都可验证其他国家的签章真伪
但这一解决方案依然存在缺陷:签章记录的保存人不一定可信,真正可信的签名体系很难实现。
以上两个方案,在任意时间,系统中可能会存在多个提案,即每个国家都可以传出自己的意见 。 这就是一个由互不信任的各个邻邦国家所构成的分布式网络,要获得最大的利益,又必须一起努力才能完成,如何达成一致的共识,变成了一个难题。
虽然,拜占庭将军问题是由莱斯利·兰伯特提出的,但真正解决这一难题的是中本聪。
解决方案三:区块链技术,信息同步,达成共识
中本聪在比特币白皮书中,通过“比特币协议”给出了终极解决方案。
1、引入“工作量证明”机制(PoW),只有第一个完成规定计算工作的国家才能传播信息,从而保证一段时间内只有一个提案。
2、引入非对称加密算法,为信息传递提供签名技术支持,以保证消息传递的私密性,且不可抵赖、不可篡改。
于是10个国家组成了这样一个分布式网络:
1、每个国家都有一份实时与其他国家同步的消息账本。
2、账本里有每个国家的签名都是可以验证身份的。如果有哪些消息不一致,可以知道消息不一致的是哪些国家。
3、尽管有消息不一致的,只要超过半数同意进攻,少数服从多数,共识达成。
由此,在一个分布式的系统中,尽管有坏人,坏人可以做任意事情(不受protocol限制),比如不响应、发送错误信息、对不同节点发送不同决定、不同错误节点联合起来干坏事等。但是,只要大多数人是好人,就完全有可能去中心化地实现共识。
本文来自博客园,作者:aspirant,转载请注明原文链接:https://www.cnblogs.com/aspirant/p/13321203.html