我们可以使用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
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
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