区块链|拜占庭将军问题

为了蹭热度写CMT的文章,查了些资料才知道币圈中有个拜占庭将军问题(原谅我的孤陋寡闻),要想理解这个问题就必须知道一些背景,比如拜占庭帝国,这位与我国汉唐时期并列东西方的强国--古罗马帝国,在我们名族英雄卫青,霍去病,以及唐朝的名将打击,匈奴逐渐西迁,成为罗马帝国的大患,在395年1月17日,罗马帝国皇帝狄奥多西一世(346—395)逝世。他在临终前,将帝国东西部分与两个儿子继承。 其中的东罗马帝国延续了近千年之久,在此期间它一般被人简单地称为“罗马帝国”。到了17世纪,西欧的历史学家为了区分古代罗马帝国和中世纪神圣罗马帝国,便引入了"拜占庭帝国"这一称呼。但是拜占庭帝国采取了军区制改革 塑造了一批立志杀入首都的地方豪强,在个别地区,原先被推翻的皇族后裔,可以获得地方势力的支持,成为另立帝号的独立皇国。他们对于此后的中央,也就毫无认同感可言。各种内斗、暗杀、内战,此起彼伏。无论帝国破落到什么程度,都不会消停。他们还对于利用外部势力的支持,毫不犹豫。因而总是在外患严重的时候,更容易获得入驻中央的机会。一直到拜占庭的晚期,各家族的势力范围都被乱入的外部势力,肢解的支离破碎。当大家都只有一亩三分地,还被彼此分隔开,这种内战才得以告一段落。但拜占庭帝国本身也到了寿终正寝的时间。

区块链|拜占庭将军问题

知道了这些就更能理解拜占庭将军问题了,知乎中有个解释也很明了,11位拜占庭将军去打仗, 他们各自有权力观测敌情并作出判断, 进攻或撤退, 那么怎么让他们只用传令兵达成一致呢?一种很符合直觉的方法就是投票,每位将军作出决定后都将结果"广播"给其余所有将军, 这样所有将军都能获得同样的11份(包括自己)结果, 取多数, 即可得到全军都同意的行为.但如果这11位将军中有间谍呢? 假设有9位忠诚的将军, 5位判断进攻, 4位判断撤退, 还有2个间谍恶意判断撤退, 虽然结果是错误的撤退, 这场战争必输无疑了.在已知有成员叛变的情况下,其余忠诚的将军如何达成一致的协议,拜占庭问题就此形成。Lamport 证明了在理想状态下,背叛者为m或者更少时,将军总数只要大于3m,忠诚的将军就可以达成一致,从技术上理解,拜占庭将军问题是分布式系统容错性问题。

如何解决这个问题呢,算法是解决问题的理论基础,拜占庭将军问题就是针对分布式共识算法提出来的,而这个问题也是比特币等加密货币的核心问题。根据比特币白皮书内容描述,大量篇幅提到诚实节点、攻击者等问题,就如同外敌入侵后,将军们出征了,如何确认各个将军的言行是一致的呢?中本聪提出了工作量(POW)认证的方法,也就是做出了实际进展,给相应的比例,并广播至其他将军,简单的话就是加入要进攻,那就是你派兵出征的距离人数越多,你得到奖励也就越多,想法就没有,大家根据获得奖励的多少,很明显就知道各个将军(节点)在干什么,由此,就很好的解决了上述问题,而这些奖励就是我们现在的币王--比特币。

区块链|拜占庭将军问题

但是一方面在提工作量证明的时候,需要耗费大量的能源,同时大家都忙着干活了,可能沟通就不怎么顺畅了,因此,处理效率很低(可以这样理解吗?),事实上,无论你采取什么样的方式,只要保证时间统一、步调一致、单点广播、一个链条就能解决加密货币这种分布式系统的拜占庭将军问题。于是币圈各位天才的努力下相继出现ETH,EOS的解决方案。

区块链|拜占庭将军问题


分享到:


相關文章: