Blacne transfer是Hyperledger fabric Node SDK的一个示例应用,主要使用了SDK中fabric-client 和 fabric-ca-client 模块中的API,实现了与Fabric网络交互的各种操作。
先决条件
- Docker - v1.12 or higher
- Docker Compose - v1.8 or higher
- Git - needed for clone commands
- Node.js - v8.4.0 or higher
- Docker images
- jq - needed for execute the test script
下载示例
需要注意的是 balance transfer 示例不同版本间差别很大,从v1.0.6到v1.1.0就存在很大改动,这里使用的是最新版本release-1.1。
git clone https://github.com/hyperledger/fabric-samples.git
cd fabric-samples/balance-transfer
运行示例
与之前运行的Fabric项目中的samples相比,e2e和first-network这两个例子是通过一个cli容器来模拟客户端与网络进行交互。而balance-transfer则会监听一个端口,用户可以通过curl命令、浏览器等工具根据URL来进行相应操作。
示例可通过脚本运行,构建一个本地的Fabric网络,所有节点包括:
- 2 CAs
- 1 SOLO orderer
- 4 peers (2 peers per Org)
方法一
在终端1执行脚本:
./runApp.sh
- 启动本地fabric网络
- 下载fabric-client 和 fabric-ca-client 模块
- 监听4000端口
在终端2测试网络,执行测试脚本前需下载jq
:
sudo apt-get install jq
./testAPIs.sh
- 创建channel并加入节点
- 安装和实例化chaincode
- 执行(invoke)chaincode
- 进行各种查询(query)
方法二
在终端1执行:
docker-compose -f artifacts/docker-compose.yaml up
在终端2执行命令,下载fabric-client 和 fabric-ca-client 模块:
npm install
运行node app,监听4000端口:
PORT=4000 node app
在终端3通过curl命令进行测试。
报错解决
注意:balance transfer
的版本应该与镜像文件的版本相匹配,否则会出现错误。
比如我的镜像文件下载的是v1.0.0,而fabric-samples项目没有此版本(使用git tag
查看),则在注册用户的第一步就出现错误No identity type provided
:
No identity type provided. Please provide identity type
则需要重新下载相应版本的镜像,并切换fabric-samples的版本使两者保持一致 ( git checkout v1.1.0
)。
关闭网络
# 清除所有容器
docker rm -f $(docker ps -aq)
# 删除chaincode镜像
docker rmi -f $(docker images | grep dev | awk '{print $3}')
# 删除用户注册和登录的数据,如私钥和证书
rm -rf fabric-client-kv-org[1-2]