HyperLedger/Fabric SDK使用Docker容器映象快

coyan發表於2021-09-09

HyperLedger/Fabric SDK Docker Image

該專案在github上的地址是: (感謝Star)。 

這是一個基於fabric-sdk-java的專案,該專案的主要目的是簡化HyperLedger/Fabric開發人員在SDK應用層上的工作流程,使得開發和部署更加簡單。 

該專案使用方便,只需要你的伺服器上部署有Docker及docker compose環境即可,透過docker-compose的啟動命令啟動YAML編排檔案即可快速上手使用。 

由於日誌管理和效能除錯方面的工作還未完成,目前該專案僅為1.0-alpha版本,後續的開發中將會著重處理日誌及可配置效能方面的內容,如果這能讓你感興趣,歡迎star。 

  • IntelliJ IDEA

  • Maven

  • JDK-1.8

  • spring-boot

  • Docker

  • docker compose 

0.x系列的版本主要是非Docker應用方面的專案,即相互交流的原始碼層專案。
1.x及以上系列的版本均Docker專案,幫助開發人員快速部署SDK應用,減少開發環節,從而實現業務的快速落地。

目前主要版本如下列表所示:
:無資料庫版,適合輕量級的Fabric平臺應用。 
:含關係型資料庫版,適合單服務管理多Fabric網路。 
:提供Docker容器服務,方便SDK快速部署。 

1、確定Linux核心在3.10及以上。 
2、在待部署SDK伺服器上安裝最新版Dockerdocker compose環境。 
3、執行docker pull aberic/fabric-sdk下載映象。 
4、在docker-sdk.yaml檔案中配置好Fabric網路中所期望連線的排序服務及節點服務引數,這兩類服務各允許設定一臺,後續的版本中會增加使用SDK多服務網路方案。 
5、執行docker-compose -f docker-sdk.yaml up啟動SDK映象服務,如果不需要觀察日誌,則在命令最後追加-d即可。 
6、服務啟動完成後,參考下面的API介紹以便更快投入使用。 

API入口文件

Method REST API Description
POST /sdk/chaincode 執行、查詢
POST /sdk/trace 在指定頻道內根據transactionID查詢區塊、在指定頻道內根據hash查詢區塊、在指定頻道內根據區塊高度查詢區塊以及查詢當前頻道的鏈資訊,包括鏈長度、當前最新區塊hash以及當前最新區塊的上一區塊hash
POST /sdk/org/set 設定組織資訊
POST /sdk/orderer/set 設定排序伺服器資訊
POST /sdk/peer/set 設定節點伺服器資訊

 

該版本目前為即上即用的版本,僅提供單排序服務及單節點服務,因此API文件中未提供安裝、例項化及升級操作,但在後續更新中,會支援安裝、例項化及升級的功能。如果有PAAS服務的需要,可以自行參考v0.2中的方案來解決。 

圖片描述

{
    "intent": "invoke",
    "array": [
        "set",
        "A",
        "0"
    ]
}

圖片描述

查詢合約
{
    "intent": "query",
    "array": [
        "get"
    ]
}

intent是指對智慧合約進行操作的意圖。 
array是呼叫合約傳入的引數,在用go編寫智慧合約的時候,智慧合約所接收的引數為一個字串陣列,其中字串陣列的第一個引數是智慧合約的方法名。這裡的array所傳入的引數就是智慧合約所接收的陣列引數。

{
   "intent": "queryBlockByTransactionID",
   "traceId": "08b5db91c7723cb61651a4af1034633a2833031a1cdb4415df0d8f6727020a4f"
}
在指定頻道內根據hash查詢區塊
{
   "intent": "queryBlockByHash",
   "traceId": "8f63d99744752a89a49fcee560a43c271b7f12e37dfaa3489da028b610943595"
}
在指定頻道內根據區塊高度查詢區塊
{
   "intent": "queryBlockByNumber",
   "traceId": "9"
}
查詢當前頻道的鏈資訊(包括鏈長度、當前最新區塊hash以及當前最新區塊的上一區塊hash)
{
   "intent": "queryBlockchainInfo"
}

/sdk/org/set

圖片描述

{    "id": 1,    "caLocation": "",    "caName": "ca",    "caTls": false,    "chaincodeName": "test2cc",    "chaincodePath": "chaincode/chaincode_example02",    "chaincodeSource": "/code",    "chaincodeVersion": "1.2",    "channelArtifactsDir": "/home/jar/channel-artifacts",    "channelName": "mychannel",    "cryptoConfigDir": "/home/jar/crypto-config",    "invokeWaitTime": 120,    "ordererDomainName": "example.com",    "orgDomainName": "org1.example.com",    "orgMSPID": "Org1MSP",    "orgName": "Org1",    "proposalWaitTime": 90000,    "tls": true,    "username": "Admin"}

圖片描述

該方法是在sdk容器啟動後根據實際需求進行呼叫,如YAML中配置的變數寫錯,可以透過該方法重新設定組織資訊

{    "id": 1,    "orgId": 1,    "name": "orderer.example.com",    "location": "grpc://118.89.243.236:7050"}

該方法是在sdk容器啟動後根據實際需求進行呼叫,如YAML中配置的變數寫錯,可以透過該方法重新設定排序服務資訊

圖片描述

{    "id": 1,    "orgId": 1,    "peerName": "peer0.org1.example.com",    "peerEventHubName": "peer0.org1.example.com",    "peerLocation": "grpc://118.89.243.236:7051",    "peerEventHubLocation": "grpc://118.89.243.236:7053",    "isEventListener": true}

圖片描述

該方法是在sdk容器啟動後根據實際需求進行呼叫,如YAML中配置的變數寫錯,可以透過該方法重新設定節點服務資訊


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2236/viewspace-2802504/,如需轉載,請註明出處,否則將追究法律責任。

相關文章