HyperLedger/Fabric SDK使用Docker容器鏡像快速部署上線


HyperLedger/Fabric SDK Docker Image

該項目在github上的地址是:https://github.com/aberic/fabric-sdk-container (感謝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應用,減少開發環節,從而實現業務的快速落地。

目前主要版本如下列表所示:
v0.1:無數據庫版,適合輕量級的Fabric平台應用。 
v0.2:含關系型數據庫版,適合單服務管理多Fabric網絡。 
v1.0-alpha:提供Docker容器服務,方便SDK快速部署。 

使用sdk-container

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中的方案來解決。 

API方法示例

/sdk/chaincode

執行合約
{
    "intent": "invoke",
    "array": [
        "set",
        "A",
        "0"
    ]
}
查詢合約
{
    "intent": "query",
    "array": [
        "get"
    ]
}

intent是指對智能合約進行操作的意圖。 
array是調用合約傳入的參數,在用go編寫智能合約的時候,智能合約所接收的參數為一個字符串數組,其中字符串數組的第一個參數是智能合約的方法名。這里的array所傳入的參數就是智能合約所接收的數組參數。

/sdk/trace

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

/sdk/org/set

{
    "id": 1,
    "caLocation": "http://118.89.243.236:7054",
    "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中配置的變量寫錯,可以通過該方法重新設置組織信息

/sdk/orderer/set

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

該方法是在sdk容器啟動后根據實際需求進行調用,如YAML中配置的變量寫錯,可以通過該方法重新設置排序服務信息

/sdk/peer/set

{
    "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中配置的變量寫錯,可以通過該方法重新設置節點服務信息

代碼簡要說明參考HyperLedger/Fabric JAVA-SDK with 1.1


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM