拜占庭将军问题(一)——引言与结论

拜占庭将军问题(The Byzantine Generals Problem)是Leslie Lamport在其同名的论文[1]提出的一种针对分布式对等网络中的容错问题。

一个可靠的计算机系统需要能够处理一个或多个系统组件的失效。一个失效的组件可能会表现为发送错误的信息,或者因组件故障不发出信息等行为。这种类型的失效问题被称为拜占庭将军问题。Leslie在这篇论文中对拜占庭将军问题进行了描述并提出解决拜占庭问题的一些方法。

拜占庭将军问题

问题描述

Leslie通过几支拜占庭将军领导的军队共同进攻敌方城池的例子描述了这个问题。

假如几支拜占庭将军领导的军队驻扎在敌方城池周围,准备攻城。将军们之间只能通过通信的方式相互沟通。在观察敌情之后,他们需要共同确定行动。但是,其中一些将军可能是叛徒,他们会试图阻止忠诚将军之间达成一致行动。因此,拜占庭将军们需要一种算法来保证:

A. 所有忠诚的将军能采取同样的行动

忠诚的将军会按照算法行动,但叛徒会采取任何行动。因此,算法需要保证无论叛徒干什么,条件A都会被满足。

B. 一小部分的叛徒不会导致忠诚的将军采取错误的行动

条件B是很难形式化的,因为它需要对错误的行动进行准确的描述。因此,Leslie用将军如何作出决定来代替。

“将军-将军”问题 or “司令-副官”问题

令:

n: 将军的数量
v(i): 由第i将军发出的消息

每位将军采用某种函数从(v(1), ..., v(n))作出决定。例如,采用Majority投票方法,选取(v(1), ..., v(n))多数的行动作为最优的行动。在这种情况下,只有忠诚将军不同行动的数量大致相等,小部分叛徒才能影响忠诚将军的行动。

拜占庭将军之间要想达成一致,最明显的办法是第i号将军通过传令兵向其他每个将军发出v(i),但是,由于叛徒可能向不同的将军发出不同的值。如果想要满足条件A,需要满足如下条件:

条件1:每个忠诚的将军必须获得相同的行动指令集合(v(1), ..., v(n))

如果第i号将军是叛徒,并向不同的将军发送不同的行动指令,所以条件1也暗含一个将军不一定是从第i号将军直接获取v(i)。这就意味着,如果要满足条件1,需要考虑一个将军使用不是i号将军发出的v(i)作为i号将军的行动指令,即使第i号将军是忠诚的,这与条件B是相矛盾的。例如,不能让一部分叛徒影响忠诚将军基于(“撤退”, ..., “撤退”)作出决定,即使每个忠诚将军发出的都是“进攻”。因此,还需要满足下面的条件:

条件2:如果第i号将军是忠诚的,那么每个忠诚将军必须用第i号将军发出的行动指令作为v(i)

接下来,针对每个i,对条件1进行重写:

条件 1':任意两个忠诚的将军使用相同的v(i)

条件1'条件2都是针对第i号将军发出的行动指令的条件。因此,可以将拜占庭将军问题归结为一个将军如何发送他的值给其他人,即一个司令官发送命令给他的副官问题,如下:

拜占庭将军问题: 一个司令官发送命令给他的n-1个副官,需满足条件:

IC1. 所有忠诚副官遵守同一命令;
IC2. 如果司令官是忠诚的,每个忠诚的副官遵守他的命令。

条件IC1IC2被称为交互一致性条件(interactive consistency conditions)。为了解决原来的问题,第i号将军作为将军,采用拜占庭将军问题的解决方法,发送他的行动指令v(i),其他将军作为副官进行行动。

不可能的结果

拜占庭将军问题看起来很简单,但如果在每个将军只传输口头消息(oral messages)的情况下,只有忠诚的将军数量多于2/3,拜占庭将军问题才有解。口头消息指的是发出的消息完全由发送者控制,这就意味着叛徒可以发送任意消息。还有一种是将军之间传输签名的书面消息,在这种情况下,结论又是不一样的。

例证

首先,Leslie论述了在传输口头消息的情况下,三个将军中有一个是叛徒时,拜占庭将军问题是无解的。为了简化论述,将军可做的行动只有“进攻”和“撤退”两种。下面分两种情况进行讨论:

  • 假如司令是忠诚的

令副官1是忠诚的,副官2是叛徒,如Fig 1。假如司令发出的是“进攻”命令,副官2会向副官1发送错误信息——“我收到的是撤退”。由于副官1是忠诚的,如果想满足条件IC2,副官1会执行进攻命令。

  • 假如司令是叛徒

副官1和副官2都是忠诚的,如Fig 2。司令向副官1发送“进攻”指令,司令向副官2发送“撤退”指令。副官2如实告诉副官1——“我收到的是撤退命令”。由于副官1分辨不出谁是叛徒,所以他判断不出司令发给副官2的真实命令是什么,那么他只能遵从司令执行“进攻”。同样地,副官2也会遵从司令执行“撤退”命令,此时就违背了条件IC1

通过上面的例子虽然可以证明在三个将军中有一个叛徒的情况下,拜占庭将军问题是无解的。但还需要更严格的形式化证明,有兴趣的读者可以参考文献2[2]

一般性推论

利用上面的结果,可以用反证法证明少于3m+1个将军中有m个叛徒的情况是无解的。

思路: 假设存在一个解,使得3m或更少的将军数量能够处理m个叛徒,那么用此来构建一个“三”将军拜占庭将军问题的解,这个结论在上一节中证明是不可能的。

为了避免混淆,令假设的解中的将军为阿尔巴尼亚将军(Albanian Generals),真实情况下的将军还是称为拜占庭将军。假设3m个或更少的阿尔巴尼亚将军能够处理m个叛徒的情况,下面我们来构建“三”拜占庭将军问题的解。

令“三”拜占庭将军问题中的每个将军模拟大约1/3数量的阿尔巴尼亚将军的行动,即每个拜占庭将军模拟至多m个阿尔巴尼亚将军。也就是说,拜占庭司令官模拟阿尔巴尼亚司令官和至多m-1个阿尔巴尼亚副官,每个拜占庭副官模拟至多m个副官。

由于假设了阿尔巴尼亚将军有解,即其满足条件IC1IC2。根据IC1,由忠诚的拜占庭将军模拟的阿尔巴尼亚将军则会执行相同的行动,即“三”拜占庭将军也满足IC1,同理,由阿尔巴尼亚将军满足IC2也能推出“三”拜占庭将军也满足IC2,也就为“三”拜占庭将军问题找到了一个解,这与上一节“三”拜占庭将军问题是无解的是相矛盾的。因此,假设不成立,即少于3m+1个将军中有m个叛徒的情况是无解的。

另外,Leslie也证明了拜占庭将军问题的结论和将军们达成的一致行动是不是精确的无关,此处不再论述,感兴趣的读者可以去Leslie的原著。

:在传输签名书面消息(Signed Messages)时,结论是,对于任意数量的将军和可能的叛徒,拜占庭将军问题都是有解的。

小结

本篇文章介绍了Leslie原著的第一、二节:

  • 拜占庭将军问题的描述和达成一致的条件;
  • 传输口头消息时,少于3m+1个将军中有m个叛徒是无解的。

后续的文章中,对Leslie针对口头消息和签名的书面消息两种情况下构建的算法进行阐述。

拜占庭将军问题图片来自网络steemit,侵权删!


  1. Lamport L, Shostak R, Pease M. The Byzantine generals problem[J]. ACM Transactions on Programming Languages and Systems (TOPLAS), 1982, 4(3): 382-401.

  2. Pease M, Shostak R, Lamport L. Reaching agreement in the presence of faults[J]. Journal of the ACM (JACM), 1980, 27(2): 228-234.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容