区块链之Hyperledger(超级账本)Fabric v1.0 的环境搭建(超详细教程) 女爷i 2022-05-19 05:12 202阅读 0赞 首先感谢深蓝居,这篇教程是基于他的教程\[[http://www.cnblogs.com/studyzy/p/7437157.html\]][http_www.cnblogs.com_studyzy_p_7437157.html]整理的,区块链技术发展很快,在大神的教程上稍做了些补充。另外,有也在学习区块链的同学可以联系我,大家互相学习! 在刚开始接触Hyperledger时,非常迷茫,不知道从何入手。导师建议我别只看理论知识,试着在机器上运行一下,边用边学。于是开始在网上各种查怎么搭建Fabric环境,菜鸟(非计算机本科)第一次装虚拟机,用linux,指令也是边查边用,终于花了近五天时间搭建成功,过程艰难。所以写下此教程,让后面学习的同学少走弯路。 -------------------- ### 1. 安装Linux系统 建议Ubuntu 16.04 ### 关于是使用虚拟机还是双系统,我的笔记本用的虚拟机,实验室台式电脑装得双系统。两种都体验过之后,建议大家还是最好双系统。其实Ubuntu的界面很友好,就算完全不会Linux指令(比如我),基本操作还是能完成的,而且使用起来更直接。 虚拟机教程:(1)下载最新的VirtualBox或者VM ware。(2)下载Ubuntu 16.04 镜像,按着步奏导入就好。网上很多装虚拟机安装教程。跟着做准没错 ### 2.保证apt source是国内的 ### 输入下面指令: `sudo vi /etc/apt/sources.list` 查看apt源列表,如果其中看到是[http://us.xxxxx][http_us.xxxxx]之类的,那么就是外国的,如果看到是[http://cn.xxxxx][http_cn.xxxxx]之类的,那么就不用换的。 如果是us,原教程方法是在命令模式下,输入: `:%s/us./cn./g` 批量替换,然后输入:wq 保存退出。 ***\*tips:\**** 我这里提供一个简单的方法,打开**系统设置**,选择**软件和更新** ![这里写图片描述][SouthEast] 然后在**下载自:**中选择aliyun,如下图。这样源文件也是在国内。 ![这里写图片描述][SouthEast 1] 更新一下源`sudo apt-get update` 然后安装ssh,这样接下来就可以用Xshell或者SecureCRT之类的客户端远程连接Ubuntu。 sudo apt-get install ssh * 1 ### 3. go的安装 ### Ubuntu的apt-get自带的go版本太低,这里我们重新安装,输入指令: `wget https://storage.googleapis.com/golang/go1.9.linux-amd64.tar.gz` 然后解压: `sudo tar -C /usr/local -xzf go1.9.linux-amd64.tar.gz` 接下来编辑当前用户的环境变量 `vi ~/.profile` 在最后添加以下内容 export PATH=$PATH:/usr/local/go/bin export GOROOT=/usr/local/go export GOPATH=$HOME/go export PATH=$PATH:$HOME/go/bin 如图 ![这里写图片描述][SouthEast 2] :wq 保存并退出 最后载入环境变量 `source ~/.profile` 我们把go的目录GOPATH设置在当前用户的文件夹下,所以记得要创建go文件夹 `cd ~` 回到根目录 `mkdir go` 创建go文件夹 go环境安装完成!! ### 4.Docker的安装 ### 更新一下:这里也可以直接去看docker的官方文档下载,很多人反应这个源挂了,我也试了一下确实下不全,所以下面方法不行的话就去官网下载。(更新时间2018.6.20) 按照深蓝居教程,docker的安装,我使用的是阿里提供的镜像,安装指令如下 `curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -` 然后修改当前用户的权限 `sudo usermod -aG docker XXX` 注销并重新登录,然后添加阿里云的Docker Hub镜像: 建立docker文件 `sudo mkdir -p /etc/docker` sudo gedit /etc/docker/daemon.json { "registry-mirrors": ["https://obou6wyb.mirror.aliyuncs.com"] } 保存并退出 sudo systemctl daemon-reload sudo systemctl restart docker 最后 `docker version` 结果如下则成功。 ![这里写图片描述][SouthEast 3] docker安装完成!! ***\*tips\**** 后来在给台式机装docker和其他人装的时候,发现这一步总出问题,不是连接网址失败,就是没有添加到组,或者是后面几步提示路径不对。解决办法有[解决Docker启动服务器链接失败-Job for docker.service failed because the control process exited error code ][Docker_-Job for docker.service failed because the control process exited error code],或者给用户root权限操作,添加到组,注销再登录即。要是还不行,就放弃阿里换DaoCloud。 ### 5.Docker-Compose的安装 ### Docker-compose是支持通过模板脚本批量创建Docker容器的一个组件。在安装Docker-Compose之前,需要安装Python-pip,运行指令: `sudo apt-get install python-pip` 然后安装docker-compose,考虑到国内外墙的原因,为了下载速度更快,我们选择从DaoClound安装Docker-compose,运行指令: `curl -L https://get.daocloud.io/docker/compose/releases/download/1.12.0/docker-compose-`uname -s`-`uname -m`> ~/docker-compose` `sudo mv ~/docker-compose /usr/local/bin/docker-compose` `chmod +x /usr/local/bin/docker-compose` 官方推荐为1.8.0版本以上,这里我们下载的是1.12.0。 查看`docker-compose version` 如下,docker-compose 安装成功!! ![这里写图片描述][SouthEast 4] 要是上面方法不行,还有一种方法就是直接`sudo pip install docker-compose` 效果一样(更新) ### 6.Fabric源码下载 ### 首先建好存放源码的文件夹(也可手动建)路径如下: `mkdir –p ~/go/src/github.com/hyperledger` `cd ~/go/src/github.com/hyperledger` 用git命令下载完整源码 `git clone https://github.com/hyperledger/fabric.git` ***\*tips\**** Fabric代码一直在更新,以后如果只想下载最新的代码,可以通过–single-branch -b master –depth 1 命令选项来只获取master分支最新的代码。 由于我们只是在搭建环境。不需要最新的代码,所以只需要切换到v1.0.0大版本就行。 `cd ~/go/src/github.com/hyperledger/fabric` 进入fabric目录 `git checkout v1.0.0` Fabric源码下载完成!! ### 7. Fabric Docker镜像的下载 ### 之前我们已经设置了Docker Hub镜像地址,所以下载也会很快。运行指令 `cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli/` source download-dockerimages.sh -c x86_64-1.0.0 -f x86_64-1.0.0 这样就可以下载所有需要的Fabric Docker镜像了。由于我们设置了国内的镜像,所以下载应该是比较快的。 下载完毕后,我们运行以下命令检查下载的镜像列表: `docker images` 结果如下图 ![这里写图片描述][SouthEast 5] 其每个镜像的主要功能就不一一列举了,具体可看《区块链原理,设计与应用》这本书,讲的还是很详细的。 ### 8.启动Fabric网络并完成ChainCode的测试 ### 现在还停留在e2e\_cli文件中(如果没有先进入),这里提供了启动、关闭Fabric网络的自动化脚本。我们要启动Fabric网络,并自动运行Example02 ChainCode的测试,执行一个命令: `./network_setup.sh up` 这个指令具体进行了如下操作: 编译生成Fabric公私钥、证书的程序,程序在目录:fabric/release/linux-amd64/bin 基于configtx.yaml生成创世区块和通道相关信息,并保存在channel-artifacts文件夹。 基于crypto-config.yaml生成公私钥和证书信息,并保存在crypto-config文件夹中。 基于docker-compose-cli.yaml启动1Orderer+4Peer+1CLI的Fabric容器。 在CLI启动的时候,会运行scripts/script.sh文件,这个脚本文件包含了创建Channel,加入Channel,安装Example02,运行Example02等功能。 稍等一会以后,会看见这个界面,那就恭喜啦,整个Fabric网络已经通了 , ![这里写图片描述][SouthEast 6] ctrl+c退出 启动成功!! ### 9.手动测试Fabric网络 ### 这里有官方提供的小例子,在官方例子中,channel名字是mychannel,链码的名字是mycc。 首先进入CLI,然后**重新打开**一个命令行窗口,输入: `docker exec -it cli bash` 这时用户为root@748dafdc900b,在/opt/gopath/src/github.com/hyperledger/fabric/peer目录下,运行以下命令可以查询a账户的余额: `peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'` ![这里写图片描述][SouthEast 7] 方框内可以看见余额为:90 下面我们可以进行转账操作,操作为invoke ,由a转b 50: `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","50"]}'` 现在转账完毕, 我们试一试再查询一下a账户的余额,重复之前的查询指令,结果为: ![这里写图片描述][SouthEast 8] 结果正确,a的余额只有40了。 最后,我们需要关闭Fabric,这里先使用exit命令退出cli容器。 `exit` 然后类似于启动指令: `cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli` `./network_setup.sh down` ![这里写图片描述][SouthEast 9] 到这,我们整个Fabric的环境已经测试完毕!!去做研究或者开发吧!!! -------------------- 写在最后:这个教程也算是自己一段工作的总结,目前在慢慢学习Ubuntu系统的操作和研究Fabric v1.0的架构与设计。希望能帮到你们! [http_www.cnblogs.com_studyzy_p_7437157.html]: http://www.cnblogs.com/studyzy/p/7437157.html%5D [http_us.xxxxx]: http://us.xxxxx [http_cn.xxxxx]: http://cn.xxxxx [SouthEast]: /images/20220519/e869dc003e364140a988b718751bd0a9.png [SouthEast 1]: /images/20220519/89a0dcc3640847fa90d6eb1799946652.png [SouthEast 2]: /images/20220519/c5d281d09cca4d579f8e5b4d93e7a39c.png [SouthEast 3]: /images/20220519/88eea603ec534551892cb74e28b95b9c.png [Docker_-Job for docker.service failed because the control process exited error code]: http://blog.csdn.net/G_Barble/article/details/78356126 [SouthEast 4]: /images/20220519/d84fc0bcc4ed42b3b3c1ea6e48f24e36.png [SouthEast 5]: /images/20220519/94f5889ed3e44caba3b5615297df400d.png [SouthEast 6]: /images/20220519/ad121d05822f4711ac267eae41b69d86.png [SouthEast 7]: /images/20220519/48bf5d2191f143ad822faa756d34c86d.png [SouthEast 8]: /images/20220519/a98283f95ae04642a28a89cf8d0756cc.png [SouthEast 9]: /images/20220519/35017cb88cac4bf9a34aa16e8d15cc16.png
还没有评论,来说两句吧...