ChainDesk:如何利用Fabric提供的介面編寫鏈碼
作者: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”
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:封裝的響應資訊。
一個開發的鏈碼原始檔的必要結構如下:
未經授權禁止轉載、改編,轉載請註明出處!
本文地址: https://www.chaindesk.cn/witbook/11/121
ChainDesk——全球區塊鏈技術生態超級社群
以區塊鏈技術為入口,搭建全球區塊鏈技術生態超級社群,社群將服務於公鏈生態建設、DAPP專案研發、技術諮詢、課程體系研發、區塊鏈書籍編寫,區塊鏈課程製作、講師培訓、區塊鏈職業教育、區塊鏈線上教育、去中心化技術評測一體化的區塊鏈技術超級社群。
免費·原創·專業·高效·系統