区块链框架hyperledger Fabric1.2,win10,docker18.6,资产转移实例
最近在学习区块链,找了很多资料,看到的概念也很杂,关于区块链和fabric的介绍我就不多讲了,百度一搜一大把,以下是我通过查找很多资料,找到的最简易的测试方法,甚至连go语言都可以省略,
环境:
- docker 18.06.0-ce(自带docker-compose)
- hyperledger Fabric1.2
- go1.10.3 windows/amd64(go语言)
- win10企业版
环境安装
- docker安装
下载docker18.06 windows版本,下载地址:http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/
下载成功后,傻瓜式安装,安装完成后,启动docker,并设置Shared Drives,选择盘符(可以勾选所有),点击Apply,如果点击无效,请参考 https://blog.csdn.net/u012680857/article/details/77970351 ,必须Shared Drives,如图:

- hyperledger Fabric1.2
下载fabric1.2, 使用git下载:git colon https://github.com/hyperledger/fabric ;也可以直接下载zip包:
下载成功后,解压文件,将文件夹名称改为:fabric-samples,我的文件目录如下:
至此基本的环境搭建完成
- 使用docker命令,执行测试
本次测试,就是完成一笔简单的转账,下面开始:
找到fabric-samples/basic-network/.env文件,打开并增加配置:COMPOSE_CONVERT_WINDOWS_PATHS=1 该配置的作用是修改为windows路径,默认为linux路径;如图:
配置增加后,进入cmd,进入fabric-samples/basic-network文件夹,运行:
docker-compose -f docker-compose.yml up -d
命令执行效果如下:
执行该命令,会自动下载docker的image并自动完成配置(docker-compose.yml文件中有很多配置),执行成功如下:
如果执行命令过程中出现以下错误,请设置Shared Drives,设置方法请参考:
https://blog.csdn.net/u012680857/article/details/77970351
如果出现以下错误,请在.env文件中增加 COMPOSE_CONVERT_WINDOWS_PATHS=1 配置,上文有提及,错误如图:
运行fabric的docker环境基本完成,cmd中输入docker ps 命令,运行效果如下:
接下来开始测试fabric:
cmd中运行
docker exec -it -e”CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/msp/users/Admin@org1.example.com/msp” peer0.org1.example.com bash
进入peer0.org1.example.com这个images的命令行,
创建通道,输入:
peer channel create -o orderer.example.com:7050 -c mychannel -f /etc/hyperledger/configtx/channel.tx
加入通道:
peer channel join -b mychannel.block
退出peer节点容器peer0.org1.example.com
exit
运行效果如图:
在cmd中,输入 :
docker exec -it cli /bin/bash,
进入cli的命令行,给peer节点安装链码,输入:
peer chaincode install -n mycc -v v0 -p github.com/chaincode_example02/go
实例化链码
peer chaincode instantiate -o orderer.example.co:7050 -C mychannel -n mycc -v v0 -c ‘{“Args”: [“init”,”a”,”100”,”b”,”200”]}’
运行效果如图:
链码实例化后,可以查询初始值,初始值是:100,同样在cli里执行以下命令:
peer chaincode query -C mychannel -n mycc -c ‘{“Args”: [“query”,”a”]}’
效果如下:
下面开始我们的转移操作,从“a”转移10到“b”,同样还是再cli里执行以下命令:
peer chaincode invoke -C mychannel -n mycc -c ‘{“Args”: [“invoke”,”a”,”b”,”10”]}’
查询“a”和“b”的值,分别执行以下命令:
peer chaincode query -C mychannel -n mycc -c ‘{“Args”: [“query”,”a”]}’
peer chaincode query -C mychannel -n mycc -c ‘{“Args”: [“query”,”b”]}’
结果如下:

如果能转移成功,恭喜您!
主要参考资料: 《深度探索区块链Hyperledger技术与应用》