【fabric联盟链学习笔记】Mac下安装和运行hyperledger fabric1.4

一、前言

之前在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网络交互起来,能够实现基础的链码调用。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342