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.
https://github.com/aberic/fabric-sdk-container#开发环境 开发环境
- IntelliJ IDEA
- Maven
- JDK-1.8
- spring-boot
- Docker
- docker compose
https://github.com/aberic/fabric-sdk-container#版本说明 版本说明
0.x 系列的版本主要是非 Docker 应用方面的项目, 即相互交流的源码层项目.
1.x 及以上系列的版本均 Docker 项目, 帮助开发人员快速部署 SDK 应用, 减少开发环节, 从而实现业务的快速落地.
目前主要版本如下列表所示:
https://github.com/abericyang/fabric-sdk-java-app/tree/v0.1 : 无数据库版, 适合轻量级的 Fabric 平台应用.
https://github.com/abericyang/fabric-sdk-java-app/tree/v0.2 : 含关系型数据库版, 适合单服务管理多 Fabric 网络.
https://github.com/aberic/fabric-sdk-container/tree/v1.0-alpha : 提供 Docker 容器服务, 方便 SDK 快速部署.
https://github.com/aberic/fabric-sdk-container#使用sdk-container 使用 sdk-container
1, 确定 Linux 内核在
3.10
及以上.
2, 在待部署 SDK 服务器上安装最新版 Docker 及 docker 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 中的方案来解决.
https://github.com/aberic/fabric-sdk-container#api方法示例 API 方法示例
https://github.com/aberic/fabric-sdk-container#sdkchaincode /sdk/chaincode
https://github.com/aberic/fabric-sdk-container#执行合约 执行合约
- {
- "intent": "invoke",
- "array": [
- "set",
- "A",
- "0"
- ]
- }
查询合约
- {
- "intent": "query",
- "array": [
- "get"
- ]
- }
intent 是指对智能合约进行操作的意图.
array 是调用合约传入的参数, 在用 go 编写智能合约的时候, 智能合约所接收的参数为一个字符串数组, 其中字符串数组的第一个参数是智能合约的方法名. 这里的 array 所传入的参数就是智能合约所接收的数组参数.
https://github.com/aberic/fabric-sdk-container#sdktrace /sdk/trace
https://github.com/aberic/fabric-sdk-container#在指定频道内根据transactionid查询区块 在指定频道内根据 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 中配置的变量写错, 可以通过该方法重新设置组织信息
- https://github.com/aberic/fabric-sdk-container#sdkordererset /sdk/orderer/set
- {
- "id": 1,
- "orgId": 1,
- "name": "orderer.example.com",
- "location": "grpc://118.89.243.236:7050"
- }
该方法是在 sdk 容器启动后根据实际需求进行调用, 如 YAML 中配置的变量写错, 可以通过该方法重新设置排序服务信息
- https://github.com/aberic/fabric-sdk-container#sdkpeerset /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 中配置的变量写错, 可以通过该方法重新设置节点服务信息
https://github.com/aberic/fabric-sdk-container#代码简要说明 代码简要说明参考 HyperLedger/Fabric JAVA-SDK with 1.1
来源: https://www.cnblogs.com/aberic/p/9157187.html