區塊鏈|拜占庭將軍問題

為了蹭熱度寫CMT的文章,查了些資料才知道幣圈中有個拜占庭將軍問題(原諒我的孤陋寡聞),要想理解這個問題就必須知道一些背景,比如拜占庭帝國,這位與我國漢唐時期並列東西方的強國--古羅馬帝國,在我們名族英雄衛青,霍去病,以及唐朝的名將打擊,匈奴逐漸西遷,成為羅馬帝國的大患,在395年1月17日,羅馬帝國皇帝狄奧多西一世(346—395)逝世。他在臨終前,將帝國東西部分與兩個兒子繼承。 其中的東羅馬帝國延續了近千年之久,在此期間它一般被人簡單地稱為“羅馬帝國”。到了17世紀,西歐的歷史學家為了區分古代羅馬帝國和中世紀神聖羅馬帝國,便引入了"拜占庭帝國"這一稱呼。但是拜占庭帝國採取了軍區制改革 塑造了一批立志殺入首都的地方豪強,在個別地區,原先被推翻的皇族後裔,可以獲得地方勢力的支持,成為另立帝號的獨立皇國。他們對於此後的中央,也就毫無認同感可言。各種內鬥、暗殺、內戰,此起彼伏。無論帝國破落到什麼程度,都不會消停。他們還對於利用外部勢力的支持,毫不猶豫。因而總是在外患嚴重的時候,更容易獲得入駐中央的機會。一直到拜占庭的晚期,各家族的勢力範圍都被亂入的外部勢力,肢解的支離破碎。當大家都只有一畝三分地,還被彼此分隔開,這種內戰才得以告一段落。但拜占庭帝國本身也到了壽終正寢的時間。

區塊鏈|拜占庭將軍問題

知道了這些就更能理解拜占庭將軍問題了,知乎中有個解釋也很明瞭,11位拜占庭將軍去打仗, 他們各自有權力觀測敵情並作出判斷, 進攻或撤退, 那麼怎麼讓他們只用傳令兵達成一致呢?一種很符合直覺的方法就是投票,每位將軍作出決定後都將結果"廣播"給其餘所有將軍, 這樣所有將軍都能獲得同樣的11份(包括自己)結果, 取多數, 即可得到全軍都同意的行為.但如果這11位將軍中有間諜呢? 假設有9位忠誠的將軍, 5位判斷進攻, 4位判斷撤退, 還有2個間諜惡意判斷撤退, 雖然結果是錯誤的撤退, 這場戰爭必輸無疑了.在已知有成員叛變的情況下,其餘忠誠的將軍如何達成一致的協議,拜占庭問題就此形成。Lamport 證明了在理想狀態下,背叛者為m或者更少時,將軍總數只要大於3m,忠誠的將軍就可以達成一致,從技術上理解,拜占庭將軍問題是分佈式系統容錯性問題。

如何解決這個問題呢,算法是解決問題的理論基礎,拜占庭將軍問題就是針對分佈式共識算法提出來的,而這個問題也是比特幣等加密貨幣的核心問題。根據比特幣白皮書內容描述,大量篇幅提到誠實節點、攻擊者等問題,就如同外敵入侵後,將軍們出征了,如何確認各個將軍的言行是一致的呢?中本聰提出了工作量(POW)認證的方法,也就是做出了實際進展,給相應的比例,並廣播至其他將軍,簡單的話就是加入要進攻,那就是你派兵出征的距離人數越多,你得到獎勵也就越多,想法就沒有,大家根據獲得獎勵的多少,很明顯就知道各個將軍(節點)在幹什麼,由此,就很好的解決了上述問題,而這些獎勵就是我們現在的幣王--比特幣。

區塊鏈|拜占庭將軍問題

但是一方面在提工作量證明的時候,需要耗費大量的能源,同時大家都忙著幹活了,可能溝通就不怎麼順暢了,因此,處理效率很低(可以這樣理解嗎?),事實上,無論你採取什麼樣的方式,只要保證時間統一、步調一致、單點廣播、一個鏈條就能解決加密貨幣這種分佈式系統的拜占庭將軍問題。於是幣圈各位天才的努力下相繼出現ETH,EOS的解決方案。

區塊鏈|拜占庭將軍問題


分享到:


相關文章: