2.04 hyperledger fabric共識排序

尹成發表於2018-12-10

1.共識機制介紹

  • 交易背書:客戶端節點根據背書策略,選擇背書節點,傳送交易提案,背書節點呼叫智慧合約執行模擬交易,執行完成後,經過簽名背書,返回給客戶端節點,整個過程是模擬的
  • 交易排序:排序節點接收已經簽名背書的交易,確定交易順序,將排好序的交易打包成區塊,分發給其他組織主節點,排序節點不會去關心交易是否正確,只負責排序和打包區塊
  • 交易驗證:區塊儲存和交易驗證不衝突,區塊儲存前進行交易驗證,fabric中區塊狀態是世界狀態

2.Orderer節點作用

  • 交易排序
  • 區塊分發
  • 多通道資料隔離
    在這裡插入圖片描述

3.原始碼閱讀
在這裡插入圖片描述

4.共識機制原始碼目錄結構

  • 目錄結構介紹
    在這裡插入圖片描述
  • bccsp:與密碼學相關的,主要包括加密、數字簽名和證書等,將密碼學中的函式抽象成一組介面,可以很方便地擴充套件
  • bddtests:是一個新型的軟體開發模式,叫做行為驅動開發,傳統軟體是從需求到概要設計再到詳細設計最後到開發,行為驅動開發是需求直接到開發
  • common:公共庫,錯誤處理、日誌處理、賬本儲存以及各種工具等
  • core:是fabric的核心庫,子目錄中有與各個模組相關的目錄
    • chaincode:與智慧合約相關
    • comm:與網路通訊相關
    • endorser:背書節點相關
  • devenv:官方提供的開發環境,使用的是Vagrant
  • docs:文件相關
  • enents:事件監聽機制
  • examples:一些例子程式
  • gossip:通訊協議,最終一致性的共識演算法,用於組織內部區塊同步
  • gotools:用於編譯
  • images:用作docker映象打包
  • msp:成員服務管理,member service provider,fabric會為每一個成員提供證書,msp模組用於讀取證書做簽名等
  • orderer:排序節點的入口
  • peer:peer節點的入口
  • proposals:新功能提案
  • protos:fabric提供的所有資料結構和服務都在這裡面定義
  • 下面的就不重要了

5.共識機制原始碼閱讀

  • 看orderer中的main.go

6.Manageer原始碼閱讀

  • 點選server.go中的Manager進入Manager.go

7.ChainSupport原始碼閱讀

  • 點選Manager.go中的ChainSupport進入chainsupport.go

8.區塊切割和solo模式原始碼閱讀

  • 點選chainsupport.go中的Receiver進入blockcutter.go

9.交易收集和區塊擴散原始碼閱讀

  • 檢視交易收集
  • 檢視區塊如何擴散

10.共識機制總結

  • main.go是入口,是orderer節點初始化的流程
  • manager.go是多鏈的控制中樞,所有對鏈的操作,都要從這裡拿到chainsupport物件的例項
  • chainsupport.go是鏈物件的幫助介面,是鏈的代理,與鏈一一對應
  • 區塊切割中重點是Orderer方法,判斷當前排序節點的交易是否應該被切割到一個新的區塊,如果是,則呼叫Cut方法切割
  • solo共識將區塊鏈分散式系統簡化為了一個單機版的中心化系統,容易理解
  • 交易收集和區塊擴散:是server.go中兩個介面的實現
  • 排序節點實現了一個可插拔的服務,實現了多通道功能,現節點官方實現了solo和kafka兩種共識,也可以擴充套件其他的共識

學院Go語言視訊主頁
https://edu.csdn.net/lecturer/1928

[清華團隊帶你實戰區塊鏈開發]
(https://ke.qq.com/course/344443?tuin=3d17195d)
掃碼獲取海量視訊及原始碼 QQ群:
721929980
在這裡插入圖片描述

相關文章