摘要:在這種狀態(tài)下,拜占庭將軍們才能保證有多于支軍隊在同一時間一起發(fā)起進攻,從而贏取戰(zhàn)斗拜占庭將軍問題中并不去考慮通信兵是否會被截獲或無法傳達信息等問題,即消息傳遞的信道絕無問題。共識算法的核心就是解決拜占庭將軍問題分布式網(wǎng)絡(luò)一致性問題。
本文首發(fā)于深入淺出區(qū)塊鏈社區(qū)
原文鏈接:什么是拜占庭將軍問題原文已更新,請讀者前往原文閱讀
接觸區(qū)塊鏈的同學(xué),多少都聽說過拜占庭將軍問題,經(jīng)??吹交蚵牭侥衬硡^(qū)塊鏈?zhǔn)褂媚衬乘惴ń鉀Q了拜占庭將軍問題,那么究竟什么是拜占庭將軍問題呢?
什么是拜占庭將軍問題也被稱為“拜占庭容錯”、“拜占庭將軍問題”。
拜占庭將軍問題是Leslie Lamport(2013年的圖靈講得?。┯脕頌槊枋?strong>分布式系統(tǒng)一致性問題(Distributed Consensus)在論文中抽象出來一個著名的例子。
這個例子大意是這樣的:
拜占庭帝國想要進攻一個強大的敵人,為此派出了10支軍隊去包圍這個敵人。這個敵人雖不比拜占庭帝國,但也足以抵御5支常規(guī)拜占庭軍隊的同時襲擊。這10支軍隊在分開的包圍狀態(tài)下同時攻擊。他們?nèi)我恢к婈牰鄮нM攻都毫無勝算,除非有至少6支軍隊(一半以上)同時襲擊才能攻下敵國。他們分散在敵國的四周,依靠通信兵騎馬相互通信來協(xié)商進攻意向及進攻時間。困擾這些將軍的問題是,他們不確定他們中是否有叛徒,叛徒可能擅自變更進攻意向或者進攻時間。在這種狀態(tài)下,拜占庭將軍們才能保證有多于6支軍隊在同一時間一起發(fā)起進攻,從而贏取戰(zhàn)斗?
拜占庭將軍問題中并不去考慮通信兵是否會被截獲或無法傳達信息等問題,即消息傳遞的信道絕無問題。Lamport已經(jīng)證明了在消息可能丟失的不可靠信道上試圖通過消息傳遞的方式達到一致性是不可能的。所以,在研究拜占庭將軍問題的時候,已經(jīng)假定了信道是沒有問題的.問題分析
單從上面的說明可能無法理解這個問題的復(fù)雜性,我們來簡單分析一下:
先看在沒有叛徒情況下,假如一個將軍A提一個進攻提議(如:明日下午1點進攻,你愿意加入嗎?)由通信兵通信分別告訴其他的將軍,如果幸運中的幸運,他收到了其他6位將軍以上的同意,發(fā)起進攻。如果不幸,其他的將軍也在此時發(fā)出不同的進攻提議(如:明日下午2點、3點進攻,你愿意加入嗎?),由于時間上的差異,不同的將軍收到(并認(rèn)可)的進攻提議可能是不一樣的,這是可能出現(xiàn)A提議有3個支持者,B提議有4個支持者,C提議有2個支持者等等。
再加一點復(fù)雜性,在有叛徒情況下,一個叛徒會向不同的將軍發(fā)出不同的進攻提議(通知A明日下午1點進攻, 通知B明日下午2點進攻等等),一個叛徒也會可能同意多個進攻提議(即同意下午1點進攻又同意下午2點進攻)。
叛徒發(fā)送前后不一致的進攻提議,被稱為“拜占庭錯誤”,而能夠處理拜占庭錯誤的這種容錯性稱為「Byzantine fault tolerance」,簡稱為BFT。
相信大家已經(jīng)可以明白這個問題的復(fù)雜性了。
中本聰?shù)慕鉀Q方案在出現(xiàn)比特幣之前,解決分布式系統(tǒng)一致性問題主要是Lamport提出的Paxos算法或其衍生算法。Paxos類算法僅適用于中心化的分布式系統(tǒng),這樣的系統(tǒng)的沒有不誠實的節(jié)點(不會發(fā)送虛假錯誤消息,但允許出現(xiàn)網(wǎng)絡(luò)不通或宕機出現(xiàn)的消息延遲)。
中本聰在比特幣中創(chuàng)造性的引入了“工作量證明(POW : Proof of Work)”來解決這個問題,有興趣可進一步閱讀工作量證明。
通過工作量證明就增加了發(fā)送信息的成本,降低節(jié)點發(fā)送消息速率,這樣就以保證在一個時間只有一個節(jié)點(或是很少)在進行廣播,同時在廣播時會附上自己的簽名。
這個過程就像一位將軍A在向其他的將軍(B、C、D...)發(fā)起一個進攻提議一樣,將軍B、C、D...看到將軍A簽過名的進攻提議書,如果是誠實的將軍就會立刻同意進攻提議,而不會發(fā)起自己新的進攻提議。
以上就是比特幣網(wǎng)絡(luò)中是單個區(qū)塊(賬本)達成共識的方法(取得一致性)。
理解了單個區(qū)塊取得一致性的方法,那么整個區(qū)塊鏈(總賬本)如果達成一致也好理解。
我們稍微把將軍問題改一下:假設(shè)攻下一個城堡需要多次的進攻,每次進攻的提議必須基于之前最多次數(shù)的勝利進攻下提出的(只有這樣敵方已有損失最大,我方進攻勝利的可能性就更大),這樣約定之后,將軍A在收到進攻提議時,就會檢查一下這個提議是不是基于最多的勝利提出的,如果不是(基于最多的勝利)將軍A就不會同意這樣的提議,如果是的,將軍A就會把這次提議記下來。
這就是比特幣網(wǎng)絡(luò)最長鏈選擇。
經(jīng)濟學(xué)分析工作量證明其實相當(dāng)于提高了做叛徒(發(fā)布虛假區(qū)塊)的成本,在工作量證明下,只有第一個完成證明的節(jié)點才能廣播區(qū)塊,競爭難度非常大,需要很高的算力,如果不成功其算力就白白的耗費了(算力是需要成本的),如果有這樣的算力作為誠實的節(jié)點,同樣也可以獲得很大的收益(這就是礦工所作的工作),這也實際就不會有做叛徒的動機,整個系統(tǒng)也因此而更穩(wěn)定。
很多人批評工作量證明造成巨大的電力浪費,促使人們?nèi)ヌ剿餍碌慕鉀Q一致性(共識)問題的機制:權(quán)益證明機制(POS: Proof of Stake)是一個代表。在拜占庭將軍問題的角度來看,它同樣提高了做叛徒的成本,因為賬戶需要首先持有大量余額才能有更多的幾率廣播區(qū)塊,POS不是本文重點,以后在講。
共識算法的核心就是解決拜占庭將軍問題(分布式網(wǎng)絡(luò)一致性問題)。擴展閱讀
The Byzantine Generals Problem
深入淺出區(qū)塊鏈 - 系統(tǒng)學(xué)習(xí)區(qū)塊鏈,打造最好的區(qū)塊鏈技術(shù)博客。
如果想與我有更密切的交流可以選擇加入我的知識星球(星球成員可加入微信技術(shù)交流群)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/23966.html
摘要:拜占庭故障是最嚴(yán)重最難處理的。在飛機發(fā)動機系統(tǒng)核電站和幾乎所有行為取決于大量傳感器結(jié)果的系統(tǒng)都需要拜占庭容錯。前面提到的算法,只要叛徒的數(shù)量不超過將軍的三分之一,就是拜占庭容錯。 showImg(https://segmentfault.com/img/bV6WtE?w=1080&h=870);區(qū)塊鏈本質(zhì)上是去中心化的系統(tǒng),由不同的成員計算機組成,這些成員的行為取決于它們的動機和它們可...
摘要:劉宇昆,英文名,是一名美籍華裔科幻作家。他最令國人熟知的成就,就是成功翻譯了劉慈欣的三體系列小說的英文版,讓大劉在國際科幻文學(xué)領(lǐng)域聲名鵲起。最近,月出版的科幻選集就收錄了他的新作,以及由他翻譯的劉慈欣作品黃金原野。 劉宇昆,英文名Ken Liu,是一名美籍華裔科幻作家。他最令國人熟知的成就,就是成功翻譯了劉慈欣的「三體」系列小說的英文版,讓大劉在國際科幻文學(xué)領(lǐng)域聲名鵲起。 這次他帶著新...
摘要:劉宇昆,英文名,是一名美籍華裔科幻作家。他最令國人熟知的成就,就是成功翻譯了劉慈欣的三體系列小說的英文版,讓大劉在國際科幻文學(xué)領(lǐng)域聲名鵲起。最近,月出版的科幻選集就收錄了他的新作,以及由他翻譯的劉慈欣作品黃金原野。 劉宇昆,英文名Ken Liu,是一名美籍華裔科幻作家。他最令國人熟知的成就,就是成功翻譯了劉慈欣的「三體」系列小說的英文版,讓大劉在國際科幻文學(xué)領(lǐng)域聲名鵲起。 這次他帶著新...
摘要:同時利用工作量證明等共識機制解決了雙重花費和拜占庭將軍問題。比如拜占庭將軍問題就是一個典型的協(xié)作問題。拜占庭帝國想要進攻一個強大的敵人,為此派出了支軍隊去包圍這個敵人。這個敵人雖不比拜占庭帝國,但也足以抵御支常規(guī)拜占庭軍隊的同時襲擊。 隨著比特幣的起起伏伏,區(qū)塊鏈技術(shù)也越來越受到關(guān)注,成為當(dāng)下和人工智能一樣風(fēng)靡的領(lǐng)域,也有了除了比特幣之外的應(yīng)用嘗試。不過明白區(qū)塊鏈技術(shù)底層原理的同學(xué)應(yīng)該...
摘要:區(qū)塊鏈系統(tǒng)首先是一個分布式系統(tǒng),分布式系統(tǒng)的核心問題包括一致性共識一致性問題一致性問題是分布式領(lǐng)域最為基礎(chǔ)也是最重要的問題。算法與算法問題是指分布式系統(tǒng)中存在故障,但不存在惡意節(jié)點的場景即可能消息丟失或重復(fù),但無錯誤消息下的共識達成問題。 區(qū)塊鏈系統(tǒng)首先是一個分布式系統(tǒng),分布式系統(tǒng)的核心問題包括一致性、共識 一致性問題 一致性問題是分布式領(lǐng)域最為基礎(chǔ)也是最重要的問題。如果分布式系統(tǒng)能實...
閱讀 2259·2023-04-26 01:50
閱讀 715·2021-09-22 15:20
閱讀 2595·2019-08-30 15:53
閱讀 1596·2019-08-30 12:49
閱讀 1714·2019-08-26 14:05
閱讀 2714·2019-08-26 11:42
閱讀 2309·2019-08-26 10:40
閱讀 2602·2019-08-26 10:38