中本聰與拜占庭將軍問題

拜占庭將軍問題很多人可能聽過晕拆,但不知道是什么意思蟆豫,本文從非專業(yè)的角度來講講,拜占庭將軍問題到底是說什么的恃鞋。

拜占庭將軍問題(Byzantine Generals Problem)匠童,首先由Leslie Lamport與另外兩人在1982年提出埂材,很簡單的故事模型,卻困擾了計算機科學(xué)家們數(shù)十年汤求。

故事大概是這么說的:

拜占庭帝國即中世紀的土耳其俏险,擁有巨大的財富,周圍10個鄰邦垂誕已久扬绪,但拜占庭高墻聳立竖独,固若金湯,沒有一個單獨的鄰邦能夠成功入侵挤牛。任何單個鄰邦入侵的都會失敗预鬓,同時也有可能自身被其他9個鄰邦入侵。拜占庭帝國防御能力如此之強赊颠,至少要有十個鄰邦中的一半以上同時進攻,才有可能攻破劈彪。

然而竣蹦,如果其中的一個或者幾個鄰邦本身答應(yīng)好一起進攻,但實際過程出現(xiàn)背叛沧奴,那么入侵者可能都會被殲滅痘括。

于是每一方都小心行事,不敢輕易相信鄰國。這就是拜占庭將軍問題纲菌。

在拜占庭問題里挠日,各鄰國最重要的事情是:所有將軍如何能過達成共識去攻打拜占庭帝國。

達成共識并非坐下來開個會那么簡單翰舌,有的將軍心機深不可測嚣潜,口是心非,如果有叛徒椅贱,可能會出現(xiàn)各種問題:

  • 叛徒可能欺騙某些將軍自己將采取進攻行動懂算。
  • 叛徒可能慫恿其他將軍行動。
  • 叛徒可能迷惑其他將軍庇麦,使他們接受不一致的信息计技,從而感到迷惑。

針對拜占庭問題的深入研究山橄,科學(xué)家們得出一個結(jié)論:如果叛徒的數(shù)量大于或等于1/3垮媒,拜占庭問題不可解。

解釋過程可以用一個副官模型來解釋:

假設(shè)只有3個人航棱,A睡雇、B、C丧诺,三人中如果其中一個是叛徒入桂。當A發(fā)出進攻命令時,B如果是叛徒驳阎,他可能告訴C抗愁,他收到的是“撤退”的命令。這時C收到一個“進攻”呵晚,一個“撤退“蜘腌,于是C被信息迷惑,而無所適從饵隙。

如果A是叛徒撮珠。他告訴B“進攻”,告訴C“撤退”金矛。當C告訴B芯急,他收到“撤退”命令時,B由于收到了司令“進攻”的命令驶俊,而無法與C保持一致娶耍。

正由于上述原因,在只有三個角色的系統(tǒng)中饼酿,只要有一個是叛徒榕酒,即叛徒數(shù)等于1/3胚膊,拜占庭問題便不可解。

當然想鹰,只要叛徒數(shù)小于1/3紊婉,問題還是可解的。

科學(xué)家們提出了口頭信息方案和書面協(xié)議兩個方案辑舷。

解決方案一:用口頭信息

口頭信息即使將軍們派人用口信傳達消息喻犁,口頭傳達消息的實際含義指的是:

  • 每個被發(fā)送的消息都能夠被正確投遞
  • 信息接受者知道消息是誰發(fā)的
  • 沉默(不發(fā)消息)可以被檢測

口頭協(xié)議的算法很簡單,如果其中一個節(jié)點惩妇,比如1發(fā)布消息出去株汉,210都接受到1的消息,然后210也分別轉(zhuǎn)告給其他的節(jié)點歌殃,每個節(jié)點都是信息的轉(zhuǎn)達者乔妈,一輪下來,每個節(jié)點手上都會有10個信息(進攻或者撤退)氓皱,有叛徒的話路召,那信息可能有進攻或者不進攻的不一致消息。每個人相當于手里有一本消息的賬本波材,該怎么決策呢股淡?如果有一半以上的人說進攻,那么采取進攻行動就是能成功的廷区,所以這時即便有叛徒唯灵,只要聽大部分人的,少數(shù)服從多數(shù)來行動即是有利的隙轻。

這種口頭協(xié)議的算法也存在明顯的缺點:口頭協(xié)議并不會告知消息的上一個來源是誰埠帕,也就是消息不可追根溯源,出現(xiàn)信息不一致也很難找到叛徒在哪玖绿。

解決方案二:用書面協(xié)議

可以假設(shè)10個國家敛瓷,每個國家都可以派人向各個國家派信,比如一起約定 “某天早上六點斑匪,大家一起進攻拜占庭呐籽,同意就簽個字”。收到信的國家如果同意的話蚀瘸,就可以在原信上簽名蓋章狡蝶。

書面協(xié)議相比口頭協(xié)議,實際說的是在這個多人的將軍模型中加了了個隱含條件:

  • 將軍們能夠使用簽名技術(shù)贮勃,簽名不可偽造牢酵,一旦篡改即可發(fā)現(xiàn)。
  • 同時任何人都可以驗證簽名的可靠性衙猪。

書面協(xié)議相比口頭協(xié)議,所有的消息都是有記錄的,解決了追根溯源的問題垫释。

但在現(xiàn)實中仍然可能面臨各種問題:

  • 中世紀的鄰邦之間溝通只能靠信使騎馬丝格,將軍們互不信任,也不可能親自聚在一起開會棵譬,物理距離導(dǎo)致信息傳輸延遲显蝌。

  • 真正可信的簽名體系難以實現(xiàn)。簽名造假的問題也沒法避免订咸。

  • 簽名消息記錄的保存難以擺脫中心化的機構(gòu)曼尊。

另外,倘若每個國家都各自向其他9個國家派出信使脏嚷,在這個網(wǎng)絡(luò)即需要90次的傳輸才能完成一輪信息交流骆撇,但是每個國家可能回饋不同的進攻時間,在這種異步通信的條件下父叙,要能協(xié)商一致是個大問題神郊。

也就是如果能夠依賴中心化可信的機構(gòu),也許能通過多方的簽名記錄整合在一起趾唱,更容易地實現(xiàn)9個國家的意見統(tǒng)一涌乳,但這是個偽假設(shè),因為前提是這個網(wǎng)絡(luò)就是互不信任的甜癞。


這就是一個由互不信任的各個鄰邦國家所構(gòu)成的分布式網(wǎng)絡(luò)夕晓,要獲得最大的利益,又必須一起努力才能完成悠咱,如何達成一致的共識蒸辆,變成了一個難題。

萊斯利·蘭伯特提出了“拜占庭將軍問題”乔煞,但真正解決這以難題的是——中本聰吁朦。

終極解決方案:區(qū)塊鏈技術(shù)

互聯(lián)網(wǎng)的存在,首先降低了信息的流通成本渡贾。每個將軍配一臺電腦逗宜,就解決了”書面協(xié)議“中騎馬通訊造成時間延遲的問題。

如果10個將軍中的幾個同時發(fā)起消息空骚,勢必會造成系統(tǒng)的混亂纺讲,造成各說各的攻擊時間方案,行動難以一致囤屹。

誰都可以發(fā)起進攻的信息熬甚,但由誰來發(fā)出呢?中本聰巧妙地在個系統(tǒng)加入了發(fā)送信息的成本肋坚,即:一段時間內(nèi)只有一個節(jié)點可以傳播信息乡括。

它加入的成本就是”工作量“——節(jié)點必須完成一個計算工作才能向各城邦傳播消息肃廓,當然,誰第一個完成工作诲泌,誰才能傳播消息盲赊。

當某個節(jié)點發(fā)出統(tǒng)一進攻的消息后,各個節(jié)點收到發(fā)起者的消息必須簽名蓋章敷扫,確認各自的身份哀蘑。中本聰在這里引用現(xiàn)代加密技術(shù)為這個信息簽名。

這種加密技術(shù)——非對稱加密完全可以解決古代難以解決的簽名問題:

  • 消息傳送的私密性
  • 能夠確認身份
  • 簽名不可偽造葵第、篡改

非對稱加密算法的加密和解密使用不同的兩個密鑰.這兩個密鑰就是我們經(jīng)常聽到的"公開密鑰"(公鑰)和"私有密鑰"(私鑰).

公鑰和私鑰一般成對出現(xiàn), 如果消息使用公鑰加密,那么需要該公鑰對應(yīng)的私鑰才能解密; 同樣绘迁,如果消息使用私鑰加密,那么需要該私鑰對應(yīng)的公鑰才能解密.

非對稱加密的作用是:保護消息內(nèi)容, 并且讓消息接收方確定發(fā)送方的身份.

比如,將軍A想給將軍B發(fā)送消息卒密,為防止消息泄露缀台,將軍A只需要使用B的公鑰對信息加密,而B的公鑰是公開的栅受,B只需要用只有他自己只的私鑰解密即可将硝。

將軍B想要在信件上聲明自己的身份,他可以自己寫一段”簽名文本“屏镊,并用私鑰簽名依疼,并廣播出去,所有人可以根據(jù)B的公鑰來驗證該簽名而芥,確定的B的身份律罢。

由此,一個不可信的分布式網(wǎng)絡(luò)變成了一個可信的網(wǎng)絡(luò)棍丐,所有的參與者可以在某件事在達成一致误辑。

寫到這里,同時終于明白了工作量證明(Proof Of Work)的意義歌逢。有人說挖礦浪費了巨大的社會資源巾钉,但建立信任的成本可不是0,挖礦是維護比特幣網(wǎng)絡(luò)可靠性的最好辦法秘案。

工作量證明砰苍,簡單的理解就是一份證明,現(xiàn)實中的畢業(yè)證阱高、駕駛證都屬于工作量證明赚导,它用以檢驗結(jié)果的方式證明你過去所做過了多少工作。

在拜占庭的系統(tǒng)里赤惊,加入工作量證明吼旧,其實就是簡單粗暴地引入了一個條件:大家都別忙著發(fā)起消息,都來做個題未舟,看誰最聰明圈暗,誰就有資格第一個發(fā)起消息掂为。

這個題必須是絕對公平的,中本聰在設(shè)計比特幣時员串,它采用了一種工作量證明機制叫哈掀刑停現(xiàn)金,在一個交易塊這要找到一個隨機數(shù)昵济,計算機只能用窮舉法來找到這個隨機數(shù),可以說野揪,能不能找到全靠運氣访忿,所以對于各個節(jié)點來說,這個世界上斯稳,只有隨機才是真正的公平海铆,實現(xiàn)隨機的最好辦法是使用數(shù)學(xué),所有的將軍在尋找共識的過程挣惰,借助了大家都認可的數(shù)學(xué)邏輯卧斟。

如果不同的將軍先后解出了題,各自先后向這個網(wǎng)絡(luò)發(fā)布消息憎茂,于是各個節(jié)點都會收到來自不同節(jié)點發(fā)起的進攻或者不進攻的消息珍语,那怎么辦的?只有時間最早的發(fā)起者才是有效的竖幔。中本聰巧妙的設(shè)計了一個時間戳的東西板乙,為每個將軍在解好題的時間(出塊時間)蓋上時間印章。

將軍們那又憑什么要一起做工作量證明呢拳氢?中本聰也完全可以設(shè)置一個獎勵機制募逞,比特幣的獎勵機制是每打包一個塊,目前是獎勵25個比特幣馋评,當然放接,拜占庭將軍問題的獎勵機制可以是瓜分拜占庭獲得的利益。

對了留特,如果有出現(xiàn)背叛怎么辦纠脾?

在這個分布式網(wǎng)絡(luò)里:

  • 每個將軍都有一份實時與其他將軍同步的消息賬本。
  • 賬本里有每個將軍的簽名都是可以驗證身份的磕秤。如果有哪些消息不一致乳乌,可以知道消息不一致的是哪些將軍。
  • 盡管有消息不一致的市咆,只要超過半數(shù)同意進攻汉操,少數(shù)服從多數(shù),共識達成蒙兰。

由此磷瘤,在一個分布式的系統(tǒng)中芒篷,盡管有壞人,壞人可以做任意事情(不受protocol限制)采缚,比如不響應(yīng)针炉、發(fā)送錯誤信息、對不同節(jié)點發(fā)送不同決定扳抽、不同錯誤節(jié)點聯(lián)合起來干壞事等等篡帕。但是,只要大多數(shù)人是好人贸呢,就完全有可能去中心化地實現(xiàn)共識(Consensus)镰烧。

區(qū)塊鏈上的共識機制主要解決由誰來構(gòu)造區(qū)塊,以及如何維護區(qū)塊鏈統(tǒng)一的問題楞陷。

拜占庭容錯問題需要解決的也同樣是誰來發(fā)起信息怔鳖,如何實現(xiàn)信息的統(tǒng)一同步的問題。

到這里也可以知道了固蛾,基于互聯(lián)網(wǎng)的區(qū)塊鏈技術(shù)结执,它克服了口頭協(xié)議與書面協(xié)議的種種缺點,使用消息加密技術(shù)艾凯、以及公平的工作量證明機制献幔,創(chuàng)建了一組所有將軍都認可的協(xié)議,這套協(xié)議的出現(xiàn)览芳,拜占庭將軍問題也就完美的得到了解決斜姥。

偉大的創(chuàng)新往往是站在前人的肩膀上,中本聰就是各種前沿技術(shù)的整合者沧竟,古老的疑難雜癥在這種整合創(chuàng)新下铸敏,就變得不再是問題了。

我是蘇江悟泵,長期分享區(qū)塊鏈思考杈笔,歡迎加我微信與我交流:iamsujiang

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市糕非,隨后出現(xiàn)的幾起案子蒙具,更是在濱河造成了極大的恐慌,老刑警劉巖朽肥,帶你破解...
    沈念sama閱讀 221,576評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件禁筏,死亡現(xiàn)場離奇詭異,居然都是意外死亡衡招,警方通過查閱死者的電腦和手機篱昔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人州刽,你說我怎么就攤上這事空执。” “怎么了穗椅?”我有些...
    開封第一講書人閱讀 168,017評論 0 360
  • 文/不壞的土叔 我叫張陵辨绊,是天一觀的道長。 經(jīng)常有香客問我匹表,道長门坷,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,626評論 1 296
  • 正文 為了忘掉前任袍镀,我火速辦了婚禮拜鹤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘流椒。我一直安慰自己,他們只是感情好明也,可當我...
    茶點故事閱讀 68,625評論 6 397
  • 文/花漫 我一把揭開白布宣虾。 她就那樣靜靜地躺著,像睡著了一般温数。 火紅的嫁衣襯著肌膚如雪绣硝。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,255評論 1 308
  • 那天撑刺,我揣著相機與錄音鹉胖,去河邊找鬼。 笑死够傍,一個胖子當著我的面吹牛甫菠,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播冕屯,決...
    沈念sama閱讀 40,825評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼寂诱,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了安聘?” 一聲冷哼從身側(cè)響起痰洒,我...
    開封第一講書人閱讀 39,729評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎浴韭,沒想到半個月后丘喻,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,271評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡念颈,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,363評論 3 340
  • 正文 我和宋清朗相戀三年泉粉,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片舍肠。...
    茶點故事閱讀 40,498評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡搀继,死狀恐怖窘面,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情叽躯,我是刑警寧澤财边,帶...
    沈念sama閱讀 36,183評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站点骑,受9級特大地震影響酣难,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜黑滴,卻給世界環(huán)境...
    茶點故事閱讀 41,867評論 3 333
  • 文/蒙蒙 一憨募、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧袁辈,春花似錦菜谣、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至荞彼,卻和暖如春冈敛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背鸣皂。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評論 1 272
  • 我被黑心中介騙來泰國打工抓谴, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人寞缝。 一個月前我還...
    沈念sama閱讀 48,906評論 3 376
  • 正文 我出身青樓癌压,卻偏偏與公主長得像,于是被迫代替她去往敵國和親荆陆。 傳聞我的和親對象是個殘疾皇子措拇,可洞房花燭夜當晚...
    茶點故事閱讀 45,507評論 2 359

推薦閱讀更多精彩內(nèi)容