[区块链] 拜占庭将军问题 [BFT]

  • 时间:
  • 浏览:2

背景:

  拜占庭将军现象统统人肯能听过,但问你具体是哪此意思。非要 究竟哪此是拜占庭将军现象呢? 本文从最通俗的故事讲起,并对该现象进行抽象,并告诉亲戚亲戚朋友拜占庭将军现象为哪此在区块链领域作为有一一三个白多多重点研究现象。

哪此是拜占庭将军现象:

  “拜占庭将军现象”也被称为“拜占庭容错”。

  拜占庭将军现象是Leslie Lamport(2013年的图灵讲得住)用来为描述分布式系统一致性现象(Distributed Consensus)在论文中抽象出来有一一三个白多多著名的例子。

  某种例子大意是原本的:

  拜占庭帝国不需要进攻有一一三个白多多强大的敌人,为此派出了10支军队去包围某种敌人。某种敌人虽不比拜占庭帝国,但也足以抵御5支常规拜占庭军队的共同袭击。这10支军队在分开的包围情况表下共同攻击。亲戚亲戚朋友任一支军队单独进攻都毫无胜算,除非有大概6支军队(一半以上)共同袭击还能不能攻下敌国。亲戚亲戚朋友分散在敌国的四周,依靠通信兵骑马相互通信来协商进攻意向及进攻时间。困扰哪此将军的现象是,亲戚亲戚朋友不取舍亲戚亲戚朋友中与算是叛徒,叛徒肯能擅自变更进攻意向肯能进攻时间。在某种情况表下,拜占庭将军们还能不能保证有多于6支军队在同一时间共同发起进攻,从而赢取战斗? 

注:“  拜占庭将军现象中未必去考虑通信兵算是会被截获或无法传达信息等现象,即消息传递的信道绝无现象。Lamport肯能证明了在消息肯能丢失的不可靠信道上试图通过消息传递的法律办法达到一致性是不肯能的。统统,在研究拜占庭将军现象的之后,肯能假定了信道是非要 现象的。 ”


 通俗分析:

  单从上边的说明肯能无法理解某种现象的比较比较复杂,亲戚亲戚朋友来简单分析一下:

  先看在非要 叛徒情况表下,假如有一天有一一三个白多多将军A提有一一三个白多多进攻提议(如:明日下午1点进攻,不需要我加入吗?)由通信兵通信分别告诉你这个的将军,肯能幸运中的幸运,他收到了你这个6位将军以上的同意,发起进攻。肯能不幸,你这个的将军也在此时发出不同的进攻提议(如:明日下午2点、3点进攻,不需要我加入吗?),肯能时间上的差异,不同的将军收到(并认可)的进攻提议肯能是不一样的,这是肯能经常出现A提议有三个白支持者,B提议有有一一三个白多多支持者,C提议有有一一三个白多多支持者等等。

  再加你这个比较比较复杂,在有叛徒情况表下,有一一三个白多多叛徒会向不同的将军发出不同的进攻提议(通知A明日下午1点进攻, 通知B明日下午2点进攻等等),有一一三个白多多叛徒也会肯能同意多个进攻提议(即同意下午1点进攻又同意下午2点进攻)。

  叛徒发送前后不一致的进攻提议,被称为“拜占庭错误”,而还能不能正确处理拜占庭错误的某种容错性称为「Byzantine fault tolerance」,简称为BFT。


现象抽象:

  求解拜占庭将军现象,隐含要满足以下有一一三个白多多条件:

  1)每个忠诚的将军里还能不能收到相同的命令值vi(vi是第i个将军的命令)。

  2)肯能第i个将军是忠诚的,非要 他发送的命令和每个忠诚将军收到的vi相同。

  于是,拜占庭将军现象的里还能不能描述为:有一一三个白多多发送命令的将军要发送有一一三个白多多命令给其余n-有一一三个白多多将军,使得:

  IC1.所有忠诚的接收命令的将军遵守相同的命令;

  IC2.肯能发送命令的将军是忠诚的,非要 所有忠诚的接收命令的将军遵守所接收的命令。

  Lamport对拜占庭将军现象的研究表明,当n>3m时,即叛徒的个数m小于将军总数n的1/3时,通过口头同步通信(假设通信是可靠的),里还能不能构造共同满足IC1和IC2的正确处理方案,即将军们里还能不能达成一致的命令。但肯能通信是可认证、防篡改伪造的(如采用PKI认证,消息签名等),则在任意多的叛徒(大概得有有一一三个白多多忠诚将军)的情况表下里还能不能找到正确处理方案。

  而在异步通信情况表下,情况表就非要 非要 乐观。Fischer-Lynch-Paterson定理证明了,假如有一天有有一一三个白多多叛徒发生,拜占庭将军现象就无解。翻译成分布式计算语言,在有有一一三个白多多多多程序 异步系统中,假如有一天有有一一三个白多多多多程序 不可靠,非要 就不发生有一一三个白多多协议,此协议能保证有限时间内使所有多多程序 达成一致。

  由此可见,拜占庭将军现象在有一一三个白多多分布式系统中,是有一一三个白多多非常有挑战性的现象。肯能分布式系统非要依靠同步通信,或者 性能和速率单位将非常低。或者 寻找某种实用的正确处理拜占庭将军现象的算法老或者 分布式计算领域中的有一一三个白多多重要现象。

在这里,亲戚亲戚朋友先给出分布式计算含高关拜占庭发生问题和故障的有一一三个白多多定义:

  定义1:拜占庭发生问题(Byzantine Fault):任何观察者未必同深度看,表现出不同症状的发生问题。

  定义2:拜占庭故障(Byzantine Failure):在里还能不能共识的系统中肯能拜占庭发生问题意味着着着丧失系统服务。 

  在分布式系统中,也有所有的发生问题或故障都能称作拜占庭发生问题或故障。像死机、丢消息等发生问题或故障非要算为拜占庭发生问题或故障。拜占庭发生问题或故障是最严重发生问题或故障,拜占庭发生问题有不可预测、任意性的发生问题,之类遭黑客破坏,中木马的服务器或者 有一一三个白多多拜占庭服务器。

  在有一一三个白多多有拜占庭发生问题发生的分布式系统中,所有的多多程序 也有有一一三个白多多初始值。在某种情况表下,共识现象(Consensus Problem),或者 要寻找有一一三个白多多算法和协议,使得该协议满足以下有一一三个白多多属性。

  1)一致性(Agreement):所有的非发生问题多多程序 都里还能不能同意同有一一三个白多多值。

  2)正确性(Validity):肯能所有的非发生问题的多多程序 有相同的初始值,非要 所有非发生问题的多多程序 所同意的值里还能不能是同有一一三个白多多初始值。

  3)可刚开始性(Termination):每个非发生问题的多多程序 里还能不能最终取舍有一一三个白多多值。

  根据Fischer-Lynch-Paterson的理论,在异步通信的分布式系统中,假如有一天有有一一三个白多多拜占庭发生问题的多多程序 ,就不肯能找到有一一三个白多多共识算法,可共同满足上述要求的一致性、正确性和可刚开始性要求。在实际情况表下,根据不同的假设条件,有统统不同的共识算法被设计出来。哪此算法各有优势和局限。算法的假设条件有以下几种情况表:

  1)故障模型:非拜占庭故障/拜占庭故障。

  2)通信类型:同步/异步。

  3)通信网络连接:节点间直连数。

  4)信息发送者身份:实名/匿名。

  5)通信通道稳定性:通道可靠/不可靠。

  6)消息认证性:认证消息/非认证消息。


中本聪的正确处理方案:

  在经常出现比特币之后,正确处理分布式系统一致性现象主或者 Lamport提出的Paxos算法或其衍生算法。Paxos类算法仅适用于中心化的分布式系统,原本的系统的非要 不诚实的节点(不需要发送虚假错误消息,但允许经常出现网络不通或宕机经常出现的消息延迟)。

  中本聪在比特币中创造性的引入了“工作量证明(POW : Proof of Work)”来正确处理某种现象,有兴趣可进一步阅读工作量证明(猛击!)。

  通过工作量证明就增加了发送信息的成本,降低节点发送消息速率单位,原本就以保证在有一一三个白多多时间非要有一一三个白多多节点(或是很少)在进行广播,共同在广播不会附上自己的签名。

  某种过程就像一位将军A在向你这个的将军(B、C、D…)发起有一一三个白多多进攻提议一样,将军B、C、D…看一遍将军A签过名的进攻提议书,肯能是诚实的将军就会立刻同意进攻提议,而不需要发起自己新的进攻提议。

  以上或者 比特币网络中是单个区块(账本)达成共识的法律办法(取得一致性)。

  理解了单个区块取得一致性的法律办法,非要 整个区块链(总账本)肯能达成一致也好理解。

  亲戚亲戚朋友稍微把将军现象改一下:

  假设攻下有一一三个白多多城堡里还能不能多次的进攻,每次进攻的提议里还能不能基于之后最多次数的胜利进攻下提出的(非要原本敌方已有损失最大,我方进攻胜利的肯能性就更大),原本约定之后,将军A在收到进攻提议时,就会检查一下某种提议是也有基于最多的胜利提出的,肯能也有(基于最多的胜利)将军A就不需要同意原本的提议,肯能是的,将军A就会把这次提议记下来。这或者 比特币网络最长链取舍 (猛击!)


 经济学分析

  工作量证明实在大概提高了做叛徒(发布虚假区块)的成本,在工作量证明下,非要第有一一三个白多多完成证明的节点还能不能广播区块,竞争难度非常大,里还能不能很高的算力,肯能不成功其算力就硬硬耗费了(算力是里还能不能成本的),肯能有原本的算力作为诚实的节点,同样还能不能还能不能获得很大的收益(这或者 矿工所作的工作),这也实际就不需要有做叛徒的动机,整个系统也或者 而更稳定。

  矿工挖矿获得比特币奖励以及记账所得的交易费用使得矿工更希望维护网络的正常运行,而任何破坏网络的非诚信行为不会损害矿工自身的利益。或者 ,即使你这个比特币矿池具备强大的算力,它们都非要 作恶的动机,反而有动力维护比特币的正常运行,肯能这和它们的切实利益相关。

  注:原始的拜占庭容错系统肯还能不能里还能不能展示其理论上的可行性而发生问题实用性另外,还里还能不能额外的时钟同步机制支持算法的比较复杂度也是随节点增加而指数级增加。实用拜占庭容错系统(PBFT)(猛击!)降低了拜占庭协议的运行比较复杂度,从指数级别降低到多项式级别(Polynomial),使拜占庭协议在分布式系统中应用成为肯能。

总结:共识算法的核心或者 正确处理拜占庭将军现象(分布式网络一致性现象)。


 REFERENCE

  1. Lamport L,Shostak R,Pease M.The Byzantine generals problem.ACM Trans.on Programming Languages and Systems,1982,4(3):382-401.

  2. Fischer,M.J.,Lynch,N.A.,Paterson,M.:Impossibility of distributed consensus with one faulty process.J.ACM 32(2),374-382(1985).
  3. 《区块链技术指南》邹均,张海宁,唐屹,李磊 著

【时间仓促,如有错误,欢迎指正! ||   欢迎留下您的评语!  亲戚亲戚朋友共同探讨、学习区块链!】

【转载请注明出处!http://www.cnblogs.com/X-knight/