当前位置:首页 » 公司股票 » spacex公司股票拜占庭将军算法
扩展阅读
买深交所st的股票 2025-08-06 03:27:27
根据涨速买股票 2025-08-06 02:56:12
疫情期间买美国航空股票 2025-08-06 02:53:25

spacex公司股票拜占庭将军算法

发布时间: 2022-01-14 13:32:41

『壹』 拜占庭将军问题 口头协议算法是怎么推导出来的

我也是额,老是卡,而且不止第一集,后面两集也是,放一会时间就会卡一下,就像定格了一样

『贰』 区块链共识机制,拜占庭将军问题是什么

POW完全依靠用经济激励的方式来大量增加记账参与者, 从而稀释作恶节点的比例, 或者说大幅增加作恶的成本, 做假账者需要控制或者贿赂更多的节点。这是一种简单粗暴的共识机制, 在算法上没有优化过,但是又非常可行, 现在体量最大的两条区块链, 比特币和以太坊都是用POW挖矿的方式。
POW虽然不是最优,但是现在最最切实可行的共识算法。例如比特币、莱特币、DECENT都是采用的POW证明机制。

『叁』 拜占庭将军问题的失效

所谓拜占庭失效指一方向另一方发送消息,另一方没有收到,发送方也无法确认消息确实丢失的情形。
在容错的分布式计算中,拜占庭失效可以是分布式系统中算法执行过程中的任意一个错误。这些错误被统称为“崩溃失效”和“发送与遗漏式失效”。当拜占庭失效发生时,系统可能会做出任何不可预料的反应。
这些任意的失效可以粗略地分成以下几类:
进行算法的另一步时失效,即崩溃失效;
无法正确执行算法的一个步骤;
执行了任意一个非算法指定的步骤
各个步骤由各进程执行,算法就是由这些进程执行的。一个错误的进程是在某个点出现了上述情况的进程。没有出现错误的进程是正确的进程。

『肆』 如何理解拜占庭将军问题

-----------------[简单理解]-----------------
因为Lamport是分布式系统祖师爷级的人物,所以我就从分布式系统的角度来说。如果要保证分布式系统一致性和可用性,就必须处理错误节点,防止系统出现用户可以观察到的错误。拜占庭将军问题在我看来是提出了一个错误模型。即错误节点可以做任意事情(不受protocol限制),比如不响应、发送错误信息、对不同节点发送不同决定、不同错误节点联合起来干坏事等等。总之就是说,没有节点会出现比这更严重的错误。很显然,拜占庭错误是overly pessimistic的模型,因为这种错误实际环境中比较少见。那么为什么要研究这个模型呢?其中最简单的一个原因是,如果某个一致性算法能够保证在系统出现f个拜占庭错误时保持系统一致,那么这个算法也就能够保证在出现f个任意其他错误的时候也保持系统一致。错误模型有上限,肯定也就有一个下限(overly optimistic,没有比它还要弱的模型)。这个下限就是‘fail-stop’模型。这个模型的假设是:当一个节点出错,这个节点会停止运行,并且其他所有节点都知道这个节点发生了错误。用同样的逻辑,如果某个一致性算法不能保证在系统出现f个错误的时候保持一致,那么这个算法也就没法处理其他f个任意其他问题。应用这些错误模型,可以对不同算法进行比较,也可以对具体算法的cost进行讨论。

-----------------[关于算法]-----------------
第一个提出解决拜占庭将军问题算法的,是Lamport于1980年发表的 Reaching agreement in the presence of faults [http://research.microsoft.com/en-us/um/people/lamport/pubs/reaching.pdf]。这篇文章描述了当出现拜占庭错误的节点数(f)为1时的算法。上面匿名用户贴的链接是Lamport与1982年发表的文章,其中描述了第一个能够处理f≥1的算法。对这个问题的下一个进展是在1999年,是由Barbara Liskov(三位女性图灵奖获得者之一)提出。但是,具体列出这个进展之前,需要提一下拜占庭将军问题和FLP定理之间的关系。除了错误模型,系统一致性的另一个重要方面是讨论在不同系统假设(通信异步/同步,任务完成时间有没有规定上限)下达成一致性的可能性和相应算法/协议。由于FLP(Impossibility of Distributed Consensus with One Faulty Process)决定了在异步+无响应上限的情况下不存在能够mask一个节点崩溃(强于fail-stop,节点崩溃,其他节点不知情)的有效算法。所以解决拜占庭问题的算法都会有同步假设(或者同步保证safety,或者同步保证liveness)。

『伍』 拜占庭将军问题的起源

拜占庭位于如今的土耳其的伊斯坦布尔,是东罗马帝国的首都。由于当时拜占庭罗马帝国国土辽阔,为了防御目的,因此每个军队都分隔很远,将军与将军之间只能靠信差传消息。 在战争的时候,拜占庭军队内所有将军和副官必需达成一致的共识,决定是否有赢的机会才去攻打敌人的阵营。但是,在军队内有可能存有叛徒和敌军的间谍,左右将军们的决定又扰乱整体军队的秩序。在进行共识时,结果并不代表大多数人的意见。这时候,在已知有成员谋反的情况下,其余忠诚的将军在不受叛徒的影响下如何达成一致的协议,拜占庭问题就此形成。

『陆』 如何理解拜占庭将军问题

拜占庭将军问题,其实看似一个军事问题,实质上是一个政治问题,这也算是涉及到拜占庭的地缘政治问题吧,在国际上也算是热点问题。

『柒』 这是一个用甲乙丙丁表示的共识问题,不存在拜占庭将军问题

A: Test...

『捌』 什么协议是加密加拜占庭将军

是由莱斯利·兰伯特提出的点对点通信中的基本问题。含义是在存在消息丢失的不可靠信道上试图通过消息传递的方式达到一致性是不可能的。因此对一致性的研究一般假设信道是可靠的,或不存在本问题。
拜占庭位于如今的土耳其的伊斯坦布尔,是东罗马帝国的首都。由于当时拜占庭罗马帝国国土辽阔,为了防御目的,因此每个军队都分隔很远,将军与将军之间只能靠信差传消息。 在战争的时候,拜占庭军队内所有将军和副官必需达成一致的共识,决定是否有赢的机会才去攻打敌人的阵营。

『玖』 拜占庭将军问题的解决算法

拜占庭问题的最初描述是:n 个将军被分隔在不同的地方,忠诚的将军希望通过某种协议达成某个命令的一致(比如一起进攻或者一起后退)。但其中一些背叛的将军会通过发送错误的消息阻挠忠诚的将军达成命令上的一致。Lamport 证明了在将军总数大于3m ,背叛者为m 或者更少时,忠诚的将军可以达成命令上的一致。
为了保证上面的需求,必须满足下面两个条件:
1. 每两个忠诚的将军必须收到相同的值 v(i)(v(i)是第i 个将军的命令)
2. 如果第i 个将军是忠诚的,那么他发送的命令和每个忠诚将军收到的v(i)相同
为了简化以上模型,我们使用一个将军发送命令给多个副官的形式来证明,发送命令的将军称为发令者,接收命令的将军为副官,那么上面的两个条件可以表述为:
IC1. 所有忠诚的副官遵守相同的命令
IC2. 如果发出命令的将军是忠诚的,那么所有忠诚的副官遵守司令(发出命令的将军)的命令
特别提示:发送命令的每次只有一个将军,将其命令发送给n-1 个副官。m 代表叛国者的个数,因为将军总数为n,所以副官总数为n-1 个。IC2 中副官遵守实际上是指忠诚的将军能够正确收到忠诚将军的命令消息。 通过口头消息传递达到一致,如果有m 个叛国将军,则将军们的总数必须为3m+1 个以上。下面是口头消息传递过程中默认的一些条件:
A1. 每个被发送的消息都能够被正确的投递
A2. 信息接收者知道是谁发送的消息
A3. 能够知道缺少的消息
A1 和A2 假设了两个将军之间通信没有干扰,既不会有背叛者阻碍消息的发送(截断)也不会有背叛者伪造消息的情况(伪造)。即是每个将军都可以无误地将自己的消息发送给其他每个将军。(下一节中可以不需要这个必要条件)
我们定义口头消息算法OM(m) 。对于所有的非负整数m ,每个发令者通过OM(M) 算法发送命令给n-1 个副官。下面将说明OM(m) 算法在最多有m 个背叛者且总将军数为3m+1 或者更多的情况下可以解决拜占庭将军问题。(考虑到网络应用实际环境,原文使用了收到值代替收到命令,本文不做修改)
算法定义一个函数:majority(com1,com2,…,comn)等于多数派命令。
OM(0)算法
(1)发令者将他的命令发送给每个副官。
(2)每个副官采用他从发令者得到的命令,或者默认使用撤退命令,如果没有收到任何命令。
OM(m)算法
(1)发令者将他的命令发送给每个副官。
(2)对于每个i ,vi 是每个副官i 从发令者收到的命令,如果没有收到命令则为撤退命令。副官i 在OM(m-1) 中作为发令者将vi 发送给另外n-2 个副官。
(3)对于每个i,并且j eq i,vj 是副官i 从第(2)步中的副官j 发送过来的命令(使用OM(m-1)算法),如果没有收到第(2)步中的副官j 的命令则默认为撤退命令。最后副官i 使用majority(v1,…,vn-1)得到命令。
接下来实际的考虑一个n=4,m=1 的情况:
1. 当副官D是背叛者
第一步发令者A执行算法OM(1)将自己的命令发送给三个副官B,C,D,三个副官都正确地收到了命令。
第二步每个收到命令的副官都作为发令者执行算法OM(0),将自己收到的命令转发给其余副官,因为副官D是背叛者,所以他给副官B和C传递的消息可能会是假消息。副官B和C分别根据majority 函数来决定命令。
这样背叛的副官D 同理也干扰不了发令者的决定。下面看看如果发令者是背叛者。
2. 发令者是背叛者,其余副官为忠诚的
第一步:发令者A向副官B,C,D发送了不同的命令,实际情况中是一个攻击者向不同方发送了不一致的值(例如,0或1)企图扰乱副官做出一致决定。
第二步:副官收到命令后,摇身一变为发令者执行OM(0) 向所有的副官发送命令,每个副官通过多数表决算法仍可以达成一致的命令。
文章接着就证明了OM(m)算法对任意m 都是可以满足,首先引入一个引理(归纳法证明):
引理1:对于任意m 和k ,如果有超过2k+m 个将军和最多k 个背叛者,那么算法OM(m) 满足IC2 (回顾下IC2 指的是,如果将军是忠诚的,所有的副官遵守将军命令)。
证明:当m=0 的时候,OM(0) 在将军是忠诚的时候满足IC2。当m>0 时,首先将军将命令传递给 n-1 个副官,然后每个副官对n-1 个将军执行OM(m-1) 算法。因为假设了n>2k+m(引理中有将军数大于2k+m),所以 n-1 > 2k+(m-1) >= 2k(即每一轮中副官总数不小于背叛者的两倍),这样每轮OM(m-k) 算法中忠诚的副官收到的命令都是majority(v1,v2,...,v(n-1)),其中忠诚副官发送的命令大于或者等于一半。
接着解决拜占庭将军问题。
定理1:对于任意m,如果有超过3m 个将军和最多m 个背叛者,算法OM(m) 满足条件IC1 和条件IC2。
证明:通过m 的归纳法证明,我们通过假设OM(m-1) 成立来证明OM(m) m>0。首先考虑发送命令的将军是忠诚的。那么将引理中k 设为m 则OM(m) 满足IC2 ,IC1 在发令将军是忠诚的情况下也满足。
接着考虑m 个背叛者中有一个是发令者,那最多就只有m-1 个副官是背叛者了,又因为有3m 个将军,所以副官的总数超过3m-1,且有3m-1>3(m-1) 。因此通过归纳法假设 OM(m-1) 满足IC1 和IC2(最多3(m-1) 个将军和最多m-1 个背叛者)。那么任意两个忠诚的副官j 在OM(m-1) 获得相同命令vj,那么在OM(m) 算法中每个忠诚的副官都会收到(v1,v2,...,v(n-1)),可知满足条件IC1 和IC2。
看完这段证明其实我也挺糊涂的~~~~,画了张图来看看lamport 是怎么证明的:
签名消息在除了满足口头消息A1-A3 三点要求外还应该满足下面A4:
A4 (a)签名不可被伪造,一旦被篡改即可发现
(b)任何人都可以验证将军签名的可靠性
下面定义一个类似于上面majority() 函数的choice() 来决定副官的选择:1.当集合V 只包含了一个元素v ,那么choice(V)=v ;2. choice(o)=RETREAT。
有了上面A4 和choice() 基础我们给出SM(m) 方法:
SM(m) 算法
初始化Vi=空集合
(1)将军签署命令并发给每个副官
(2)对于每个副官i :
(A)如果副官i 从发令者收到v:0 的消息,且还没有收到其他命令序列,那么:
(i)使Vi 为{v}
(ii)发送v:0:i 给其他所有副官
(B)如果副官i 收到消息v:0:j1:...:jk 且v 不在集合Vi 中则
(i)添加v 到Vi
(ii)如果k<m ,那么发送v:0:j1:...:jk:i 给每个不在j1,..,jk 中的副官
(3)对于每个副官i ,当不再收到消息,则遵守命令choive(Vi)
算法的几点说明:
算法第三步并没有说明副官如何判断没有新的消息,可以通过两个解决方法:一是要求每个副官收到消息后要么签名转发该消息,要么发送一个通知他将不发送这个消息;二是设置一个超时时间,如果在该时间段还没有收到消息,则认为不再收到消息。
算法SM(m) 中,让副官签名是确认其收到了该消息(有点像来了份文件给每个领导批阅)。在SM(1) 中副官收到消息就不用签字了,因为不用转发给其他副官。
定理2:对于任意m,最多只有m 个背叛者情况下,算法SM(m) 解决拜占庭将军问题
Proof:首先证明IC2,如果发令者是忠诚的,那么所有的副官一定收到相同的命令,因为签名无法篡改,且IC1 也就满足了。证明IC1 只用考虑发令者是背叛者的情况(重新回顾下IC1 是指所有忠诚的副官执行相同的命令),IC1 要求两个忠诚的副官(i,j)必须收到相同的命令集合Vi、Vj,也就是Vi 中每个v 都在Vj 中。会存在两种情况,其一当副官i 收到v 命令的序列后,加入到Vi,并将其发送给副官j ,j 将命令v 保存;其二副官i 收到命令v:0:j1:...:jk:i,其中有jr=j,所以 由A4 可知副官j 也收到了该命令。如果没有,则有:
k<m。这种情况下,i 发送信息v:0:j1:...:jk:i 给副官j ,那么j 一定收到v 。(这点感觉和上面有重复)
k=m。发令者是背叛者,最多只有m-1 个副官是背叛者。因此,最少有一个序列j1,...,jm是忠诚的。那么j 一定收到这个忠诚的副官序列发来的值v ,所以副官j 收到v 。
证明完毕。

『拾』 数字货币双花 拜占庭将军是什么意思

拜占庭将军问题在我看来是提出了一个错误模型。即错误节点可以做任意事情(不受protocol限制),比如不响应、发送错误信息、对不同节点发送不同决定、不同错误节点联合起来干坏事等等。总之就是说,没有节点会出现比这更严重的错误。
很显然,拜占庭错误是overly
pessimistic的模型,因为这种错误实际环境中比较少见。那么为什么要研究这个模型呢看其中最简单的一个原因是,如果某个一致性算法能够保证在系统出现f个拜占庭错误时保持系统一致,那么这个算法也就能够保证在出现f个任意其他错误的时候也保持系统一致。
错误模型有上限,肯定也就有一个下限(overly
optimistic,没有比它还要弱的模型)。这个下限就是‘fail-stop’模型。这个模型的假设是:当一个节点出错,这个节点会停止运行,并且其他所有节点都知道这个节点发生了错误。用同样的逻辑,如果某个一致性算法不能保证在系统出现f个错误的时候保持一致,那么这个算法也就没法处理其他f个任意其他问题。
应用这些错误模型,可以对不同算法进行比较,也可以对具体算法的cost进行讨论。