名詞解釋五十七講:拜占庭將軍問題

買賣虛擬貨幣

這裡是王團長區塊鏈學院,與最優秀的區塊鏈人一起成長!今天給大家講講拜占庭將軍問題。

瞭解過BTC/" target="_blank"">比特幣和區塊鏈的人,多少都聽說過拜占庭將軍問題,區塊鏈一個重要成就正是解決了拜占庭將軍問題,但真正明白這個問題的人並不多。

拜占庭將軍問題是一個共識問題: 首先由萊斯利·蘭波特與另外兩人在1982年提出,核心描述是軍中可能有叛徒,卻要保證進攻一致,由此引申到計算領域,發展成了一種容錯理論。

拜占庭將軍問題的具體描述就是:

古老的拜占庭帝國是一個強大的國家,他們常常進攻他國以擴大疆土。這次,他們打算攻打一個也很強大的國家,採取的戰略是兵分十路包抄戰略,這樣他們才會贏。他們按照地形,每支隊伍先駐紮下來做好準備等待進攻時刻。這時問題出現,這個敵人雖比不上拜占庭帝國,但也足以抵禦5支常規拜占庭軍隊的同時襲擊,十支部隊如今分開了,他們任一支軍隊單獨進攻都毫無勝算,除非有至少6支軍隊同時襲擊才能攻下敵國。他們分散在敵國的四周,依靠通訊兵相互通訊來協商進攻意向及進攻時間。困擾這些將軍的問題是,他們不確定他們中是否有叛徒,叛徒可能擅自變更進攻意向或者進攻時間,那麼戰爭就會失敗,損失也將極為慘重。

十位將軍為了協調一致,在那個古老的時代,只能靠通訊兵傳遞資訊,十位將軍相互通訊一次就需要90次傳信,每位將軍都有各自的攻城計劃,要想達成統一就需要往復傳遞不知道多少次。 我們可以假設一個場景,一個桌子上坐著十位將軍,每個人各自說著自己的想法,同時聽其他九位的說法,但是資訊的傳遞不是實時的,有快有慢,有早有晚。也就是說,這十位將軍如果想達成一致,理論上有可能,實際上基本無法實現。

而區塊鏈和比特幣的出現,利用網際網路資訊傳遞的及時性特點,引入時間戳可以明確知道“誰先說、誰後說”的特性,創造性地加入挖礦機制(就是用計算機算隨機數滿足一定難度才算成功)比拼各位將軍的智商來決定誰做本次進攻的統帥,使用非對稱加密保證資訊傳輸的安全性等等手段融合到比特幣中,用例項說明自己破解了這個歷史難題“拜占庭將軍問題”。

下面我們看看到底是怎麼解決的,我們把十個將軍想象成網際網路上十個獨立平等的節點,比特幣的工作機制是:POW(工作量證明機制)。工作量證明機制主要特徵是眾多參與節點需要做一定難度的工作得出一個結果,誰先得出立即全網廣播,其他節點很容易透過結果來檢查出之前節點是不是做了相應的工作,一旦結果被證明正確,其他節點會把之前節點的結果新增到各自的賬單中,為爭取下一筆的交易記錄做好計算的準備。

透過使用比特幣的工作量證明機制,將軍A在網際網路上先發布了一個訊息“進攻”並附上了自己的簽名“將軍A” ,即【進攻 + 將軍A】,當然,前提是其他將軍都能確實這個訊息是將軍A發出的。

如果訊息發出去,將軍A卻沒有執行的話,那將軍A就是叛徒,他會受到處置,所以將軍們不敢隨意發假訊息出去。

將軍A的訊息被其他節點收到,如果其他將軍也打算進攻,則在將軍A的訊息後面跟上自己的資訊,如:【進攻 + 將軍B】,以此類推。當此類訊息達到十個,他們必將堵上未來,一同發起進攻,攻克敵國,就算是叛徒也不敢輕易現身,因為在網路上會被輕鬆識破,而且即使叛徒現身也改變不了結局,因為絕大部分將軍已經達成共識。

這時也會出現一種情況,將軍A發出訊息後,可能會有兩個或多個將軍同時跟上“進攻+簽名”的訊息,這時,各個節點會嚴格按照廣播的精確時間進行排序,確保一條鏈的完整性。

也有完全同時廣播出來的情況,這時就會出現“分叉”,出現一個分開的兩條鏈,之後,哪條鏈上新增的賬本多(共識多),哪條就成為主鏈,另一條分叉鏈就此中斷或被部分礦工認可繼續新增,就像ETH和ETC,以太坊網路分叉出了一條鏈,被部分礦工認可繼續新增,就有了ETC,而ETH也同時存在。

之所以能夠達成統一的共識,認可這一賬本,最終是因為利益驅使。任何人都可以隨時加入比特幣這套系統,讀取/更新/記錄賬本,只要解題的速度夠快且準確,就可以爭取到比特幣作為獎勵(我們這裡只用比特幣的工作機制舉例);相反,比特幣網路中只有擁有超過51%的算力才能破壞網路安全,如果惡搞的話,會浪費自己的大量資源,而且收益可能會低於成本。

想要了解更多的區塊鏈知識,可以關注我們的公眾號:王團長區塊鏈日記,與最優秀的區塊鏈人一起成長!

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;