当前位置:首页 » 比特币问答 » 拜占庭将军问题比特币

拜占庭将军问题比特币

发布时间: 2021-05-08 03:01:38

㈠ 如何理解拜占庭将军问题

拜占庭将军问题(以下简称“共识问题”)的正式表述是:如何在一个不基于信任的分布式网络中就信息达成共识?这个表述听起来有些晦涩,但其本质并不复杂,下面的例子与共识问题虽然并不完全一致,但却有助于我们的理解[9]。 想象一下在遥远的拜占庭时代,有一个富饶的城邦,金银珠宝绫罗绸缎应有尽有,它的领主哆啦A梦独享着这一切奢华与荣耀。而在城邦的外围,四位拜占庭将军大雄、胖虎、小夫和静香都觊觎着哆啦A梦的财富,于是他们决定联手攻占哆啦A梦的城邦。根据双方的实力对比,必须有超过半数的将军同时发起进攻方能克敌制胜,因此获胜条件就是四人中至少三个人可以就进攻时间达成一致。那么四位将军的胜算有多少呢? 这个问题的答案就要取决于四个人的合作方式了,如果是集中式系统,有一个盟主,比如胖虎(相当于中央服务器),那么他们的胜利是毫无悬念的,因为就进攻时间达成一致非常简单,只要胖虎召集大雄、小夫和静香开个会讨论一下就可以了,即使大家意见有分歧胖虎也可以在最后予以定夺。下面让我们回到拜占庭将军问题的假设里,在不基于信任的分布式网络中,四位将军的胜算又如何呢? ? 首先由于四位将军之间缺乏信任,因此聚到小黑屋里开个密谋会的可能性被排除了(一旦在小黑屋里被胖虎绑架了怎么办?);其次由于没有盟主,四个人的意见都会被同等的看重。在这种情况下,四位将军只能通过信使在各自营地之间传递消息,来商定进攻时间了。比如大雄觉得早上6点是发动进攻的好时机,他就会派信使将自己的意见告诉胖虎、小夫和静香,与此同时,胖虎可能认为晚上9点发动突袭更好,小夫更喜欢下午3点出击,而静香希望是上午10点,他们三人也会在同一时间派出自己的信使。这样一来,在第一轮通信结束后,四位将军每个人都有了四个可供选择的进攻时间,他们各自要在下一轮通信中把自己选定的时间告知另外三人。由于四个人的决策都是独立做出的,因此最终的选择结果就有256种可能,而只有当三人以上都恰好选择了同一时间的时候,共识才被达成,而这样的结果才64种,也就是说达成共识的概率仅为1/4。这还只是四位将军的情况,如果将军的人数是10人,100人,1000人呢?我们稍加计算就可以发现随着人数的增加,达成共识的希望会变得越来越渺茫。 把上面例子中的将军换成计算机网络中的节点,把信使换成节点之间的通信,把进攻时间换成需要达成共识的信息,你就可以理解共识问题所描述的困境了。达成共识的能力对于一个支付系统来说重要性不言而喻,如果你给家里汇了一笔钱买车,第二天去银行核实的时候柜台告诉你“关于你汇了多少钱的问题,我们的系统里有三个版本的记录”,这样的银行你显然是不敢把钱存进去的。在比特币出现之前共识问题是很难被完美解决的,要保证达成共识就需要采用集中式系统(除非节点满足特定条件),要想去中心化共识就无法保证。那么区块链技术又是如何解决这一难题的呢?

㈡ 理论上区块链怎么解决拜占庭将军问题

拜占庭将军问题(以下简称“共识问题”)的正式表述是:如何在一个不基于信任的分布式网络中就信息达成共识?这个表述听起来有些晦涩,但其本质并不复杂,下面的例子与共识问题虽然并不完全一致,但却有助于我们的理解[9]。

想象一下在遥远的拜占庭时代,有一个富饶的城邦,金银珠宝绫罗绸缎应有尽有,它的领主哆啦A梦独享着这一切奢华与荣耀。而在城邦的外围,四位拜占庭将军大雄、胖虎、小夫和静香都觊觎着哆啦A梦的财富,于是他们决定联手攻占哆啦A梦的城邦。根据双方的实力对比,必须有超过半数的将军同时发起进攻方能克敌制胜,因此获胜条件就是四人中至少三个人可以就进攻时间达成一致。那么四位将军的胜算有多少呢?

这个问题的答案就要取决于四个人的合作方式了,如果是集中式系统,有一个盟主,比如胖虎(相当于中央服务器),那么他们的胜利是毫无悬念的,因为就进攻时间达成一致非常简单,只要胖虎召集大雄、小夫和静香开个会讨论一下就可以了,即使大家意见有分歧胖虎也可以在最后予以定夺。下面让我们回到拜占庭将军问题的假设里,在不基于信任的分布式网络中,四位将军的胜算又如何呢?

?

首先由于四位将军之间缺乏信任,因此聚到小黑屋里开个密谋会的可能性被排除了(一旦在小黑屋里被胖虎绑架了怎么办?);其次由于没有盟主,四个人的意见都会被同等的看重。在这种情况下,四位将军只能通过信使在各自营地之间传递消息,来商定进攻时间了。比如大雄觉得早上6点是发动进攻的好时机,他就会派信使将自己的意见告诉胖虎、小夫和静香,与此同时,胖虎可能认为晚上9点发动突袭更好,小夫更喜欢下午3点出击,而静香希望是上午10点,他们三人也会在同一时间派出自己的信使。这样一来,在第一轮通信结束后,四位将军每个人都有了四个可供选择的进攻时间,他们各自要在下一轮通信中把自己选定的时间告知另外三人。由于四个人的决策都是独立做出的,因此最终的选择结果就有256种可能,而只有当三人以上都恰好选择了同一时间的时候,共识才被达成,而这样的结果才64种,也就是说达成共识的概率仅为1/4。这还只是四位将军的情况,如果将军的人数是10人,100人,1000人呢?我们稍加计算就可以发现随着人数的增加,达成共识的希望会变得越来越渺茫。

把上面例子中的将军换成计算机网络中的节点,把信使换成节点之间的通信,把进攻时间换成需要达成共识的信息,你就可以理解共识问题所描述的困境了。达成共识的能力对于一个支付系统来说重要性不言而喻,如果你给家里汇了一笔钱买车,第二天去银行核实的时候柜台告诉你“关于你汇了多少钱的问题,我们的系统里有三个版本的记录”,这样的银行你显然是不敢把钱存进去的。在比特币出现之前共识问题是很难被完美解决的,要保证达成共识就需要采用集中式系统(除非节点满足特定条件),要想去中心化共识就无法保证。那么区块链技术又是如何解决这一难题的呢?(关注公众号weoption,回复“区块链”,可查看全文。)

㈢ 拜占庭将军问题的失效

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

㈣ 拜占庭将军问题的解决算法

拜占庭问题的最初描述是: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 。
证明完毕。

㈤ 拜占庭将军问题确保系统正常为什么需要2k+1个正常节点

地域虽然沦陷了,但是本地居民基本上还是那些人,他们的宗教信仰不会变的,就像耶路撒冷,不管被什么人占着,他都是圣城,基督、伊斯兰、犹太人心中的圣城

㈥ 拜占庭将军问题的起源

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

㈦ 你知道区块链本质是什么吗比特币的原理又是什么

区块链发展到今天已经有一段时间了,在这段时间里,人们对区块链的认知经历了快速的更换。

区块链的本质是技术

既然说到本质,什么是本质?本质应该是不停向前追溯,一直追溯到不能进一步追溯为止,那时得到的东西才能称之为本质。区块链的本质,是一种技术。回到区块链最初的那个原点,回到比特币刚刚诞生的时候,它要解决的问题是拜占庭将军问题,从专业角度来讲,也就是要解决如何在分布式环境下达成一致性的问题。区块链这种技术,是多项技术的组合,它天然适合多方合作,可以为多方合作提供可信环境。

区块链不可篡改特性的应用

比特币的技术原理P2P网络

比特币是一个P2P的计算机网络,每一个网络节点存储着这个网络上所有的交易记录。 一般来说任何信息记录在一个节点加若干备份就可以了。在每一个节点上存储一遍这个网络的所有交易记录,这导致交易记录被每个节点可以看见、每个节点不能独立任意修改交易记录,所以形成了一套公开透明的交易记录。

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

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

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

A: Test...

热点内容
双下肢肌力2级算截瘫吗 发布:2025-05-16 11:31:00 浏览:259
去坪山创新中心 发布:2025-05-16 11:21:09 浏览:582
区块链执照样本 发布:2025-05-16 11:15:58 浏览:504
服贸会9月6日论坛数字货币 发布:2025-05-16 11:10:20 浏览:749
一台以太币矿机一天收益多少 发布:2025-05-16 11:00:49 浏览:19
门罗币如何连接矿池 发布:2025-05-16 10:59:19 浏览:364
比特币开户国外 发布:2025-05-16 10:59:18 浏览:769
太矿采煤机售后 发布:2025-05-16 10:56:00 浏览:520
区块链共识联盟链排序 发布:2025-05-16 10:51:50 浏览:318
初中克服摩擦力做功怎么算 发布:2025-05-16 10:51:49 浏览:687