2.04 hyperledger fabric共識排序
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
相關文章
- Hyperledger Fabric(Hyperledger Fabric模型)模型
- Hyperledger Fabric 核心概念
- 【Hyperledger Fabric】Fabric 2.2 手動安裝
- Hyperledger Fabric on SAP Cloud PlatformCloudPlatform
- fabric sdk : org.hyperledger.fabric.sdk.exception.ProposalExceptionException
- Hyperledger Fabric 2.0 Alpha釋出了!
- 2.02 hyperledger fabric入門
- Hyperledger Fabric無排序組織以Raft共識演算法啟動多個Orderer服務、多組織共同執行維護Orderer服務排序Raft演算法
- Fabric基於Kafka的共識機制剖析Kafka
- 1-Hyperledger Fabric概念詳解
- Hyperledger Fabric部署的坑(更新中)
- 2.03 hyperledger fabric系統架構架構
- 2.05 hyperledger fabric賬本儲存
- 2.06 hyperledger fabric智慧合約
- Hyperledger Fabric命令詳解之 up
- Hyperledger fabric 鏈碼篇GO(四)Go
- Hyperledger Fabric部署與測試(Ubuntu)Ubuntu
- Fabric基礎架構原理(2):共識與交易架構
- HyperLedger/Fabric SDK使用Docker容器映象快Docker
- 在Ubuntu上部署Hyperledger Fabric環境Ubuntu
- Hyperledger Fabric 2.x 環境搭建
- Hyperledger Fabric系統鏈碼介紹
- Hyperledger Fabric開發(二):建立網路
- HyperLedger Fabric 1.0的Transaction處理流程
- Mac OS搭建Hyperledger Fabric官方Demo一Mac
- Hyperledger Fabric 智慧合約開發及 fabric-sdk-go/fabric-gateway 使用示例GoGateway
- Fabric 1.0原始碼分析(10)consenter(共識外掛)原始碼
- Hyperledger Fabric原理詳解與實戰1
- Hyperledger Fabric原理詳解與實戰4
- 區塊鏈 2.0:Hyperledger Fabric 介紹(十)區塊鏈
- 區塊鏈開發Hyperledger Fabric入門區塊鏈
- Hyperledger Fabric和FISCO BCOS技術對比
- 聯盟鏈 Hyperledger Fabric 應用場景
- 基於Hyperledger Fabric實現ERC721
- 死磕hyperledger fabric原始碼|Order節點概述原始碼
- Hyperledger Fabric 2.x 自定義智慧合約
- Hyperledger Fabric 手動搭建【區塊鏈學習三】區塊鏈
- HyperLedger Fabric和區塊鏈是什麼關係?區塊鏈