什麼是實用拜占庭容錯機制?

2021-10-11 14:41:07 字數 1033 閱讀 2458

故事是這樣的,拜占庭帝國是 5-15 世紀的東羅馬帝國,也就是現在的土耳其。拜占庭帝國擁有巨大的財富,它的十個鄰邦國家都垂涎已久。但拜占庭城牆高聳,沒有乙個單獨的鄰邦能夠成功入侵。任何單個的城邦的入侵行動都會失敗,而且入侵的軍隊也會被殲滅,使得自身反而容易受到其他九個城邦的入侵。

這十個鄰邦之間也相互覬覦對方的財富而時常爆發戰爭,拜占庭的防禦能力很強,如果有六個或者更多的鄰邦一起進攻才會成功。然而,其中乙個或者幾個鄰邦發生背叛,答應一起進攻,但在其他人進攻的時候反悔了,就會導致只有五支或者更少的軍隊同時進攻,所有的進攻軍隊都會被殲滅。

因此,每個鄰邦都小心翼翼,不敢輕易相信鄰邦,因為稍有不慎,就會給自己帶來災難。這就是拜占庭將軍問題。

通俗的解釋就是大家共同商定好的一種規則,大家為了乙個共同的目的共同達成的乙個認知。區塊鏈網路節點達成的記賬共識與拜占庭將軍問題的攻城是相似的,可以將區塊鏈中的節點比作將軍,不會背叛的將軍比作正常節點,會背叛的將軍比作惡意節點。

為了方便理解,我們假設有甲、乙、丙、丁 4 位將軍攻城。同時有 3 位將軍進攻視為進攻成功。我們假設將軍乙為叛徒,將軍甲派出通訊兵告訴其他 3 位將軍子時進攻,因為將軍乙是叛徒,他收到將軍甲的訊息後,派出通訊兵告訴將軍丙和將軍丁丑時進攻。將軍丙收到將軍甲的訊息派出通訊兵告訴將軍乙和將軍丁子時進攻。將軍丁收到將軍甲的訊息派出通訊兵告訴將軍乙和將軍丙子時進攻。於是:

將軍乙收到:子時、子時、子時;

將軍丙收到:子時、丑時、子時;

將軍丁收到:子時、丑時、子時;

這樣每個將軍執行自己收到的最多的訊息。將軍丙和將軍丁收到的子時進攻訊息最多,將軍甲、將軍丙、將軍丁 3 位將軍於子時進攻,進攻成功。這就是 pbft 演算法,在研究拜占庭將軍問題時,分布式節點總數必須大於或等於4,且惡意節點不能超過三分之一時,就可以保障節點達成一致性結果,區塊鏈的中的各個節點按照這種演算法即可達成共識。

什麼是拜占庭將軍問題

也被稱為 拜占庭容錯 拜占庭將軍問題 拜占庭將軍問題是leslie lamport 2013年的圖靈講得住 用來為描述分布式系統一致性問題 distributed consensus 在 中抽象出來乙個著名的例子。這個例子大意是這樣的 拜占庭帝國想要進攻乙個強大的敵人,為此派出了10支軍隊去包圍這個...

什麼是拜占庭將軍問題

簡單點說 拜占庭有 n 個將軍,每次命令下發之後,將軍之間都會進行資訊傳遞 n個將軍中會有敵軍的叛徒發出誤導資訊來誤導其他將軍的判斷,那麼忠誠的將軍要在什麼樣的條件下才能達成資訊的一致性 這是前提條件 a1.每個被傳送的訊息都能夠被正確的投遞 a2.資訊接收者知道是誰傳送的訊息 a3.能夠知道缺少的...

什麼是拜占庭將軍問題

接觸區塊鏈的同學,多少都聽說過拜占庭將軍問題,經常看到或聽到某某區塊鏈使用某某演算法解決了拜占庭將軍問題,那麼究竟什麼是拜占庭將軍問題呢?也被稱為 拜占庭容錯 拜占庭將軍問題 拜占庭將軍問題是leslie lamport 2013年的圖靈講得住 用來為描述分布式系統一致性問題 distributed...