今天给大家聊到了拜占庭将军问题区块链,以及区块链 拜占庭将军问题图解相关的内容,在此希望可以让网友有所了解,最后记得收藏本站。
拜占庭问题
拜占庭帝国即中世纪的土耳其,拥有巨大的财富,周围10个邻邦垂诞已久,但拜占庭高墙耸立,固若金汤,没有一个单独的邻邦能够成功入侵。任何单个邻邦入侵的都会失败,同时也有可能自身被其他9个邻邦入侵。拜占庭帝国防御能力如此之强,至少要有十个邻邦中的一半以上同时进攻,才有可能攻破。
然而,如果其中的一个或者几个邻邦本身答应好一起进攻,但实际过程出现背叛,那么入侵者可能都会被歼灭。
于是每一方都小心行事,不敢轻易相信邻国。这就是拜占庭将军问题。
在拜占庭问题中,最重要的point就是: 所有将军如何达成一致攻打拜占庭的共识 ,这当中,可能出现的情况举例如下:
用一个模型解释一下:
假设只有3个人,A、B、C,三人中如果其中一个是叛徒。当A发出进攻命令时,B如果是叛徒,他可能告诉C,他收到的是“撤退”的命令。这时C收到一个“进攻”,一个“撤退“,于是C被信息迷惑,而无所适从。
如果A是叛徒。他告诉B“进攻”,告诉C“撤退”。当C告诉B,他收到“撤退”命令时,B由于收到了司令“进攻”的命令,而无法与C保持一致。
正由于上述原因,在只有三个角色的系统中,只要有一个是叛徒,即叛徒数等于1/3,拜占庭问题便不可解。
可以看得出, 只要叛徒的数量大于或等于1/3,拜占庭问题不可解
从技术上理解, 拜占庭将军问题是分布式系统容错性问题 。加密货币建立在P2P网络之上,是典型的分布式系统,类比一下, 将军就是P2P网络中的节点,信使就是节点之间的通信,进攻还是撤退的决定就是需要达成的共识 。 如果某台独立的节点计算机拓机、掉线或攻击网络搞破坏,整个系统就要停止运行,那这样的系统将非常脆弱,所以容许部分节点出错或搞破坏而不影响整个系统运行是必要的 , 这就需要算法理论上的支撑,保证分布式系统在一定量的错误节点存在的情况下,仍然保持一致性和可用性 。
而且,拜占庭将军与两军问题不同,前者假定信差没有问题,只是将军出现了叛变等问题;后者研究信差的通信问题。
终极解决方案到了——
如果 10个将军中的几个同时发起消息,势必会造成系统的混乱,造成各说各的攻击时间方案,行动难以一致 。
谁都可以发起进攻的信息,但由谁来发出呢?中本聪巧妙地在个系统加入了 发送信息的成本 ,即:
它加入的 成本就是”工作量“ —— 节点必须完成一个计算工作才能向各城邦传播消息 ,当然,谁第一个完成工作,谁才能传播消息。(这也是 工作量证明机制的意义:以检验结果的方式证明你过去所做过了多少工作 )
这种加密技术——非对称加密,完全可以解决古代难以解决的签名问题:
中本聪在设计比特币时,它采用了一种工作量证明机制叫哈希现金,在一个交易块这要找到一个随机数,计算机只能用穷举法来找到这个随机数,可以说,能不能找到全靠运气,所以对于各个节点来说,这个世界上,只有随机才是真正的公平,实现随机的最好办法是使用数学,所有的将军在寻找共识的过程,借助了大家都认可的数学逻辑。
当然了, 凭什么要义务进行计算工作,那么肯定要有一个激励机制 :比特币的奖励机制是每打包一个块,目前是奖励25个比特币,而拜占庭将军问题的奖励机制可以是瓜分拜占庭获得的利益。
在这个分布式网络里:
每个将军都有一份实时与其他将军同步的消息账本 。
账本里有每个将军的签名都是可以验证身份的。 如果有哪些消息不一致,可以知道消息不一致的是哪些将军 。
尽管有消息不一致的,只要超过半数同意进攻,少数服从多数,共识达成(只要大多数是好人,那么就可以实现共识)。
区块链上的共识机制主要解决 由谁来构造区块 ,以及 如何维护区块链统一 的问题。
拜占庭容错问题需要解决的也同样是 谁来发起信息 ,如何 实现信息的统一同步 的问题。
注:区块链学习新人,若有不正确的地方,望指出
《币圈笔记》第377期:拜占庭问题
19年06月06日,祝六六大顺。
拜占庭将军问题区块链我们以前常看到以太坊拜占庭分叉,这个拜占庭又是什么意思呢拜占庭将军问题区块链?
拜占庭位于如今拜占庭将军问题区块链的土耳其的伊斯坦布尔,是东罗马帝国的首都。
由于当时拜占庭罗马帝国国土辽阔,为了达到防御目的,每个军队都离得很远,将军与将军之间只能靠信差传消息。在战争期间,拜占庭军队内所有将军必须达成一致共识,全体都决定认同有赢的机会才能去攻打敌人的阵营。
但是,在军队内有可能存有叛徒和敌军的间谍,他们可能影响将军们的决定、甚至某个将军自己就是叛徒。那么,在已知有成员谋反的情况下,其余忠诚的将军如何在不受叛徒的影响下达成一致的协议,拜占庭问题就此形成。
对区块链有认识的读者们可以看出来,拜占庭将军问题其实是一个协议问题:由于叛徒可以任意行动以达到以下目标:欺骗某些将军采取进攻行动拜占庭将军问题区块链;促成一个不是所有将军都同意的决定;或迷惑某些将军,使他们无法做出决定。如果叛徒达到了这些目的之一,则任何攻击行动的结果都是注定要失败的。
所谓拜占庭失效指一方向另一方发送消息,另一方没有收到,或者收到了错误的信息的情形。
这些错误被统称为“崩溃失效”和“发送与遗漏式失效”。当拜占庭失效发生时,系统可能会做出任何不可预料的反应拜占庭将军问题区块链!
以太坊以前那个拜占庭硬分叉,为什么叫拜占庭?笔者认为该阶段旨在用技术算法解决历史上的难题,以便区块链网络在受到干扰的情况下依然能够达成共识。人家说艺术来源于生活,那么这一灵感来源于真实历史事件,读史使人明智。
拜占庭问题与共识算法
“拜占庭将军问题”(Byzantine Generals Problem)是一个经典难题拜占庭将军问题区块链,这个难题是这样描述的拜占庭将军问题区块链:拜占庭是东罗马帝国的首都,它的军队分成多个师,每个师都由一个将军统领。这些将军通过信使进行交流,来达成一个共同作战方案,有些将军可能是叛徒,想故意破坏这个过程,这会造成那些忠诚的将军也无法达成一个统一的作战计划。这个难题在于如何让那些忠诚的将军在这样的情况下达成统一作战方案,而避免那些叛徒对作战方案的误导。
在点对点、分布式的区块链中,常常用拜占庭问题来比喻节点如何达成共识的问题。将军即对应着一个个节点,达成统一作战方案即达成共识,正确的打包与验证区块数据,防止恶意节点(叛徒将军)破坏区块链的运行。
顾名思义,就是能够解决拜占庭问题,使各个节点达成共识,解决共识问题的各种机制也被称为共识算法。在各种各样的共识算法中,又一直存在一个「不可能三角」的难题,这三角是指“安全性”、“去中心化”和“速度”,也就是说难以同时保证速度、安全性和去中心化程度,三者之间往往会顾此失彼。
现在各种共识算法算起来有好几十种,计算机界也一直处于研究阶段,并没有说哪种算法已经完美。
下面盘点一下讲解pBET和POW两种算法,以及它们的“安全性”、“去中心化”和“速度”如何。
实用拜占庭容错是一种较早的共识算法。pBFT的一个原则,就是少数服从多数。节点通过在相互传递有关决策的消息,谁的决策赞同的人数多,就采用谁的。所以在这个系统中,安全性随着诚实节点的数量而增加。诚实节点同意正确的决策,拒绝恶意节点的错误决策,只要恶意节点的数量少于总数的1/3,就能保证达成共识。
达成共识可以简化为四步:
pBFT 使用投票机制以循环方式选举领导节点。
领导者发起决策并将其广播给辅助节点。
所有节点,包括领导节点和辅助节点,都发送响应。
当 ⅔ + 1 个节点发送相同的响应时,该响应被认为是有效的。
如果领导者有恶意行为,它可以被大多数节点删除。
按少数服从多数的原则。那按理来说,只要恶意节点的数量少于1/2就够了啊,那么为什么PBFT算法的容错数量要满足恶意节点的数量少于总数的1/3呢拜占庭将军问题区块链?
因为 PBFT 算法的除了需要支持容错故障节点之外,还需要支持容错作恶节点。假设集群节点数为 N,有问题的节点为 f。有问题的节点中,可以既是故障节点,也可以是作恶节点,或者只是故障节点或者只是作恶节点。那么会产生以下两种极端情况:
(1)这f 个有问题节点既是故障节点,又是作恶节点,那么根据少数服从多数的原则,集群里正常节点只需要比f个节点再多一个节点,即 f+1 个节点,正确节点的数量就会比故障节点数量多,那么集群就能达成共识,即总节点数为f+(f+1)=n,也就是说这种情况支持的最大容错节点数量是 (n-1)/2。
(2)故障节点和作恶节点都是不同的节点。那么就会有 f 个作恶节点和 f 个故障节点,当发现节点是作恶节点后,会被集群排除在外,剩下 f 个故障节点,那么根据少数服从多数的原则,集群里正常节点只需要比f个节点再多一个节点,即 f+1 个节点,确节点的数量就会比故障节点数量多,那么集群就能达成共识。所以,所有类型的节点数量加起来就是 f+1 个正常节点,f个故障节点和f个作恶节点,即 3f+1=n。
结合上述两种情况,因此PBFT算法支持的最大容错节点数量是(n-1)/3,即少于1/3。
pBFT的优缺点
pBFT 系统不需要高计算资源或大量能源来运行。pBFT 在节点少的时候可以快速达成共识,因为所有节点都在不断地相互通信。一旦节点就决策达成一致,交易就完成了。
然而,pBFT的缺点也很明显:频繁的通信使它只能在节点数量有限的网络中正常工作。随着每个新节点加入网络,通信开销呈指数增长,响应所需的时间也随之增加。
pBFT 网络也容易受到女巫(Sybil)攻击,女巫就是恶意黑客制造的不同节点,黑客可以控制多个节点,使其超过1/3,那系统将无法达成正确的共识。
从不可能三角的角度来看,由此可见pBFT在节点少的时候速度快,但安全性差,去中心化低拜占庭将军问题区块链;节点多了又会导致速度很慢。
中本聪设计了POW共识机制来解决上面pBFT这个经典共识的可扩展性问题。
上面说到,pBFT通过不断广播然后计算节点的消息数,时间花费过长。POW是怎么做的:拜占庭将军问题区块链我不要计算节点数是否超过2/3,我直接选一个节点,按它的决策,其他节点全部同步它的决策。这样就省去在全节点通信然后计算节点数的费时操作。
那么,对于哪个节点来打包区块,那就很重要,万一是恶意节点呢?必须对打包的节点进行要求,哪个节点有权力进行打包呢?那就是解决复杂的数学问题,俗称挖kuang。节点必须花费大量算力和电费来争取某次打包区块的权力。这样的成本就限制了黑客的女巫攻击。
如果打包区块的权力真的被黑客抢到了,那可能会有什么问题?
(1)窃取冰糖橙
黑客能够窃取属于另一个用户,不受她控制的地址里的冰糖橙吗?答案是否定的。即使这一轮是由黑客打包区块链上的下一个区块,她也不可能窃取别人的比特币。这么做的话,黑客需要发起一笔有效的交易来转移比特币到自己的地址。这就要求黑客伪造比特币拥有者的签名,然而如果数字签名机制是安全的,她是无法办到的。只要背后的密码学基础是牢靠的,她就无法轻易窃取比特币。
(2)拒绝服务攻击
让我们来考虑另一种攻击。假设黑客不喜欢叫鲍勃的某个用户,黑客可以决定她不把鲍勃发起的任何交易放进她所提议的区块里。换言之,她拒绝提供服务给鲍勃。尽管这是黑客可以开展的有效的攻击,但幸好这不过是个小问题。如果鲍勃的交易没有被放进黑客所打包的下一个区块,鲍勃只要等到下一个诚实节点发起区块的时候,他的交易记录就会被放进这个区块里。所以这其实也不算是一个有效的攻击。
也就是说,黑客花费重大成本取得的打包,但并不能起到有效的攻击。由于对恶意节点进行惩罚、对诚实节点进行奖励这样的机制下,共识就达成了。
尽管有所改进,POW也引入了其他问题。工作量证明需要所有节点解决复杂的数学问题,这会消耗大量的能源,就是大家所熟知的挖kuang耗费电力。并且解决复杂的数学问题的时间也要求不短,10分钟左右。
从不可能三角的角度来看,POW去中心化高,安全性高,但速度还是慢,但至少已经不会像pBFT那样由于节点多导致花费时间呈指数增长。
共识算法各式各样,冰糖橙的POW并不是真正去解决分布式共识问题,它不能完美的套用到其他场景。但它在货币系统的这个特定场景下解决了冰糖橙的共识问题。POW在冰糖橙里运行得非常好。
区块链的技术原理是什么?
区块链技术涉及的关键点包括:去中心化(Decentralized)、去信任(Trustless)、集体维护(Collectivelymaintain)、可靠数据库(ReliableDatabase)、时间戳(Timestamp)、非对称加密(AsymmetricCryptography)等。
区块链技术重新定义了网络中信用的生成方式:在系统中,参与者无需了解其他人的背景资料,也不需要借助第三方机构的担保或保证,区块链技术保障了系统对价值转移的活动进行记录、传输、存储,其最后的结果一定是可信的。
扩展资料
区块链技术原理的来源可归纳为一个数学问题:拜占庭将军问题。拜占庭将军问题延伸到互联网生活中来,其内涵可概括为:在互联网大背景下,当需要与不熟悉的对手方进行价值交换活动时,人们如何才能防止不会被其中的恶意破坏者欺骗、迷惑从而做出错误的决策。
进一步将拜占庭将军问题延伸到技术领域中来,其内涵可概括为:在缺少可信任的中央节点和可信任的通道的情况下,分布在网络中的各个节点应如何达成共识。区块链技术解决了闻名已久的拜占庭将军问题——它提供了一种无需信任单个节点、还能创建共识网络的方法。
参考资料来源:百度百科-区块链
拜占庭将军很忙—《区块链思维》第21块
无论在链圈,还是在币圈混,经常听到一个名词“拜占庭将军问题”。
到底拜占庭是啥,拜占庭将军怎么啦,到处都被提及,这位将军好忙啊!
先说拜占庭这个地方。很久很久以前的欧洲,建立在比中世纪还古老的时期,历史上就是东罗马帝国,跨越了千年的历史期盼。
扯远了,回到正题,什么是拜占庭将军问题。
拜占庭这个地方异常坚固,同时被十个独立邻邦环伺,分别有一位将军,单独攻城必败,只有一半以上的将军同时攻打才能破城。
十位将军为了协调一致,在那个古老的时代,累死传令兵,要么飞鸽传书(那时的欧洲比中国落后,好像没有这个高速通信手段)。十位将军相互通信一次就需要90次传信,每位将军都有各自的攻城计划,要想达成统一就需要往复传递不知道多少次。
我们可以假设一个场景,一个桌子上坐着十位将军,每个人各自说着自己的想法,同时听其他九位的说法,但是信息的传递不是实时的,有快有慢,有早有晚。想明白了吗?也就是说,这十位将军如果想达成一致,理论上有可能,实际上他们的有生之年都实现不了,难怪拜占庭帝国经历了千年也没有被这十位将军攻破。
中本聪这个神人,利用互联网信息传递的及时性特点,引入时间戳可以明确知道“谁先说、谁后说”的特性,创造性地加入挖矿机制(就是用计算机算随机数满足一定难度才算成功)比拼各位将军的智商来决定谁做本次进攻的统帅,使用非对称加密保证信息传输的安全性等等手段融合到比特币中,用实例说明自己破解了这个历史难题“拜占庭将军问题”。从而向世人证明解决60亿人口的互信问题是有去中心化解决方案地。
币圈和链圈的朋友很焦虑的另一个关键问题就是:这个圈子概念太TM多。除了这个“拜占庭将军问题”,还有一个“拜占庭容错”,这是什么鬼?这两个是一样的吗?这两个是故意有一个被写错了吗?还是说我的智商税没交够?其实,你都说对了。
“拜占庭将军问题”假设所有十个将军都是好的,都想攻破拜占庭,只是达成共识很难,比特币提供了好人达成共识的方案。
“拜占庭容错”是说十个将军可以很好地达成共识。但是,如果其中出了坏人,怎么解决?
如果十个将军中出现了坏人(叫叛徒也行),进攻计划是否会永远无法达成共识呢?
“拜占庭容错”告诉大家,是可以达成地,并且,还能找出这些“叛徒”是谁。只是,10个将军中叛徒的数量不能超过3个,超出了就无法“容错”,也找不出这些叛徒是谁。对应的公式就是:3n+1。其中3n+1是将军总数(区块链的账本/矿机总数),n是能够“容错”的“叛徒”(恶意记错账)总数。
对于十个将军来说,最多容忍三个叛徒,多了就彻底没戏啦。为了比特币的容错能力越来越强,就需要更多的节点,这样才能容忍并找出更多的叛徒。懂了吧。
小结一下:拜占庭将军问题是假设都是好人前提下如何达成共识,拜占庭容错就是全网最多能够容忍多少叛徒并且能找出他们。
请交智商税到如下地址:
国税BTC到Kcash:179L7takj4GvWJk4WZfDivdgPyg5Gc5BRJ
地税ETH及各种原生Token到 Imtoken:0x9bBAa867101ecdd5a7d46115f268551092384b7a
不交税的,祝你做“韭菜”一切顺利 :D
区块链笔记——PBFT
PBFT是实用拜占庭容错的简称,是解决拜占庭将军问题的一种方案。比起最开始的BFT算法,PBFT额外要求网络封闭,即节点数目确定并提前互通,但将复杂度从指数级降低到多项式级,使得BFT系列算法真正具有可行性。
与POW、POS等大家耳熟能详的共识不同,BFT系列的共识不需要“Proof”,亦即不需要节点投入算力或其他资源来确权,因此不需要代币激励便可完成共识。缺点是原始的BFT效率太低,只能存在于理论而无法应用。而改进的PBFT虽然效率大大提高,却对节点数量和状态提出了要求,导致合格的记帐节点太少,并且也只能维持在少数,过多的节点会拖慢网络速度。因此PBFT更多是用在联盟链和私链上。公链也有应用,例如NEO,便是采用了PBFT算法。
拜占庭将军问题的实质是在恶劣的通讯环境中,如何使各参与方达成一致意见。POW和POS等共识要求参与方投入成本,争夺唯一的发言权。在某一段时间内只有唯一的发言人,自然只会有一个意见,从而达成共识。PBFT采取不同的思路,要求各参与方相互发送及验证彼此的信息,最终采用多数原则达成共识。
PBFT能够以一种低成本的方式实现节点间共识,其理念其实相当贴近我们的生活习惯。例如在老师布置作业后,同学们总要互相问问确认一下,才放心地把今天的作业记到本子上。当然实现上还有很多细节,保证各节点的平等关系。在节点数目不多的时候,节点之间实现相互通信的成本并不高,节点之间可以快速发送确认。但节点数目增长却会带来整体性能的下降。PBFT可以容忍的坏节点数量不多于总数的三分之一,如果节点损坏率比较固定,提高总节点数量虽然能使系统获得更好的冗余,却会大大增加通讯量,造成效率下降。加上PBFT没有激励机制,其适合联盟链和私链场景。作为公链不可避免地节点数量太少,分布过分集中,例如NEO只有七个节点。
PBFT要求坏节点数量f=(n-1)/3,这里n是总节点数。只要f满足这个条件,共识总是可以达成。为什么f要满足这个条件?简单来说,假设网络中存在恶意节点联盟,其控制了数量为f的节点,这些节点可以故意发布错误的信息。此时网络中正常节点数量为n-f个。将这n-f个节点分为两部分,各自包含一部分节点。对于任一部分正常节点来说,只要恶意节点数f大于自身节点数,同时大于剩余的正常节点数,这部分正常节点便会与恶意节点联盟达成共识。此时只要恶意节点联盟先后向两部分正常节点发送不同的共识信息,便可造成网络分叉。因此要保证网络运行,对于每一部分正常节点来说,网络中恶意节点数量不能同时大于自身节点数和网络剩余正常节点数。代入计算便得到f=(n-1)/3。
写到这里,本文关于拜占庭将军问题区块链和区块链 拜占庭将军问题图解的介绍到此为止了,如果能碰巧解决你现在面临的问题,如果你还想更加了解这方面的信息,记得收藏关注本站。
标签: #拜占庭将军问题区块链
评论列表