一.安装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-composemv ~/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: 5ABA6805B3CDBAF16C6D0DCD6DC439F92793D55C82DB130206E35791BCF18E5FError: Got unexpected status: BAD_REQUESTUsage:peer channel create [flags]
  • 1
  • 2
  • 3
  • 4

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

然后重新执行

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的环境已经测试完毕,恭喜,一切正常,接下来我们就是去做自己的区块链的开发。

Hyperledger Fabric 1.0 实战开发系列 第二课 Fabric环境搭建相关推荐

  1. Hyperledger Fabric 1.0 实战开发系列 第⑤课 fabric 证书解析

    通过cryptogen生成所有证书文件后,以peerOrgannizations的第一个组织树org1为例,每个目录和对应文件的功能如下: ca: 存放组织的根证书和对应的私钥文件,默认采用EC算法, ...

  2. Hyperledger Fabric 1.0 实战开发系列 第一课 系统环境搭建

    有人说讲了那么多理论,总该来点实际动手的干货,嘿嘿,所以笔者开始写点实战,本人电脑为window10系统,故采用虚拟机virtualBox+Ubuntu来进行实战 1.下载virtualBox,可以到 ...

  3. Hyperledger Fabric 1.0 实战开发系列 第三课 chaincode开发

    chaincode是由go语言写的,实现了定义的接口.其他语言例如JAVA也是支持的.通过application体积的transaction,chaincode可以初始化并管理Ledger状态. 一个 ...

  4. Hyperledger Fabric 1.0 实战开发系列 第四课 搭建node.js服务器

    接下来我要做的是用fabric sdk来做出应用程序,代替CLI与整个区块链网络交互.并且实现一个http API,向社区提供一个简单的接口,使社区轻松的与区块链交互. 官方虽然提供了Node.JS, ...

  5. Liferay7开发系列(二)环境搭建

    liferay版本:7.1.2 安装环境:win10 环境准备:安装JDK1.8,mysql5.6以上 解压安装包: 下载地址:https://sourceforge.net/projects/lpo ...

  6. 【问链-Eos公开课】第二课 EOS环境搭建(Ubuntu系统下)

    1.EOS三个组件: nodeos:服务端区块链节点组件,也就是区块生产节点,用于接受客户端的远端请求,并打包区块,主要包含四个插件,chain_plugin.http_plugin.net_plug ...

  7. python3.6 django教程_【Python3.6+Django2.0+Xadmin2.0系列教程一】环境搭建及项目创建

    由于工作需要,接触了大半年时间的Django+xadmin框架,一直没空对这块对进行相关的梳理.最近在同事的怂恿下,就在这分享下笔者的学习及工作经验吧. 好了,话不多说,下面开始进入正题: 环境需求: ...

  8. Fabric 1.0源代码分析(45)gRPC(Fabric中注册的gRPC Service)

    # Fabric 1.0源代码笔记 之 -gRPC(Fabric中注册的gRPC Service) Peer节点中注册的gRPC Service,包括: * Events Service(事件服务): ...

  9. 图数据库JanusGraph实战[6]: JanusGraph+HBase+ElasticSearch的环境搭建

    图数据库JanusGraph实战[6]: JanusGraph+HBase+ElasticSearch的环境搭建 作者:胡佳辉(家辉)  日期:2019年01月14日 CSDN博客:https://b ...

最新文章

  1. 直接操作游戏对象C#游戏开发
  2. 第一次使用Winhex直接修改文件二进制数据
  3. 2016年腾讯产品笔试真题
  4. Svn正确的使用方法
  5. 浅析Java内存模型
  6. html定位一个元素,css元素定位
  7. wind金融数据接口python_Wind——接口python
  8. GitLab关闭注册功能
  9. win10电脑安装android,Android 10安装到PC电脑上运行 PC端安装Android 10
  10. Android 图文数据JSON解析,金山词霸每日一句API的调用
  11. 2018年下半年信息系统项目管理师考试真题附答案解析(5)
  12. Win7系统网络共享中心打不开,网络连接标识一直转圈
  13. JAVA期末考广东科技学院,我是叩丁狼广州Java老学员,我来说说自己的故事
  14. Geekon移动电源概念版
  15. unity+Cardboard SDK VR开发Cardboard Unity SDK讲解
  16. 织梦data搬家后后台打开空白的解决方法
  17. Direction-aware Spatial Context Features for Shadow Detection and Removal
  18. 拉马努金,天才之超越
  19. 论文阅读32 | Channel Augmented Joint Learning for Visible-Infrared Recognition
  20. 批量比对 mysql 字段_MS SQL Server数据库两个库之间相同数据表名内容批量对比方法...

热门文章

  1. webGL简单例子(klayge)
  2. 软件专业人才应具备四种素质
  3. 如何测量代码执行时间
  4. AD,proteus操作
  5. 奇异值分解讨论及其实现的计算步骤
  6. R学习_multitaper包解析1:子函数centre,dpss
  7. 如何在CentOS 5/6上安装EPEL源
  8. MATLAB功率谱函数psd与pwelch的使用
  9. C++输出变量类型、max报错原因
  10. 学长毕业日记 :本科毕业论文写成博士论文的神操作20170411