美文网首页
【fabric联盟链学习笔记】Mac下安装和运行hyperled

【fabric联盟链学习笔记】Mac下安装和运行hyperled

作者: 淸_兲鮭鮭 | 来源:发表于2019-05-05 15:29 被阅读0次

    一、前言

    之前在ubuntu18.04下安装和运行了fabric,但是是在台式机上,现在就想在自己的mac笔记本上安装一个fabric环境。网上的参考,目前都是基于fabric1.0或1.1版本的,跟1.4版本的操作还是有些不同,现在记录一下这中间的操作步骤,和遇到的问题。

    参考文章:

    1.Fabric篇——Mac下Hyperledger Fabric(超级账本)环境搭建
    2.Ubuntu 快速搭建HyperLedger Fabric 1.4.0

    二、前置环境安装

    go环境安装和docker、docker-compose环境的安装,网上的教程挺多的,下面简单描述这一部分,可以再单独再网上搜索相关的安装。

    1.安装Go并配置环境变量

    Mac可以直接通过Homebrew安装go环境:
    brew install go

    或者前往官网下载安装包

    安装完毕后在命令行输入go version检查是否安装成功:

    ➜ go version
    go version go1.11.2 darwin/amd64
    

    然后开始配置环境变量:

    1). 先新建一个Go的工作空间文件夹(路径按照自己的目录创建):

    ➜ cd /Users/wuqiqi/Documents/workspace
    ➜ mkdir Go
    
    

    2). 进入Go目录,创建三个文件夹bin,src,pkg

    ➜ cd /Users/wuqiqi/Documents/workspace/Go
    ➜ mkdir bin src pkg
    

    3). 修改环境变量
    编辑.bash_profile文件,如果没有请新建。

    ➜ vi ~/.bash_profile
    

    在文件末尾加上:

    #GOPATH
    export GOPATH=/Users/wuqiqi/Documents/workspace/Go
    
    #GOBIN
    export GOBIN=$GOPATH/bin
    export PATH=$PATH:$GOBIN
    
    

    编辑之后保存,然后执行source命令,使之生效:

    source ~/.bash_profile
    

    4). 通过go env检查:

    ➜ go env
    GOARCH="amd64"
    GOBIN="/Users/wuqiqi/Documents/workspace/Go/bin"
    GOCACHE="/Users/wuqiqi/Library/Caches/go-build"
    GOEXE=""
    GOFLAGS=""
    GOHOSTARCH="amd64"
    GOHOSTOS="darwin"
    GOOS="darwin"
    GOPATH="/Users/wuqiqi/Documents/workspace/Go"
    GOPROXY=""
    GORACE=""
    GOROOT="/usr/local/go"
    GOTMPDIR=""
    GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
    GCCGO="gccgo"
    

    2. 安装Docker

    在官网下载Docker CE for Mac完成后安装。

    安装后可以在命令行中检查dockerdocker-compose的版本:

    ➜ docker --version
    Docker version 18.09.2, build 6247962
    ➜ docker-compose --version
    docker-compose version 1.23.2, build 1110ad01
    

    三、下载Hyperledger Fabric项目源代码

    1. 进入Go的工作空间, 为fabric创建项目路径:
    ➜ cd $GOPATH
    ➜ mkdir -p src/github.com/hyperledger
    ➜ cd src/github.com/hyperledger
    ➜ pwd
    /Users/wuqiqi/Documents/workspace/Go/src/github.com/hyperledger
    
    1. 从git上拉取Hyperledger Fabric:
    ➜ git clone https://github.com/hyperledger/fabric.git
    ➜ ls
    fabric
    
    1. 进入项目文件夹,查看tag:
    ➜ cd fabric
    ➜ git tag 
    ...
    v1.0.6
    v1.1.0
    v1.1.0-alpha
    v1.1.0-preview
    v1.1.0-rc1
    v1.1.1
    v1.2.0
    v1.2.0-rc1
    v1.2.1
    v1.3.0
    v1.3.0-rc1
    v1.4.0
    v1.4.0-rc1
    v1.4.0-rc2
    v1.4.1
    v1.4.1-rc1
    v2.0.0-alpha
    

    fabric1.4版本的链码chaincode是支持java语言去编写的,对于常用java的开发者,上手更快。所以我们切换到1.4版本去部署启动。

    ➜ git checkout v1.4.0
    ➜ git branch
      release-1.4
    * (头指针分离于 v1.4.0)
    

    四、执行脚本获取fabric镜像文件

    1. 进入fabric目录的scripts路径,执行./bootstrap.sh,下载docker镜像
    ➜ cd scripts/
    ➜ ./bootstrap.sh
    

    镜像拉取花费的时间比较长,需要等一等。

    这一步其实我执行了很多遍才成功,每次都是下载的时候出问题。镜像源换了也没有效果。后来尝试执行了一次docker run hello-world,然后docker ps -a查询了一下这个容器的CONTAINER ID722f9a1dc429,再终止它docker stop 722f9a1dc429。之后再执行./bootstrap.sh的时候就正常了,不知道有没有关系。

    五、启动和测试fabric

    1. 启动fabric
      镜像下载完成之后,我们所在的scripts目录下,会多出一个fabric-samples文件夹,进入这个目录下的first-network,准备启动fabric。
    ➜ cd fabric-samples/first-network/
    ➜ ./byfn.sh -m generate -c mychannel
    ➜ ./byfn.sh -m up -c mychannel
    

    看到开始的start和最后的end,就是启动成功了。

    注意:如果执行过了./byfn.sh -m up但是并没有成功启动,再次执行./byfn.sh -m up前,需要先执行./byfn.sh -m down,然后再执行启动,可以参考本文第六部分的内容。

    image.png image.png
    1. 通过cli命令窗口测试一下fabric
      查询a,b余额,a往b转100,再查询a余额

    1). 命令行中打开cli

    docker exec -it cli bash
    

    2). 查询a,b的余额

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

    查询到a,b的余额分别为90,210

    3). a给b转账10

    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 --peerAddresses peer0.org1.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org1.example.com/peers/peer0.org1.example.com/tls/ca.crt --peerAddresses peer0.org2.example.com:7051 --tlsRootCertFiles /opt/gopath/src/github.com/hyperledger/fabric/peer/crypto/peerOrganizations/org2.example.com/peers/peer0.org2.example.com/tls/ca.crt -c '{"Args":["invoke","a","b","10"]}'
    
    

    4). 再查询一次a,b的余额

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

    5). 退出cli命令台

    ➜ exit
    

    六、关闭和重启网络

    当我们想要关闭网络或者更新了chaincode之后,想要重启网络,都需要先把docker的容器服务先关闭,清理一下,然后再启动。

    # 清理.关闭网络
    ➜ ./byfn.sh -m down
    
    # 查看容器关闭或启动情况
    ➜ docker ps -a
    
    # 生成相关文件
    ➜ ./byfn.sh -m generate
    
    # 启动fabric网络(mychannel是默认的channel名字,启动时可以不指定)
    ➜ ./byfn.sh -m up
    
    

    七、结语

    完成以上操作,就成功的将fabric镜像中的first-network网络中的整个节点组织启动起来了。后面会再写个文章,记录一下,通过IDEA创建的java项目,跟fabric网络交互起来,能够实现基础的链码调用。

    相关文章

      网友评论

          本文标题:【fabric联盟链学习笔记】Mac下安装和运行hyperled

          本文链接:https://www.haomeiwen.com/subject/owwcoqtx.html