搭建和运行hyperledger fabric1.0alpha版本过程分析

 搭建和运行hyperledger fabric1.0alpha版本过程分析

 

 

 

目录

 

1.     主要步骤

1.安装docker和docker-compose

2.下载相关镜像并tag重命名... 

3. 安装git 并git下载fabric源码... 

4.安装go环境... 

5. 安装ltdl包(可能需要执行的步骤)... 

6.测试过程... 

常见错误:... 

2.     过程分析说明... 

3.     CA说明... 

 

 

 

 

 

 

 

 

 

 

1. 主要步骤

本次测试过程是vmvare的centos7虚拟机上进行的。

1.安装docker和docker-compose

 去https://download.daocloud.io/可以很方便下载这两个东西

2.下载相关镜像并tag重命名

如果下载镜像很慢或者下不了,配置daocloud加速器命令

curl -sSLhttps://get.daocloud.io/daotools/set_mirror.sh | sh -s http://e523f129.m.daocloud.io

有些镜像可能没有缓存,要用dao pull工具来下载

curl -sSL https://get.daocloud.io/daomonit/install.sh | sh -s 7a6d83cbe808b4注意这里是私有的5fbcc77d451d82f

 

docker pullhyperledger/fabric-orderer:x86_64-1.0.0-alpha

docker pullhyperledger/fabric-peer:x86_64-1.0.0-alpha

docker pullhyperledger/fabric-zookeeper:x86_64-1.0.0-alpha

docker pullhyperledger/fabric-couchdb:x86_64-1.0.0-alpha

docker pullhyperledger/fabric-kafka:x86_64-1.0.0-alpha

docker pullhyperledger/fabric-ca:x86_64-1.0.0-alpha

docker pullhyperledger/fabric-ccenv:x86_64-1.0.0-alpha

docker pull hyperledger/fabric-javaenv:x86_64-1.0.0-alpha

dockerpull  hyperledger/fabric-baseos:x86_64-0.3.0#这个网上1.0教程的文章忘记写这个了

把以上镜像全部tag为latest

docker  tag  镜像id   hyperledger/fabric-****:latest

 

3. 安装git 并git下载fabric源码

安装git:

Yum install git

进入/usr/local/gopath/src/github.com/hyperledger/fabric目录

去github下载fabric-master源码到虚拟机,解压出来改名为fabric,放在目录/usr/local/gopath/src/github.com/hyperledger/

 

4.安装go环境

  主要配置的环境变量为:

Vi /etc/profile

增加以下内容,其中/usr/local/golang为go环境目录

export GOROOT=/usr/local/golang

export PATH=$PATH:$GOROOT/bin

export GOPATH=/usr/local/gopath

 

5.安装ltdl包(可能需要执行的步骤)

  yuminstall libtool-ltdl-devel-2.4.2-21.el7_2.i686

安装后默认链接的可能是/usr/lib/libltdl.so.7.3.0,这不是64位的,会导致版本不兼容的错误。所以需要手动执行软链接

ln -s /usr/lib64/libltdl.so.7 /usr/lib/libltdl.so

  测试执行makeconfigtxgen是否成功,如果报错要解决错误直到没有错误为止

 

6.测试过程

cd/usr/local/gopath/src/github.com/hyperledger/fabric/examples/e2e_cli

./network_setup.sh up <channel-ID>

   如果整个过程执行完成,提示

===================== All GOOD, End-2-Endexecution completed =====================

 则表示整个过程测试成功。

或者分解成两步:

第一步:

cd examples/e2e_cli

./generateCfgTrx.sh<channel-ID>

 

第二步:

cd examples/e2e_cli

[CHANNEL_NAME=<channel-id>]docker-compose up -d

 

 

 

 

常见错误:

错误1:连接orderer07050 grpc超时的错误。

解决方法:

要正常运行,其实还要改docker-compose.yaml文件里的把凡是有CORE_PEER_COMMITTER_LEDGER_ORDERER的这行注释去掉,并且写上orderer0容器的ip地址。例如:

CORE_PEER_COMMITTER_LEDGER_ORDERER=172.18.0.2:7050

并且不能去掉cli里#-CORE_PEER_TLS_SERVERHOSTOVERRIDE=peer0这一行的注释,去掉之后也会出现连接orderer0:7050超时的错误。

彻底解决方法:把vmvare的网络模式由nat模式改成桥接模式可以解决。

 

 

错误2:部署chaincode时报错Illegal file modedetected for file

017-03-2213:29:48.699 UTC [msp] Sign -> DEBU 00a Sign: digest:C79CB7C198790F862134F9037DA1B64F1A95E534A745D393B64C214A3F1730C7

Error:Error endorsing chaincode: rpc error: code = 2 desc = Illegal file modedetected for filesrc/github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02/chaincode_example02.go:100766

 

解决方法:

因为源码里对chaincode的文件权限有严格控制,必须要求全部都是666,也就是rw权限,没有x的执行权限。(也对,不然太高权限是不安全的)源码里有说明



 所以要在examples的chaincode目录下执行:

Chmod–R 666 go 把所有的智能合约文件权限改为666

错误3:找不到镜像


 

解决方法:

下载docker pull  hyperledger/fabric-baseos:x86_64-0.3.0镜像

下载docker pull hyperledger/fabric-ccenv:x86_64-1.0.0-alpha 镜像,
并tag为latest

Docker logs cli

成功运行的结果截图:


Docker ps –a截图:


Docker images截图:


2. 过程分析说明

执行全过程分析

(1)network_setup.sh


  由这个文件可以看出主要步骤为:

1.      执行GenerateCfgTrx.sh

2.      Docker-composeup 目录下的docker-compose.yaml文件

(2)GenerateCfgTrx.sh

 


GenerateCfgTrx.sh的内容分析

configtxgen工具用于生成两个要素: 1)orderer 的创始区块 2)配置fabric通道的配置文件

orderer block是用于order排序服务的创始区块,在创建通道的时候被广播到order排序服务。

configtx.yaml包含示例区块链网络内角色的定义;/crypto目录包含管理员证书,CA证书,每个角色的私钥和用于签名的证书

 

(3)docker-compose.yaml


此配置文件主要在单节点上初始启动了order0,peer0,peer1, peer2,peer3和cli。测试fabric1.0版本的命令是在启动cli容器时,执行script.sh实现的。

 

 

(4)script.sh(重点分析)

 


分解步骤:

1.创建管道channel,产生创始区块

2.把4个节点加入通道。

  发送创始区块给四个Peer节点并执行joinChannel命令.

  创建了一个由四个Peer节点和两个组织(Org0、Org1)组成的通道.

3.把智能合约 -chaincode_example02 被部署到 PEER0 和 PEER2,并调用智能合约接口测试运行

   0.6的deploy步骤只有一步,1.0的alpha版会分两个步骤,一个是peerchaincode install,一个是peer chaincode instantiate

(1)      installchaincode

 

 

 配置:

CORE_PEER_MSPCONFIGPATH=/opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peer/peer0/localMspConfig

 

CORE_PEER_ADDRESS=peer0:7051 peer chaincodeinstall -n mycc -v 1.0 -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02>&log.txt

 

(2)      instantiateChaincode

 

 

这里面标识了1.0初始化chaincode和0.6的区别。

其中红色部分是0.6版本没有的参数

-C 代表channel 代表管道名字,

-n 代表name 代表chaincode的名字

-p 代表path  代表chaincode代码的路径

-v 代表version 代表版本信息

-o 代表orderer  这个orderer可以是一个节点,也可以是多个orderer组成的kafka集群(集群里会用到zookeeper)。    

-P 代表principle 背书策略

这里需要宿主机有hyperledger/fabric-baseos:x86_64-0.3.0和hyperledger/fabric-ccenv:x86_64-1.0.0-alpha这两个镜像,并且把镜像tag为latest。不然会报no such image的错误而启动chaincode容器不成功。

3. CA说明

0.7版本用fabric-ca命令,1.0-alpha版本用fabric-ca-server,fabric-ca-client。

1.0的例子程序暂时没用到ca,从官网可知,ca已经独立成单独的项目,通过sdk去把CA和fabric区块链节点这两部分组合起来。

 


 

 

发布了43 篇原创文章 · 获赞 24 · 访问量 8万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览