zoukankan      html  css  js  c++  java
  • 【区块链自学系列-0.0】HyperLedger Fabric 1.0 环境搭建

    声明:本文大部分参考https://blog.csdn.net/tiandiwuya/article/details/78771475,如有侵权,请与我联系,立即删帖。

    本文纯做备忘,鉴于17年时候搭建过程那个曲折啊,希望能给其他小伙伴有所启发。


    环境:阿里云服务器(我要去要广告费了,哈哈) 系统:Ubuntu 16.04 64位

    系统环境搭建略(云服务器非常方便,自己之前一直在这折腾虚拟机)。。。

    Fabric环境搭建:

    一.安装GO语言

    下载最新版的go

    打开Terminal,输入命令(以下命令都是以root管理员的角色进行的)

    su
    输入密码:*****
    wget https://storage.googleapis.com/golang/go1.9.2.linux-amd64.tar.gz
    tar -C /usr/local -xzf go1.8.4.linux-amd64.tar.gz

    编辑当前用户的环境变量

    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


    编辑保存并退出vi后,记得使这些环境变量生效

    source /etc/profile


    把go的目录GOPATH设置为当前用户的文件夹下,所以记得创建go文件夹

    cd ~ mkdir go


    有时候wget获取go安装包的时候会因为网络问题失败,也可以用apt安装go,只不过版本是比较老旧的1.6.2,但是我在测试中也可以正常使用

     apt-get install golang


    添加的环境变量为

    export PATH=$PATH:/usr/lib/go-1.6  export GOROOT=/usr/lib/go-1.6 export GOPATH=$HOME/go  export PATH=$PATH:$HOME/go/bin

    二.安装Docker

    可以使用阿里提供的镜像仓库,执行以下命令来安装Docker

     curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -  

    有的时候在第一步中无法安装成功,也可以使用官方提供的脚本来安装docker

     curl -sSl https://get.docker.com/ | sh

    安装成功后启动docker服务:

     service docker start

    三.安装Docker-compose

    Docker-compose是支持通过模板脚本批量创建Docker容器的一个组件。在安装Docker-Compose之前,需要安装Python-pip,运行脚本:

     apt-get install python-pip

    然后是安装docker-compose,我们从官方网站(https://github.com/docker/compose/releases)下载也可以从国内的进行DaoClound下载,为了速度快接下来从DaoClound安装Docker-compose,运行脚本:

    curl -L https://get.daocloud.io/docker/compose/releases/download/1.12.0/docker-compose-`uname -s`-`uname -m` > ~/docker-compose  mv ~/docker-compose /usr/local/bin/docker-compose  chmod +x /usr/local/bin/docker-compose

    四.Fabric源码下载

    可以用go get命令下载源码

    go get github.com/hyperledger/fabric

    如果下载失败也可以使用git命令下载源码

    mkdir -p ~/go/src/github.com/hyperledger  cd ~/go/src/github.com/hyperledger  git clone https://github.com/hyperledger/fabric.git

    由于Fabric一直在更新,所有我们并不需要最新最新的源码,需要切换到v1.0.0版本的源码即可:

    cd ~/go/src/github.com/hyperledger/fabric git checkout v1.0.0

     

    五.下载Fabric镜像

    官方文件提供了批量下载的脚本。我们直接运行:

    cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli/ source download-dockerimages.sh -c x86_64-1.0.0 -f x86_64-1.0.0

    所有会用到的Fabric docker镜像都会下载下来了。


    下载完毕后,我们运行以下命令检查下载的镜像列表:

    docker images

    得到的结果如下:


    六、启动Fabric网络并完成ChainCode的测试

    我们仍然停留在e2e_cli文件夹,这里提供了启动、关闭Fabric网络的自动化脚本。我们要启动Fabric网络,并自动运行Example02 ChainCode的测试,执行一个命令:

    bash network_setup.sh up

    这个做了以下操作:

    6.1编译生成Fabric公私钥、证书的程序,程序在目录:fabric/release/linux-amd64/bin

    6.2基于configtx.yaml生成创世区块和通道相关信息,并保存在channel-artifacts文件夹。

    6.3基于crypto-config.yaml生成公私钥和证书信息,并保存在crypto-config文件夹中。

    6.4基于docker-compose-cli.yaml启动1Orderer+4Peer+1CLI的Fabric容器。

    6.5在CLI启动的时候,会运行scripts/script.sh文件,这个脚本文件包含了创建Channel,加入Channel,安装Example02,运行Example02等功能。

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


    如果您看到这个界面,这说明我们整个Fabric网络已经通了。

    类似这样的错误,是因为channel已经建立,命名冲突

        <EXACT_TIMESTAMP> UTC [msp] Sign -> DEBU 064 Sign: digest: 5ABA6805B3CDBAF16C6D0DCD6DC439F92793D55C82DB130206E35791BCF18E5F     Error: Got unexpected status: BAD_REQUEST     Usage:         peer channel create [flags]
    • 1
    • 2
    • 3
    • 4

    解决办法:移除docker,重新启动。 
    -)强制删除全部容器 docker rm -f $(docker ps -aq)

    然后重新执行

    1. bash network_setup.sh up  


    七.手动测试一下Fabric网络

    我们仍然是以现在安装好的Example02为例,在官方例子中,channel名字是mychannel,链码的名字是mycc。我们首先进入CLI,我们重新打开一个命令行窗口,输入:

    docker exec -it cli bash

    运行以下命令可以查询a账户的余额:

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

    可以看到余额是90:


    然后,我们试一试把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"]}'

    运行结果为:


    现在转账完毕, 我们试一试再查询一下a账户的余额,没问题的话,应该是只剩下70了。我们看看实际情况:


    果然,一切正常。最后我们要关闭Fabric网络,首先需要运行exit命令退出cli容器。关闭Fabric的命令与启动类似,命令为:
    cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli


    ./network_setup.sh down
    现在我们整个Fabric的环境已经测试完毕,恭喜,一切正常,接下来我们就是去做自己的区块链的开发。

    本次搭建只遇到了一个错误,是跟阿里云相关,在我另一篇随笔里面http://www.cnblogs.com/szqmvp/p/7838482.html 。

    好了,现在算是正式开始自学相关技术,今年要踏入大热的大区块链开发了,欢迎大家互相交流,共同进步,改变世界。 

  • 相关阅读:
    ios的自动转屏
    Acoustic Echo Cancellation (AEC) 回音消除技术探索
    springMVC之数据传递
    redis.conf 配置详解
    HDU 1880 字符串hash 入门题
    算法题: 求一个整数数组中,通过元素加减运算得到指定结果的所有运算过程. 例如【5,4,6,7,1】= 9 ?
    创建和使用SQL Server SSAS本地多维数据集
    yum局域网软件源搭建
    [置顶] 使用Android OpenGL ES 2.0绘图之六:响应触摸事件
    [置顶] Nosql笔记(一)——关系型数据库回顾
  • 原文地址:https://www.cnblogs.com/szqmvp/p/9103639.html
Copyright © 2011-2022 走看看