OK區塊鏈60講:什麼是拜占庭將軍問題?

買賣虛擬貨幣
哈嘍大家好,我是小K君。今天我們要講的內容是:“什麼是拜占庭將軍問題”?我們在之前講過,分散式賬本可以說是區塊鏈的框架,每一個人都可以自由地參與進來,共同處理區塊鏈中的資料,基於這一點,區塊鏈實際上就是一個大的分散式計算網路。

它並沒有一個類似中央指揮室的東西來發號施令,整個網路是完全分散的,要依靠不同的節點間,彼此交換資訊、達成共識,才能統一行動,整個過程就像無領導小組討論一樣。

對此,有人就提出了疑問,萬一有節點傳送了錯誤的資訊,干擾網路正常執行或者大家產生了分歧怎麼辦?於是,學者們便建立了一個模型,統一將這類用來描述分散式系統一致性的問題,稱為拜占庭將軍問題。

所謂拜占庭將軍問題是這樣的:

拜占庭帝國想要攻打一個國家,它派出了多支軍隊進行圍攻,但敵國軍事實力也很強,將軍們必須在同一個時間,一起發動進攻才能獲取勝利。

現在的問題在於,每個將軍都分散在敵國四周,只能依靠通訊兵騎馬相互通訊,確定進攻的時間,可是一方面通訊兵可能會在送信過程中被敵方擊殺,另一方面根據不可靠訊息,在這些將軍中有叛徒的存在,叛徒可能會擅自變更進攻意向或者進攻時間,從而向其他將軍傳達虛假指令,影響他人判斷。

如果整個分散式網路相當於拜占庭帝國,而每個節點相當於裡面的將軍,那麼在這種狀態下,該怎麼做才能保證網路中的全部節點對於某個事情達成一致?(即將軍們在同一時間一起發起進攻,從而贏取戰鬥)這就是拜占庭將軍問題。

所以簡單來說,拜占庭將軍描述的是,分散式網路會面臨的兩個問題:

1)如何解決各個節點之間的同步問題。比如在沒有叛徒情況下,將軍 A 向其他將軍傳遞進攻方案時(如:明日下午 2 點進攻),可能將軍B也在傳遞進攻方案(如:明日下午 3點進攻)。

2)如何解決惡意節點,故意傳送錯誤資訊干擾網路的執行的問題。比如在有叛徒情況下,叛徒會向不同的將軍發出不同的進攻提議,干擾其他將軍們達成一致。

後來大家發現,想要在分散式網路中,讓每一個節點都不出錯是不可能的,於是就有人提出了“拜占庭容錯”的觀點來解決拜占庭將軍的問題,這個解決辦法就是資訊的偽造或錯誤並不重要,只要誠實的將軍數量大於總數的三分之二,即使有少部分不誠實的將軍存在,整個系統也可以達成一致。

於是大家以此為基礎,設計出了很多解決方案。

區塊鏈四大核心技術中的共識機制,就是為了解決這個問題,而誕生的一個方案,至於具體是如何解決的,請容小K君賣個關子,我們下節課再說。

免責聲明:

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

推荐阅读

;