本文介绍fabric的应用开发模型,Node SDK的使用以及运行一个简单的fabric应用示例。
前面提到的fabric示例(如first-network和e2e-cli)都只是在单机上的简单测试,启动一个cli命令行容器来与网络成员节点进行交互,通过在cli容器中手动输入命令完成一系列操作。
而在实际开发中,fabric区块链应用应该拥有一个完整的应用程序来处理前端发起的请求,调用SDK与各节点进行交互,最终利用fabric底层特性将数据存入区块链中。
Fabric应用可以分为三层,App层,SDK层,Fabric底层。开发人员需要开发的包括app应用和链码chaincode。应用程序一般运行于客户端节点上,负责处理请求并调用相应SDK与Peer节点,Orderer节点,CA节点进行通信。chiancode负责业务逻辑的执行,从账本查询数据或更新数据到账本。
Hyperledger fabric支持多种语言的SDK,包括Go, Node.js, Java, Python。其中Node SDK由官方维护,最为稳定,文档资料也最为齐全。
Node SDK主要的模块及其中重要的方法如下:
1.Client
2.CAClient
3.Channel
4.Peer
5.Orderer
Blacne transfer是Fabric Node SDK的一个示例应用,基于Node.js的express框架实现了完整的web服务,提供了RESTful接口,实现网络初始化,用户注册生成证书,交易转账,查询等功能。
1.下载示例
下载前需要部署所需环境,前文以及详细介绍,这里不再赘述。注意fabric-samples的版本最好与fabric镜像的版本保持一致,否则可能会出现各种错误,可以利用git checkout
加上指定版本tag切换版本。
git clone https://github.com/hyperledger/fabric-samples.git
cd fabric-samples/balance-transfer
2.启动网络
在终端1执行:
./runApp.sh
该脚本完成:
3.测试网络
测试前需要下载jq:
sudo apt-get install jq
在终端2执行测试脚本,主要是利用curl工具发送请求:
./testAPIs.sh
该脚本完成:
4.关闭网络
# 清除所有容器并删除docker网络
cd artifacts
docker-compose down
# 删除chaincode镜像
docker rmi -f $(docker images | grep dev | awk '{print $3}')
# 删除用户数据,包括私钥和证书
rm -rf fabric-client-kv-org[1-2]