日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

通俗易懂理解PBFT拜占庭容错的回答

發布時間:2025/3/15 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 通俗易懂理解PBFT拜占庭容错的回答 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
作者:蔣雨辰
鏈接:https://www.zhihu.com/question/52254063/answer/322188918
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

拜占庭容錯是一種共識算法,即如何使遠距離通信的人們對一個提案達成一致意見。

與普通的共識算法(例如,majority wins,即超過一半人贊成即有效)不同的是,PBFT可以容忍投票的人中產生叛徒或者不響應

舉個合適的例子,我是一個愚昧的國王,沒有自己的判斷力,我不知道應該對敵國進攻還是投降好。我有一些大臣,我希望聽從他們的意見做出決定,但是他們現在都離我很遠,我只能通過飛鴿傳書的方式告知他們目前的問題,得到他們的選擇。然而,可能出現大臣叛變,故意提出相反的觀點(錯誤的節點),也可能出現鴿子在傳輸過程中飛錯了,我沒有得到該大臣的選擇(網絡堵塞)。PBFT可以保證如果我有3f+1的大臣的話,即使其中有f個大臣叛變或者沒有響應,我依然可以得出共識的正確結果。

這里一個核心問題就是,為什么有f個節點未響應或出錯時,為了保證系統的正常,我需要總共有3f+1個節點進行投票。

同樣用國王的例子,假設除了我(國王)一共有n個大臣,我知道其中有f個大臣是叛徒或者未響應,所以我一定要能從n-f個大臣的回應中進行判斷(如果上述f個大臣都是未響應)。然而由于是飛鴿傳書(異步傳輸),所以當我陸續收到n-f個傳來的消息后,我并不知道之后是否還會有新的消息傳來。因為如果f個有問題的大臣都是未響應,那么我將不會收到新的消息,如果其中有大臣是叛徒,我之后還會收到消息,但作為國王的現在不知道是哪種情況,卻需要立刻作出進攻還是投降的判斷。

最壞的情況下,剩下的f個大臣都是好人,只是鴿子飛得慢我還沒收到消息,也就是說我收到消息的n-f的大臣中有f個大臣都是叛徒,即f個叛徒和n-2f個好人。由于多數者勝,所以只有當n-2f>f的情況下,作為國王的我會做出正確的決定,即n>3f,n最小需要取3f+1。

這也就是為什么PBFT能保證有3f+1節點投票時,允許f個節點未響應或者出現故障投相反票。

總結

以上是生活随笔為你收集整理的通俗易懂理解PBFT拜占庭容错的回答的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。