一分鐘瞭解拜占庭將軍問題 | 比特幣和它有什麼關係?

買賣虛擬貨幣
拜占庭將軍問題是學習比特幣技術一個繞不開的話題。下次聽別人談起拜占庭,你也可以過去侃兩句啦。什麼是拜占庭將軍問題?拜占庭將軍問題(Byzantine failures),是由電腦科學史上的傳奇人物萊斯利·蘭伯特提出的。主要針對點對點通訊中的基本問題——分散式系統一致性問題。是不是有種不明覺厲的感覺?完全聽不懂啊! 彆著急,繼續往下看唄。蘭伯特說:故事讓問題變得受歡迎。所以,拜占庭將軍問題,是蘭伯特在研究分散式系統容錯性時,編的一個故事:
拜占庭帝國想要進攻一個無比強大的敵人,派出了10支軍隊去包圍這個敵人。由於這樣那樣的原因,這10支軍隊不能集合在一起進攻,必須分開駐紮,然後同時發起攻擊。而這個敵人十分的強大,可以同時抵抗5支拜占庭軍隊的襲擊。拜占庭軍隊裡的任何一支,想要單獨進攻的話,都毫無勝算。除非至少超過一半(即6支及以上的軍隊)同時進攻,才能打敗敵人。軍隊分散在敵人的四周,依靠通訊兵來相互傳遞訊息:商量“要不要進攻”和“什麼時候進攻”。(因為存在訊息丟失的不可靠通道上,試圖透過訊息傳遞來達到一致性,是不可能的。所以,在研究拜占庭將軍問題的時候,我們已經假定了通道是沒有問題的。即所有的通訊兵是靠譜的,沒有叛徒。)那麼問題來了,如果將軍裡有叛徒,那麼這個叛徒將軍可能傳送錯誤訊息。比如:告訴其中4只軍隊要進攻,然後告訴另外5只軍隊不進攻,然後只有4只軍隊同時進攻,吃了敗仗。剩下5只軍隊,也無法戰勝這個強大的敵人。最後拜占庭軍隊戰敗。叛徒真的面黑心黑。在這種狀態下,拜占庭將軍們,能不能找到一種分散式的協議,讓他們能夠遠端協商,保證多於6支軍隊在同時發起進攻?從而打贏這場仗?電腦科學中,有類似的問題,比如安全漏洞。
系統中的不同節點,會對觀察者提供不同的訊號。在不知道這些資訊是否損壞的情況下,如何交換資訊?比特幣和拜占庭將軍問題有什麼關係?比特幣解決了網路中存在的拜占庭將軍問題。比特幣解決了分散式系統資訊不一致的問題。眾所周知,比特幣是一個分散網路,一個個節點,一個個礦工,就像包圍敵人的拜占庭將軍們。而礦工記錄的區塊資訊是否真實?會不會造假人?如何判斷?
作惡的礦工造假賬,就像混進了軍隊裡的的叛徒。他們會跟其他節點說,他們的假資訊是真的,他們記的假賬也是真的。叛徒混了進來,會破壞整個比特幣網路的真實性和有效性。大神中本聰解決了這個問題。首先,大神在設計比特幣時,採用了工作量證明機制(PoW)。礦工需要找到一個正確的隨機數,才能記賬。而隨機數是大家認可的數學邏輯,隨機嘛,誰都控制不了。這樣,所有的礦工(將軍)達成共識,投身於轟轟烈烈的挖礦事業中。其次,造假成本高,真實有獎勵。礦工挖礦,要耗費越來越多的時間、電力、資源,造假成本太高。而新幣獎勵,也激勵著礦工真實記賬。第三,每個節點(將軍)手裡,都有一份實時與其他節點同步的賬本,而且賬本有時間戳加持,有簽名驗證身份,如果誰造假,可以非常清楚何人何時造假。最後,當意見不一致,只要大多數人(超過50%)的人同意,少數服從多數,在分散式網路中共識達成。只要好節點是大多數,整個比特幣網路的記賬就是真實的。

免責聲明:

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

推荐阅读

;