區塊鏈共識機制與拜占庭問題

區塊鏈共識機制與拜占庭問題

小編前天被悟空問答上邀請回答關於:“拜占庭問題”,沒有詳細解答,今天特意查閱了一些專業知識,來談談拜占庭問題;如果說區塊鏈是比特幣運行的軀幹,那共識機制就是其靈魂,如果談及區塊鏈的共識機制,就避不開拜占庭問題。什麼是拜占庭問題?

區塊鏈共識機制與拜占庭問題

拜占庭問題的由來

拜占庭問題是容錯計算中的一個問題,是萊斯利.蘭伯特等人在1982年提出的,故事是這樣的,公元5世紀的東羅馬國拜占庭帝國,擁有巨大的財富,它的10個鄰邦對它的財富垂涎已久;但是拜占庭高牆聳立,固若金湯,任何單個城邦的入侵行動都失敗了,而入侵者的軍隊也會被殲滅,反而使其自身容易遭到其他9個城邦的入侵。這10個城邦之間也互相爭奪對方的財富而經常爆發戰爭。

拜占庭的防禦能力非常強大,非大多數人一起才能攻破,而且只要其中有一個鄰邦背叛盟軍,該鄰邦的所有進攻軍隊都會被殲滅,隨後還會被其他鄰邦搶掠。這是一個由互不信任的各個鄰邦構成的分佈式網絡,每一方都小心行事,稍有不慎就會給自己的國家帶來災難。

區塊鏈共識機制與拜占庭問題

為了獲取拜占庭的鉅額財富,這些鄰邦分散在拜占庭的周圍,依靠士兵傳遞消息來協商進攻目的及進攻時間;這些鄰邦將軍想要攻克拜占庭,面臨這一個困擾:鄰邦將軍不確定他們中是否有叛徒,叛徒是否會擅自變更進攻意向或進攻時間。這種情況下,將軍們能否找到一種分佈式協議來進行遠程協商達成他們的共識,進而贏取拜占庭城邦的財富。

“拜占庭問題”模型

“拜占庭問題”模型中,對於將軍們(節點)有兩個默認的假設:

1、所有忠誠的將軍收到相同的命令後,都執行了命令得到了相同結果;所有節點對命令的解析和執行是一樣的,這個命令必須是一個確定性的命令,不存在隨機性 ,也不能依賴節點自身的狀態。(不能心情好就攻擊不好就原地休息。)

2、如果命令是正確的,那麼所有忠誠的將軍必須執行這條命令。忠誠的將軍需要判斷接收到的命令是不是正確的。這個判斷命令的方法是整個拜占庭問題容錯技術的核心。如果所有城邦目標統一,攻擊就會成功;如果所有城邦目標不統一,整個信息鏈就會迅速變質成不可信的信息,攻擊就會失敗。

區塊鏈共識機制與拜占庭問題

方法中的缺陷

針對拜占庭問題的解決方法有:口頭協議算法、書面協議算法等;

口頭協議算法的核心就是人的忠誠度問題了,要求每個送信者都要準確傳遞,信息接收者明確發送者的身份,並且信息接收者需要知道信息中是否缺少信息;口頭協議算法存在著明顯缺點,消息沒法溯源。為解決這問題,就出現了書面協議算法,要求籤名不可偽造,一旦被篡改即可發現,同時都要簽名來確認。後來發現書面協議算法也不能完全解決 拜占庭問題,因為該算法沒有考慮信息傳輸延時、簽名體系難以實現的問題,而且簽名消息記錄的保存就難以擺脫中心化機構,也就無法達到分佈式網絡一致性問題。

但是區塊鏈技術的共識機制完善了這些問題,至於具體如何完善,明天給大家詳細介紹區塊鏈技術共識機制(二),敬請期待!


分享到:


相關文章: