1. 程式人生 > >2.08 hyperledger fabric完整案例

2.08 hyperledger fabric完整案例

1.fabric開發流程

  • 需求整理
  • 合約編寫
  • 合約部署
  • 合約互動
  • 外部服務編寫
    在這裡插入圖片描述

2.需求分析

  • 開發一個資產轉讓功能模組
  • 平臺功能
    • 使用者開戶和銷戶
    • 資產登記,解決資產上鍊和使用者繫結資產
    • 資產轉讓,資產所有權的變更
    • 查詢功能,使用者查詢、資產查詢、資產變更歷史查詢

3.合約編寫

  • assetsExchange.go

4.合約部署

  • 關閉docker
    在這裡插入圖片描述
  • 生成通道的創世交易
    在這裡插入圖片描述
  • 檢視生成的交易檔案
    在這裡插入圖片描述
  • 啟動網路
    在這裡插入圖片描述
  • 登入到client會話操作
    在這裡插入圖片描述
  • 建立通道
    在這裡插入圖片描述
  • 檢視通道
    在這裡插入圖片描述
  • 加入通道
    在這裡插入圖片描述
  • 建立mychannel
    在這裡插入圖片描述
    在這裡插入圖片描述
    在這裡插入圖片描述
  • 安裝智慧合約
    在這裡插入圖片描述
  • 鏈碼例項化
    在這裡插入圖片描述
    在這裡插入圖片描述
  • 註冊使用者
    在這裡插入圖片描述
  • 查詢使用者
    在這裡插入圖片描述
  • 資產登記
    在這裡插入圖片描述
  • 資產查詢
    在這裡插入圖片描述
  • 註冊第二個使用者
    在這裡插入圖片描述
  • 查詢第二個使用者
    在這裡插入圖片描述
  • 資產轉讓
    在這裡插入圖片描述
  • 檢視使用者2的資產資訊,已經有資產1的Id了
    在這裡插入圖片描述
  • 查詢資產1的歷史
    在這裡插入圖片描述
  • 查詢所有資產的變更歷史
    在這裡插入圖片描述
  • 登出使用者
    在這裡插入圖片描述
  • 查詢使用者是否存在
    在這裡插入圖片描述

5.鏈碼開發者模式

  • 特殊配置
    • 使用dev模式啟動peer節點
    • 方法一:peer node start --peer-chaincodedev=true
    • 方法二(給peer節點注入環境變數):CORE_CHAINCODE_MODE=dev
  • 刪除之前的網路
    在這裡插入圖片描述
  • 修改檔案
    在這裡插入圖片描述
  • 啟動網路
    在這裡插入圖片描述
  • 執行程式碼
    在這裡插入圖片描述
  • 進入cli
    在這裡插入圖片描述
  • 建立通道
    在這裡插入圖片描述
  • 加入通道
    在這裡插入圖片描述
  • 安裝鏈碼
    在這裡插入圖片描述
  • 例項化鏈碼
    在這裡插入圖片描述
  • 註冊使用者
    在這裡插入圖片描述
  • 查詢使用者
    在這裡插入圖片描述
  • 修改方法
    在這裡插入圖片描述
  • 再次執行,就可以生效
    在這裡插入圖片描述
  • 關閉docker
    在這裡插入圖片描述

6.外部服務分析

  • 如何提供服務,決定於應用場景,也就是決定於終端使用者
    • 智慧硬體:提供socket或tcp服務,主流是還是socket服務,例如太陽能發電終端
    • 遊戲、電商、社交:web或手機app,提供http服務(接下來例子採用http)
    • 企業內部:rpc或grpc服務
  • 如何選擇SDK
    • node.js
    • java
    • python
    • golang
  • SDK的模組
    • 區塊鏈管理:例如通道的建立和加入、鏈碼的安裝、例項化和升級等(區塊鏈和管理員或者雲服務提供商去用)
    • 資料查詢:區塊(區塊瀏覽器)和交易的查詢
    • 區塊鏈互動:發起交易(invoke或query)
    • 事件監聽:業務事件(SendEvent)、系統事件(block/trancastion)

7.SDK下載和配置

  • 搜fabric-sdk
    在這裡插入圖片描述
  • 可以檢視4個SDK的release
    在這裡插入圖片描述
  • 這裡選用第三個版本
    在這裡插入圖片描述
  • 下載SDK
    在這裡插入圖片描述
  • 切換版本
    在這裡插入圖片描述
  • 檢視日誌
    在這裡插入圖片描述
    在這裡插入圖片描述

8.外部服務編寫和部署

  • 編寫main.go
  • 編譯檔案
    在這裡插入圖片描述
    在這裡插入圖片描述
  • 執行外部服務
    在這裡插入圖片描述
    在這裡插入圖片描述

9.外部服務呼叫

  • 進入目錄
    在這裡插入圖片描述
  • 啟動網路
    在這裡插入圖片描述
  • 登入到client會話操作
    在這裡插入圖片描述
  • 建立通道
    在這裡插入圖片描述
  • 加入通道
    在這裡插入圖片描述
  • 安裝智慧合約
    在這裡插入圖片描述
  • 鏈碼例項化
    在這裡插入圖片描述
  • 使用者註冊
    在這裡插入圖片描述
  • 可以去linux中查詢使用者
    在這裡插入圖片描述
  • 使用者查詢,目前user2的資產還沒有登記
    在這裡插入圖片描述
  • 為user2資產登記
    在這裡插入圖片描述
  • 再次查詢user2,此時已經有資產了
    在這裡插入圖片描述
  • 也可以單獨查詢資產
    在這裡插入圖片描述
  • 建立user3使用者,測試資產轉讓
    在這裡插入圖片描述
  • user2的asset2資產,轉讓給user3
    在這裡插入圖片描述
  • 檢視user2和user3,資產已經被轉讓給了user3
    在這裡插入圖片描述
    在這裡插入圖片描述
  • 查詢資產變更歷史
    在這裡插入圖片描述
  • 刪除user3
    在這裡插入圖片描述
  • 檢視使用者和資產,都沒有了
    在這裡插入圖片描述