加载中 ...

小白必看|通过兵法解读:区块链技术解决的拜占庭将军问题究竟是什么?

2019-12-08 16:29 编辑:btc268.com 来源:区块链资讯

  

  文/李一

  

  如果你平时经常阅读区块链行业资讯文和白皮书,相信你对“拜占庭将军问题”这个名词并不陌生。“拜占庭将军问题”是由莱斯利·兰伯特提出的点对点通信的基本问题。那么在区块链中,这个问题是有着怎样的影响呢?

  拜占庭将军问题是什么

  拜占庭将军问题是一个共识问题: 核心描述是军中可能有叛徒,却要保证进攻一致,由此引申到计算领域,发展成了一种容错理论。随着比特币的出现和兴起,这个著名问题又重入大众视野。

  在区块链中文词典中,对这一问题是这样描述的:拜占庭将军问题是指“在存在消息丢失的不可靠信道上,试图通过消息传递的方式达到一致性是不可能的”。因此,在系统中存在除了消息延迟或不可送达的故障以外的错误,包括消息被篡改、节点不按照协议进行处理等问题,将会潜在地会对系统造成针对性的破坏。

  拜占庭将军问题场景

  关于拜占庭将军问题,一个简易的非正式描述如下:

  拜占庭帝国想要进攻一个强大的敌人,为此派出了10支军队去包围这个敌人。这个敌人虽不比拜占庭帝国,但也足以抵御5支常规拜占庭军队的同时袭击。基于一些原因,这10支军队不能集合在一起单点突破,必须在分开的包围状态下同时攻击。他们任一支军队单独进攻都毫无胜算,除非有至少6支军队同时袭击才能攻下敌国。他们分散在敌国的四周,依靠通信兵相互通信来协商进攻意向及进攻时间。困扰这些将军的问题是,他们不确定他们中是否有叛徒,叛徒可能擅自变更进攻意向或者进攻时间。在这种状态下,拜占庭将军们能否找到一种分布式的协议来让他们能够远程协商,从而赢取战斗?这就是著名的拜占庭将军问题。

  

  应该明确的是,拜占庭将军问题中并不去考虑通信兵是否会被截获或无法传达信息等问题,即消息传递的信道绝无问。Lamport已经证明了在消息可能丢失的不可靠信道上试图通过消息传递的方式达到一致性是不可能的。所以,在研究拜占庭将军问题的时候,我们已经假定了信道是没有问题的,并在这个前提下,去做一致性和容错性相关研究。

  区块链

  拜占庭将军问题的核心就是如何在可能存在不可靠节点和不可靠通信的情况下交换信息,达成共识。而且根据科学家们对这个问题的研究,假如叛徒的数量大于等于1/3,那么拜占庭将军问题将不可解。

  这个问题在1982年被提出,但直到2008年中本聪(Satoshi Nakamoto)提出比特币,才得到一定程度的解决。

  我们可以看到,拜占庭将军问题有本质性的问题有两个:“一致性”和“正确性”问题。而它之所以难解,其中有两个重要的原因:

  1、 信息不加密,容易被破解,冒充和伪造;

  2、节点恶意行为影响共识的成本很低.

  非对称加密技术

  比特币网络可以将节点发送的信息进行加密,即使用非对称加密技术保护节点发出的信息。这种技术有三个特点:

  · 消息传送的私密性

  · 能够确认身份

  · 签名不可伪造、篡改

  由于区块链网络是去中心化的,信息在每个节点上是共享的,因此,降低了由于信息不透明导致的向不同节点传递不同信息的可能性。另外,非对称加密算法的加密和解密使用不同的两个密钥:"公开密钥"(公钥)和"私有密钥"(私钥),这解决了节点信息被篡改,泄露,伪造的问题。

  

  看到这里您可能发现两军问题和拜占庭将军问题有一定的相似性,但我们必须注意的是,通信兵得经过敌人的沟渠,在这过程中他可能被捕,也就是说,两军问题中信道是不可靠的,并且其中没有叛徒之说,这就是两军问题和拜占庭将军问题的根本性不同。由此可见,大量混淆了拜占庭将军问题和两军问题的文章并没有充分理解两者。

  两军问题的根本问题在于信道的不可靠,反过来说,如果传递消息的信道是可靠的,两军问题可解。然而,并不存在这样一种信道,所以两军问题在经典情境下是不可解的,为什么呢?

  倘若现代军1向现代军2派出了通信兵,为了确保现代军2收到了消息,现代军1要求现代军2给自己传输一个回执,说“你的信息我已经收到了,我同意你提议的明天早上10点9分准时进攻”。

  然而,就算现代军2已经送出了这条信息,2现代军也不能确定现代军1一定会在这个时间进攻,因为2发出的回执,1并不一定能够收到。所以,1必须再给2发出一个回执说“我收到了”,但是1也不会知道2是否收到了这样一个回执,所以1还会期待一个2的回执。

  虽然看似很可笑,但在这个系统中永远需要存在一个回执,这对于两方来说都并不一定能够达成十足的确信。更要命的是,我们还没有考虑,通信兵的信息还有可能被篡改。由此可见,经典情形下两军问题是不可解的,并不存在一个能使现代军一定胜利的通信协议。

   

  基于区块链技术下的解决方法

  如何利用区块链解决这个问题:

  我们给每个将军都配一台电脑。大家在电脑上发送信息,这样就不用派通信兵出去给其他将军传令了,先把时间节约下来。

  然后我们再设定几个规则:

  1.一个时间段内只能发起一个消息。比如10点到10点一刻,只能发出一个签名并盖上时间章的进攻消息,别的将军要想发动攻击,必须在10点一刻以后才行。

  2.消息传递出去以后,收到进攻消息的将军必须也要在消息上签名,确认各自的身份,并盖上时间印章,然后把这个信息拷贝下来传递给其他将军。

  3.为防止有将军签假名,信息都加了密。系统中各个将军都有一个公用密码和私人密码,公用密码是公开的。A将消息传递给B时,使用B的公用密码加密,而B则要用他的私人密码才能解密。B签完名后,所有将军都可以通过他的公用密码来验证他签名的真实性。

  4.大家都能从各自的电脑上看到信息的传递进度。

   

  这样做的好处是:

  1.信息里每个将军都要签名验证身份,如果有将军篡改了消息,大家就能看到是哪些将军篡改了消息。

  2.尽管有不一致的消息。但只要一个消息得到了6名或6名以上将军的同意,那么大家就达成了共识。

  如此一来,原本难以攻克的“信任”、“信息篡改”等问题,通过区块链技术得到完美解决。

  

  人人都要了解的泛金融理财课

  从入门到高阶,系统搭建知识体系

  从原理到实际操作,跑赢货币超发,摆脱财富焦虑

  拒绝纸上谈兵,视频讲解实盘操作

  重塑金融逻辑思维 解析财富赛道

  4大产品结构定制“火星私塾”泛金融思维课 

  实现人生超车、降维打击

  

  扫描二维码↓立即购买

  

  

  

我就知道你“在看”

关键词:比特币新闻 币牛牛

转载自比特币新闻网(www.btc268.com),提供比特币行情走势分析与数字货币投资炒币最新消息。

原文标题:小白必看|通过兵法解读:区块链技术解决的拜占庭将军问题究竟是什么?

原文地址:http://www.btc268.com/qkl/zs/17450.html

本文来源:区块链资讯编辑:btc268.com

本文仅代表作者个人观点,与本网站立场无关。

本网站转载信息目的在于传递更多信息。请读者仅作参考,投资有风险,入市须谨慎!

'); })();