一.环境配置
1.1在windows上安装VMware
这个是下载VMware的安装包下载完后安装就可以了
http://sw.bos.baidu.com/sw-search-sp/software/aff3469fe5f99/VMware-workstation-full-12.5.7.20721.exe
1.2下载CentOS7镜像并安装到VMware上
下载CentOS7的镜像
http://mirror.vilkam.ru/centos/7/isos/x86_64/CentOS-7-x86_64-Everything-1611.iso
安装centos7可以参考一下这个https://jingyan.baidu.com/article/c910274be62c6bcd361d2d37.html
1.3安装docker
在命令行里面输入以下命令执行安装
curl -sSL https://get.daocloud.io/docker | sh
安装完成后运行以下脚本将用户添加到docker组中 (注:user是你的用户)
sudo usermod -aG docker user
修改docker的服务配置
sudo vi /etc/default/docker
添加以下内容
DOCKER_OPTS="$DOCKER_OPTS -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --api-cors-header='*'"
接下来就是设置一下国内docker镜像地址,脚本是
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://d4cc5789.m.daocloud.io
执行完脚本后,把docker服务设置成开机启动,并启动docker服务
systemctl enable docker.service sudo service docker restart
1.4安装docker-compose
Compose是定义和运行多个Docker容器的应用,可以很方便的从管发拉下来一些镜像。
curl -L https://get.daocloud.io/docker/compose/releases/download/1.10.1/docker-compose-`uname -s`-`uname -m` > ~/docker-compose sudo mv ~/docker-compose /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose
二.部署Fabric1.0
2.1下载官方自动化部署脚本
建一个文件夹,用于存放自动化部署脚本
mkdir fabric-sample cd fabric-sample
然后使用curl命令下载并运行自动化部署脚本,这个过程会比较漫长,这个会下载大量的x86_64-1.0.0的镜像,下载完之后会标签改为latest(注:这个脚本是下载的fabric 1.0.0的镜像)
curl -sSL https://raw.githubusercontent.com/hyperledger/fabric/master/scripts/bootstrap-1.0.0-beta.sh | bash
当下载完成后使用以下命令查看你下载的镜像
docker images
2.2启动Fabric的实例
在前面下载的官方自动化部署脚本中已经包含了Fabric的实例脚本,运行以下命令
cd ~/fabric-sample/release/linux-amd64 ./network_setup.sh up
当出现以下界面就说明启动成功了
系统会创建1个客户端实例cli,1个orderer节点,还有4个peer节点,当前脚本包含了我们接下来运行的mycc实例,所以还会看到三个链上代码在运行,使用以下命令查看实例
docker ps
三.测试Fabric
3.1在cli中测试Example02
其实我们在前面运行./network_setup.sh up的时候系统已经运行了一个Example02的ChainCode测试,部署上去的ChainCodeName是mycc,所以接下来我们要测试的话不能再初始化并部署同样名字的ChainCode了,我们可以使用自己另外命名的名字devincc
我们先进入到cli容器中
docker exec -it cli bash
如果成功进入我们会切换到该容器的root用户下,得到如下命令行目录
链上的代码需要经过install和instatiate两步,下面我们先执行example02并指定一个名字devincc
peer chaincode install -n devincc -v 1.0 -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02
运行后会提示运行成功,并返回200
接下来是instatiate,初始化实例,设置a账户有100,b账户有200
peer chaincode instantiate -o orderer.example.com:7050 --tls $CORE_PEER_TLS_ENABLED --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/cacerts/ca.example.com-cert.pem -C mychannel -n devincc -v 1.0 -c '{"Args":["init","a", "100", "b","200"]}' -P "OR ('Org1MSP.member','Org2MSP.member')"
运行成功后会显示如下结果
使用query来查看一下a的余额
peer chaincode query -C mychannel -n devincc -c '{"Args":["query","a"]}'
下面是显示账户a的余额
从账户a转10到账户b里面,调用invoke
peer chaincode invoke -o orderer.example.com:7050 --tls $CORE_PEER_TLS_ENABLED --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/cacerts/ca.example.com-cert.pem -C mychannel -n devincc -c '{"Args":["invoke","a","b","10"]}'
转账成功的的提示
再来查看一下账户a的余额,现在变成90了
peer chaincode query -C mychannel -n devincc -c '{"Args":["query","a"]}'