首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

【共识算法(4)】拜占庭容错算法-“PBFT”

算法是继raft算法之后的再一次深入实践的共识算法,与raft、paxo一样都可以看作是分布式一致性算法。...Practical Byzantine Fault Tolerance:PBFT,是联盟币的共识算法的基础。实现了在有限个节点的情况下的拜占庭问题,有3f+1的容错性,并同时保证一定的性能。...容错率 raft算法的的容错只支持容错故障节点,不支持容错作恶节点,所以容错率高,过半节点正常即可 PBFT算法可以容忍小于1/3个无效或者恶意节点 作恶节点:除了可以故意对集群的其它节点的请求无响应之外...性能尚可 PBFT 算法通信复杂度 o(n^2),因为系统在尝试达成状态共识时,涉及到N个几点都需要广播N-1个其它节点。...,整个网络可容纳故障节点和错误节点,且解决拜占庭将军问题。

1.2K10

拜占庭将军问题_拜占庭为什么叫拜占庭

,所以这里对拜占庭将军问题进行了解。 拜占庭将军问题 拜占庭将军问题(Byzantine failures),是由莱斯利·兰伯特提出的点对点通信中的基本问题。...这些算法通常以其弹性t作为特征,t表示算法可以应付的错误进程数。 很多经典算法问题只有在n ≥ 3t+1时才有解,如拜占庭将军问题,其中n是系统中进程的总数。...失效 所谓拜占庭失效指一方向另一方发送消息,另一方没有收到,或者收到了错误的信息的情形。 在容错的分布式计算中,拜占庭失效可以是分布式系统中算法执行过程中的任意一个错误。...这些任意的失效可以粗略地分成以下几类: 1.进行算法的另一步时失效,即崩溃失效; 2.无法正确执行算法的一个步骤; 3.执行了任意一个非算法指定的步骤。...解决算法 拜占庭问题的最初描述是:n 个将军被分隔在不同的地方,忠诚的将军希望通过某种协议达成某个命令的一致(比如一起进攻或者一起后退)。

40520

拜占庭将军问题和 Raft 共识算法讲解

Tech 导读 在分布式系统中, 什么是拜占庭将军问题?产生的场景和解决方案是什么?什么是 Raft 共识算法?Raft 算法是如何解决拜占庭将军问题的?其核心原理和算法逻辑是什么?...1.1 拜占庭容错 在早期的解决方案中,一种是“拜占庭容错”,它遵循“少数服从多数”的共识机制,即使出现了错误或伪造的信息,只要有问题的将军数量不到 1/3,仍可以达到“拜占庭容错”,使整个系统便可以正常运作...1.2 拜占庭算法 拜占庭算法是一种共识算法,确定共识的原则,各个节点通过这个共识原则既可以保证一致性,又能保证基本的分区容错性。...【Raft 算法解决的是简化版的拜占庭将军问题,即在不考虑数据丢失、篡改的情况下的拜占庭将军问题。】...3.1 Paxos 算法 早期的共识算法,由拜占庭将军问题的提出者 Leslie Lamport 所发明。谷歌的分布式锁服务 Chubby 就是以 Paxos 算法为基础。

22620

拜占庭将军问题看:区块链「 共识算法

这就是著名的「拜占庭将军问题」。 ? 拜占庭将军问题就是要解决去中心化的共识机制问题,而这个共识问题也是比特币中区块链网络所需要解决的。...因为拜占庭将军们是分散的,没有一个中心的领导机构,因此他们在进攻敌方的时候必须事先对进攻地点和时间进行协商,达成共识。...那么在有限的时间内,要解决提案(进攻方案)的一致性且获取大部分将军的认可,才能解决拜占庭将军问题。 在区块链网络中也是类似情况。...一、什么是共识算法? 共识算法 顾名思义,就是通过算法手段让各参与方对某个确定的结果达成一致的方案。...共识算法比较多,有 PBFT(Practical Byzantine Fault Tolerance,实用拜占庭容错算法)、PoW(Proof of Work,工作量证明)、PoS(Proof of Stake

99730

拜占庭将军问题

而大多数人觉得它难理解,除了因为分布式共识问题比较复杂之外,还与莱斯利·兰伯特(Leslie Lamport)的讲述方式有关,他在一些细节上(比如,口信消息型拜占庭问题之解的算法过程上)没有说清楚。...2.2.2 算法原理 这个解决办法,其实是兰伯特在论文《The Byzantine Generals Problem》中提到的口信消息型拜占庭问题之解:如果叛将人数为 m,将军人数不能少于 3m +...不过,这个算法虽然能解决拜占庭将军问题,但它有一个限制:如果叛将人数为 m,那么将军总人数必须不小于 3m + 1。...算法-PBFT的原理 签名消息的拜占庭问题之解,也是需要进行 m+1 轮(其中 m 为叛将数,所以你看,只有楚、燕是叛变的,那么就进行了三轮协商)。...也就是,这个算法比较理论化。 参考 《分布式协议与算法实战》

17320

拜占庭容错机制

简介 Client会发送一系列请求给各个replicas节点来执行相应的操作,BFT算法保证所有正常的replicas节点执行相同序列的操作。...当Client收到f+1个replicas节点返回的结果时,如果这些结果都一样,因为BFT算法确保了最多有f个replicas出现问题,所以至少有一个replicas是正确的,那么Client收到的这些结果都是正确的...但是state machine replication的难点在于确保正常replicas节点都以相同的序列执行同样的一些请求,尤其是如何来面对拜占庭故障。...在共识算法保证下每个replica完成对该请求的执行后直接将回复返回给client: ⟨REPLY,v,t,c,i,r⟩ v是当前的view序号,t就是对应请求的时间戳,i是replica节点的编号,r

84020

什么是拜占庭将军问题

接触区块链的同学,多少都听说过拜占庭将军问题,经常看到或听到某某区块链使用某某算法解决了拜占庭将军问题,那么究竟什么是拜占庭将军问题呢什么是拜占庭将军问题 也被称为“拜占庭容错”、“拜占庭将军问题”。...这个例子大意是这样的: 拜占庭帝国想要进攻一个强大的敌人,为此派出了10支军队去包围这个敌人。这个敌人虽不比拜占庭帝国,但也足以抵御5支常规拜占庭军队的同时袭击。...中本聪的解决方案 在出现比特币之前,解决分布式系统一致性问题主要是Lamport提出的Paxos算法或其衍生算法。...Paxos类算法仅适用于中心化的分布式系统,这样的系统的没有不诚实的节点(不会发送虚假错误消息,但允许出现网络不通或宕机出现的消息延迟)。...共识算法的核心就是解决拜占庭将军问题(分布式网络一致性问题)。

73840

关于拜占庭问题及其分析

关于拜占庭问题及其分析 故事起源 拜占庭问题是容错计算中的一个老问题,有莱斯特兰伯特等人在1982年提出。...采用口头协议算法,若叛徒数少于1/3时,则拜占庭将军问题可以很容易解决。但是口头协议算法存在着明显的缺点,那就是消息不能溯源。 为解决该问题,提出了书面协议算法。...该算法要求签名,不可伪造,一旦被篡改即可发现,同时任何人都可以验证签名的可靠性。 就算是书面协议算法,也不能完全解决拜占庭将军问题,因为该算法没有考虑信息传输延迟、签名体系难以实现的问题。...PBFT(拜占庭容错算法) PBFT是一种状态机副本复制算法,即服务作为状态机进行建模,状态机在分布式系统的不同节点进行副本复制。每个状态机的副本都保存了服务的状态,同时也实现了服务的操作。...image DBFT:小蚁区块链(delegated BFT,授权拜占庭容错机制) 用权益来选出记账人,然后记账人之间通过拜占庭容错算法 达成共识。

92030

白话讲解,拜占庭将军问题

作为服务端开发的同学,你可能听说过Paxos、Raft这类分布式一致性算法,也在工作中使用过ZooKeeper、etcd等工具来解决一致性问题。...但你可能不知道,这些算法和工具解决的并不是一致性中最难的问题,要讨论这个最难的问题,这就要追溯到 Leslie Lamport 1982 年发表的著名论文 《拜占庭将军问题》(The Byzantine...image.png 1、拜占庭将军问题是什么? 拜占庭将军问题,其实是一个共识问题。...在这种状态下,拜占庭的将军们能否找到一种分布式的协议来让他们能够远程协商,从而赢取战斗? 以上,这就是著名的拜占庭将军问题。...叛徒的目的是破坏忠诚将军间一致性的达成,让拜占庭的军队遭受损失。

1.8K30

拜占庭将军:背后的数学证明

二来是拜占庭将军问题的证明过程利用到了算法领域中十分常见的解题思路,通过学习证明过程,能让你获得触类旁通的能力,之后可以解决更多的问题。...具体来说,在这一讲的证明过程中,将使用到两种方法:反证法和数学归纳法,它们是普通算法推导中最常用的方法。熟练掌握它们,你将具备自己创造算法的能力。...我曾经在一次面试中遇到一道没见过的题,就是用这两种方法现场编了一个面试官都没见过的算法。当面试官质疑我的算法正确性时,我就用反证法和数学归纳当场证明了一下,直接把面试官给征服了。...总结 在这一讲里,我们使用反证法和数学归纳法,对拜占庭将军问题进行了证明。在证明的推导过程中,你也应该明白了如何根据拜占庭将军问题去解决算法问题。...关于拜占庭将军的另一个解决算法,你可以参考 Practical Byzantine Fault Tolerance 这篇论文,其中介绍了一个多项式复杂度的解决方案。

91630

漫画:什么是拜占庭将军问题?

————— 第二天 ————— ———————————— 什么是拜占庭将军问题? 在很久很久以前,拜占庭是东罗马帝国的首都。...在打仗的时候,拜占庭军队内所有将军必需达成一致的共识,才能更好地赢得胜利。但是,在军队内有可能存有叛徒,扰乱将军们的决定。...这个问题被称为拜占庭将军问题。 什么是 Raft 算法? Raft 算法是一种简单易懂的共识算法。它依靠 状态机 和 主从同步 的方式,在各个节点之间实现数据的一致性。...共识算法的应用场景? Paxos 算法: 早期的共识算法,由拜占庭将军问题的提出者 Leslie Lamport 所发明。谷歌的分布式锁服务 Chubby 就是以 Paxos 算法为基础。...ZAB 算法: Zookeeper 所使用的一致性算法,在流程上和 Raft 算法比较接近。 PBFT 算法: 区块链技术所使用的共识算法之一,适用于私有链的共识。 —————END—————

32810

【区块链小问题科普】-“拜占庭将军”

而真实情况是节点可能会作恶(伪造消息),在这样的场景下,如何在众多节点中达成一致性问题,这是拜占庭将军问题所要讨论的。...拜占庭将军问题,通过比喻的方式来描述分布式一致性中一类最难的问题: 假设将军总数3,叛徒将军数1....Leslie Lamport证明,当叛徒不超过1/3时,存在有效的算法,不论叛徒如何折腾,忠诚的将军们总能达成共识。当叛徒超过三分之一时,则无法保证一定能达成一致性。...所以在前几期讲PBFT的时候说道,假设节点总数为N,f为拜占庭错误节点,N满足:N=3f+1。 也是为了满足这一特性。 共识算法的核心就是解决拜占庭将军问题(分布式网络一致性问题)。...所以在PAXO改进了以后,raft不能解决拜占庭将军问题,结合PBFT,设计一种基于PBFT的raft,解决拜占庭容错还能容纳故障节点。这是一个很好方向。

42320

区块链的起源—拜占庭将军问题

01— 拜占庭将军问题的起源 拜占庭位于如今的土耳其的伊斯坦布尔,是东罗马帝国的首都。由于当时拜占庭罗马帝国国土辽阔,为了防御目的,因此每个军队都分隔很远,将军与将军之间只能靠信差传消息。...这时候,在已知有成员谋反的情况下,其余忠诚的将军在不受叛徒的影响下如何达成一致的协议,拜占庭问题就此形成。...通俗点说就是如果土耳其的各个小岛的将军一起去攻打罗马,11位拜占庭将军去打仗, 他们各自有权力观测敌情并作出判断, 进攻或撤退, 那么怎么让他们只用传令兵达成一致呢?...但是如果拜占庭帝国可以监控微信呢?这时候我们就需要一个去中心化的信任系统——区块链。 中本聪在区块链中加入了时间戳,和非对称加密算法使区块链具有签名属性和不可篡改属性。很好的解决了拜占庭将军问题。...但是,只要大多数人是好人,就可能打败拜占庭帝国。 拜占庭将军问题,是由莱斯利·兰伯特1982年提出的点对点通信中的基本问题。伟大的创新一般都是站在巨人的肩膀上进行的。

1K70

一文读懂拜占庭将军问题

论文《The Byzantine Generals Problem 》同时提供了两种解决拜占庭将军问题的算法: 口信消息型解决方案(A solution with oral message); 签名消息型解决方案...事实上,拜占庭将军问题是分布式系统领域最复杂的容错模型, 它描述了如何在存在恶意行为(如消息篡改或伪造)的情况下使分布式系统达成一致。是我们理解分布式一致性协议和算法的重要基础。 ?...如上文所述,拜占庭将军问题提供了对分布式共识问题的一种情景化描述,是分布式系统领域最复杂的模型。此外, 它也为我们理解和分类现有的众多分布式一致性协议和算法提供了框架。...现有的分布式一致性协议和算法主要可分为两类: 一类是故障容错算法(Crash Fault Tolerance, CFT), 即非拜占庭容错算法,解决的是分布式系统中存在故障,但不存在恶意攻击的场景下的共识问题...属于此类的常见算法有Paxos算法、Raft算法,、ZAB协议等。 一类是拜占庭容错算法,可以解决分布式系统中既存在故障,又存在恶意攻击场景下的共识问题。

2.7K11

区块链学堂——“遇见”拜占庭将军

每一个想理解和掌握区块链技术原理的人也无法“逃过”拜占庭将军的“手掌心”,网络上关于拜占庭将军问题的讨论、描述、讲解多如牛毛,很多区块链大神,用了论文级别最科学,最严谨的算法、公式来推理,讲解,试图让人们更透彻的理解区块链技术是如何迎刃而解拜占庭将军问题的核心...抛开历史故事本身,拜占庭将军问题引申出三个关键问题: 1、什么是拜占庭将军问题? 2、拜占庭将军问题实质是什么? 3、如何解决拜占庭将军问题? 什么是拜占庭将军问题? 追根溯源,从历史说起。...如何解决拜占庭将军问题?...传说中的中本聪)设计了一套算法,让将军们在接到上一位将军的信息之后,加上自己的签名再转发给除自己之外的其他将军。...天才中本聪设计了一个算法——给每一位将军出一道难度很高的题,谁先计算出来正确结果(工作量证明),谁才能传播信息。 当某位将军发出确认信息之后,收到消息的将军必须签名盖章,以验证自己的身份。

1.1K80
领券