PBFT 爲什麼PBFT 需要2次Prepare

主題:“PBFT” 對於區塊鏈從業者而言都很是耳熟能詳的名詞了,大家也都知道PBFT是拜占庭容錯算法

但是有沒有人想過爲什麼PBFT 需要2次Prepare?

對於 這個知識點,我們需要了解PBFT pre_ prepare和 prepare是幹嘛的.

先用一個例子解釋PBFT工作原理

故事:某公司遠程開會,需要投票表決某一個事項,但是開會的成員不一定在聽,投票表決只有Yes和No,那麼假設有b(bad boy)個人沒有認真聽,那麼需要多少人投票表決纔可以算通過呢?計算過程:先假定人數n,我們看看n至少是多少。那麼正常的收到消息n-b,判斷標準,我們至少需要b+1 個人通過(b+1說明,在以知的b個拜占庭節點後,還收到b+1個一致的節點,說明這個消息是正確的),但是不確定裏面的n-b個人是不是也是有沒有認真聽的人,所以我們最終的結論是:n-b-b>b,所以,n>3b, 這也就是爲什麼pbft需要保證。

那爲什麼需要pre_prepare 和 prepare 這兩次呢?

那就需要了解pre_prepare和prepare是幹嘛的和整個算法有什麼關聯就好了。

先看看pre_prepare:

pre_prepare 工作:  

      leader節點:向所有節點發出pre_prepare消息,進入prepare階段。

      普通節點:收到Pre_prepare消息,進入prepare階段

再看看prepare階段:

      所有節點都會驗證pre_prepare 消息(massage)然後驗證消息是否合法,然後將自己的 節點信息和投票結果封裝進 massage,並且向其他節點廣播。然後統計收到的其他節點發送的(封裝後的massage結果),如果統計投票贊成的投票數量大於(2n/3)接着進入commit階段。

PBFT
泰嶽PBFT

 

      以上是個人理解。歡迎討論。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章