拜占庭將軍問題是什麼?深度解讀

​拜占庭將軍問題

拜占庭將軍問題,首先由Leslie Lamport與另外兩人在1982年提出,很簡單的故事模型,卻困擾了計算機科學家們數十年。

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

然而,如果其中的一個或者幾個鄰邦本身答應好一起進攻,但實際過程出現背叛,那麼入侵者可能都會被殲滅。

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

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

達成共識並非坐下來開個會那麼簡單,有的將軍心機深不可測,口是心非,如果有叛徒,可能會出現各種問題:

1. 叛徒可能欺騙某些將軍自己將採取進攻行動。

2. 叛徒可能慫恿其他將軍行動。

3. 叛徒可能迷惑其他將軍,使他們接受不一致的信息,從而感到迷惑。

4. 針對拜占庭問題的深入研究,科學家們得出一個結論:如果叛徒的數量大於或等於1/3,拜占庭問題不可解。

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

假設只有3個人,A、B、C,三人中如果其中一個是叛徒。當A發出進攻命令時,B如果是叛徒,他可能告訴C,他收到的是“撤退”的命令。這時C收到一個“進攻”,一個“撤退”,於是C被信息迷惑,而無所適從。

如果A是叛徒。他告訴B“進攻”,告訴C“撤退”。當C告訴B,他收到“撤退”命令時,B由於收到了司令“進攻”的命令,而無法與C保持一致。

正由於上述原因,在只有三個角色的系統中,只要有一個是叛徒,即叛徒數等於1/3,拜占庭問題便不可解。

當然,只要叛徒數小於1/3,問題還是可解的。

解決方案:區塊鏈技術

互聯網的存在,首先降低了信息的流通成本。每個將軍配一臺電腦,就解決了”書面協議“中騎馬通訊造成時間延遲的問題。

如果10個將軍中的幾個同時發起消息,勢必會造成系統的混亂,造成各說各的攻擊時間方案,行動難以一致。

誰都可以發起進攻的信息,但由誰來發出呢?中本聰巧妙地在個系統加入了發送信息的成本,即:一段時間內只有一個節點可以傳播信息

它加入的成本就是“工作量”——節點必須完成一個計算工作才能向各城邦傳播消息,當然,誰第一個完成工作,誰才能傳播消息。

當某個節點發出統一進攻的消息後,各個節點收到發起者的消息必須簽名蓋章,確認各自的身份。中本聰在這裡引用現代加密技術為這個信息簽名。

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

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

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

公鑰和私鑰一般成對出現, 如果消息使用公鑰加密,那麼需要該公鑰對應的私鑰才能解密; 同樣,如果消息使用私鑰加密,那麼需要該私鑰對應的公鑰才能解密。

非對稱加密的作用是:保護消息內容, 並且讓消息接收方確定發送方的身份。比如,將軍A想給將軍B發送消息,為防止消息洩露,將軍A只需要使用B的公鑰對信息加密,而B的公鑰是公開的,B只需要用只有他自己只的私鑰解密即可。

將軍B想要在信件上聲明自己的身份,他可以自己寫一段“簽名文本”,並用私鑰簽名,並廣播出去,所有人可以根據B的公鑰來驗證該簽名,確定的B的身份。

由此,一個不可信的分佈式網絡變成了一個可信的網絡,所有的參與者可以在某件事在達成一致。

更多精彩點評請關注公眾號:肖恩說鏈。鏈豹財經CEO帶你每天漲知識!

-End-

拜占庭將軍問題是什麼?深度解讀


分享到:


相關文章: