首页 技术 正文
技术 2022年11月19日
0 收藏 563 点赞 3,038 浏览 3492 个字

3.1、运行fabric-samples的问题说明该问题说明能够解决6.1、平台特定使用的二进制文件配置第一步的问题。可以选择继续阅读该说明,或者等参考到6.1小节时再反向阅读本说明,具体在6.1中会重新指向本步骤。一般情况下,我们会参照官网来完成第一个网络测试,在该在线文档中会让我们去下载一个fabric-samples,下载地址在github上,我们需要将其下载至本地是一个fabric-samples-release文件夹,将其更名为fabric-samples随后上传至opt/gopath/src目录下。按照官网提示执行的命令是无法运行起first-network这个项目,该demo需要先下载 Platform-specific Binaries(特定的二进制文件),按照官方文档中的描述,需要先执行如下命令:curl -sSL https://goo.gl/iX9dek | bash上述命令会下载自动化部署脚本,同时也会下载平台特定使用的二进制文件才cryptogen、configtxgen、configtxlator以及peer,把他们放到上述仓库的bin目录下。通常执行上述命令并不能下载,即便是能下载,速度也奇慢无比,故此,我们离线下载相关二进制文件来执行上述操作。在官网给出的执行命令中并没有给出离线下载地址,且官网也没有离线部署说明,我们可以在1.4.2中下载的fabric源码中找到下载地址,在/opt/gopath/src/github.com/hyperledger/fabric/scripts目录下有一个bootstrap-1.0.0.sh脚本文件,事实上如果外网访问条件优越的情况下,直接运行该脚本即可下载所有所需的fabric镜像文件及官方指定所需的二进制文件。打开bootstrap-1.0.0.sh(目前最新版为1.0.0,以实际为准),找到其中对“Downloading platform binaries”的输出行,目前所见是“echo “===> Downloading platform binaries””,查看其指向的下载地址,可以得到一个官网提供的离线下载网址,根据上下文意思及当前我们所使用的版本信息,可以得到最终的离线下载文件地址,下载该文件到本地。根据官网的介绍,解压后会得到一个bin文件夹,将其解压至/opt/gopath/src/github.com/hyperledger/fabric-samples目录下即可运行first-network等项目。 3.2、运行e2e_cli项目进入到/opt/gopath/src/github.com/hyperledger/fabric/examples/e2e_cli目录下,文件结构如下图所示:Hyperledger Fabric 1.0 学习搭建 (三)— 运行测试e2e-Fabricnetwork_setup.sh是一件测试脚本,该脚本启动5个docker容器,其中4个容器运行peer节点和1个容器运行orderer节点,它组成一个Fabric集群。另外还有一个cli容器用于执行创建channel、加入channel、安装和执行chaincode等操作。测试用的chaincode定义了两个变量,在实例化的时候会给这两个变量赋予了初始值,并通过invoke操作可以使两个变量的值发生变化。通过以下命令执行测试:bash network_setup.sh up接下来会有许多的调试信息,具体可参考e2e_cli目录下的script/script.sh文件,当终端出现以下信息时,说明测试通过,所有部件正常工作:Hyperledger Fabric 1.0 学习搭建 (三)— 运行测试e2e-FabricHyperledger Fabric 1.0 学习搭建 (三)— 运行测试e2e-Fabric如果遇到报错情况,首先检查自己的时间是不是和北京时间一样,如果不一样改为一样再次运行。这个命令可以在本机启动4+1的Fabric网络并且进行测试,跑Example02这个ChainCode。我们可以看到每一步的操作,最后确认单机没有问题。确认我们的镜像和脚本都是正常的,我们就可以关闭Fabric网络,继续我们的多机Fabric网络设置工作。关闭Fabric命令:bash network_setup.sh down当然为了测试单机是否可以正常使用,暂时先不用关闭,等到部署多机的时候在关闭。3.3、e2e_cli与Linux内核bug(如果执行3.2出现问题,可以参考此步骤,否则略过)该Fabric网络集群测试环境在Linux内核低版本上可能会出现问题,这是旧版内核的bug,比如在执行bash network_setup.sh up的时候会出现如下错误:Hyperledger Fabric 1.0 学习搭建 (三)— 运行测试e2e-FabricHyperledger Fabric 1.0 学习搭建 (三)— 运行测试e2e-Fabric即执行chaincode初始化的时候报错,导致集群单机无法启动。解决方案,使用最新版稳定版的docker(笔者写文档时的最新稳定版为:17.11.0-ce),将Linux内核升级到最新版,笔者原先使用的Linux内核是3.10,出现了上述问题,目前笔者使用的内核版本是4.12.5-1.e17,能够完美运行Fabric集群环境。升级参考文档: http://www.linuxidc.com/Linux/2016-11/136643.htm3.4、测试单机的Fabric其实我们在前面3.2运行./network_setup.sh up的时候系统已经运行了一个Example02的ChainCode测试,部署上去的ChainCodeName是mycc,所以接下来我们要测试的话不能再初始化并部署同样名字的ChainCode了,我们可以使用自己另外命名的名字,比如alancc。3.4.1在CLI中测试Example02首先我们需要登录到CLI这个容器中,才能执行Fabric的CLI命令。docker exec -it cli bash如果成功进入,我们会切换到该容器的root用户下,得到如下的命令行目录:root@70b5857812c8:/opt/gopath/src/github.com/hyperledger/fabric/peer#运行以下命令可以查询a账户的余额:peer chaincode query -C mychannel -n mycc -c ‘{“Args”:[“query”,”a”]}’可以看到余额是90:Hyperledger Fabric 1.0 学习搭建 (三)— 运行测试e2e-FabricHyperledger Fabric 1.0 学习搭建 (三)— 运行测试e2e-Fabric然后,我们试一试把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″]}’运行结果为:Hyperledger Fabric 1.0 学习搭建 (三)— 运行测试e2e-FabricHyperledger Fabric 1.0 学习搭建 (三)— 运行测试e2e-Fabric现在转账完毕, 我们试一试再查询一下a账户的余额,没问题的话,应该是只剩下70了。我们看看实际情况:Hyperledger Fabric 1.0 学习搭建 (三)— 运行测试e2e-FabricHyperledger Fabric 1.0 学习搭建 (三)— 运行测试e2e-Fabric果然,一切正常。最后我们要关闭Fabric网络,首先需要运行exit命令退出cli容器。关闭Fabric的命令与启动类似,命令为:bash network_setup.sh down 下面测试为新增一个自己的chaincode(可以不用进行测试,这里为了更精确的进行测试)与0.6Fabric不同的是,在1.0中,链上代码是需要经过Install和Instantiate两步的。下面我们首先安装Example02,并指定一个名字,比如我们这里就用alancc:peer chaincode install -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02/ -n alancc -v 1.0运行后可以看到提示运行成功,返回200状态:Hyperledger Fabric 1.0 学习搭建 (三)— 运行测试e2e-FabricHyperledger Fabric 1.0 学习搭建 (三)— 运行测试e2e-Fabric接下来是Instantiate,也就是初始化实例,设置a账户有100元,b账户有200元。peer chaincode instantiate -n alancc -v 1.0 -c ‘{“Args”: [“init”, “A”, “100”, “B”, “100”]}’ -C alanc peer chaincode instantiate -o orderer.example.com:7050 -C alanc -n alancc -v 1.0 -c ‘{“Args”:[“init”,”a”,”100″,”b”,”200″]}’ -P “OR(‘Org1MSP.member’,’Org2MSP.member’)” 

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,104
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,581
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,428
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,200
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,835
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,918