理解比特幣的正確姿勢——拜占庭將軍問題

理解比特幣的正確姿勢——拜占庭將軍問題

接觸區塊鏈的朋友,多少都聽過關於拜占庭將軍的這個話題,並且經常在網絡上看到,某某區塊鏈項目使用什麼技術解決了拜占庭將軍問題,那麼究竟什麼是拜占庭將軍問題呢,本文就從非專業的角度,來談談拜占庭將軍問題。

問題起源

理解比特幣的正確姿勢——拜占庭將軍問題

為了更好的理解拜占庭將軍問題,我們先來了解下這個問題的起源。

相傳在中世紀,拜占庭帝國(如今的土耳其地區)勢力強大,但是奈何幅員遼闊,每個城邦軍隊之間相聚太遠了。那時候還沒有類似狼煙的信息傳輸工具,城邦軍隊之間只能靠人來傳送信息。

這也造成了一個問題,如果敵人攻打某個城邦,所有將軍必須意見達成一致後,才能決定是支援還是防守(萬一是假消息貿然進攻,自己的城邦就沒人防守了)。

但是,在城邦之間有可能存在叛徒或者敵軍的間諜,會故意做出錯誤的判斷來干擾大家的決定,導致結果並不是大多數人的真實意願。

這個時候,在已知有成員謀反的情況下,其餘忠誠的將軍在不受叛徒的影響下如何達成一致的協議。這就是拜占庭問題。

基本概念

理解比特幣的正確姿勢——拜占庭將軍問題

通過這個故事,一個敏銳的計算機科學家萊斯利·蘭伯特將其引申為一種點對點通信的問題。

比較專業的解釋是這樣的。在存在消息丟失的不可靠信道上試圖通過消息傳遞的方式達到一致性是不可能的。因此對一致性的研究一般假設信道是可靠的,或不存在本問題。

舉例說明

理解比特幣的正確姿勢——拜占庭將軍問題

看完了基本概念不理解?沒關係,為了將這個問題讓非專業人士能看懂,我們舉個例子。

狗熊非常強大,想要擊敗狗熊需要四隻豺狼一起進攻才能獲得勝利,它們任何一隻單獨進攻都毫無勝算。

除非有至少3只豺狼同時襲擊才能擊敗狗熊,它們之間依靠通信烏鴉來協商進攻意向以及進攻時間。

但是困擾這些豺狼的問題是,它們不確定它們中是否存在間諜,間諜可能擅自變更進攻意願和進攻時間。

這種情況下,豺狼如何通過遠距離協商來讓他們贏取戰鬥,就成了上面提到的拜占庭將軍問題。

常規解決辦法

回想上面的實例,四隻豺狼想要實現同時進攻或者同時撤退,必須達成共識。針對這種情況,科學家們想出了兩個解決方案。

第一個是口頭協議。在口頭協議中需要注意以下三點是默認條件。

1.每個信息都能夠被準確接收

2.接收者知道是誰發送給他的

3.誰沒有發送消息大家都知道

口頭協議的算法原理比較簡單,為方便大家理解,舉個例子。

假如一共有10個節點,節點1對其他9個節點都發送了消息,然後節點2-10將消息進行轉達,每個節點都是信息的發送者和轉達者,這樣一輪下來,每個節點手上都會有10條信息(包括自己手裡的信息)。

接下來每個節點根據自己手中的信息,選擇多數人的投票結果行動即可,這個時候即便有間諜,因為少數服從多數的原則,只要聽大多數好節點的話就是正確的。

但是這種算法有著很大的缺陷,首先是計算工作量大,每一個節點都需要去和其他節點進行溝通,隨著節點數量增加,工作量成幾何增長。

再者就是無法查出哪個節點是壞節點,無法排除故障。因為口頭協議無法將歷史消息進行記錄,也就是我們常說的不可追溯,即便間諜發送不一致的消息,也無法追查到。

第二個就是書面協議。這裡同樣隱含了一些條件。

節點可以進行簽字,並且大家都能夠識別出這個簽字是否是本人,換種說法就是如果有人篡改簽字大家可以知道。

這樣就簡單多了,就好比這10個節點是通過書信來聯繫的,假設節點1建議明天上午10點進攻。

同意節點1的就籤個字,然後再給後面的,以此類推,直至所有人手裡堆滿了10封信,這個時候情況就與口頭協議類似了。

書面協議相對比口頭協議就是增加了一個認證機制,所有的消息都有記錄。一旦發現有人所給出的信息不一致,就是追查間諜。

但是書面協議也面臨諸多問題,首先就是簽名的不可偽造,真實情況複雜多變,連價值上億的名畫都可以偽造,區區一個簽名不足以保證真實性。

再者,現實中需要協商的內容更加複雜,協商成本太大,想要大規模應用困難重重。

區塊鏈給出新方案

理解比特幣的正確姿勢——拜占庭將軍問題

區塊鏈技術的誕生,為拜占庭將軍問題的解決提供了新的辦法。

對於上面提到的簽名偽造問題,區塊鏈給出瞭解決辦法。中本聰利用公鑰和私鑰來解決簽名偽造的問題。

另一方面,在網絡中如果所有人都發送消息,顯然勢必會造成網絡擁堵、節點處理變慢。通過引入工作量證明機制,誰算出一道數學題後,誰才能對其他節點進行發言。同時控制發言頻率,每10分鐘發言一次。

但是在沒有好處的情況下,顯然,大家都不會積極的去解題,做第一個發言的節點,因為第一個發言和最後一個發言並沒有什麼區別。

為了改變效率問題,巧妙的引入了獎勵機制,誰先第一個發言就會有代幣獎勵。為了證明誰是第一個,引入時間戳這個概念,從時間先後順序對第一名進行證明。

到這裡,我們基本瞭解拜占庭將軍問題是什麼了,並且還知道目前的解決辦法有哪些。其中最重要的一點,系統的認識了區塊鏈技術中每一個步驟的現實意義,從而能夠更加系統的認識比特幣。

對於社會上批判比特幣浪費資源的問題,如果你理解比特幣的意義後會發現,建立信任本身就是具有成本的,銀行的存在、國家機構的存在等等都是為國家貨幣服務,所消耗的資源自然不會少。

最後回到比特幣浪費資源這個問題,就會發現比特幣雖然消耗了社會資源,但是用更少的成本卻解決了信任問題。至此,也就不難理解代幣對於區塊鏈技術的重要性了,代幣作為激勵來保證區塊鏈的穩健運行!因此工作量證明也是非常有意義的。


分享到:


相關文章: