Hyperledger Fabric1.1 开发环境搭建

1:环境构建

 用到虚拟机环境是Centos7 ,Linux 版本4.18.5-1.el7.x86_64。

1.1:Docker安装

  如果在服务器上有旧版的docker,需要先执行卸载操作。

  

$ sudo yum remove docker \ 
                               docker-common \ 
                               docker-selinux \ 
                               docker-engine

随后开始安装Docker CE。

$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2

$ sudo yum-config-manager \
    --add-repo \
https://download.docker.com/linux/centos/docker-ce.repo

$ sudo yum-config-manager --enable docker-ce-edge

$ sudo yum-config-manager --enable docker-ce-test

$ sudo yum-config-manager --disable docker-ce-edge

$ sudo yum makecache fast

$ sudo yum install docker-ce

执行查询docker版本号,看是否安装成功

docker --version

出现如下视图

docker启动:

service docker start

docker开机自启动:

chkconfig docker on

1.2Docker-Compose安装

如服务器支持curl,首先需要安装curl依赖

yum install curl

根据官网,目前docker-compose最新版为1.23

而我这里下载的是1.15.0,执行如下操作下载docker-compose

curl -L https://github.com/docker/compose/releases/download/1.15.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-composechmod +x /usr/local/bin/docker-compose

再次执行

docker-compose --version

查看版本信息

1.3Go语言安装

执行以下操作下载Go语言包

curl -O https://storage.googleapis.com/golang/go1.8.3.linux-amd64.tar.gz

解压go1.8.3.linux-amd64.tar.gz,到/usr/local目录下,执行操作

tar -C /usr/local -xzf go1.8.3.linux-amd64.tar.gz

配置go环境变量

修改/etc/profile文件,在文件末尾加上如下两行代码

 export PATH=$PATH:/usr/local/go/bin
 export GOPATH=/opt/gopath

执行修改后,继续执行

source profile

查看go的版本

[root@localhost lf]# go version
go version go1.8.3 linux/amd64

fabric 环境搭建

新建目录

[root@localhost hyperledger]# pwd
/opt/gopath/src/github.com/hyperledger

切换到这个目录获取fabric源码

git clone https://github.com/hyperledger/fabric.git

 切换到1.1版本

​
git checkout -b v1.1.0 

​

查看是否切换成功

[root@localhost fabric]# git branch -a
* release-1.1
  release-1.2
  remotes/origin/HEAD -> origin/release-1.2
  remotes/origin/feature/ca
  remotes/origin/feature/convergence
  remotes/origin/master
  remotes/origin/release-1.0
  remotes/origin/release-1.1
  remotes/origin/release-1.2
  remotes/origin/v0.6
  remotes/origin/v1.0.0-preview

下载Fabric相关镜像文件

官方给出的下载方式如下:

docker pull hyperledger/fabric-peer

根据所使用的操作系统情况,选择x86_64-1.1.0版本,执行的docker下载故命令如下:

docker pull hyperledger/fabric-peer:x86_64-1.1.0

fabric环境主要需要的镜像有以下几种:

hyperledger/fabric-baseimage
hyperledger/fabric-zookeeper
hyperledger/fabric-kafka
hyperledger/fabric-couchdb
hyperledger/fabric-ca
hyperledger/fabric-tools
hyperledger/fabric-orderer
hyperledger/fabric-peer
hyperledger/fabric-javaenv
hyperledger/fabric-ccenv
hyperledger/fabric-baseos
hyperledger/fabric-membersrvc

在把所有的镜像tag都改为latest,执行如下格式的命令:

docker tag IMAGEID(镜像id) REPOSITORY:TAG(仓库:标签)

 例如:

docker tag 390ac2e95bc7 hyperledger/fabric-baseimage:latest

查看所有镜像文件及版本号,执行如下命令:

docker images

 视图如下:

[root@localhost fabric]# docker images
\REPOSITORY                      TAG                 IMAGE ID            CREATED             SIZE
hyperledger/fabric-baseimage    latest              390ac2e95bc7        7 months ago        1.41GB
hyperledger/fabric-baseimage    x86_64-0.4.7        390ac2e95bc7        7 months ago        1.41GB
hyperledger/fabric-zookeeper    latest              1ce465be7112        7 months ago        1.39GB
hyperledger/fabric-zookeeper    x86_64-0.4.7        1ce465be7112        7 months ago        1.39GB
hyperledger/fabric-kafka        latest              4fed436fc0a0        7 months ago        1.4GB
hyperledger/fabric-kafka        x86_64-0.4.7        4fed436fc0a0        7 months ago        1.4GB
hyperledger/fabric-couchdb      latest              35228d48a25a        7 months ago        1.56GB
hyperledger/fabric-couchdb      x86_64-0.4.7        35228d48a25a        7 months ago        1.56GB
hyperledger/fabric-ca           latest              72617b4fa9b4        7 months ago        299MB
hyperledger/fabric-ca           x86_64-1.1.0        72617b4fa9b4        7 months ago        299MB
hyperledger/fabric-tools        latest              b7bfddf508bc        7 months ago        1.46GB
hyperledger/fabric-tools        x86_64-1.1.0        b7bfddf508bc        7 months ago        1.46GB
hyperledger/fabric-orderer      latest              ce0c810df36a        7 months ago        180MB
hyperledger/fabric-orderer      x86_64-1.1.0        ce0c810df36a        7 months ago        180MB
hyperledger/fabric-peer         latest              b023f9be0771        7 months ago        187MB
hyperledger/fabric-peer         x86_64-1.1.0        b023f9be0771        7 months ago        187MB
hyperledger/fabric-javaenv      latest              82098abb1a17        7 months ago        1.52GB
hyperledger/fabric-javaenv      x86_64-1.1.0        82098abb1a17        7 months ago        1.52GB
hyperledger/fabric-ccenv        latest              c8b4909d8d46        7 months ago        1.39GB
hyperledger/fabric-ccenv        x86_64-1.1.0        c8b4909d8d46        7 months ago        1.39GB
hyperledger/fabric-baseos       x86_64-0.4.6        220e5cf3fb7f        8 months ago        151MB
hyperledger/fabric-baseos       x86_64-0.3.1        4b0cab202084        17 months ago       157MB
hyperledger/fabric-membersrvc   latest              b3654d32e4f9        2 years ago         1.42GB

3:运行测试e2e

进入到/opt/gopath/src/github.com/hyperledger/fabric/examples/e2e_cli目录下,启动Fabric网络

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

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

2018-10-23 07:08:02.676 UTC [msp] GetLocalMSP -> DEBU 001 Returning existing local MSP
2018-10-23 07:08:02.676 UTC [msp] GetDefaultSigningIdentity -> DEBU 002 Obtaining default signing identity
2018-10-23 07:08:02.676 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 003 Using default escc
2018-10-23 07:08:02.676 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 004 Using default vscc
2018-10-23 07:08:02.676 UTC [msp/identity] Sign -> DEBU 005 Sign: plaintext: 0A95070A6708031A0C08D291BBDE0510...6D7963631A0A0A0571756572790A0161 
2018-10-23 07:08:02.676 UTC [msp/identity] Sign -> DEBU 006 Sign: digest: FCBD442CECA1A41C53423DFAD0DCC426AB669E131A210DA7235FEA79B9EDB3AE 
Query Result: 90
2018-10-23 07:08:23.063 UTC [main] main -> INFO 007 Exiting.....
===================== Query on PEER3 on channel 'mychannel' is successful ===================== 

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


 _____   _   _   ____            _____   ____    _____ 
| ____| | \ | | |  _ \          | ____| |___ \  | ____|
|  _|   |  \| | | | | |  _____  |  _|     __) | |  _|  
| |___  | |\  | | |_| | |_____| | |___   / __/  | |___ 
|_____| |_| \_| |____/          |_____| |_____| |_____|

进入CLI容器,该容器提供了跟chaincode交互的命令环境,命令如下:

docker exec -it cli bash

查看a账户余额:

peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'

 如下:余额是90。

root@90720398789c:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
2018-10-23 07:10:41.504 UTC [msp] GetLocalMSP -> DEBU 001 Returning existing local MSP
2018-10-23 07:10:41.504 UTC [msp] GetDefaultSigningIdentity -> DEBU 002 Obtaining default signing identity
2018-10-23 07:10:41.504 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 003 Using default escc
2018-10-23 07:10:41.504 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 004 Using default vscc
2018-10-23 07:10:41.505 UTC [msp/identity] Sign -> DEBU 005 Sign: plaintext: 0A95070A6708031A0C08F192BBDE0510...6D7963631A0A0A0571756572790A0161 
2018-10-23 07:10:41.505 UTC [msp/identity] Sign -> DEBU 006 Sign: digest: C0B3FDB1A70B69835C8FC24D81822967DBF4FDE8435009782ACDBE08EBC56810 
Query Result: 90
2018-10-23 07:10:41.573 UTC [main] main -> INFO 007 Exiting.....

把a账户的余额再转20元给b账户:

root@90720398789c:/opt/gopath/src/github.com/hyperledger/fabric/peer# 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"]}'
2018-10-23 07:17:12.449 UTC [msp] GetLocalMSP -> DEBU 001 Returning existing local MSP
2018-10-23 07:17:12.449 UTC [msp] GetDefaultSigningIdentity -> DEBU 002 Obtaining default signing identity
2018-10-23 07:17:12.475 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 003 Using default escc
2018-10-23 07:17:12.475 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 004 Using default vscc
2018-10-23 07:17:12.476 UTC [msp/identity] Sign -> DEBU 005 Sign: plaintext: 0A95070A6708031A0C08F895BBDE0510...696E766F6B650A01610A01620A023230 
2018-10-23 07:17:12.476 UTC [msp/identity] Sign -> DEBU 006 Sign: digest: 61AAB196B5F5F1A215702EAB61D273E1451C998B5BF8DBF8341D815AC4220528 
2018-10-23 07:17:12.507 UTC [msp/identity] Sign -> DEBU 007 Sign: plaintext: 0A95070A6708031A0C08F895BBDE0510...2D3AC2C142CEF7EE1B57D74CE551D149 
2018-10-23 07:17:12.507 UTC [msp/identity] Sign -> DEBU 008 Sign: digest: EB35F552FDCAC62FB8D73B0B30C839EFAB8C68CD53294E02D5D1F22E55717F9C 
2018-10-23 07:17:12.520 UTC [chaincodeCmd] chaincodeInvokeOrQuery -> DEBU 009 ESCC invoke result: version:1 response:<status:200 message:"OK" > payload:"\n L\036\222\027\004\347|\255\030d^7\023\362\253Ye\351\212W\347\3314g\212\004\321S\205\315\371\237\022Y\nE\022\024\n\004lscc\022\014\n\n\n\004mycc\022\002\010\003\022-\n\004mycc\022%\n\007\n\001a\022\002\010\004\n\007\n\001b\022\002\010\004\032\007\n\001a\032\00270\032\010\n\001b\032\003230\032\003\010\310\001\"\013\022\004mycc\032\0031.0" endorsement:<endorser:"\n\007Org1MSP\022\200\006-----BEGIN -----\nMIICGjCCAcCgAwIBAgIRAJtuYzeWfgyPqGQoE+bzptMwCgYIKoZIzj0EAwIwczEL\nMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBG\ncmFuY2lzY28xGTAXBgNVBAoTEG9yZzEuZXhhbXBsZS5jb20xHDAaBgNVBAMTE2Nh\nLm9yZzEuZXhhbXBsZS5jb20wHhcNMTgxMDIzMDcwMTM2WhcNMjgxMDIwMDcwMTM2\nWjBbMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN\nU2FuIEZyYW5jaXNjbzEfMB0GA1UEAxMWcGVlcjAub3JnMS5leGFtcGxlLmNvbTBZ\nMBMGByqGSM49AgEGCCqGSM49AwEHA0IABFzRqpPwb5HsQUaPPeighCfZ2ug7EaKa\npDSZTOXafarBGOZcNekuAJcx4jYdt9Hpwzb1s1plLJq1NR4kRiB9yjKjTTBLMA4G\nA1UdDwEB/wQEAwIHgDAMBgNVHRMBAf8EAjAAMCsGA1UdIwQkMCKAIO/aGzoVF5m+\nm4hbJ0KmYILUzL1Q+O29zAH87DGZ1QL9MAoGCCqGSM49BAMCA0gAMEUCIQC9AkLl\n9LEmqZySWwiIoBKo/Fdfpb9BEZl+4tbgqYGXFAIgHOyZ9UZQFUlS3fNQSeHn/ZAl\nXmxUJ/XFGNuvrZQjPw0=\n-----END -----\n" signature:"0E\002!\000\363\302_\2277\372\313\251W7)*T\nmi\230\201\271I?I\300:;\024\352Z\307D4\256\002 O+\000!-E^\362\273p#\223\014\253\231\327-:\302\301B\316\367\356\033W\327L\345Q\321I" > 
2018-10-23 07:17:12.520 UTC [chaincodeCmd] chaincodeInvokeOrQuery -> INFO 00a Chaincode invoke successful. result: status:200 
2018-10-23 07:17:12.520 UTC [main] main -> INFO 00b Exiting.....

再查询一下a账户的余额

root@90720398789c:/opt/gopath/src/github.com/hyperledger/fabric/peer# peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'2018-10-23 07:20:02.370 UTC [msp] GetLocalMSP -> DEBU 001 Returning existing local MSP
2018-10-23 07:20:02.370 UTC [msp] GetDefaultSigningIdentity -> DEBU 002 Obtaining default signing identity
2018-10-23 07:20:02.370 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 003 Using default escc
2018-10-23 07:20:02.370 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 004 Using default vscc
2018-10-23 07:20:02.371 UTC [msp/identity] Sign -> DEBU 005 Sign: plaintext: 0A95070A6708031A0C08A297BBDE0510...6D7963631A0A0A0571756572790A0161 
2018-10-23 07:20:02.371 UTC [msp/identity] Sign -> DEBU 006 Sign: digest: E016E2C52A7325DAB9BB047E266E7A2C42D8AEA22FE3EC79779953DA55B2EE04 
Query Result: 70
2018-10-23 07:20:02.386 UTC [main] main -> INFO 007 Exiting.....

关闭fabric

./network_setup.sh down

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值