1. 程式人生 > >詳解區塊鏈服務——業務層區塊鏈應用開發

詳解區塊鏈服務——業務層區塊鏈應用開發

proc mage follow tex content 證書 一個 用戶 vpd

開發業務層區塊鏈應用

[Hyperledger fabric(https://www.huaweicloud.com/product/bcs.html) 目前支持java,nodejs,go和python語言的sdk,供用戶選擇用不同的語言開發上層應用,使用相應的sdk調用部署在區塊鏈上的鏈碼。以下示例中我們選擇使用go語言開發業務層應用。

步驟1:配置fabric sdk
Hyperledger fabric官方提供了我們需要的go sdk文件包,下載地址是:
https://github.com/hyperledger/fabric-sdk-go 目前BCS服務使用的版本commit號是035e4f9。

我們需要為fabric sdk生成相應的配置文件和訪問區塊鏈節點的組織證書。SDK配置文件主要包括要訪問的鏈碼名稱/版本、證書解壓的目錄位置、實例化鏈碼的通道,安裝鏈碼的節點組織/名稱。在訂購的區塊鏈服務狀態中的點擊圖18中的“下載SDK配置“會彈出圖19配置窗口,完成sdk配置。

技術分享圖片

圖18 SDK配置文件下載界面
技術分享圖片

圖19 配置SDK文件下載界面

在訂購的區塊鏈服務狀態列表頁面上可以查看每個節點的狀態以及相應的證書下載功能,我們需要下載相關的證書到sdk的配置文件所指定目錄中,使得業務應用可以和區塊鏈節點正常的進行通訊。圖20顯示了orderer節點和peer節點的證書下載鏈接。

技術分享圖片

圖20 orderer節點和peer節點的證書下載

步驟2:編寫業務應用代碼
合理配置sdk與區塊鏈節點peer的通信後,業務層應用代碼僅需對接鏈碼的invoke和query的方法。以下示例中我們使用sdk提供的接口ChannelClient,即先通過加載sdk配置文件生成一個sdk實例,然後傳入通道名稱和用戶信息生成一個ChannelClient對象,最後使用該ChannelClient發起一筆執行鏈碼的交易。

技術分享圖片
圖21 ChannelClient初始化過程

在業務應用代碼中定義好一個鏈碼的數據結構ChainCodeSpec,包括ChannelClient對象、 用戶信息和鏈碼名稱等,在ChannelClient初始化時給其賦值。將鏈碼的invoke和query方法定義成結構體方法,可以很簡單的在發起交易的時候完成數據傳遞如圖22所示。

技術分享圖片
圖22 調用鏈碼的invoke和query方法

步驟3:測試業務應用代碼
下面我們簡單的定義一個main方法如圖23來測試一下我們的代碼。首先聲明之前在鏈碼管理網站實例化的鏈碼信息,即鏈碼名稱chaicodetest,實例化的通道名稱testchannel,用戶使用的是組織內的普通用戶。其次,定義兩個測試方法創建測試用例和查詢測試用例。

創建測試用例create_testcases需要按順序傳入4個參數即項目名稱、模塊名稱、測試用例名稱和測試用例描述,調用invoke方法將一次交易寫入區塊鏈。查詢測試用例query_testcases方法傳入項目名稱和模塊名稱,查詢測試用例信息。
技術分享圖片
圖23 業務應用調用鏈碼實現端到端測試

之後我們使用go run來執行這個測試用例,如圖24我們可以看到已經生成testchannel實例並與區塊鏈節點建立連接。為了確認交易是否正常,鏈碼是否正確保存之前用例的復合鍵值索引,我們登陸區塊鏈節點並用“docker logs <容器id>”命令我們可以看到如圖25中為每筆交易創建的區塊。圖26鏈碼容器也可檢查我們之前鏈碼打印的日誌來確定是否可以正確查詢測試用例。

技術分享圖片
圖24 SDK代碼執行結果

技術分享圖片
圖25 查看區塊鏈節點peer中的運行結果

技術分享圖片
圖26 鏈碼運行結果

技術分享圖片
本文通過一個簡單的例子介紹如何通過華為雲提供的區塊鏈服務快速的開發和搭建起一個應用,用戶可以根據所需的場景,基於本文的示例部署區塊鏈服務,開發鏈碼和業務層應用。
本文只闡述了部分代碼的實現,完整的代碼下載地址是:https://github.com/cloud1230/testsystem,供開發人員參考。

點擊下方鏈接即可體驗區塊鏈服務 BCS!
https://www.huaweicloud.com/product/bcs.html?utm_source= zjqd&utm_medium=mediafree&utm_campaign=bcs&utm_content=article-0727-1

詳解區塊鏈服務——業務層區塊鏈應用開發