首页 > 世链号 > 「区块链基础概念100」:拜占庭将军问题 | 022
币网讯  

「区块链基础概念100」:拜占庭将军问题 | 022

摘要:“在存在消息丢失的不可靠信道上试图通过消息传递的方式达到一致性是不可能的”。

区块链基础概念100」由火星财经「学习区块链」频道出品,在区块链基础概念之上延展深度阅读,并紧密连接产业,关注产业发展热点和趋势。

1. 基础概念

拜占庭将军问题/ Byzantine Generals Problem / BGP

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

2.深度解读

「区块链从入门到精通」:拜占庭将军问题
 

在上节课中,我们共同学习了区块链的三大特性,第一点就是区块链的去中心化特性。但形成去中心化的网络之后,不是各搭各的台,各唱各的戏,而是要保证各个节点可以形成统一的决定,用区块链的术语,就是如何达成共识。

小到人和人之间的人际关系,大到国家和国家之间的外交关系,达成共识可以说是头等大事,人缘差、没有国家战略伙伴,肯定会影响个人幸福和国家稳定。

微软的首席研究员莱斯利·兰伯特在2013年获得了有着“计算机界诺贝尔奖”之称的图灵奖,他是计算机分布式问题专家,在他最著名的一篇文章中,他提出了著名的拜占庭将军问题。在这篇文章的摘要中,他风趣的提到了迪杰斯特拉的“哲学家就餐问题”,迪杰斯特拉是1972年的度“图灵奖”得主。兰伯特调侃道,因为创作了“就餐问题”,迪杰斯特拉获得了超出预想的关注。兰伯特此时正在解决NASA的一个计算机容错系统,考虑的问题是“如何保证分布式系统的可靠性”,所以也萌生了创作一个有趣小故事的想法。

在分布式计算领域中,两军问题,或者称作“中国将军问题”,是很有名的。兰伯特受此启发,创作了拜占庭将军问题。这里还有个小插曲,一开始兰伯特的故事叫做“阿尔巴尼亚将军问题”,同事提醒他换个名字,他才换成了“拜占庭将军问题”。

先来看下给了兰伯特启发的“两军问题”:两支驻扎在不同地点的军队分别由一名将领指挥,如果两个将军必须通过传令兵传递消息,才能达成共同进攻或撤退的决定。两军合力才可以战胜敌人,否则只有失败或撤退。问题出在传令兵上,一方派往另一方的传令兵可能永远到达不了,一种可能是被敌军捉住,另一种可能是被险恶的地形困住。学者们已经证明在通信受阻的情况下,除非是巧合,这两位将军是不可能达成一致的。他们二人只能凭借对另一人战略战术的了解,做出猜测,才能做出决定。

关于猜测,在刘慈欣的科幻小说《三体》中,大刘也分析了宇宙文明间存在的猜疑链。大刘通过主人公罗辑,阐述了宇宙的两条公理:一、生存是文明的第一需要;二、文明不断增长和扩张,但宇宙中的物质总量保持不变。然后又道出了宇宙的秘密:宇宙就是一座黑暗森林,每个文明都是潜行于林间的持枪猎人。林中到处是这样的猎人,如果一个文明发现了另外一个文明,他只有一个选择,将其消灭。

为什么宇宙的秘密如此黑暗呢?咱们可以假想一个最基本的模型,假设地球探测到火星内部有一个高度发达的文明,在没有交流之前,我们是无法判断火星人是否具有善意。假如人类向这个文明发出了邀请函。收到邀请函的火星文明同样也会犯难,他们也无法判断地球人是否真的怀有善意。这样在两者之间就形成了猜疑链,无法形成信任。

猜疑链正是阻挡两方达成合作共识的罪魁祸首。双方彼此之间的猜测,是一个典型的博弈过程,双方都想将自己的利益最大化,结果造成任何一方都会成为猎物。博弈论的创始人是大名鼎鼎的冯·诺依曼,他不仅是博弈论的创始人,也是现代计算机结构的发明人,同时也是一位卓越的数学家,还参与过曼哈顿工程,研究过原子弹。后人在冯诺依曼的理论基础上开发出了多种模型,其中之一是广为流传的“囚徒困境”:两名犯人接受隔离审问,犯人被告知,如果一人坦白,另一人不坦白,坦白的人就会无罪释放,不坦白的人就判5年;两人都坦白,各判3年;两人都不坦白,各判1年。可以设身处地的从一名囚犯的角度进行考虑:他的判决结果完全取决于另一人是否坦白,如果另一人选择坦白,他为了避免5年的最大惩罚,最好也选择坦白;如果另一人不坦白,那么为了能无罪释放,最好也选择坦白。两名囚犯都这么思考,结果两人都轻易坦白了。这就是典型的在存在猜疑的情况下,个人的理性选择,造成了集体的非理性。

拜占庭将军问题的参与者要多于前面的例子:拜占庭帝国是东罗马帝国的别称,因为首都君士坦丁堡位于希腊城邦拜占庭的旧址,所以又被成为拜占庭帝国。帝国后期内乱不断,一群将军领兵围困了一座敌城。与两军问题类似,他们也必须靠传令兵传递信息,才能达成统一的行动:要么一起进攻,要么一起撤退。假设传令兵一定能将信息送达,但是将军中可能存在一个或多个叛徒,叛徒会派传令兵发送假信息,从而人为地制造猜疑。叛徒向其他将军发送的信息是不一样的,有进攻的提议,也有撤退的提议,这时不能达成一致的错误,叫做“拜占庭错误”。如果叛徒发送了假信息,传令系统仍能达成一致性,则称该系统具备“拜占庭容错”。

接下来,我们讨论下两军问题和拜占庭将军问题在不同条件下,是否存在解决方法,可以破解猜疑和信任的难题。

两军问题在无法实现两军通讯的情况下是无解的。如果添加一些条件,是否可以破解两军问题和囚徒困境呢?对于两军问题,假如国王宣布两个将军只能前进不能后退,后退者杀无赦,就可以保证两军在指定时刻同时进攻;对于囚徒困境,假如黑帮老大立下了规矩,谁要是坦白了,就会受到黑帮内部最严厉的惩罚,也可以保证两名囚犯都守口如瓶,这样两人都只要坐一年牢就行了。

对于拜占庭将军问题,可以分为口头通讯和书面通讯。

如果采用口头通讯,拜占庭将军问题有解的条件是将军的总数要大于叛徒总数的三倍。因为达成共识的原则是少数服从多数,那么最小模型的将军总数是3。假设有3个将军甲乙丙,三人中有一人是叛徒:当甲发出“进攻”命令时,乙如果是叛徒,他可能告诉丙,他收到的是“撤退”的命令。这时丙收到一个“进攻”,一个“撤退“,于是丙无法判断真实命令;如果甲是叛徒,他告诉乙“进攻”,告诉丙“撤退”。当丙告诉乙,他收到“撤退”命令时,乙由于收到了甲“进攻”的命令,而无法与丙保持一致。

在符合有解的条件下,每位将军只要根据收到的口信,根据多数原则做决策就行了。

如果拜占庭帝国的国王给每个将军发了一个不同的印章,将军们可以利用印章确定通信中的将军身份,将军可以对其它人的印章进行验证。有了这些印章,每位将军分别给其他将军发送书信,并在书信上附上自己盖印;其他将军收信后,附上自己的印章后再发给所有其他将军;最终,每位将军根据收到的书信进行决断。这样就能杜绝叛徒给每个人发送不同信息。但是对于这种书面信息,实物的印章是靠不住的,伪造发生的可能性很高;国王的存在实际是一个高度可信的第三方,不符合去中心化的特征。最好这可以用一个客观的理论代替印章和国王,实现真正的分布式共识。这个理论具备数学公理般牢不可破的特性,比国王更让人信任。

两军问题和拜占庭问题,体现了去中心化组织为了达成共识所碰到的困境。内部原因和外部原因都可能造成无法达成共识。虽然在特定条件下有对应的解决方案,但会破坏去中心化的特征。作为集大成者,比特币吸收了前人在密码学、分布式系统上的经验,它是如何解决区块链网络节点的共识难题的呢?关于共识算法,欢迎收听下一讲的内容。恭喜你完成《区块链入门到精通》第8讲的学习。

导读:为什么宇宙的秘密如此黑暗呢?咱们可以假想一个最基本的模型,假设地球探测到火星内部有一个高度发达的文明,在没有交流之前,我们是无法判断火星人是否具有善意。

拜占庭将军问题
 

这里是王团长区块链学院,与最优秀的区块链人一起成长!今天给大家讲讲拜占庭将军问题。

了解过比特币和区块链的人,多少都听说过拜占庭将军问题,区块链一个重要成就正是解决了拜占庭将军问题,但真正明白这个问题的人并不多。

拜占庭将军问题是一个共识问题: 首先由莱斯利·兰波特与另外两人在1982年提出,核心描述是军中可能有叛徒,却要保证进攻一致,由此引申到计算领域,发展成了一种容错理论。

拜占庭将军问题的具体描述就是:

古老的拜占庭帝国是一个强大的国家,他们常常进攻他国以扩大疆土。这次,他们打算攻打一个也很强大的国家,采取的战略是兵分十路包抄战略,这样他们才会赢。他们按照地形,每支队伍先驻扎下来做好准备等待进攻时刻。这时问题出现,这个敌人虽比不上拜占庭帝国,但也足以抵御5支常规拜占庭军队的同时袭击,十支部队如今分开了,他们任一支军队单独进攻都毫无胜算,除非有至少6支军队同时袭击才能攻下敌国。他们分散在敌国的四周,依靠通信兵相互通信来协商进攻意向及进攻时间。困扰这些将军的问题是,他们不确定他们中是否有叛徒,叛徒可能擅自变更进攻意向或者进攻时间,那么战争就会失败,损失也将极为惨重。

十位将军为了协调一致,在那个古老的时代,只能靠通信兵传递信息,十位将军相互通信一次就需要90次传信,每位将军都有各自的攻城计划,要想达成统一就需要往复传递不知道多少次。 我们可以假设一个场景,一个桌子上坐着十位将军,每个人各自说着自己的想法,同时听其他九位的说法,但是信息的传递不是实时的,有快有慢,有早有晚。也就是说,这十位将军如果想达成一致,理论上有可能,实际上基本无法实现。

而区块链和比特币的出现,利用互联网信息传递的及时性特点,引入时间戳可以明确知道“谁先说、谁后说”的特性,创造性地加入挖矿机制(就是用计算机算随机数满足一定难度才算成功)比拼各位将军的智商来决定谁做本次进攻的统帅,使用非对称加密保证信息传输的安全性等等手段融合到比特币中,用实例说明自己破解了这个历史难题“拜占庭将军问题”。

 

区块链技术

 

下面我们看看到底是怎么解决的,我们把十个将军想象成互联网上十个独立平等的节点,比特币的工作机制是:POW(工作量证明机制)。工作量证明机制主要特征是众多参与节点需要做一定难度的工作得出一个结果,谁先得出立即全网广播,其他节点很容易通过结果来检查出之前节点是不是做了相应的工作,一旦结果被证明正确,其他节点会把之前节点的结果添加到各自的账单中,为争取下一笔的交易记录做好计算的准备。

通过使用比特币的工作量证明机制,将军A在互联网上先发布了一个消息“进攻”并附上了自己的签名“将军A” ,即【进攻 + 将军A】,当然,前提是其他将军都能确实这个消息是将军A发出的。

如果消息发出去,将军A却没有执行的话,那将军A就是叛徒,他会受到处置,所以将军们不敢随意发假消息出去。

将军A的消息被其他节点收到,如果其他将军也打算进攻,则在将军A的消息后面跟上自己的信息,如:【进攻 + 将军B】,以此类推。当此类消息达到十个,他们必将堵上未来,一同发起进攻,攻克敌国,就算是叛徒也不敢轻易现身,因为在网络上会被轻松识破,而且即使叛徒现身也改变不了结局,因为绝大部分将军已经达成共识。

这时也会出现一种情况,将军A发出消息后,可能会有两个或多个将军同时跟上“进攻+签名”的消息,这时,各个节点会严格按照广播的精确时间进行排序,确保一条链的完整性。

也有完全同时广播出来的情况,这时就会出现“分叉”,出现一个分开的两条链,之后,哪条链上添加的账本多(共识多),哪条就成为主链,另一条分叉链就此中断或被部分矿工认可继续添加,就像ETH和ETC,以太坊网络分叉出了一条链,被部分矿工认可继续添加,就有了ETC,而ETH也同时存在。

之所以能够达成统一的共识,认可这一账本,最终是因为利益驱使。任何人都可以随时加入比特币这套系统,读取/更新/记录账本,只要解题的速度够快且准确,就可以争取到比特币作为奖励(我们这里只用比特币的工作机制举例);相反,比特币网络中只有拥有超过51%的算力才能破坏网络安全,如果恶搞的话,会浪费自己的大量资源,而且收益可能会低于成本。

想要了解更多的区块链知识,可以关注我们的公众号:王团长区块链日记,与最优秀的区块链人一起成长!

导读:之所以能够达成统一的共识,认可这一账本,最终是因为利益驱使。
 

区块链的拜占庭政治经济学:新的容错治理
 

经济学和计算机科学都在研究分布式协调的问题,最后得出类型相同的解决方案。而区块链将它们融合在一起,为分布式市场提供了支持。在传统的市场经济中,市场发挥的作用是有限的,需要国家治理,比如提供社会福利等账本记录和秩序维护,而区块链作为新的容错技术,是不是可以提供一个新的治理选择,用来支撑市场经济和社会的正常运转?蓝狐笔记从其中看到了未来的很多可能性。 

火星专栏

三十多年来,经济学家和密码学家一直在研究同一个问题。然而他们各自并不承认对方的研究工作。但事实表明,关于如何协调一个社会稳定运行和如何确保沟通可以被信任的问题,只是同一个问题的不同表述。 

在这篇文章中,我们提出的论点很简单:密码学家所说的拜占庭容错和经济学家所认为的稳健的政治经济学是一回事。这一结论对于理解经济思想史和加密经济制度学(institutionalcryptoeconomics)的研究方向具有重要意义。在解释之前,让我们快速回顾一下经济史上最重要辩论之一。 

社会主义计算争论 

从亚当斯密开始,经济学家们就一直在试图解释国家财富问题-为什么一些国家很富裕而另一些国家则不然。到了二十世纪,这场辩论逐渐演变为,共产主义计划经济和资本主义市场经济,哪个经济体系更有可能带来社会繁荣。 

亚当斯密认为市场经济的特征是自发行为,社会秩序来源于市场激励。马克思则提出了相反的看法,并认为国家可以通过一些有意识的,深思熟虑的计划来为市场创造更好的结果。 

在社会主义计算争论之前,对于社会主义的评判主要集中在激励问题上-如果人们的劳动成果被重新分配,社会主义社区如何说服他们努力工作?(参见Bruce Smith1887年出版的“自由与自由主义”一书中关于社会主义的讨论。) 

1920年,奥地利经济学家Ludwig von Mises发表了社会主义国家的经济计算。在这篇文章中,Mises对社会主义计划经济提出了新的批判-信息问题。Mises认为,在市场经济中,价格是高质量商品和服务的信号,并为需求商品和过剩商品提供了指导。但是,社会主义体系没有价格,正如我们当中的一位成员所描述的Mises的论点: 

“[社会主义计划者]如何决定是否向轮胎工厂或软管工厂提供橡胶? 在市场经济中,最需要橡胶的工厂愿意支付最高的价格。但是在社会主义制度下没有自然的价格体系 - 消费者的价格是由计划者决定的,橡胶按照他们的上级命令分配。” 

关于Mises对社会主义的批判,LionelRobbins and Friedrich Hayek对此进行了拓展和阐述。哈耶克将这一论点转化为经济学中最重要的一篇文章之一:“知识在社会中的使用(The Use of Knowledge in Society)“,他将价格描述为一个去中心化的知识网络。 

社会主义集中式计算(Centralised computersocialism

在今天,Mises 和Hayek的论点已经是众所周知,特别是在柏林墙倒塌的那一刻,他们似乎被证明是正确的。相比之下,他们的反对者在辩论中已经很少被理解。 

波兰经济学家Oskar Lange对Mises和Hayek的批判进行了回应,并由Hayek的俄罗斯籍学生Abba Lerner延伸。Lange 和Lerner接受了价格体系在组织经济活动中的重要性,并且提出了这个系统可以被数学方法模拟的论点。 

在平衡经济学派(equilibrium economics school)中,Vilfredo Pareto 和LéonWalras为此坚定的工作着,因为他们认为价格体系是一台计算机器。在1936和1937年首次发表的社会主义经济理论中,Lange提出社会主义经济可以通过反复试错来模拟价格体系对此影响。 

30年后,Lange重新审视了他的论点。“如果我今天要重写我的论文,我的任务就会简单得多。” Lange写道: 

“我对哈耶克和罗宾斯的回答是:那有什么困难?让我们把联立方程式放在计算机上,我们将在一秒内获得解决方案。 市场流程太过繁琐,显得过时。 事实上,市场经济可能被认为是前电子时代的计算设备。” 

计算机不仅仅可以模拟市场,还可以进行长时间的规划并且实施该计划,这是一个市场从未能够执行的功能。 

哈耶克的市场是分散的,真的吗? 

人们通常将Lange的集中计划经济和Hayek的分散市场经济(自由市场经济)视为两种经济理念。但是Hayek的市场经济仍然有很多中心化的地方。在这里马克思主义者是对的,自由市场有很多地方是国家参与其中的,虽然是私有财产,但是他的确权执法却严重依赖公共当局,例如,法院,警长和警察。 

但是哈耶克主义者和马克思主义者都忽略了一个事实,产权不仅仅是执法。它们更多的是涉及产权的识别和验证,目前这些工作大部分由国家完成。正如我们在上一篇文章中所论证的,现代国家所做的很多事情是背书,管理和验证社会关系的分类账。国家管理财产登记账本,社会保障权利的分类帐,以及谁是公民和由此谁可以参与政治活动的分类账。 

这是国家所能提供的一个非常重要的一个功能。国家确实应该管理这些重要的账本,因为它是一个巨大的可信实体。但是,我们对国家的信任程度是值得怀疑。区块链的发明为我们提供了新的制度选择。 

一种新形态的政治经济学

在我们新的政治经济类形态中,政治理念被划分为集中和分散的经济类型,以及集中和分散的账本类型。 

在Lange的计算社会主义中,经济是集中规划,账本也是集中的。国家是一个规划机器,既管理账本又执行全局计划。 

在前马克思的共产主义中,例如威尔士乌托邦社会主义者罗伯特欧文设计的方案,经济计划是集中的,但是相关的管辖权,即提供账本的当局是由地方自愿社会团体组成。 

哈耶克的分散资本主义有着分散的市场经济,计划是由个人实施而非国家。但是,国家仍然组织,记录,核实和更新有关于身份,权利,义务和权利的账本。相比之下,在加密经济学中,账本和经济计划都是分散的,区块链将国家从计划和验证过程进行分离。

火星专栏

信息和激励 

市场之所以有效是因为它们将激励措施与生产性工作结合起来,并有效利用分布式信息。 

在二十世纪下半叶,公共选择理论学派(public choice school)将激励措施拓展到了包含计划者本身的激励。在一个社会主义共同体中,如何确保计划者为了公共利益工作,而不是为了自身的利益。 

如今,学者们称之为“强有力的政治经济学”(参见Mark Pennington的书和Peter T. Leeson和J. Robert Subrick撰写的这篇论文),它是一个经济体系,用于处理信息和激励的双重问题。关于我们如何在一个信息不完全和潜在的寻租环境中协调行动,交易,建立关系和社区?这个问题是密码学家和计算机学家一直研究的问题。 

拜占庭将军问题 

分布式计算系统必须处理所谓的拜占庭将军问题。这个问题在1882年首次被提出来,假设一支拜占庭军队围住一座城堡。军队分散成几支,每一支都由一名将军领导,他们之间需要对何时对这座城市发起攻击达成共识。 

集中式的命令在这边是不可行的,没有单独的将军可以直接和所有的将军联系,或者说没有将军有权利直接达成共识。将军之间的通信,只能通过信使沟通。所以这里涉及到一个信息问题,将军们需要一个系统或者一个算法来允许所有的将军达到共识。 

这个问题可以变得更难,因为所有的将军不一定都是忠诚的。有些将军可能被敌方收买,并且试图破坏计划。背叛的将军并不希望忠诚的将军达成共识。 

因此,拜占庭将军问题可以综合描述为以下三点: 

1. 在分布式的去中心化系统中达成共识

2. 信息流动不完善

3. 存在恶意敌对者

区块链实现拜占庭容错机制的部分原因是将其视为激励问题。 比特币工作证明机制激励了良好的行为,使攻击网络的成本极高,并降低了成功攻击的收益。 

所谓“51%”对比特币的攻击,就是大部分哈希算力通过协调并破坏网络。如果超过一半的将军是叛徒,会发生什么情况。(当然,这本身很难协调。) 

两个领域融合 

决定何时对一座城市发起攻击只是整个经济问题的一小部分:如何在信息不完整,沟通不完善以及人们出现懒惰,机会主义和利己主义的情况下有效的协调。计算机科学家一直试图通过算法解决问题,经济学家一直试图从制度上解决问题。 

然而,密码学家已经在公钥密码学和工作量证明中找到解决方案,经济学家也已经在市场,监管和机构中找到解决方案。区块链将这两个领域结合在一起。他们将制度问题变成了算法问题,算法问题变成了制度问题。

 拜占庭政治经济学 

可以从一个角度来看待这个问题,那就是两个基本上不相关的领域(计算机科学和经济学)同时研究一个结构相似的问题(分布式协调)并达成相同类型的解决方案(共识协议和市场机构)。

 但有一个更有趣的观点是,区块链技术实际上将这些世界融合在一起。区块链可以为产权信息提供安全的容错分散层,并在信息发生变化时及时的验证和更新,从而支持分散的经济市场。社会主义者可能是错误的,因为他们寄希望于通过计算机计算来取代市场。实际上,是分散的计算机(区块链)可以取代国家管理。 

市场总是需要治理,而市场的局限性在于始终需要国家提供记录保存,产权交易验证等服务。作为回报,国家用征税方式来资助这些服务。区块链是一种新的容错治理技术,可以提供治理来支撑市场经济和社会。我们称之为拜占庭政治经济学。

风险警示:蓝狐笔记所有文章都不构成投资推荐,投资有风险,投资应该考虑个人风险承受能力,建议对项目进行深入考察,慎重做好自己的投资决策。

本文作者是Chris Berg,Sinclair Davidson and Jason Potts,来源于cryptoeconomics.com.au,由蓝狐笔记社群“芥弥”翻译。

导读:经济学和计算机科学都在研究分布式协调的问题,最后得出类型相同的解决方案。而区块链将它们融合在一起,为分布式市场提供了支持。
 

3.产业动态

北卡罗来纳大学教授王永革:基于拜占庭协议的PoS是共识机制未来的发展方向
 

火星开发者大会

火星财经APP(微信:hxcj24h)一线报道,8月20日,由火星财经主办的“POW’ER 2019全球开发者大会”在北京举行。大会邀请来自全球的70位区块链、5G、AI、云计算、大数据、物联网等领域的技术领袖、专家学者、投资及研究机构负责人,分享他们对新技术趋势和商业机遇的判断和展望。 

北卡罗来纳大学教授王永革发表了《下一代共识机制》的主题演讲。王永革教授认为,基于拜占庭协议(BFT)的PoS克服了PoW的先天缺陷,是共识机制未来的发展方向,不过当下基于拜占庭协议(BFT)的PoS共识机制仍然存在不少待解决的问题,其中有一个涉及安全性的问题,非常重要但未得到充分重视。

王永革教授在演讲中表示,区块链网络的特点是DoS攻击很容易、消息丢失很容易,针对区块链的特点,区块链的拜占庭协议必须做到两点:

1.在异步网络里安全;

2.即使丢失多条消息,其拜占庭协议也必须保持安全。

下一代共识机制有两大要求:

1.重新思考网络连接度(network connectivity)对区块链共识协议安全性的影响,不能对不同的网络层级有不同的假设——一个系统的安全性取决于最薄弱的环节;

2.设计真正在异步网络里安全的共识协议能够抗击广播协议的不可靠性,以及网络没有足够的连接度。

以下为演讲全文:

今天我主要讲4个方面的内容,前2个就是讲一下共识机制和区块链的关系,还有当前的共识机制。更重要的是第三点和第四点,第三是异步网络里共识连的安全性,这是共识机制的核心问题,也是区块链的核心问题。以及下一代的区块链需要什么样的共识机制。这是我要着重讲的问题。

首先我简单讲一下对区块链的历史的概述。我们通过分析区块链的技术,发现区块链的核心技术就是共识机制,没有共识机制就没有区块链技术。如果你的共识机制不安全,整个的区块链技术将会是灾难性的。

我们来定义一下什么是好的共识机制?共识机制需要满足2个条件,第一个是安全性的问题,安全性的问题就是合法的交易诚实的交易节点就是诚实的交易,不诚实的交易就是不合法的交易。另一个就是活性的问题,一个合法的交易在合理的时间内会被确认,所以我们在设计好的共识机制的时候,我们一定就要满足这两个条件:安全性和活性。如果任何一个条件不被满足,我们的共识机制将不会是好的共识机制。

火星开发者大会

虽然共识机制有很多,但是最重要的有两个,一个就是PoW,还有一个就是PoS,首先第一个PoW,首先大家都知道是bitcoin和以太都是比较大的东西,主要的缺点就是能源消耗很大,可能并不是很理想的技术。另一个当然就是PoS,我着重的想要讲的就是基于BFT协议的PoS,我主要讲一下我们怎么设计在PoS里面的共识机制。

基于拜占庭协议(BFT)的PoS克服了PoW的先天缺陷,是共识机制未来的发展方向。但是大家都在讲基于BFT协议的PoS,但是当下基于BTF协议的PoS共识机制,有很多没有解决的问题。BFT协议大家都知道,是一个很古老的问题,在2000年前在古罗马的首都拜占庭,他有很多的军队,有很多将军都在这个城镇,将军与将军之间离得很远,他们是通过信来传递消息的,但帝国的军队的将军必须要做出一致的决定,是要进攻还是撤退,一个城市的将军进攻,另一个城市的将军就要进攻。如果一个城市的将军撤退,所有城市的将军就要撤退,但是他们都会采取一种手段让这些将军达成协议。这些城市的将军和将军的交流,是要通过这个attack去传递的,因为它是通过信使的传递,这是非常重要的,并不是所有的城市的将军都有一个完全可信的通信渠道。

火星开发者大会

首先有一个很重要的问题,就是通讯。在2000年,我们是通过消息的传送。在现在的区块链里面,我们是通过(英文)来进行通讯的。这有两个核心,大家需要注意一下。哪两个核心?同步网络异步网络的问题,大家要注意这两个区别,这两个区别是非常重要的,大家没有搞清楚它的区别的话,大家所设计的区块链技术是很容易被控制的。

什么是同步网络呢?我们假定一个变量,如何是任何一个时间点发送消息,那么他就会在一个时刻收到消息。

什么是异步网络呢?异步网络即存在一个Global Stabilization Time (GST),在GST之前,任何消息可能丢失,或被重新排序。在GST之后,网络变为同步网络。GST什么时候开始,没人知道。这是目前大家比较愿意接受的就是这一个解释。但是这个逻辑对不对?也有一定的问题。

我们假定这个模型是对的,在区块链设定BFT协议的时候,通过在同一个GST里面,就会存在问题。在GST之前,任何消息可能丢失,或者被重新排序。这个攻击显然是这一块的,也就是说我发送了一个消息,这个消息很有可能被控制了,GST就会变成一个网络。那么这个GST是什么时候开始的?没有人知道,所以这是异步网络,异步网络很重要的一点就是GST不知道,GST之后才会变成同步网络。

根据同步网络和异步网络,我们可以设计出2种不同的拜占庭协议。比较具有挑战性的就是在异步网络里设计BFT协议,最常用的就是PBS,这都是基于异步网络的BFT协议。

大家可以想一想,在新的假定下,到底这个PBS是不是安全的?区块链需要什么样的BFT协议?我们有两个BFT协议,一个是同步网络的协议,一个异步网络的信息。你出了一个信息出去,信息被丢失是很正常的事情。所以我们的网络环境,就是在异步网络的情况下来进行的假设。如果异步网络更适合于区块链技术的假设,我们就需要一个在异步网络里安全的BFT协议。如果我们没有异步网络安全的BFT协议,那么我们的PBS将不会安全。

那么很重要的问题来了,当前在这所有的异步网络里的BFT协议是安全的吗?我们去看所有的异步网络的BFT协议,有这样的一个假定,目前大部分的BFT协议,在安全性分析的时候有一个假设。什么假设呢?存在一个安全的广播协议。什么是安全的广播协议呢?在某一个节点发送广播消息,所有的节点在T+时刻之前,会收到同样的消息M。我举一个例子,如果说大家去收看一个节目,如果我收看的是电视台的新闻,您收看的是电视剧,那么就会有问题。安全的网络协议就是保证一个节点发生的时候,不管这个节点是坏人还是好人,他发生的时候,所以的节点会收到同样的消息,在网络里,你怎么去做网络协议?你发一个消息,所有的节点收到的都是同样的消息,如果你是坏人的话,你对不同的节点会发送不同的消息。

有一些学者曾经证明过,安全的网络协议和BFT协议是不同样的。但是目前我们看到,目前很多的BFT协议是不一样的,都是假定安全的网络协议。但是安全的网络协议,我们知道我们的网络英特尔对它是允许的。但是在这之前是不支持的,为什么呢?如果我们给谁发一个消息,他都会接受这个消息,所以这就不是安全的广播协议。

但是安全的广播协议的假设在异步网络是不成立的。所以目前的BFT协议有这么一个假设,Facebook的LibraBFT的网络协议就是来自于1987年的一篇文章,他设计了一个网络协议,有一个很重要的假设,是什么假设呢?那就是点对点可靠重新渠道。

我们在设计BFT协议的时候我们有一个假定,有3T+1的参与者,有1/3的用户是不可靠的。在这样的假定下,BFT协议还是存在的吗?我们对通讯有了解的话,会知道这个协议在使用的话,为了达到点对点的安全通信,如果我们使用公开密钥系统体系的话,网络系统是T+1的连接的。如果我们不使用公开密钥系统的话,网络系统是2t+1的连接的。在区块链的技术下,我们只实现了这么多。而我们的技术是远远达不到的,最多占到4个节点,最多3到4个连接度,最多5个连接度,所以这样的问题就来了,所以Bracha的假设,在异步网络的网络连接度不够时是不成立的,在Libra 也有这个假定,到底它的这个协议是不是安全的?

我们做一个区块链的技术,我们想要一些比较安全可靠的区块链系统,或者说我们怎么配发一个安全可靠的BFT协议呢?我们在解释区块链系统安全的时候,攻击一个网络我们只需要攻击最薄弱的环节,最薄弱的环节就是在广播协议这个地方。但是我们需要异步网络与安全的协议,能够解决广播之间的连接问题。

火星开发者大会

 

最后我们怎么解决这个问题呢?我们尝试用Sperax去解决共识机制目前不安全的问题。根据硬件来设计,最大可能地实现在网络协议不安全的情况下,我们的BFT协议仍然是安全的。

导读:“区块链的拜占庭协议做到两点,才能保证网络和信息安全。”

 拜占庭容错共识的预选和预提交机制
 

本文探讨了拜占庭共识算法的优势,有必要讲讲拜占庭共识的一个重要方面——区块的终结性,即保证某个特定区块永远不会被逆转。

来源|lisk官方博客

翻译|头等仓Tracey

校对|头等仓Maggie

转载请保留前言信息。

共识算法

本文探讨了拜占庭共识算法的优势,讲解拜占庭共识的一个重要方面——区块的终结性,即保证某个特定区块永远不会被逆转。

拜占庭共识的主要好处是什么?

在深入讨论拜占庭共识优势之前,先快速了解一下拜占庭共识对区块链有哪些关键功能改进。

1.安全性:如果网络中2/3的活跃受托人诚实地遵循协议行事,则两个富有争议的区块无法在区块链上达成终结性。

2.活性:即使1/3活跃受托人离线,新区块仍可在区块链上达成终结性。

3.问责制:如果一名受托人违反了共识协议,他/她将为自己行为负责。

以上便是拜占庭共识具有的三个高级特性。它能迅速地从分叉中恢复过来,快速地达成区块链终结性。三个特性都需要深入了解,如果你乐意的话,可以了解LIP以及拜占庭共识研究论文。本文重点是介绍拜占庭的实现细节。

在拜占庭共识算法中,每个节点不仅维护区块链,还维护其他内存元数据,以便根据算法规则验证区块链。部分内存元数据还将保存在区块链上,以防节点奔溃时可以重建内存数据集。我们另外针对区块增加的属性是受托人锻造的前一区块高度以及锻造区块时的最大预投票高度。与此同时,每个节点都将追求终结高度,因此在恢复区块链的情况下,已被终结的区块无法再逆转。

支持区块民主投票

在Lisk生态系统中,投票并不是什么新鲜事——投票是任何DPoS共识算法的基础。LSK代币持有者可以给受托人投票,然后,根据得票多少,系统选出得票最高的受托人锻造新一轮区块。之前,投票系统仅仅用于给受托人投票,引入拜占庭共识算法后,投票系统不再仅用于投票了。每个受托人将给区块投上一票,不同的是受托人投的票由各个节点自身维护和保留。只有少数计算出来的属性会公布在网络上,并非公布到整个投票账本上。拜占庭数学公式和协议确保各个节点正确地投票。

与其他投票系统的基本规则一致,受托人只能在给特定高度的区块投票一次。因为同一高度不能存在两个区块,受托人只能投给一个区块。这个过程叫做预投票,收集了2/3选票的区块合格进入下一轮投票。

第二轮投票叫做预提交,规则与上面类似,受托人可以预提交一个区块,只能提交一次,获得2/3预投票的区块达到合格线。在第二轮中,获得2/3预提交的区块具有终结性。具有最高预提交数的区块最终确定为区块链的高度。低于终结性区块高度的区块也将具有最终性,且不可逆转。

其他一些规则:

1.如果受托人没有参与这轮投票,就不能进行预投票或预提交。目的是防止垃圾投票。因此在受托人激活时,我们会跟踪投票轮情况。

2.一个受托人不能参与3轮投票,提高整个系统性能。

示例场景1—4个受托人同时锻造

假设网络中有4名活跃受托人,要让每个区块都具有终结性,至少要3名(大于或等于2/3原则)受托人投票通过。

 共识算法

4名受托人都参与锻造的情况

我们模拟一个数据来更好地理解。

1. 当一个区块被申请添加到区块链上时,需检查以下信息:受托人之前锻造的区块高度,链上获得了2/3以上选票的最高区块,以及受托人上次参与的投票轮。

2. 受托人检查之前的预投票状态,并预提交那些拥有2/3选票的区块。由于拜占庭共识规则规定,一个受托人不能预提交区块两次。而且出于性能考虑,我们不会在链当前高度的后两轮继续执行这些预提交。

3.受托人预投票所有区块。根据规则受托人不能一次只能预投票给一个区块。而且要在自己被激活的时间内才能预投票。而且出于性能考虑,我们不会在链当前高度的后两轮继续执行这些预提交。

4. 如图所示,链中的第一个区块在高度6处有三个预提交。这意味着该区块被终结,且永远无法被逆转。

5. 链中的其余区块显然是之前申请到链上的,这些区块可以被逆转,以解决网络分叉问题。

6.在预提交之前,拥有2/3投票的区块数量在上升。拥有更多预投票的区块有望获得更多预提交,也就更大可能被最终确定。 

但终结性不是针对单个区块,而是针对特定区块高度而言。如果一个区块在高度7被最终确定,则意味它之下的区块也被最终确定了。终结性并非按照顺序排列,而是根据受托人列表(受托人列表决定锻造顺序)而变化。有可能好几个区块没有被最终确定,而新来的区块先被确定了。这种情况下,所有前面低于当前被最终确定的区块,都被最终确定了。

示例场景2——4名受托人错失了插槽

假设有4名受托人,但这一次受托人错失了插槽,结果导致链不能顺畅地确定区块,终结的区块之间出现缺口。

 共识算法

4名受托人正在错失插槽

查看上图的数据模拟,可以看出第一个被最终确定的区块高度为6,而区块链高度为11。出现这种情况是因为受托人丢失了插槽,无法对前面的区块预投票以及预提交。因为高度6具有最终性,所有高度6以下的区块都被最终确认了。

示例场景3——5名受托人都被更换

假设5名受托人正在伪造,但到了第三轮之后,5名受托人都被其他受托人取代了。

 共识算法

5名受托人都更换了

本次模拟中最需关注的是在高度1与高度15之间,终结性高度是如何保持增长的。而在高度15与高度30之间终结性高度便停止增长了。而受托人仍在给新区块投票,而共识规则规定,此阶段受托人不能预提交区块,因为受托人还没有被激活,于是原来的区块就没有进行预提交。这在预料之中,因为网络的终结性高度增长是在2/3以上的受托人就某一区块达成共识。否则,网络继续增长,但区块却没有被最终确认。

示例场景4——11名受托人,其中一名受托人被替换

示例4更类似于真实的网络情况,受托人列表在好几轮投票中没有改变,最终只有少数受托人更改了自己的立场。同样我们也模拟了数据,还增加了受托人数量,产生了一组难以置信的结果。

 共识算法

11名受托人,一名被替换

在示例4中,可以看出网络终结性高度直到高度33才停止增长,之后是暂停了4个区块的时间,之后又开始增长。这种情况更类似真实网络。

为何要进行这些模拟呢?

你可能在想我们为何要做这些数据密集型模型实验呢?因为拜占庭共识已被记录下来了。是的,但是要理解拜占庭共识的逻辑比较困难,而且容易在实现的过程中出现问题。以上数据模拟可以让我们更清晰地了解数据流和可视化拜占庭共识在不同网络情形中的表现。

同时,数据模拟可以帮我们测试拜占庭实现,不仅让实现变得更完善,也给了我们扩展和添加更多测试场景的灵感。

本文只是介绍了拜占庭共识LIP的冰山一角,即预投票和预提交部分。拜占庭LIP还有很多内容,比如分叉选择规则,分叉恢复机制,正是这些才能拜占庭共识更加完整。

 

原文:https://blog.lisk.io/exploring-pre-votes-and-pre-commits-for-byzantine-fault-tolerance-consensus-bft-8aabd9e148a9

稿源(译):https://first.vip/shareNews?id=2111&uid=1

导读:本文探讨了拜占庭共识算法的优势,着重讲解拜占庭共识的一个重要方面——区块的终结性,即保证某个特定区块永远不会被逆转。

拜占庭共识已经无法满足今天公链和联盟链的安全需求 
 

作者:王永革教授,Sperax 首席科学家,著名华裔密码学家,北卡罗来纳大学夏洛特分校 (UNC, Charlotte) 计算机系终身教授,德国海德堡大学获得博士学位。

-------以下为正文-------

自从 Facebook 推出联盟链 Libra 的白皮书,并寻求在 5 年之后逐渐过渡到公链后,区块链社区内很多人对联盟链和公链的区别与相似性展开了富有卓效的讨论。而针对目前公链和联盟链在安全方面存在的一些隐虑,业内给出了一些观点。

简单来说,联盟链是 permissioned 区块链,只有少数得到许可的节点可以决定下一个区块的生成。而公链 (permissionless) 则是一个开放的系统,所有的节点都有机会去生成下一个节点。所以从治理机制的角度来讲,两种链的区别是明显的。如果不从安全性的角度去考虑,两种链的应用场景应该没有很大的区别。可以在联盟链上的开发的应用场景也可以自然的作为公链上的应用场景,反过来也是。

今天我们主要通过两种链治理机制的区别来讨论为什么在目前的技术支持下,不是所有的联盟链应用场景都可以作为公链的应用场景。同时也尝试解释为什么脸书不是从一开始就推出基于公链的 Libra。在联盟链里,具有投票权的节点是要经过审查许可的,其投票权也可以被收回。所以联盟链并没有达到彻底的去中心化。但正是由于这种审查许可机制的存在,有投票权的节点之间虽然存在着某种竞争关系而不能完全相互信任,但他们之间的关系也不是完全的不信任。

在密码学的研究中,我们一般用半信任的威胁模型来表达这种关系。在公链上,任何节点都有机会平等的参与下一个区块的生成。为了各自利益的最大化,有投票权的节点之间不存在任何信任关系。在密码学研究中,我们用拜占庭威胁模型来表达这种关系。

公链

被人忽略的共识机制威胁模型

共识协议是区块链的核心技术。共识协议决定了下一个区块是如何生成的。换一种说法,共识协议决定了对整个系统所有交易的一种完全排序。而这种排序必须是系统所有诚实参与者之间的共识。

在现实生活中,如果我们对两个交易的前后顺序没法达成共识,那我们就没法对整个系统产生信任。如果一个不诚实的区块链节点(不论是否具有投票权)可以通过某种方式而对这种排序进行攻击,那将产生不可估量的灾难性结果,其中最典型的例子就是「双花攻击」,这种攻击模式已经在包括 Zencash、Ethereum Classic、Bitcoin Gold 等区块链上发生。

一个安全可靠的区块链共识协议应满足一下两个条件:

1. 安全性 (Safety): 诚实的节点对合法交易将达成统一的 (consistent) 意见

2. 活性 (Liveness): 一笔合法交易在合理时间长度内会被确认

比特币的共识协议是基于工作量的 PoW 系统。由于 PoW 系统存在很多挑战,目前社区内的共识是我们将逐步推广基于权益证明(Proof of Stake,简写「PoS」)的共识协议。PoS 共识协议最早在区块链 Peercoin 里被使用。

在目前所使用的 PoS 共识协议里,一个参与者必须满足特定的条件才能够生成下一个区块。在很多情况下,可能多个参与者满足这些条件。这些满足条件的参与者都会去生成下一个区块。因为区块生成者会获取多种利益,所以每个区块生成者都希望自己生成的区块是被大家接受的那个区块。如果区块链系统允许两个参与者同时生成下一个区块,那么将出现区块链分叉的情况。

为了避免区块链的分叉,不论是联盟链或是公链,一般都采用拜占庭协议来从这些候选区块中选出下一个大家都可以接受的区块。这就涉及到很多核心问题:

1. 一个参与者满足什么样的条件才可以生成下一个区块?

2. 一个参与者在公布他有权生成下一个区块之前,有多少人知道他的身份?

3. 拜占庭协议是如何进行的?

4. 等等。

在不同的威胁模型中,对上述各个问题的解决方案是不同的。我们上面已经提到,联盟链采用的是半信任的威胁模型,而公链采用的是拜占庭威胁模型。因为在半信任的威胁模型里安全可靠的应用场景不一定在拜占庭威胁模型里安全可靠,所以不是所有的联盟链的应用场景都可以有对应的公链应用场景。

一般来讲,开发者在开发应用场景的时候,必须考虑这些应用场景在什么威胁模型里是安全的。此外,我们还需特别考虑我们的应用场景可不可以在一个具体的联盟链或公链上运行?虽然前面讲了,联盟链的假定是半信任的威胁模型,这不意味着所有的联盟链都在半信任的威胁模型里安全可靠。同样的,我们讲了公链需要在拜占庭威胁模型里安全可靠,但并不意味市场上所有的公链都在拜占庭威胁模型里安全可靠。

读到这里,大家可能会问:目前市场上有多少公链能否做到在拜占庭威胁模型中完全安全?当然大家还会问:我们目前的公链是否有足够的技术支持,来保证其在拜占庭威胁模型中完全安全?我们在这篇文章以及以后的系列文章里尝试回答这些问题。

当你能猜出下一个块谁来出的时候,那就可怕了!

我们先用一个非常初级的例子来说明理想与现实之间的差距:在基于 PoS 的联盟链或公链里,如果在下一个区块生成之前,大家能够预测到下一个区块将由某一个特定的参与者 A 来生成,那么这个区块链系统将很容易被攻击。这种情况在 EOSIO - Blockchain software architecture 区块链上已经发生过数次,EOS 系统的黑名单机制以及超级节点顺序出块机制,让黑客可以在部分黑名单遗漏节点出块期间轻松完成交易。

比如,有些参与者或非参与者可能会贿赂 A 让其在下一个区块中不包括某些交易。此外,如果两个参与者 A 和 B 都满足下一个区块的生成条件,A 可能会对 B 的网络发起 DoS 攻击,从而让 B 无法公布其生成的区块。其结果很可能是 A 的区块被大家接受。所以在理想的区块链系统里,参与者都希望在下一个区块生成之前,其生成者身份是不可预知的。但是市场上的很多区块链系统都没发实现我们的这种理想。也许在联盟链所采用的半信任的威胁模型里,这种下一个区块生成者身份的可预测性是可以「接受」的。

但是在公链所采用的拜占庭模型里,这种可预测性是绝对不能接受的。在目前的一些公链里,有些系统(比如 Algorand)采用了可验证的随机数生成器 (VRF) 来保证下一区块生成者身份的不可预测性。而另外一些公链 (比如 Sperax) 使用了基于防篡改的硬件系统来保证下一区块生成者身份的不可预测性。所以大家在分析一个链是不是安全可靠的,首先大家应分析一下其系统的随机数来源于何处,是否安全。虽然大部分联盟链里没有使用足够的随机数,但是我们相信即使在半信任的威胁模型里,我们还是需要保证下一区块生成者身份的不可预测性。作为一个练习题,读者可以自行去分析市场上所有的区块链,看能不能满足这个基本条件。

公链

另一个很重要的核心问题是目前大家使用的拜占庭协议是不是在基于 Internet 的网络环境里仍然是安全的?拜占庭协议是一个古老的话题。在两千多年前的罗马帝国的首都拜占庭(今天的伊斯坦布尔),罗马帝国的各军队之间都分隔很远,将军与将军之间只能靠信差传递消息。帝国军队的将军们必须全体一致决定是否攻击某一支敌军。但是将军中存在叛徒。叛徒可以采取任何手段不让忠诚的将军们达成一个一致的决定。

为了解决分布式计算里服务器之间的协调问题,图灵奖获得者 Lamport 和他的合作者在 1982 年左右,将拜占庭协议问题引入到计算机科学中。从此以后,一系列的分布式共识协议被设计并广泛应用(比如 Rampart 和 SecureRing)。这些协议主要被用于相对封闭的环境(比如数据中心),所以他们都有比较强的假设。特别是很多拜占庭协议都使用了以下两个假设:

1. 拜占庭协议所使用的通讯网络是一个完全图(complete graph)。换一种说法,拜占庭协议的所有参与者之间存在安全的点多点的通讯渠道。这种假定对联盟链来说,都很难达到。对一个完全开放的公链,我们很怀疑这种假定仍然是成立的。

2. 拜占庭协议所使用的通讯网络是一个同步网络。也就是说,存在一个全局变量△。每一个协议参与者在 t 时刻发出的消息, 一定会在 t+ △时刻之前到达接受节点。

这两个假设对于比较封闭的环境来说,比较容易达到。但是对于一个开放的网络,这种假设显然是不现实的。比如说在我们使用的 Internet 上,DoS 攻击是很容易展开的。所以即使基于 Internet 的联盟链也不使用如上的假设。一般来说,Internet 是一个异步网络,常用的异步网络是用如下的模型来刻画的:

存在一个 Global Stabilization Time (GST),在 GST 之前,任何消息可能丢失(比如 DoS 攻击),或被重新排序。在 GST 之后,网络变为同步网络 GST 什么时候开始,没人知道。

所以说,我们区块链所需要的拜占庭协议必须在可以丢失很多信息的异步网络具有鲁棒性。目前市场上的区块链里使用最多的拜占庭协议很多是图灵奖获得者 BARBARA LISKOV 和她的学生设计的 PBFT (practical BFT) 及其变种(比如 Tendermint BFT)。

公链

拜占庭协议并不能保证区块链系统安全可靠

那么我们关心的问题是:这些为异步网络设计的拜占庭协议对区块链的应用来说是安全可靠的吗?特别是,这些拜占庭协议在基于 Internet 的网络环境里是安全的吗?如果这些拜占庭协议达不到在拜占庭威胁模型里的安全性,我们很难想象大家会对这些区块链系统提供的服务产生信任。

如果我们仔细的去分析这些拜占庭协议,我们会发现他们都有一个基本的假设:拜占庭所使用的通讯网络存在一个安全的广播协议。

如果一个节点在时刻 t 广播一条消息 m,所有的节点在 t+ △时刻之前,会收到同样的消息 m

但是我们知道,在 Internet 的网络环境里,DoS (Denial of Service) 攻击可以让某些节点接受不到广播者发送的消息的。特别是,在异步网络的 GST 时刻前,DoS 是允许的。所以说广播协议在异步网络的 GST 时刻前是不安全的。我们的结论是:如果 DoS 攻击是可能的,那么我们没法保证目前很多区块链使用的拜占庭协议是安全的。

带着好奇心,大家可能很想知道目前的区块链系统是如何实现广播协议的?大部分的广播协议都是基于 Bracha 在 1987 年发表的如下论文:

G. Bracha. "Asynchronous Byzantine agreement protocols." Information and Computation 75.2 (1987): 130-143.

 

但是很遗憾,Bracha 的论文有一个经常被大家忽略的假设:

如果要使 Bracha 的广播协议安全,其通讯网络必须要有点对点可靠通讯渠道

 

问题就出在这个假定。因为要保证可靠的点对点的通讯渠道,那么 DoS 攻击应该是不被允许的。此外要保证网络里可靠的点对点的通讯渠道,网络需要有足够的连接度。大家可以参阅以下文章关于可靠的点对点的通讯渠道以及网络连接度之间的关系刻画:

 

  • Y. Wang and Y. Desmedt. Perfectly secure message transmission revisited. Information Theory, IEEE Tran., 54(6):2582–2595, 2008

 

综合以上讨论,我们很容易得出结论:目前很多区块链系统(联盟链和公链)所使用的拜占庭协议并不能保证在基于 Internet 的网络环境里是安全的。我们将在以后的一些列文章里逐个分析目前联盟链和公链里普遍使用的拜占庭协议是不是在基于 Internet 的网络环境里是安全的。

如果这些区块链系统使用的拜占庭协议达不到在拜占庭威胁模型里的安全性,我们很难想象大家会对这些区块链系统提供的服务产生信任。

总结一下:我们认为目前已开发的区块链系统的安全性还没有经过足够的分析。所以我们无法来确认哪些应用场景是可以在联盟链或公链上运行的。我们对区块链系统的安全性研究还处于很初级的阶段。就像上世纪八十年代我们对 Internet 安全性研究的理解一样。

在 1988 年一个 MIT 研究生写的毛毛虫 Morris worm 感染了世界上当时 10% 的电脑。从而让整个世界的 Internet 系统处于瘫痪状态。如果我们没有对区块链系统的安全性有足够的研究和准备,这种毛毛虫攻击很可能在区块链系统上会上演。我们将在下几个月的系列文章里将我们的研究逐步介绍给大家!敬请大家关注。

下期文章预告:区块链广泛使用的拜占庭协议PBFT的安全性分析:PBFT被广泛使用于联盟链(比如Hyperledger sawtooth和趣链科技的Hyperchain)和一些公链。

作者介绍

王永革教授,Sperax 首席科学家,著名华裔密码学家,北卡罗来纳大学夏洛特分校 (UNC, Charlotte) 计算机系终身教授,德国海德堡大学获得博士学位。王教授发表了一百多篇学术论文,研究范围包含计算复杂性理论、密码学(加密、解密和密码分析)、容错计算、分布式计算、基础设施保护、安全通信、计算机和网络安全、云安全、信息论和后量子密码学。王教授参与标准组织制定协议,如 IETF、W3C、XML 安全协议、IEEE 1363 加密技术标准化组和 SAN 网络安全标准 ANSI T11 小组。

 

区块律动 BlockBeats 提醒,根据银保监会等五部门于 2018 年 8 月发布《关于防范以「虚拟货币」「区块链」名义进行非法集资的风险提示》的文件,请广大公众理性看待区块链,不要盲目相信天花乱坠的承诺,树立正确的货币观念和投资理念,切实提高风险意识;对发现的违法犯罪线索,可积极向有关部门举报反映。

导读:“目前已开发的区块链系统的安全性还没有经过足够的分析,所以无法来确认哪些应用场景是可以在联盟链或公链上运行的。”

                                                                                                                    来源:学习区块链

 

免责声明
世链财经作为开放的信息发布平台,所有资讯仅代表作者个人观点,与世链财经无关。如文章、图片、音频或视频出现侵权、违规及其他不当言论,请提供相关材料,发送到:2785592653@qq.com。
风险提示:本站所提供的资讯不代表任何投资暗示。投资有风险,入市须谨慎。
世链粉丝群:提供最新热点新闻,空投糖果、红包等福利,微信:juu3644。