学习区块链,绕不过去的“拜占庭将军问题”!!这里正好有通俗易懂的解释
“拜占庭將軍問題”維基百科:
拜占庭將軍問題(Byzantine Generals Problem),是由萊斯利·蘭波特在其同名論文中提出的分布式對等網絡通信容錯問題。在分布式計算中,不同的計算機通過通訊交換信息達成共識而按照同一套協作策略行動。但有時候,系統中的成員計算機可能出錯而發送錯誤的信息,用于傳遞信息的通訊網絡也可能導致信息損壞,使得網絡中不同的成員關于全體協作的策略得出不同結論,從而破壞系統一致性。拜占庭將軍問題被認為是容錯性問題中最難的問題類型之一。
?
1-THE FIRST STORY-
第一個拜占庭將軍問題的故事
?
咱們由《哆啦A夢》動畫片開始吧,故事輕松,涉及到的人物角色少,主要是哆啦A夢 / 大熊 / 靜香 / 小夫 / 胖虎,這五個小伙伴。
胖虎體胖腰圓,常常喜歡欺負弱小同學,但他也很怕事,遇到強大的對手立刻就慫。某一天,常常遭到胖虎欺負的其他四個小伙伴,哆啦A夢/大熊/靜香/小夫開了一次小型的會議,決定聯合起來去找胖虎談判(下圖,他們戰斗值聯合起來可以讓胖虎服軟)。他們偷偷的給胖虎扔了一張小紙條,氣勢洶洶的約胖虎放學后小區小廣場見。
下課鈴響起,胖虎悠哉悠哉的走去小廣場,其他四位小伙伴計劃先各自回家,放下書包,火速去廣場集合。剛到家,大熊扔下書包打算去廣場,可是突然哆啦A夢說了一句話:小夫那么怕事,萬一他不去怎么辦?這時,大熊遲疑了,他想,對啊,靜香又是個女孩子,萬一也不想去,我們去了勢必要被胖虎揍一頓,我有點不想去了。于是哆啦A夢和大雄在家里躊躇著,靜香和小夫其實也在家里考慮著,都認為大熊膽小,也極可能不會去。就這樣,胖虎在小廣場上等了一小時也不見其他人。
這其實就是著名的拜占庭將軍問題,分析一下,它有幾個特點:1、敵人很強大(胖虎);2、作為弱者的幾個人實力均等(以上四個小伙伴);3、明確弱者聯合起來可以打敗強大的敵人;4、只要有一個弱者退出,合作勢必失敗。
首先明確并默念幾遍
拜占庭將軍問題的本質:
如何讓眾多完全平等的節點針對某一狀態達成共識
?
?
2 -THE SECOND STORY-
第二個拜占庭將軍問題的故事
古老的拜占庭帝國是一個強大的國家,他們常常進攻他國以擴大疆土。這次,他們打算攻打一個也很強大的國家多米諾,采取的戰略是兵分十路,包抄多米諾,這樣他們才會贏。他們按照地形,每支隊伍先駐扎下來做好準備等待進攻時刻。這時問題出現,十支部隊如今分開了,只要有一個或多個將軍是奸細或有將軍臨時反叛,到了約定的時間不沖鋒陷陣,那么戰爭就會失敗,損失也將極為慘重,只要多米諾國反攻甚至會亡國。
基于以上的問題,我們需要在行動時達成共識。互聯網上,每臺計算機都是一個個完全相等的節點,只能靠通信來協調,沒有權威背書或信任,是一個急需解決的問題。
如果把十支部隊想象成互聯網上十個獨立平等的節點,想達成共識即拜占庭將軍問題。這個問題的提出時間是1982年,直到2009年,比特幣的出現才算解決了這一問題。
比特幣的工作機制,POW(proof of work)工作量證明。工作量證明系統主要特征是眾多參與節點需要做一定難度的工作得出一個結果,誰先得出立即全網廣播,其他節點很容易通過結果來檢查出之前節點是不是做了相應的工作,一旦結果被證明正確,其他節點會把之前節點的結果添加到各自的賬單中,為爭取下一筆的交易記錄做好計算的準備。
沿用比特幣的工作機制,將軍A在互聯網上先發布了一個消息“進攻”并附上了自己的簽名“將軍A” ,即【進攻 + 將軍A】(這則消息容易被其他將軍證實確實是將軍A發出的)。
如果消息發出去,卻沒有執行的話,將軍A在拜占庭帝國會被認為是叛軍,他的族人都會被處死,他自己在整個社會也會混不下去。
將軍A的消息被其他節點收到,如果其他將軍也打算進攻,則在將軍A的消息后面跟上自己的信息,如:【進攻 + 將軍B】,以此類推。當此類消息達到十個,他們必將堵上未來,一同發起進攻。
這時也會出現一種情況,將軍A發出消息后,可能會有兩個或多個將軍同時跟上“進攻+簽名”的消息,這時,各個節點會嚴格按照廣播的精確時間進行排序,確保一條鏈的完整性。
也有完全同時廣播出來的情況,這時就是“分叉”,出現一個分開的兩條鏈,之后,哪條鏈上添加的賬本多(共識多),哪條就成為主鏈,另一條分叉鏈就此中斷或被部分礦工認可繼續添加(如:以太坊和以太坊經典)
之所以能夠達成統一的共識,認可這一賬本,最終是因為利益驅使。任何人都可以隨時加入比特幣這套系統,讀取/更新/記錄賬本,只要解題的速度夠快且準確,就可以爭取到比特幣作為獎勵(我們這里只用比特幣的工作機制舉例);相反,比特幣網絡中只有擁有超過51%的算力才能破壞網絡安全,如果惡搞的話,會浪費自己的大量資源,收益可能并不高于成本。
作者:動物園大亨丶
鏈接:https://www.jianshu.com/p/848d5db9ecb5
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
總結
以上是生活随笔為你收集整理的学习区块链,绕不过去的“拜占庭将军问题”!!这里正好有通俗易懂的解释的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: zookeeper集群搭建配置zoo.c
- 下一篇: 图灵完备是什么?