拜占庭将军问题,是啥问题?
【本文由赞我(zaneds.com)独家冠名】
初学区块链知识,遇到许多晦涩名词。比如谈及区块链的共识机制,就避不开拜占庭将军问题。
初次看到这个词我只注意到将军二字。我脑海立马浮现我国古代将军形象:身穿战袍头戴盔甲手握宝剑。英姿煞爽,叱咤风云,帅呆了,酷毙了!
等等,拜占庭不像是我们中华本土常用的词呀。问一下度娘,拜占庭是欧洲最悠久的君主制国家,也叫东罗马帝国。那拜占庭将军就是欧洲古老时代的将军了。这个没了解过,立体形象瞬间嘎止。
那拜占庭将军问题,又是什么问题?这个延续了一千多年的帝国早已灭亡,还要讨论它的什么问题呢?这里有一个故事。
很久很久以前,拜占庭帝国富得流油,附近10个国家个个垂涎欲滴。奈何拜占庭固若金汤,任何一个国家擅自入侵,都是自寻死路。不仅入侵军队分分钟被拜占庭灭,自己国家也会被邻国入侵。
然而,这些邻国团结起来是可以进攻瓜分拜占庭财富的。因此10个国家分散在拜占庭周围,构成分布式网络,依靠士兵传递消息来协商进攻目的和进攻时间。
可是,每个国家都向其他9个国家派出一名信使,那么10个国家分别派了9名信使,也就是说任何一个时间总共有90次的信息传输,并且每个国家分别收到9条信息,而且每条信息写的进攻时间可能都不同。这个问题就大了。
那个年代,一般就是靠得力士兵跑或骑马传信,再就是飞鸽传书啊之类的,电视上都是这么演的。但是中间隔着强敌拜占庭,路途还那么遥远,信使间又没见过面只能靠信物之类的凭证,最主要的是咱们又不熟,可信么?因此将军问题的关键点在于:两点之间的信道传输不可靠。
问题来了:10个国家里的将军有没有叛徒?叛徒会不会擅自变更进攻意向或进攻时间?如果有叛徒,信徒修改后发出信息以混淆视听,那么信息传递就乱了。
就算真的有叛徒吧,这种情况其余忠诚的将军们怎么样不受叛徒影响,通过远程协商达成一致协议,进而赢取拜占庭的财富呢?这个就是“拜占庭将军问题”。
套用个浅显的例子,比如全民皆可玩的《奔跑吧,兄弟》里的撕名牌游戏。当然前提它是个游戏,场景设计和规则就像古时候打仗一样,相互之间信息封闭只能靠信使传递。大黑牛是大家公认的跑男猛将,力大无比,但是如果有6个人同时进攻,5个人分别固定住他的头和四肢,另一个人撕名牌,就可以赢得大黑牛身上的能源。现在有10个人在围攻他,可是其中里面有叛徒。那么这些人如何不受叛徒的影响,达成共识,围攻大黑牛赢取他身上的能源呢?
用这些熟知的游戏场景讲拜占庭将军问题是不是比较有画面感。
然而说了这么多,“拜占庭将军问题”只是个传说,并非源于公元5世纪的东罗马战场,而是1982年,从美国一位计算机科学家的头脑里蹦出来的。这个是不是有点似曾相识:比特币也是从中本聪身上蹦出来的。
故事是故事,但问题确实是个问题,而是一个很古老的难题。拜占庭将军问题就是容错计算中的一个老问题。
那么,怎么解决拜占庭将军问题呢?且听下回讲解!
拜占庭将军问题,是啥问题?