拜占庭将军问题(The Byzantine Generals Problem)提供了对分布式共识问题的一种情景化描述,由Leslie Lamport等人在1982年首次发表。论文《The Byzantine Generals Problem 》同时提供了两种解决拜占庭将军问题的算法:
口信消息型解决方案(A solution with oral message);
签名消息型解决方案(A solution with signed message).
论文:
https://www-inst.eecs.berkeley.edu/~cs162/sp16/static/readings/Original_Byzantine.pdf
本文之后将详细讲述这两种算法。事实上,拜占庭将军问题是分布式系统领域最复杂的容错模型, 它描述了如何在存在恶意行为(如消息篡改或伪造)的情况下使分布式系统达成一致。是我们理解分布式一致性协议和算法的重要基础。
灰度以太坊经典信托ETCG两年来首次出现折价:以太坊经典信托ETCG自2018年10月以来首次出现折价,根据灰度官方网站数据显示,2020年10月2日以太坊经典信托ETCG市场价格/share为4.80美元,而ETC Holdings/share为5.09美元。以太坊经典信托曾在2018年10月发生过两次折价:第一次发生在10月11日,当时ETCG市场价格/share为8.73美元,而ETC Holdings/share为9.54美元;第二次发生在10月12日,当时ETCG市场价格/share为8.27美元,而ETC Holdings/share为8.92美元。[2020/10/4]
拜占庭将军问题描述
拜占庭将军问题描述了这样一个场景:
图1. 拜占庭将军问题
拜占庭帝国(Byzantine Empire)军队的几个师驻扎在敌城外,每个师都由各自的将军指挥。将军们只能通过信使相互沟通。在观察敌情之后,他们必须制定一个共同的行动计划,如进攻(Attack)或者撤退(Retreat),且只有当半数以上的将军共同发起进攻时才能取得胜利。然而, 其中一些将军可能是叛徒,试图阻止忠诚的将军达成一致的行动计划。 更糟糕的是,负责消息传递的信使也可能是叛徒,他们可能篡改或伪造消息,也可能使得消息丢失。
动态 | 以太经典开发团队以太坊联邦成立Callisto网络:12月20日消息,以太经典(ETC)的开发团队以太坊联邦(Ethereum Commonwealth)成立了Callisto网络来应对以太经典生态系统及管理系统里存在的问题,及开发资金不足,财务不透明等问题。[2018/12/20]
为了更加深入的理解拜占庭将军问题,我们以三将军问题为例进行说明。当三个将军都忠诚时,可以通过投票确定一致的行动方案,图2展示了一种场景, 即General A,B通过观察敌军军情并结合自身情况判断可以发起攻击,而General C通过观察敌军军情并结合自身情况判断应当撤退。 最终三个将军经过投票表决得到结果为进攻:撤退=2:1, 所以将一同发起进攻取得胜利。对于三个将军,每个将军都能执行两种决策(进攻或撤退)的情况下, 共存在6中不同的场景,图2是其中一种,对于其他5中场景可简单地推得,通过投票三个将军都将达成一致的行动计划。
图2. 三个将军均为忠诚的场景
当三个将军中存在一个叛徒时,将可能扰乱正常的作战计划。图3展示了General C为叛徒的一种场景,他给General A和General B发送了不同的消息,在这种场景下General A通过投票得到进攻:撤退=1:2,最终将作出撤退的行动计划;General B通过投票得到进攻:撤退=2:1,最终将作出进攻的行动计划。结果只有General B发起了进攻并战败。
动态 | 以太坊经典向ETC用户发送安全警报 实为操作误会:据Bitcoin Exchange Guide消息,以太坊经典向创始人兼首席技术官Igor Artamonov发布推特,称有人通过Classic Geth对以太坊经典社区组织进行了管理控制,并删除了所有其他管理员,建议用户在该问题解决前不要下载Classic Geth。该问题也得到ETC Cooperative主管的证实。但随后,该主管在推特上表示,此问题实际上是一个操作上的误会 ,事实是他们新加了一个管理员,但是该管理员误操作把其他人删了。[2018/12/2]
图3. 二忠一叛的场景
事实上,对于三个将军中存在一个叛徒的场景,想要总能达到一致的行动方案是不可能的。详细的证明可参看Leslie Lamport的论文。此外,论文中给出了一个更加普适的结论:如果存在m个叛将,那么至少需要3m+1个将军,才能最终达到一致的行动方案。
解决方案
Leslie Lamport在论文中给出了两种拜占庭将军问题的解决方案,即口信消息型解决方案(A solution with oral message)和签名消息型解决方案(A solution with signed message)。
以太经典实验室启动注册:今日以太经典在Twitter上发文称,为拓展以太经典生态系统,以太经典实验室启动注册,成功的申请者在旧金山市中心或新加坡拥有办公空间。[2018/5/22]
1、口信消息型解决方案
首先, 对于口信消息(Oral message)的定义如下:
A1. 任何已经发送的消息都将被正确传达;
A2. 消息的接收者知道是谁发送了消息;
A3. 消息的缺席可以被检测。
基于口信消息的定义,我们可以知, 口信消息不能被篡改但是可以被伪造。基于对图3场景的推导,我们知道存在一个叛将时,必须再增加3个忠将才能达到最终的行动一致。为加深理解,我们将利用3个忠将1个叛将的场景对口信消息型解决方案进行推导。在口信消息型解决方案中,首先发送消息的将军称为指挥官,其余将军称为副官。对于3忠1叛的场景需要进行两轮作战信息协商,如果没有收到作战信息那么默认撤退。图4是指挥官为忠将的场景,在第一轮作战信息协商中,指挥官向3位副官发送了进攻的消息;在第二轮中,三位副官再次进行作战信息协商,由于General A、B为忠将,因此他们根据指挥官的消息向另外两位副官发送了进攻的消息,而General C为叛将,为了扰乱作战计划,他向另外两位副官发送了撤退的消息。最终Commanding General, General A和B达成了一致的进攻计划,可以取得胜利。
康奈尔大学教授Emin Gun Sirer公布“经典共识”+“中本聪共识”区块链决策新模式:康奈尔大学教授、区块链研究人员Emin Gun Sirer周四在纽约的Token Summit III上宣布了这一新协议,解释说他们将“经典共识”和“中本聪共识”模型结合在了区块链网络决策中。他说这个协议的工作方式非常简单,但却非常强大。受到gossip算法的启发,这个新协议通过一种刻意的亚稳态机制获得了安全性。具体地说,系统通过反复地对网络进行随机抽样,并将正确的节点引导到相同的结果。[2018/5/18]
图4. 指挥官为忠将的场景
图5是指挥官为叛将的场景,在第一轮作战信息协商中,指挥官向General A、B发送了撤退的消息,但是为了扰乱General C的决定向其发送了进攻的消息。在第二轮中,由于所有副官均为忠将,因此都将来自指挥官的消息正确地发送给其余两位副官。最终所有忠将都能达成一致撤退的计划。
图5. 指挥官为叛将的场景
如上所述,对于口信消息型拜占庭将军问题,如果叛将人数为m,将军人数不少于3m+1,那么最终能达成一致的行动计划。值的注意的是,在这个算法中,叛将人数m是已知的,且叛将人数m决定了递归的次数,即叛将数m决定了进行作战信息协商的轮数,如果存在m个叛将,则需要进行m+1轮作战信息协商。这也是上述存在1个叛将时需要进行两轮作战信息协商的原因。
2、签名消息型解决方案
同样,对签名消息的定义是在口信消息定义的基础上增加了如下两条:
A4. 忠诚将军的签名无法伪造,而且对他签名消息的内容进行任何更改都会被发现;
A5. 任何人都能验证将军签名的真伪。
基于签名消息的定义,我们可以知道,签名消息无法被伪造或者篡改。为了深入理解签名消息型解决方案,我们同样以3三将军问题为例进行推导。 图6是忠将率先发起作战协商的场景,General A率先向General B、C发送了进攻消息,一旦叛将General C篡改了来自General A的消息,那么General B将将发现作战信息被General C篡改,General B将执行General A发送的消息。
图6. 忠将率先发起作战协商
图7是叛将率先发起作战协商的场景,叛将General C率先发送了误导的作战信息,那么General A、B将发现General C发送的作战信息不一致,因此判定其为叛将。可对其进行处理后再进行作战信息协商。
图7. 叛将率先发起作战协商
签名消息型解决方案可以处理任何数量叛将的场景。
总 结
在分布式系统领域, 拜占庭将军问题中的角色与计算机世界的对应关系如下:
将军, 对应计算机节点;
忠诚的将军, 对应运行良好的计算机节点;
叛变的将军, 被非法控制的计算机节点;
信使被杀, 通信故障使得消息丢失;
信使被间谍替换, 通信被攻击, 攻击者篡改或伪造信息。
如上文所述,拜占庭将军问题提供了对分布式共识问题的一种情景化描述,是分布式系统领域最复杂的模型。此外, 它也为我们理解和分类现有的众多分布式一致性协议和算法提供了框架。现有的分布式一致性协议和算法主要可分为两类:
一类是故障容错算法(Crash Fault Tolerance, CFT), 即非拜占庭容错算法,解决的是分布式系统中存在故障,但不存在恶意攻击的场景下的共识问题。也就是说,在该场景下可能存在消息丢失,消息重复,但不存在消息被篡改或伪造的场景。一般用于局域网场景下的分布式系统,如分布式数据库。属于此类的常见算法有Paxos算法、Raft算法,、ZAB协议等。
一类是拜占庭容错算法,可以解决分布式系统中既存在故障,又存在恶意攻击场景下的共识问题。一般用于互联网场景下的分布式系统,如在数字货币的区块链技术中。属于此类的常见算法有PBFT算法、PoW算法。
看完本文,你对这两种解决方案有什么看法?欢迎在评论区跟我们讨论!
标签:RALERANERANERReferral NetworkCroatian Football Federation TokenMineralElectronero
金色财经报道,2020年2月末,区块链基础软件公司Second State获得了Web3基金会的资金支持,双方合作将把以太坊的WebAssembly虚拟机(Ewasm)引入波卡生态。虚拟机是公链的关键基础架构.
1900/1/1 0:00:00自周一以来,加密货币市场下跌超过了380亿美元,比特币和Altcoins一直在做“自由落体”,前十大加密货币全都是红色,必然会让人好奇的追问,加密货币的这个牛市还在吗?加密货币市场经历了艰难的一周,随着资本逃离市场.
1900/1/1 0:00:00近期,原计划在伊斯坦布尔硬分叉中进行的ProgPoW又有了新的消息,但是升级时间仍为确定。消息一出,再次引发了人们对以太坊挖矿抗ASIC性的讨论.
1900/1/1 0:00:00马耳他金融服务管理局(MFSA)发布了有关证券代币的定义以及此类资产在马耳他市场中面临挑战的行业反馈.
1900/1/1 0:00:002020年2月17日晚,由知名交易所LongBit(长币网)与区分主办的《减半行情对话》线上直播活动中,莱比特矿池创始人江卓尔突然空降直播现场,并与LongBit(长币网)合伙人酋长进行了系列市场关注性问题的对话,题题扣人心弦.
1900/1/1 0:00:00上周日主流减半币:本周日主流减半币: 截至发稿,BTC报价为9972.7美元,较上周日下跌约1.015%,本周最高涨至10500美元,周内最大涨幅约4.22%.
1900/1/1 0:00:00