(二)、Fabric-E2E网络构建以及客户端运行


  • 下载fabric源码
  • 拉取fabric运行环境镜像
  • 开启或关闭E2E程序
  • 客户端进行操作

下载fabric源码

我们可以使用Git命令下载源码,首先需要建立对应的目录,然后进入该目录,Git下载源码。实验阶段、1.0最容易调通。

mkdir -p $GOPATH/src/github.com/hyperledger 
cd $GOPATH/src/github.com/hyperledger 
git clone -b release-1.0 https://github.com/hyperledger/fabric

我们可以使用Git命令下载源码,也可以使用go get命令,偷懒一点,我们直接用go get命令获取最新的Fabric源码

go get github.com/hyperledger/fabric

检查是否为1.0版本、实验阶段、1.0最容易调通

cd $GOPATH/src/github.com/hyperledger/fabric/
git tag
git checkout -b v1.0.0 

Fabric1.0 Docker镜像的拉取

cd $GOPATH/src/github.com/hyperledger/fabric/examples/e2e_cli/
source download-dockerimages.sh -c x86_64-1.0.0 -f x86_64-1.0.0

开启或关闭E2E程序

cd $GOPATH/src/github.com/hyperledger/fabric/examples/e2e_cli/
./network_setup.sh down(已经启动的话、或者不知道有没有启动)
./network_setup.sh up

这个做了以下操作:

7.1编译生成Fabric公私钥、证书的程序,程序在目录:fabric/release/linux-amd64/bin

7.2基于configtx.yaml生成创世区块和通道相关信息,并保存在channel-artifacts文件夹。

7.3基于crypto-config.yaml生成公私钥和证书信息,并保存在crypto-config文件夹中。

7.4基于docker-compose-cli.yaml启动1Orderer+4Peer+1CLI的Fabric容器。

7.5在CLI启动的时候,会运行scripts/script.sh文件,这个脚本文件包含了创建Channel,加入Channel,安装Example02,运行Example02等功能。

客户端手动交易

官方例子中,channel名字是mychannel,链码的名字是mycc。我们首先进入CLI,我们重新打开一个命令行窗口,输入:

docker exec -it cli bash

运行以下命令可以查询a账户的余额:

peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'

留心观察,result是不是查询出来 a 是90块钱。

然后,我们试一试把a账户的余额再转20元给b账户,运行命令:

peer chaincode invoke -o orderer.example.com:7050  --tls true --cafile /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/ordererOrganizations/example.com/orderers/orderer.example.com/msp/tlscacerts/tlsca.example.com-cert.pem  -C mychannel -n mycc -c '{"Args":["invoke","a","b","20"]}'

然后,如果出现一大堆英文,又没有Exception和error的,那么恭喜你!成功转账。
(^o^)/~
那么猜想,b应该多了20块钱,a则少了20块钱,再试试看!!!

peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
peer chaincode query -C mychannel -n mycc -c '{"Args":["query","b"]}'

最后记得,离开的时候。记得把fabric网络关闭哦

exit
cd ~$GOPATH/src/github.com/hyperledger/fabric/examples/e2e_cli/
./network_setup.sh down

(๑•̀ㅂ•́)و✧加油 (๑•̀ㅂ•́)و✧加油 (๑•̀ㅂ•́)و✧加油

嗯。。。可能还会有点问题

阿里云的一点小坑、阿里云的同学看过来~
说到这里应该已经到达创世区块的环节了,
但是、、、在阿里云上,会出现一些小坑(O__O “…基本折腾了三天)
peer,orderer一些yaml加载中出现问题。

嗯(⊙v⊙)嗯!!!

不过是可以解决的~~ 只需要修改几个yaml就可以运行了~ 先回退到当前demo目录作为切入点
我这里从理解记忆角度出发,首先观察启动.sh中加载的yaml文件,这些就是需要我们修改的(因为默认加载会失败)

cd $GOPATH/src/github.com/hyperledger/fabric/examples/e2e_cli
ls(会看到network_setup.sh)
vi network_setup.sh(那咱就进去看看咋回事)
{
.......然后就发现啦~哦~原来是加载这个yaml出错了
COMPOSE_FILE=docker-compose-cli.yaml
.......
}
cd base(那么这个是基本,里面同样有个yaml需要被加载)
ls (猜猜看是什么呀~~O(∩_∩)O~)
vi docker-compose-base.yaml(没错!就是你了)
{
这次要做一点骚操作。。。
看到环境变量了没有,environment,那么就在这个环境变量的尾部~照猫画虎的加上这一行代码
....
- GODEBUG=netdns=go
....
}

cd $GOPATH/src/github.com/hyperledger/fabric/examples/e2e_cli/(回来这里)
{
    同样骚操作。。。
    vi docker-compose-cli.yaml
}
好啦、阿里云的坑、到这里就已经暂时填满~\(≧▽≦)/~啦啦啦

好吧、上面的阿里云填坑可能不适合第二次看。这里简单概括下。
在E2E的目录下的 base/两个yaml
在E2E的目录下 docker-compose-base.yaml
需要在环境变量上添加
- GODEBUG=netdns=go

你可能感兴趣的:(fabric)