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。 

html

開發環境

  • 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快速部署。 

java

使用sdk-container

一、肯定Linux內核在3.10及以上。 
二、在待部署SDK服務器上安裝最新版Dockerdocker compose環境。 
三、執行docker pull aberic/fabric-sdk下載鏡像。 
四、在docker-sdk.yaml文件中配置好Fabric網絡中所指望鏈接的排序服務及節點服務參數,這兩類服務各容許設置一臺,後續的版本中會增長使用SDK多服務網絡方案。 
五、執行docker-compose -f docker-sdk.yaml up啓動SDK鏡像服務,若是不須要觀察日誌,則在命令最後追加-d便可。 
六、服務啓動完成後,參考下面的API介紹以便更快投入使用。 

API入口文檔git

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

API方法示例

/sdk/chaincode

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

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

/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中配置的變量寫錯,能夠經過該方法從新設置組織信息docker

/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中配置的變量寫錯,能夠經過該方法從新設置節點服務信息api

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

相關文章
相關標籤/搜索