中本聪是如何解决拜占庭将军问题的?

如何在一个不受信任的网络上建立信任关系?这是困扰计算机科学家们数十年的难题。最终因为比特币的出现,得以解决。当中,

拜占庭将军问题,算是区块链中的经典,是解决这一难题的核心内容。

中本聪是如何解决拜占庭将军问题的?

拜占庭将军问题(Byzantine failures),是由莱斯利·兰伯特(2013年的图灵讲得主)在1982年提出的,用来为描述分布式系统一致性问题(Distributed Consensus)在论文中抽象出来一个著名的例子,是点对点通信中存在的基本问题。

故事大概是这么说的:

拜占庭帝国即中世纪的土耳其,拥有巨大的财富,周围10个邻邦垂诞已久,但拜占庭高墙耸立,固若金汤,没有一个单独的邻邦能够成功入侵。任何单个邻邦入侵的都会失败,同时也有可能自身被其他9个邻邦入侵。拜占庭帝国防御能力如此之强,至少要有十个邻邦中的6个同时进攻,才有可能攻破。

然而,如果其中的一个或者几个邻邦本身答应好一起进攻,但实际过程出现背叛,那么入侵者可能都会被歼灭。

于是每一方都小心行事,不敢轻易相信邻国。这就是拜占庭将军问题。

其实,在拜占庭问题里,各邻国最重要的事情是:所有国家如何能过达成共识去攻打拜占庭帝国

针对这种情况,有科学家们提出了两种方案,即口头协议和书面协议。

解决方案一:口头协议

中本聪是如何解决拜占庭将军问题的?

口头协议

各个国家派信兵向其他所有国家传达口信 , 每个国家再将自己收到的口信传达给其他国家以供决策,最终多数投票即为共识。最终达成以下三点:

1、每个被发送的消息都能够被正确投递;

2、信息接受者知道消息是谁发的;

3、沉默(不发消息 ) 可以被检测;

但这个方案存在的缺陷也很明显:消息无法溯源,无法确定消息的上一来源是谁,如有叛徒,则难以找到叛徒所在。

解决方案二:书面协议

中本聪是如何解决拜占庭将军问题的?

不形成共识会导致失败

各个国家派信兵向其他国家发送书面信息,并附其签章,其他国家收到书信后附上自己的意见与签章再发给剩余国家,最终得到共识。实现了以下三点:

1、签章有记录,解决溯源问题

2、签章难以伪造,篡改会被发现

3、任何国家都可验证其他国家的签章真伪

但这一解决方案依然存在缺陷:签章记录的保存人不一定可信,真正可信的签名体系很难实现。

以上两个方案,在任意时间,系统中可能会存在多个提案,即每个国家都可以传出自己的意见 。 这样一来 , 很难在一个时刻对结果进行一致性确认,协商一致需要大量试讲和资源的投入

虽然,拜占庭将军问题是由莱斯利·兰伯特提出的,但真正解决这一难题的是中本聪。

中本聪是如何解决拜占庭将军问题的?

信息同步,便于达成共识

中本聪在比特币白皮书中,通过“比特币协议”给出了终极解决方案。

1、引入“工作量证明”机制(PoW),只有第一个完成规定计算工作的国家才能传播信息,从而保证一段时间内只有一个提案。

2、引入非对称加密算法,为信息传递提供签名技术支持,以保证消息传递的私密性,且不可抵赖、不可篡改。

于是10个国家组成了这样一个分布式网络:

1、每个国家都有一份实时与其他国家同步的消息账本。

2、账本里有每个国家的签名都是可以验证身份的。如果有哪些消息不一致,可以知道消息不一致的是哪些国家。

3、尽管有消息不一致的,只要超过半数同意进攻,少数服从多数,共识达成。

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

中本聪是如何解决拜占庭将军问题的?

到这里应该基本说清楚了,基于互联网络的区块链技术,它克服了口头协议与书面协议的各种缺点,使用消息加密技术、以及公平的工作量证明机制,创建了一组所有国家都认可的协议。

比特币采用的工作量证明机制(PoW),的出现,找到了目前拜占庭将军问题的最优解决方案。但PoW机制需要通过计算方式获取发消息的权利,会引发CPU的竞争,从而造成巨大的资源浪费,因此,也促使人们去探索更多办法优化拜占庭将军问题,这就出现了后来的权益证明(POS)和股权委托证明(DPOS)。


分享到:


相關文章: