1. 程式人生 > >ChainDesk:如何利用Fabric提供的介面編寫鏈碼

ChainDesk:如何利用Fabric提供的介面編寫鏈碼

區塊鏈技術QQ交流群:263270946 掌握更多技術乾貨,關注微信公眾號“ChainDesk”

作者:ChainDesk韓小東,ChainDesk區塊鏈行業分析師, ChainDesk區塊鏈工程師

 


 

目標

牢記編寫鏈碼所需要的兩個重要包

開發鏈碼所必須實現的介面及方法

開發鏈碼檔案的基本結構

任務實現

開發鏈碼,離不開 Hyperledger Fabric 提供的 SDK ,為了方便諸多不同的應用場景且使用不同語言的開發人員,Hyperledger Fabric 提供了許多不同的 SDK 來支援各種程式語言。如:

Hyperledger Fabric Node SDK:https://github.com/hyperledger/fabric-sdk-node

Hyperledger Fabric Java SDK:https://github.com/hyperledger/fabric-sdk-java

Hyperledger Fabric Python SDK:https://github.com/hyperledger/fabric-sdk-py

Hyperledger Fabric Go SDK:https://github.com/hyperledger/fabric-sdk-go

在本課程中我們將使用 Golang 進行鏈碼的開發,所以我們應該確定在本系統中有 Hyperledger Fabric 提供的相關API,其它語言的 SDK 我們不在本課程中進行討論。

如果本地系統中沒有相關的API,請執行如下下載命令:

 

區塊鏈技術QQ交流群:263270946 掌握更多技術乾貨,關注微信公眾號“ChainDesk”

區塊鏈技術QQ交流群:263270946 掌握更多技術乾貨,關注微信公眾號“ChainDesk”

 

Init 與 Invoke 方法

編寫鏈碼,關鍵是實現 Init 與 Invoke 兩個方法,必須由所有鏈碼實現。Fabric 通過呼叫指定的函式來執行事務。

Init:在鏈碼例項化或升級時被呼叫, 完成初始化資料的工作。

invoke:更新或查詢提案事務中的分類帳本資料狀態時,Invoke 方法被呼叫, 因此響應呼叫或查詢的業務實現邏輯都需要在此方法中編寫實現。

在實際開發中,開發人員可以自行定義一個結構體,然後重寫 Chaincode 介面的兩個方法,並將兩個方法指定為自定義結構體的成員方法;具體可參考下一節的內容。

5.1.2 必要結構

依賴包

shim 包為鏈碼提供了 API 用來訪問/操作資料狀態、事務上下文和呼叫其他鏈程式碼;peer 包提供了鏈碼執行後的響應資訊。所以開發鏈碼需要引入如下依賴包:

"github.com/hyperledger/fabric/core/chaincode/shim"

shim 包提供了鏈碼與賬本互動的中間層。

鏈碼通過 shim.ChaincodeStub 提供的方法來讀取和修改賬本的狀態。

"github.com/hyperledger/fabric/protos/peer"

peer.Response:封裝的響應資訊。

一個開發的鏈碼原始檔的必要結構如下:

 

區塊鏈技術QQ交流群:263270946 掌握更多技術乾貨,關注微信公眾號“ChainDesk”

 

未經授權禁止轉載、改編,轉載請註明出處!

本文地址: https://www.chaindesk.cn/witbook/11/121

 


 

ChainDesk——全球區塊鏈技術生態超級社群

以區塊鏈技術為入口,搭建全球區塊鏈技術生態超級社群,社群將服務於公鏈生態建設、DAPP專案研發、技術諮詢、課程體系研發、區塊鏈書籍編寫,區塊鏈課程製作、講師培訓、區塊鏈職業教育、區塊鏈線上教育、去中心化技術評測一體化的區塊鏈技術超級社群。

免費·原創·專業·高效·系統