本地搭建Fabric1.0版本环境问题

最近在做HyperLedger/Fabric的项目,之前自己负责的部分一直是Java-SDK部分,实现前端Java程序通过SDK调用Chaincode向Fabric区块链写入信息,完成数据信息上链。环境搭建部分一直都是别人做的,我对于环境配置和系统运行部分同样很感兴趣,就想自己在本地搭建一套环境,所以买了一本杨毅编著的《HyperLedger Fabric开发实战》(之前看过他写的博客,所以就想着按照他的步骤进行了),跟着上面写的步骤进行系统环境安装和配置。
在安装书中介绍步骤更新YUM源,安装Docker-CE和Docker-Compose,安装Go语言环境后开市进行Fabric环境部署。
书中介绍的Fabric源码下载的是1.1.0版本,源码放在/home/docker/github.com/hyperledger/fabric路径下,但后续开始运行的是Fabric 1.0.0版本,按照书中介绍内容只是将Fabric 1.0版本中的e2e_cli替换Fabric 1.1版本中e2e_cli,然后通过network_setup.sh脚本开始启动测试环境,但运行后报错:

Error: got unexpected status: BAD_REQUEST – error authorizing update: 
  error validating DeltaSet: invalid mod_policy for element [Policy] 
  /Channel/Application/Admins: mod_policy not set !!!!!!!!!!!!!!! 
  Channel creation failed !!!!!!!!!!!!!!!! 
  ================== ERROR !!! FAILED to execute End-2-End Scenario ==================

经过网络搜索后,查找到博客:ubuntu16.04使用fabric中的e2e-cli 模板样例快速启动网络中此内容介绍,查看/home/docker/github.com/hyperledger/fabric/scripts目录下的bootstrap脚本,看到都是1.1.0版本的(因为之前下载的是1.1.0版本源码,这里未经替换,所以才出现1.1.0版本的脚本),索性将整个源码都替换为1.0.0版本并运行bootstrap-1.0.0.sh脚本在线下载镜像。所以这里个人认为书中介绍略有不妥(可能是我的某个地方的配置问题),要运行1.0.0版本,就应该用1.0.0版本的源码,避免出现一些难以预料的问题。
另外根据书中介绍下载了cryptogen、configtxgen、configtxlator、peer、orderer等二进制文件(需要按照对应的版本下载使用),并放置在/home/docker/github.com/hyperledger/fabric/release/linux-amd64/bin目录下,其中linux-amd64需要根据各自系统的类型和架构创建,并修改cryptogen和configtxgen两个文件的可执行权限,又修改了/home/docker/github.com/hyperledger/fabric/examples/e2e_cli/scripts目录下的script.sh脚本的可执行权限。
书中还有没有介绍启动过程中的问题:
1.启动过程中会出现network e2ecli_default not found错误,根据博客:HYPERLEDGER FABRIC网络搭建之network e2ecli_default not found介绍,修改e2e_cli/base目录下peer-base.yaml文件,修改网络名称:- CORE_VM_DOCKER_HOSTCONFIG_NETWORKMODE=e2e_cli_default后问题解决。
2.启动过程中出现mod_policy not set错误,前面已经提到相关的解决方法。

作者可能没有遇到这两个问题,所以在书中没有列出,在这里暂时将这两个问题用博客记录下来,以备后续查看。

你可能感兴趣的:(区块链)