此版本中为了开发简单,账户金额统一用int类型表示,以后如果有时间的话可能会升级为float类型,整体功能比较简单,共有增删改查4个操作:
查询操作:查询指定账户的余额,查询命令如下
'{"Args":["query","a"]}'创建操作:创建一个新的账户,命令如下:
{"Args":["create","b","100"]}'转账操作:两个账户之间互相转账,命令如下:
'{"Args":["transfer","a","b","10"]}'删除账户:删除指定账户,并将该账户余额转移给初始账户,命令如下:
'{"Args":["unsubscribe","b"]}'创建目录
# *代表fabric-samples的所有上级目录 cd ~/*/fabric-samples/chaincode sudo mkdir accountManage cd accountManage创建并编辑链码文件
vim account.go链码源代码github
使用 cd 跳转至 fabric-samples 的 chaincode-docker-devmode 目录
终端1 启动网络
sudo docker-compose -f docker-compose-simple.yaml up -d在执行启动网络的命令之前确保无 Fabric 网络处于运行状态,如果有网络在运行,请先关闭。
终端2 建立并启动链码
2.1 打开一个新终端2,进入 chaincode 容器
sudo docker exec -it chaincode bash2.2 编译 进入 accountManage 目录编译 chaincode
cd accountManage go build2.3 运行chaincode
CORE_PEER_ADDRESS=peer:7052 CORE_CHAINCODE_ID_NAME=test:0 ./test命令执行后输出如下:
[shim] SetupChaincodeLogging -> INFO 001 Chaincode log level not provided; defaulting to: INFO [shim] SetupChaincodeLogging -> INFO 002 Chaincode (build level: ) starting up ...终端3 测试
3.1 打开一个新的终端3,进入 cli 容器
sudo docker exec -it cli bash3.2 安装链码
peer chaincode install -p chaincodedev/chaincode/test -n test -v 03.3 实例化链码
peer chaincode instantiate -n test -v 0 -c '{"Args":["a","10"]}' -C myc3.4 创建新账户
peer chaincode invoke -n test -c {"Args":["create","b","100"]}' -C myc执行成功,输出如下内容:
...... [chaincodeCmd] chaincodeInvokeOrQuery -> INFO 0a8 Chaincode invoke successful. result: status:2003.5 查询 指定调用 query函数,查询 a 的值
peer chaincode query -n test -c '{"Args":["query","a"]}' -C myc执行成功, 输出: 10
指定调用 query函数,查询b的值
peer chaincode query -n test -c '{"Args":["query","b"]}' -C myc执行成功, 输出: 100
3.6 转账
调用transfer函数,从b账户转10到a账户
peer chaincode invoke -n test -C myc -c '{"Args":["transfer","b","a","10"]}'然后根据3.5 查询 a,b账户确认是否转账成功
3.6 删除b账户
调用unsubscrib函数,删除b账户
peer chaincode invoke -n test -C myc -c '{"Args":["unsubscribe","b"]}'然后根据3.5 查询 b账户确认是否删除成功
关闭网络: 退出所有的容器 Ctrl d,然后在宿主机的终端中(就是提示符前面是 xxxx@ubuntu:~/xxx/xxx/ 之类的,不是以 root 开头的),运行:
sudo docker-compose -f docker-compose-simple.yaml down docker volume prune 支付宝微信