中本聰是如何解決拜占庭將軍問題的?

如何在一個不受信任的網絡上建立信任關係?這是困擾計算機科學家們數十年的難題。最終因為比特幣的出現,得以解決。當中,

拜占庭將軍問題,算是區塊鏈中的經典,是解決這一難題的核心內容。

中本聰是如何解決拜占庭將軍問題的?

拜占庭將軍問題(Byzantine failures),是由萊斯利·蘭伯特(2013年的圖靈講得主)在1982年提出的,用來為描述分佈式系統一致性問題(Distributed Consensus)在論文中抽象出來一個著名的例子,是點對點通信中存在的基本問題。

故事大概是這麼說的:

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

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

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

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

針對這種情況,有科學家們提出了兩種方案,即口頭協議和書面協議。

解決方案一:口頭協議

中本聰是如何解決拜占庭將軍問題的?

口頭協議

各個國家派信兵向其他所有國家傳達口信 , 每個國家再將自己收到的口信傳達給其他國家以供決策,最終多數投票即為共識。最終達成以下三點:

1、每個被髮送的消息都能夠被正確投遞;

2、信息接受者知道消息是誰發的;

3、沉默(不發消息 ) 可以被檢測;

但這個方案存在的缺陷也很明顯:消息無法溯源,無法確定消息的上一來源是誰,如有叛徒,則難以找到叛徒所在。

解決方案二:書面協議

中本聰是如何解決拜占庭將軍問題的?

不形成共識會導致失敗

各個國家派信兵向其他國家發送書面信息,並附其簽章,其他國家收到書信後附上自己的意見與簽章再發給剩餘國家,最終得到共識。實現了以下三點:

1、簽章有記錄,解決溯源問題

2、簽章難以偽造,篡改會被發現

3、任何國家都可驗證其他國家的簽章真偽

但這一解決方案依然存在缺陷:簽章記錄的保存人不一定可信,真正可信的簽名體系很難實現。

以上兩個方案,在任意時間,系統中可能會存在多個提案,即每個國家都可以傳出自己的意見 。 這樣一來 , 很難在一個時刻對結果進行一致性確認,協商一致需要大量試講和資源的投入

雖然,拜占庭將軍問題是由萊斯利·蘭伯特提出的,但真正解決這一難題的是中本聰。

中本聰是如何解決拜占庭將軍問題的?

信息同步,便於達成共識

中本聰在比特幣白皮書中,通過“比特幣協議”給出了終極解決方案。

1、引入“工作量證明”機制(PoW),只有第一個完成規定計算工作的國家才能傳播信息,從而保證一段時間內只有一個提案。

2、引入非對稱加密算法,為信息傳遞提供簽名技術支持,以保證消息傳遞的私密性,且不可抵賴、不可篡改。

於是10個國家組成了這樣一個分佈式網絡:

1、每個國家都有一份實時與其他國家同步的消息賬本。

2、賬本里有每個國家的簽名都是可以驗證身份的。如果有哪些消息不一致,可以知道消息不一致的是哪些國家。

3、儘管有消息不一致的,只要超過半數同意進攻,少數服從多數,共識達成。

由此,在一個分佈式的系統中,儘管有壞人,壞人可以做任意事情(不受protocol限制),比如不響應、發送錯誤信息、對不同節點發送不同決定、不同錯誤節點聯合起來幹壞事等。但是,只要大多數人是好人,就完全有可能去中心化地實現共識

中本聰是如何解決拜占庭將軍問題的?

到這裡應該基本說清楚了,基於互聯網絡的區塊鏈技術,它克服了口頭協議與書面協議的各種缺點,使用消息加密技術、以及公平的工作量證明機制,創建了一組所有國家都認可的協議。

比特幣採用的工作量證明機制(PoW),的出現,找到了目前拜占庭將軍問題的最優解決方案。但PoW機制需要通過計算方式獲取發消息的權利,會引發CPU的競爭,從而造成巨大的資源浪費,因此,也促使人們去探索更多辦法優化拜占庭將軍問題,這就出現了後來的權益證明(POS)和股權委託證明(DPOS)。


分享到:


相關文章: