一直以来,写完链码进行测试都要先搭建一个Fabric环境,然后安装链码进行测试,实际上Fabric提供了最为简单的方式可以允许我们对编写的应用链码进行功能测试,不需要搭建一个完整的Fabeic环境。而且测试完直接停止网络也不会担心有残余的文件没有删除干净,以至于搭建正式环境的时候出现各种错误。
进入正题好了,Fabric提供了一个开发模式,是专门用来对链码进行测试用的。
其实,这些内容在Fabric官方文档中都是有的,但是一般我们都忽略掉了,所以简单说一下步骤
官方文档地址:点这里
1.先决条件
首先,也是需要一些先决条件,比如Golang
环境,Docker
容器,docker-compose
工具,等等,这些不再说明,可以看这里完成先决条件的安装。
2.开始
完成准备工作后,我们需要将Fabric-sample
文件夹从Github
上pull
下来,地址在这里,最简单的方式是直接下载压缩文件,然后到本地解压出来,但是推荐使用IDE工具通过git
工具从Github
上拉取下来,具体方法自行百度。
完成之后,会有一个fabric-sample
文件夹,将该文件夹放在$GOPATH/src/github.com/hyperledger/
路径下,路径不存在自行创建。
切换版本
进入fabric-samples
文件夹,执行以下命令,将Fabric版本切换至1.4,如果使用其他版本请下面部分下载二进制与Docker镜像的时候要对应。
git checkout release-1.4
3.二进制文件以及Docker镜像
下载二进制文件是比较容易出错的地方,因为容易因为版本不匹配导致网络启动失败,所以在下载二进制文件的时候一定要注意使用的版本。
curl -sS https://raw.githubusercontent.com/hyperledger/fabric/master/scripts/bootstrap.sh -o ./scripts/bootstrap.sh
chmod +x ./scripts/bootstrap.sh
## ./scripts/bootstrap.sh [version] [ca version] [thirdparty_version]
这里需要输入三个版本号,第一个是Fabric的版本号,第二个是Ca的版本号(在这里我们用不到),第三个是第三方工具的版本号。
我们之前是使用了1.4的Fabric,所以我们直接指定好版本就好了。
- Fabric >> 1.4.3(只要前缀是1.4就可以)
- CA >> 1.4.3
- ThirdParty >> 0.4.15
完整的命令为:
#记得要在bootstrap.sh文件的上一级目录进行执行。
./scripts/bootstrap.sh 1.4.3 1.4.3 0.4.15
或者直接将版本号在文件中修改:
打开刚下载的bootstrap.sh
文件,前面几行就是指定版本号的,自行修改就好,修改完直接使用命令进行下载就好了。
./scripts/bootstrap.sh
4.测试链码
前面几部没有出现问题的话,到这里我们就可以对链码进行测试了,进入fabric-sample/chaincode-docker-devmode
文件夹下,执行以下命令:
docker-compose -f docker-compose-simple.yaml up
如果没有错误的话,我们的开发环境已经准备好了,接下来是对链码进行测试的步骤:
- 将编写的链码放到
fabric-sample/chaincode/
文件夹下
# 打开第二个终端执行:
docker exec -it chaincode sh
如果已经将链码放到fabric-sample/chaincode/
文件夹内,执行以下命令应该可以看到自己的链码:
ls
- 编译链码,以官方的例子为例:
cd chaincode_example02/go
go build -o chaincode_example02
CORE_PEER_ADDRESS=peer:7052 CORE_CHAINCODE_ID_NAME=mycc:0 ./chaincode_example02
3.安装与实例化:
打开第三个终端执行:
docker exec -it cli bash
# 以下命令按照自己的链码内容自行修改
peer chaincode install -p chaincodedev/chaincode/chaincode_example02/go -n mycc -v 0
peer chaincode instantiate -n mycc -v 0 -c '{"Args":["init","a","100","b","200"]}' -C myc
4 测试
如果以上步骤没有报错的话,准备工作已经全部完成,剩下的就是测试自己的链码了。如果链码需要更新的话,只需要关闭网络:
docker-compose -f docker-compose-simple.yaml down --volumes
重新启动网络并进行测试就好了。