拜佔庭將軍問題?

2020-12-23 umiCash

中本聰創建比特幣之前,需要在去中心化網絡中解決拜佔庭將軍問題,現有的算法和協議都是基於中心化網絡的解決方案。中本聰創造性的使用了POW共識算法來解決這個問題,那麼到底什麼是拜佔庭將軍問題?

美國計算機科學家萊斯利·蘭伯特(Leslie Lamport)在1982年提出拜佔庭將軍問題,老爺子當年在研究分布式系統容錯性的時候,為了方便理解編了一個拜佔庭將軍的故事,論文發表後,該故事廣為流傳。

嘗到甜頭後,1989年在解決這個拜佔庭問題上設計了一種稱為Paxos的容錯算法,繼續用這種敘事風格編了一個古希臘島嶼Paxos的政府會議臨時議員面臨的問題,不過在發表的時候審稿人需要老爺子把Paxos島的內容換掉,要不就拒絕發表。這麼一弄,等到很多人用paxos算法實現分布式系統的時候,文章才最終發表。文章發表的時間到完成時間足足用了8年。

由於在分布式計算系統的突出貢獻而獲得了2013年圖靈獎。老爺子在微軟公司任職期間獲得了該獎項,這使他成為微軟研究團隊中第五位獲得該獎項的成員。

那麼,拜佔庭將軍問題在分布式計算系統中,到底是什麼問題?為了易於理解,讓我們看看簡版故事的原型:

在很久很久以前,拜佔庭是東羅馬帝國的首都。那個時候羅馬帝國國土遼闊,為了防禦目的,因此每個軍隊都分隔很遠,將軍與將軍之間只能靠信使傳遞消息。 在打仗的時候,拜佔庭軍隊內所有將軍必需達成一致的共識,才能更好地贏得勝利。但是,在軍隊內有可能存有叛徒,擾亂將軍們的決定。 這時候,在已知有成員不可靠的情況下,其餘忠誠的將軍需要在不受叛徒或間諜的影響下達成一致的協議。

我們很容易從上面找到2個問題

1、信使的信息來源的問題,是否可靠?在計算機網絡中,我們可以理解我網絡通道的穩定性。

2、軍隊所有將軍是否達成某一個目標(一致進攻或撤退),如果出現叛徒的情況下如何實現?在分布式計算機網絡中,如何保證所有計算機的一致性,又要允許節點計算機的故障或錯誤。

第1個問題在計算機稱為網絡通道問題,如果我們傳遞消息的信道的可靠的,那麼問題可解。然而,是否真有這樣的通道嗎?

假如,

A將軍向B將軍派出通信兵,A要知道B是否收到信息

則,

A必須要求B給自己傳輸一個回執,說「我收到了,同意明天10點準時進攻」。

然,

B已經發送這條信息,B也不能確定A就一定會在這個時間進攻。

因為,

B發出的回執A並不一定能夠收到,所以A需要再給B發出一個回執說「我收到了」。

網絡通道問題在於系統永遠需要一個「回執」,更糟糕的是,通信兵的信息如果纂改,那麼目前現實並不存在一個可以一定勝利的通信協議。但這個問題又必須解決,有沒有一種相對可靠的通信協議來解決大部分問題呢?

有的,這就是基於信息網際網路的TCP/IP協議。TCP協議中A向B發出一個隨機數x,B收到x後發給A另一個隨機數y以及x+1作為答覆,這樣A就知道B已經收到了,然後A再發回y+1給B,這樣B就知道A已經收到了。這樣,A和B之間就建立了一個可靠的連接,彼此相信對方已經收到並確認信息。但是,A和B之間的通道的會出現丟失、監聽或篡改的情況(我們上不了Google/Facebook這類情況,你懂的),但這已經是相對可控的解決方案了,完美的解決這個問題需要量子糾纏技術了。

第2個問題,如何在有叛徒的情況下還能保持一致性,將軍們達成同一個目標?這個就是老爺子提出的拜佔庭將軍問題,也稱為拜佔庭容錯。

假設1:

將軍總數有3個(A、B、C),其中叛徒將軍有1個(B):

A將軍派出通信兵,B叛徒收到信息後,回復不同的命令,則對於C將軍收到兩個相反的消息,也無從判斷誰是叛徒,系統無法達成一致。

B叛徒派出通信兵,發送兩個相反的信息給另外的A、C將軍,另外2個收到相反的信息,無法判斷究竟誰是叛徒,系統無法達成一致。

假設2:

將軍總數有4個(A、C、D),其中叛徒將軍有1個(B):

A\C\D任何一個將軍派送通信兵,B同樣作惡,但是收到的信息結果很容易找出那個是叛徒(計算機或節點出現問題),從而快速達成共識。

B叛徒派出通信兵,發送不同信息給另外3個,但其他三個將軍之間進行通信後,他們自己也能達成一個共識。

老爺子給出算法就是計算機網絡節點(計算機或機房)總數是N,叛徒數量為F(出現錯誤的節點),則當N>=3F+1時,共識才能達成,這就是BFT算法。拜佔庭容錯算法解決的是基於網絡通信(大致)可靠的前提下,網絡節點可能出現故障的情況下達成一致性。

1999年,由castro和liskov提出PBFT是第一個得到廣泛應用的BFT算法,只要系統有2/3的節點是正常工作的,則可保證一致性。

在一個存在錯誤的分布式系統中,需要尋找一個算法和協議,使得整個網絡滿足以下三個屬性:

1)一致性

2)正確性

3)可結束性

實際情況,根據不同的假設條件,有不同的算法和協議設計出來,這些算法和協議各有優勢和局限,假設條件有以下幾種情況:

1)故障模型:非拜佔庭故障/拜佔庭故障

2)通信類型:同步/異步

3)通信網絡連接:節點之間直連數

4)信息發送身份:實名/匿名

5)通信通道穩定:可靠/不可靠

6)消息認證:認證/非認證

依據條件設計出來的這些算法如Paxos、Raft 、PBFT、DBFT、都是為了解決拜佔庭容錯,這些算法目前大部分應用在私有鏈和聯盟鏈當中,需要基於中心化可控的網絡系統中,而中本聰在比特幣去中心化網絡中創造性的引入了「工作量證明(POW : Proof of Work)」來解決這個問題。

相關焦點

  • 「萬向區塊鏈小課堂」實用拜佔庭容錯(PBFT)入門指南
    什麼是拜佔庭容錯?拜佔庭容錯是指分布式網絡的一種容錯能力,即網絡在存在無法正常運行或散布錯誤信息的惡意節點的情況下仍能讓誠實節點達成共識、正常運行。最初設計這種機制是為了解決拜佔庭將軍問題,運用集體決策的力量降低惡意節點對整體網絡的影響力,避免網絡出現嚴重故障。
  • 明尼城是拜佔庭的邊境城池,明尼城的南面便是大食
    明尼城城主被嚇壞了,所以當他收到那個使節的頭顱之後,竟然還在心理生出一絲小慶幸:暗道幸虧對方的將軍比較講道理,否則自己這個城主只怕是當到頭了。 不過慶幸歸慶幸,該他辦的事情還是要辦的,所以明尼城城主用最快的速度將人頭重新裝起來,派了信使用最快的速度送去了君士坦丁。
  • 拜佔庭帝國的滅亡
    以前打《帝國時代》,喜歡選拜佔庭人,因為其各方面的發展比較均衡,但真正理解拜佔庭帝國,需要一個過程。從厲先生的這篇文章,可以理解世界史的幾個重大問題。  拜佔庭帝國存在了一千多年,它有盛有衰,有起有落。
  • 拜佔庭帝國的末日:被內鬥葬送的末代拜佔庭王朝
    眾所周知,巴列奧略王朝和拜佔庭帝國一起,被1453年烏爾班大炮的怒吼和君士坦丁堡的沖天烈火所埋葬,,奧斯曼帝國的鐵蹄並非人力所能阻擋。人們往往歸罪於1204年的第四次十字軍東徵佔領君士坦丁堡,使得拜佔庭再難振興。然而在蝸居小亞細亞西北尼西亞的時代,拜佔庭人還能擒殺羅姆蘇丹國的蘇丹。
  • 陳志強 | 我國拜佔庭文化研究的新動向
    上世紀80年代中期,在改革開放政策激勵下重新興起的中國拜佔庭研究首先從拜佔庭文化研究開始。舉凡拜佔庭文化的重要方面大體都有涉及,本文上面提到的近年來見諸期刊發表的八十多篇文章,涉及拜佔庭文化特徵和歷史作用的不足5篇,而涉及拜佔庭宗教文化的有11篇,涉及拜佔庭物質文化的有30篇左右,其中僅關於我國發現的拜佔庭(東羅馬)貨幣的文章就佔了1/3以上。
  • 拜佔庭與中世紀服飾
    拜佔庭與中世紀歷史背景       公元4世紀,羅馬帝國,分裂為東,西羅馬帝國,拜佔庭帝國在近千年的時間裡穩定昌盛,它自稱是凱撒,和奧古斯都的繼承者,延續了古羅馬帝國的輝煌文化,同時也吸收了大量的中東文明、伊斯蘭文明,並通過絲綢之路保持著與東方中國的貿易往來,文化上更加具有多元性。
  • 拜佔庭帝國千年興衰史,你需要了解這14本書丨書單
    今天,文獻君向大家推薦14本關於拜佔庭帝國的圖書,更有「拜佔庭帝國三部曲」6折限時特惠活動喲~1.「拜佔庭三部曲」的第一部。全書的時間跨度為從公元800年,教皇利奧三世將羅馬皇帝的封號賜予查理曼,使得歐洲出現兩個皇帝,一直到1081年復活節的阿歷克塞·科穆寧的加冕禮為止,其間涉及拜佔庭帝國多位皇帝、將軍等重要人物,敘述了拜佔庭帝國在巴西爾二世執政時期走向盛極,而後不斷衰落的波瀾起伏的歷史。在本卷末尾,作者著重敘述了在這三百年的時間裡對拜佔庭帝國造成最重大打擊的一個歷史事件——曼齊刻爾特之戰。
  • 承上啟下,繼往開來:中世紀拜佔庭帝國醫學體系的傳承與發展
    在西方文明歷史上,延續千年的拜佔庭帝國是西方文明技術的藏寶庫。正是因為拜佔庭帝國千年的歷史延續,歐洲古典文化的諸多方面才得以傳承下來,這其中尤以醫學體系最為寶貴。拜佔庭人對希臘——羅馬古典醫學文化的繼承如果我們從拜佔庭帝國在時間和空間的跨度來觀察的話,拜佔庭帝國的核心統治區域一直位於巴爾幹半島以及小亞細亞半島之上,而巴爾幹半島正是古代歐洲希臘——羅馬文化的核心影響區域。因此,拜佔庭帝國對古希臘——羅馬醫學體系的繼承也是西方中世紀歷史發展的必然結果。
  • 擊敗拜佔庭後「西蒙大帝」迎來巔峰,危機卻也悄然滋生
    西蒙大公即位時的優勢與潛在問題 西蒙是鮑裡斯大公之子,在西蒙之前西蒙對於拜佔庭帝國的幹預不僅僅體現在戰爭方面,在拜佔庭帝國內部遭遇激烈的政治鬥爭,特別是王位繼承時的混亂時,西蒙也會竭盡全力去向拜佔庭帝國施加影響。 西蒙即位之後不久,就和拜佔庭帝國發生了戰爭,公元894年,拜佔庭軍隊不敵保軍之後,便開始暗中聯合保加利亞北部地區的馬扎爾人。
  • 拜佔庭黃金時代的超重裝騎兵的鐵甲具裝
    ——尼基弗魯斯二世,拜佔庭帝國統軍帝王10世紀早期,軍區制的繁盛對拜佔庭重騎兵的影響還並未特別體現在裝備革新,而主要體現在裝備數量上。到了10世紀後半葉的「徵服者時代」,情況則完全不同了。尤其以三位著名的徵服者及統軍帝王尼基夫魯斯二世、約翰一世、以及巴西爾二世時期為最甚。這個時期,拜佔庭專業化步兵已經復興,同樣專業化的重騎兵也越來越被重視。
  • 拜佔庭帝國皇帝查士丁尼的演員皇后
    拜佔庭帝國(即東羅馬帝國)最偉大的皇帝是查士丁尼大帝(527-565年在位),最出名的皇后是提奧多拉(約500-548年)。這位拜佔庭皇后在歐洲是一位家喻戶曉的歷史人物。提奧多拉出生於公元500年,父親叫阿卡基烏斯,是一個馬戲團裡的馴獸員。母親遺傳給女兒姣麗容貌和優美的身姿,不管長相或身材都無可挑剔。
  • 戛然而止的復興霸業:拜佔庭帝國的「查士丁尼大瘟疫」
    但以君士坦丁堡(古稱拜佔庭,今土耳其伊斯坦堡)為首都的東羅馬帝國依然存在,又稱拜佔庭帝國。拜佔庭帝國皇帝查士丁尼是個偉大的皇帝,他畢生最大的野望就是趕走蠻族,恢復古羅馬帝國的舊疆域。為此他勵精圖治,訓練軍隊,提拔將領,四處徵戰。這些將領之中最優秀的就是貝利撒留。
  • 拜佔庭滅亡的前奏: 第四次十字軍東徵(上)
    也正是他,一手把十字軍東徵的矛,刺進了同為基督教(雖然是東正教)兄弟東羅馬帝國(拜佔庭帝國)的胸膛,讓它再起不能。為奧斯曼(伊斯蘭教)的擴張埋下了禍根。    今天,我就來試圖講講第四次十字軍東徵的故事。       (以下稱東羅馬帝國為拜佔庭帝國)    前文提到,西羅馬滅國滅亡於公元476年,而在三世紀危機之後,便陸續有難民向東逃難。
  • 拜佔庭帝國的雙頭鷹標誌,為現在的哪些國家繼承?憑藉土耳其的實力...
    但雙頭鷹在拜佔庭帝國得到較多使用的年代較晚,要到十一世紀中期。這個紋章被科穆寧家族大量使用之後,便廣泛使用於各地,天主教和伊斯蘭教都有使用這個紋章的記錄。不過這種使用和拜佔庭帝國本身關係不大,雙頭鷹成為流行文化中,拜佔庭帝國專屬的文化標誌,也是近現代文化變遷的結果。至於當代土耳其的政治問題,並非我的研究範疇,個人淺見,土耳其維持地區強權有餘,成為一方共主不足。
  • 小餐桌大視野,打開拜佔庭的「餐桌」,了解背後的千年飲食文化
    而在日後的政權建設,以及其他文化思想方面,卻深受黑海、中亞甚至是遠東地區政權的影響,這使得拜佔庭文化,更加多元化和複雜化。正是因為拜佔庭帝國所處的地理位置,及其當時東西方世界的交互程度不斷加深,這使得拜佔庭連接東西方文化的橋梁角色不斷強化。
  • 拜佔庭帝國的滅亡,為何撼動了當時已經趨於穩定的國際局勢?
    自拜佔庭帝國從羅馬帝國中分裂出來之後,就一直在歷史長河中跌跌撞撞的前進。在西方,西羅馬帝國的覆滅讓拜佔庭帝國憂心忡忡;在東方,波斯帝國、阿拉伯帝國不斷衝擊著帝國的根基,拜佔庭帝國就是在這樣的環境下生存下來的。 然而歷史的經驗告訴我們,沒有任何一個國家的政權能夠永遠活躍在歷史舞臺之上。
  • 身無長物的奧斯曼,擊落了綿延千年的拜佔庭
    拜佔庭帝國統治時期的小亞細亞地區的廣大民眾一直備受基督教思想的控制,但是也有大量的本土人員在拜佔庭帝國勢力的侵襲之下不斷遷移,保留了伊斯蘭教信仰的基礎。阿拉伯帝國建立之後不斷驅逐拜佔庭帝國在亞洲尤其是兩河流域的勢力。這樣,基督教在亞洲部分地區的影響開始衰減,伊斯蘭教的勢力在不斷擴張。
  • 拜佔庭的眼淚:奧斯曼大軍湧入君士坦丁堡,國王誓死不降孤身巷戰
    但十字軍沒能堅守多久,1261年,拜佔庭帝國皇室貴族米海爾八世率領他的軍隊收復了君士坦丁堡,並重建了拜佔庭帝國。「無與倫比」的複雜城防系統,讓君士坦丁堡立於不敗之地。而君士坦丁堡之所以這樣出名,還得歸功於它那複雜的城防系統。其城牆是在君士坦丁一世在位時開始興建的,而城防系統建立的初衷是全方位環繞新都,以抵擋來自於陸路和海路的所有攻擊。
  • 中世紀男權至上的拜佔庭政治世相:為何四十年間歷經四代女皇?
    引言女性統治在拜佔庭歷史上是相對常有的,所以在帝國歷史上就先後出現過普拉切利亞女皇、馬爾蒂娜女皇、以及利奧四世的遺婦伊琳妮女皇。相對於其他時代的女皇統治,十一世紀的女性統治在拜佔庭歷史上更為耀眼,成為了一種別致的歷史現象。
  • 拜佔庭~君士坦丁堡~伊斯坦堡,一城三名,西方人眼中的世界中心
    數千年來,君士坦丁堡有過三個名字——拜佔庭~君士坦丁堡~伊斯坦堡,而這三個名字正好見證了地中海沿岸的千年爭霸史。1、拜佔庭——君士坦丁堡的前世(希臘階段)拜佔庭,是君士坦丁堡最初的名字。於是拜佔斯便在此建城,並用自己的名字命名為「拜佔庭」。