Fabric学习笔记-PBFT算法
本文介紹了實用拜占庭容錯算法(PBFT)。
Fabric在v0.6中采用的是PBFT算法,在v1.0.0-preview中是SBFT算法,在v1.0.0-release中文檔上說PBFT還在開發中,項目中目前還沒有實現(⊙o⊙)…但是萬變不離其宗都是對BFT算法的一些優化改進。
解決的問題
拜占庭算法主要解決了缺少可信的中央節點和可信任的通道的情況下,分布在網絡中的各個節點如何達成共識的問題,實用拜占庭算法是拜占庭算法的改進,主要改進了拜占庭算法效率不高的問題,將算法復雜度由指數級降低到多項式級,使得拜占庭容錯算法在實際系統應用中變得可行。
基本概念
- 客戶端(client)負責發送請求。
 - 副本(replica)所有參與提供服務的節點。
 - 備份節點(backup)主節點外的所有節點。
 - 主節點(primary)從副本中選出提供主要服務的節點。
 - 視圖(view)主節點和副本之間編號的一次快照。
 
PBFT是一種狀態機副本復制算法,即服務作為確定有限狀態機進行建模,狀態機在分布式系統的不同節點進行副本復制。每個狀態機的副本都保存了服務的狀態,同時也實現了服務的操作。
在確定有限自動機中,每個狀態對每個可能輸入只有精確的一個轉移,在輸入順序一致,起始狀態一致的情況下輸出也必然一致。這也就對PBFT算法中的副本提出了兩個限定 :
在這兩個限定條件下,即使失效的副本節點存在,PBFT算法對所有非失效副本節點的請求執行總順序達成一致,從而保證安全性。
將所有的副本組成的集合使用大寫字母R表示,使用0到|R|-1的整數表示每一個副本。為了描述方便,假設|R|=3f+1,這里f是有可能失效的副本的最大個數。盡管可以存在多于3f+1個副本,但是額外的副本除了降低性能之外不能提高可靠性。
算法流程
預準備階段和準備階段確保所有正常節點對同一個視圖中的請求序號達成一致。
準備階段和確認階段確保了節點執行了大多數都認可的操作。
PBFT算法流程:
PBFT算法流程主要介紹了PBFT算法的主要流程,其中還有一些問題例如:主節點是如何選擇,主節點失效,怎么確定消息的正確性等都不在此贅述,可以參考 區塊鏈核心技術:拜占庭共識算法之PBFT。
https://zhuanlan.zhihu.com/p/34346665
總結
以上是生活随笔為你收集整理的Fabric学习笔记-PBFT算法的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: Fabric源码分析-共识模块
 - 下一篇: Fabric学习笔记-智能合约