• 区块链 Hyperledger Fabric v1.0.0 环境搭建


    前言最近项目涉及到超级账本,在有些理论知识的基础上,需要整一套环境来。

    这是一个特别要注意的事情,笔者之前按照网络上推荐,大部分都是推荐ubuntu系统的,于是下载Ubuntu系统(16.04.5和18.04都试试),遇到各种问题,一直不能成功,大概花了好多天,一直不成功,后来都要放弃了,但是心有不甘,又下载centos7,只花了一天,就成功了,所以在这里使用centos7系统。在这个还是要感谢各位大神的博客,感激之情溢于言表。

    上个截图来表达喜悦的心情

    这是一张成功的截图。

    套话不多说,直接操作步骤。

    1.下载VirtualBox

    版本:5.2.20-125813(下载时最高版本)。

    下载地址:https://www.virtualbox.org/

    (这么快就更新了一版本嘛,无比尴尬)

    具体安装步骤,百度一下。

    2.下载镜像文件  centos.iso

    版本号:CentOS-7-x86_64-DVD-1804.iso 和 CentOS-7-x86_64-Everything-1804.iso(笔者都有下载,使用的是CentOS-7-x86_64-Everything-1804)

    下载地址:http://isoredirect.centos.org/centos/7/isos/x86_64/(当前连接显示所有版本及各种镜像连接)。

    http://mirrors.aliyun.com/centos/7.5.1804/isos/x86_64/(笔者选择的是阿里的镜像,如果还有迅雷的话,下载十分迅速)。

    安装:https://www.cnblogs.com/hihtml5/p/8217062.html(笔者根据大神提供的经验,尤其后面网络设置的,帮了大忙)。

    网络:笔者使用的是有限网络。

     要保证主机可以ping通虚拟机,同时虚拟机可以ping通‘www.baidu.com’(笔者一直实现不了虚拟机平通主机,但是不影响后续步骤)。

    3.使用secureCRT连接虚拟机。

    说明:笔者不太喜欢'右ctrl'键来切换鼠标在虚拟机和主机的位置,就用secureCRT连接虚拟机。其他人可以根据自己的喜欢,自行选择及忽略,是不是很人性化。

    根据第二步骤的操作,主机可以ping通虚拟机,即可连接成功,如果还不行,可修改/etc/sysconfig/network-scripts/ifcfg-enp0s3。

    登录虚拟机,笔者所有需要操作都在root用户,/root/目录下。之前使用Ubuntu时,就遇到这种情况,也是差些就成功了(惋惜万分)。

    4.安装GO

    4.1 下载go

    下载指令:

    [root@localhost ~] # wget https://storage.googleapis.com/golang/go1.9.linux-amd64.tar.gz 

    如果没有安装wget,需要先安装wget。命令:

    [root@localhost ~] # yum install wget  

    等待下载完成..

    4.2 解压

    [root@localhost ~] # sudo tar -C /usr/local -xzf go1.9.linux-amd64.tar.gz
    

    4.3配置环境变量 

    [root@localhost ~] # vi /etc/profile  

    在文件最底部,添加如下内容: 

    export PATH=$PATH:/usr/local/go/bin 
    export GOROOT=/usr/local/go 
    export GOPATH=$HOME/go 
    export PATH=$PATH:$HOME/go/bin  

     退出文件,保存生效。

    [root@localhost ~] # source /etc/profile
    

    4.4验证

    笔者建议使用如下指令,更详细。

    [root@localhost ~] # go env 

    效果如下图,则安装成功。

    5.安装docker

    由于操作过多,请按照步骤来。

    5.1查看内河版本,要高于3.10。笔者下载的系统,刚好满足。查看指令如下:

    [root@localhost ~] # uname -r
    

     

    5.2  更新yum包,保证最新的。指令如下:

    [root@localhost ~] # sudo yum update
    

     

    5.3移除docker旧版本。(如果是新系统,可以忽略此步骤)。指令如下:

    [root@localhost ~] # sudo yum remove docker  docker-common docker-selinux docker-engine
    

     

    5.4 安装需要的软件包。操作指令如下:  

    [root@localhost ~] # sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    

     

    5.5  设置镜像资源。指令如下:

    [root@localhost ~] # sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

     

    5.6  查看仓库所有docker版本,并选择特定版本安装。指令如下(如果没查询到可用版本,多试试5.6步骤):

    [root@localhost ~] # yum list docker-ce --showduplicates | sort -r

    输出如下图:

    笔者在运行fabric网络时,就遇到一个问题(具体问题,忘记记录),百度了一下说是docker和docker-compose版本问题,所以笔者在这里推荐docker版本是:17.12.0-ce。

    5.7 安装docker。指令如下:

    [root@localhost ~] # sudo yum install 版本号  ## sudo yum install docker-ce-17.12.0.ce

    5.8 验证是否安装成功(client和service都有显示)。指令如下:

    [root@localhost ~] # docker version  

    如下显示:

    5.9 启动 并且 加入开机启动。指令如下:

    [root@localhost ~] # sudo systemctl start docker
    [root@localhost ~] # sudo systemctl enable docker
    

    5.10 添加阿里的镜像。指令如下:

    [root@localhost ~] # yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    

      

    6.安装docker-compose  

     

    6.1 笔者使用pip安装。指令如下:

     [root@localhost ~] # yum -y install epel-release  

    这个版本应该是8.*的,安装docker-compose需要升级到18.*

     

    6.2安装组件python-pip。指令如下:

    [root@localhost ~] # sudo yum -y install python-pip
    

     pip

    6.3 升级pip版本

    [root@localhost ~] # pip install --upgrade pip  

    如下图显示:

    6.4  安装docker-compose。笔者安装的是1.12.0版本。指令如下:

    [root@localhost ~] # sudo pip install docker-compose==版本号 ##sudo pip install docker-compose==1.12.0
    

    6.5验证。指令如下:

    [root@localhost ~] # docker-compose version
    

    7.docker run hello-world

    到此docker和docker-compose已经安装完成,那么来试试一个hello-world吧。指令如下:

    [root@localhost ~] # docker run hello-world  

    截图如下:

    如果是第一次运行,会有下载hello-world 的过程,请耐心等待。(笔者已经运行过好多次,截图如上)。

    docker 常用指令:

    docker stats # 容器,状态
    docker rm -f $(docker ps -aq) #清除容器内所有示例
    ...
    
    等等(到目前就用到这两个指令,捂脸..)
    

    8. Fabric资源及镜像下载 

     

    8.1 创建文件。如下图

     

    8.2 git 下载Fabric。指令如下: 

    [root@localhost hyperledger] # git clone https://github.com/hyperledger/fabric.git

    如果git不可用,下载git。指令如下:

    [root@localhost hyperledger] # sudo yum install git

    8.3设置资源版本号:v1.0.0

    [root@localhost ~] # cd ~/go/src/github.com/hyperledger/fabric
    [root@localhost fabric] # git checkout v1.0.0

      

    8.4 Fabric Docker 镜像下载

    [root@localhost ~] # cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli/
    [root@localhost e2e_cli] # source download-dockerimages.sh -c x86_64-1.0.0 -f x86_64-1.0.0  

     

    8.5下载完成,查看镜像文件列表。指令如下:

    [root@localhost e2e_cli] # docker images  

    如下图显示:

    8.6  启动 Fabric 网络环境。指令如下:

    [root@localhost e2e_cli] # ./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容器。  
    

    稍等一会,出现文章开头的截图。再次截取,如果如下图显示,那就恭喜,你的网络也通了。

     

    8.7另开session窗口。指令如下:

    [root@localhost ~] # docker stats  

    容器显示截图如下:

     

    8.8 网络关闭

    新开session窗口。指令如下(如下指令可以先不执行,后续步骤会用到):

    [root@localhost ~] # cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli/
    [root@localhost e2e_cli] # ./network_setup.sh down

    9.测试Fabric网络

     

    9.1 新起session窗口,打开客户端。指令如下:

    [root@localhost ~] # docker exec -it cli bash  

    进入目录下,如下图所示:

     

    9.2查询a账户余额.。指令如下:

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

    截图如下显示:

    9.3转账。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账号余额:

     到此,所有的步骤都结束了,可以执行 “8.7关闭网络”。

  • 相关阅读:
    宏------进阶

    公司用中会用到的iOS开源库和第三方组件(不断更新...)
    iOS 开发者旅途中的指南针
    国际化
    Block
    git简单使用教程
    XCode自带解析SAX解析
    GDataXMLNode解析XML
    Predicate
  • 原文地址:https://www.cnblogs.com/--net/p/9948052.html
Copyright © 2020-2023  润新知