阿里云Ubuntu16.04 安装Hyperledger Fabric(二) fabric部署 - Go语言中文社区

阿里云Ubuntu16.04 安装Hyperledger Fabric(二) fabric部署


一、Fabric安装

1.安装go,docker和docker-compose

参考博客:https://blog.csdn.net/u012149181/article/details/80302061

2.fabric下载

我们使用Git命令下载源码,首先需要建立对应的目录,然后进入该目录,Git下载源码:
mkdir -p ~/go/src/github.com/hyperledger 
cd
~/go/src/github.com/hyperledger
git clone https:
//github.com/hyperledger/fabric.git

由于Fabric一直在更新,所有我们并不需要最新最新的源码,需要切换到v1.0.0版本的源码即可:

cd ~/go/src/github.com/hyperledger/fabric
git checkout v1.0.0

安装git命令只需sudo apt-get git

3.Fabric Docker镜像下载

这个其实很简单,因为我们已经设置了Docker Hub镜像地址,所以下载也会很快。官方文件也提供了批量下载的脚本。我们直接运行:

这样就可以下载所有需要的Fabric Docker镜像了。由于我们设置了国内的镜像,所以下载应该是比较快的。我之前这里采用的其他方法一直Pull不了完整镜像,自从看了曾毅的博客,诶,一口气上九楼

下载完毕后,我们运行以下命令检查下载的镜像列表:

得到的结果如下:

4.启动Fabric网络并完成ChainCode的测试

我们仍然停留在e2e_cli文件夹,这里提供了启动、关闭Fabric网络的自动化脚本。我们要启动Fabric网络,并自动运行Example02 ChainCode的测试,执行一个命令:

这个做了以下操作:

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等功能。

最后运行完毕,我们可以看到这样的界面:

image

如果您看到这个界面,这说明我们整个Fabric网络已经通了。

可是我并木有看到那个界面,第一次是Channel creation failed,第二次是peer join channel failed,解决办法是参考了

a,http://www.cnblogs.com/chenfool/p/8353425.html

b.https://zhulg.github.io/2018/05/14/Fabric%E9%83%A8%E7%BD%B2%E9%98%BF%E9%87%8C%E4%BA%91%E9%94%99%E8%AF%AF%E8%AE%B0%E5%BD%95/

c,https://yq.aliyun.com/articles/238940

这三个博文的记录

主要原因是Fabric的bug  https://jira.hyperledger.org/browse/FAB-5822采用了如下workaround可以解决这个问题:

  • 在docker compose yaml里对peer、orderer、cli的环境变量加入GODEBUG=netdns=go

这个设置的作用是不采用cgo resolver (从错误日志里可看到是cgo resolver抛出的错误)而采用pure go resolver。

但是我把dockerl-compose-cli.yaml,dockerl-compose-couch.yaml,dockerl-compose-e2e.yaml,dockerl-compose-e2e-template.yaml中都添加了还是不行,只有按照a博客所说:用户则需要修改 /etc/resolv.conf 配置,将 options timeout:2 attempts:3 rotate single-request-reopen 这一行内容注释掉,这个解决方法是从c博客看到的,作者试过,给增加 GODEBUG=netdns=go 环境变量也不好使,只会又出现以下问题,原因就是c博客中解释的。

这时总算出现了END-E2E这几个大字!,配置环境成功来之不易。

二、测试Fabric网络

我们仍然是以现在安装好的Example02为例,在官方例子中,channel名字是mychannel,链码的名字是mycc。我们首先进入CLI,我们重新打开一个命令行窗口,输入:

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

可以看到余额是90:

image

然后,我们试一试把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"]}'

运行结果为:

image

现在转账完毕, 我们试一试再查询一下a账户的余额,没问题的话,应该是只剩下70了。我们看看实际情况:

image

果然,一切正常。最后我们要关闭Fabric网络,首先需要运行exit命令退出cli容器。然后关闭Fabric的命令与启动类似,命令为:

cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli

./network_setup.sh down

现在我们整个Fabric的环境已经测试完毕,恭喜,一切正常,接下来我们就是去做自己的区块链的开发。

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/u012149181/article/details/80302069
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢