快速入门: http://hyperledger-fabric.readthedocs.io/en/release-1.1/getting_started.html
前提
安装git
$ sudo apt update
$ sudo apt install git
安装curl
$ sudo apt install curl
安装vim (可选)
$ sudo apt install vim
安装Docker
在命令行中输入
docker --version
如果已经安装,会显示初版本号,如果没有安装,会给我们提示安装命令
sudo apt install docker.io
安装完成后 再执行docker-verison
,显示出版本号,就算安装完成了.
$ sudo apt update
$ docker --version
$ sudo apt install docker.io
查看Docker版本信息
version 1.12+
$ docker --version
输出: Docker version 1.13.1, build 092cba3
安装Docker Compose
实现了对docker的自动化操作
简化了docker容器的操作命令.一条命令即可启动docker容器.相关的操作命令是被集成在一个配置文件中.
$ docker-compose --version
$ sudo apt install docker-compose
查看DockerCompose版本信息
$ docker-compose --version
输出: docker-compose version 1.8.0, build unknown
Golang
Fabric1.1.0版本要求Go1.9+
Fabric1.0.0版本要求Go1.7+
上传go1.10.1.linux-amd64.tar.gz
解压文件
$ tar -zxvf go1.10.1.linux-amd64.tar.gz
编辑环境变量文件
$ vim .bashrc
添加如下内容:
export GOPATH=$HOME/gocode
export GOROOT=$HOME/go
export PATH=$GOROOT/bin:$PATH
$ source .bashrc
$ go version
输出: go version go1.10.1 linux/amd64
如果系统中有旧版本的golang,则使用如下命令卸载旧版本的golang,然后再重新安装
# sudo apt-get remove golang-go --purge && apt-get autoremove --purge && apt-get clean
安装Node与npm
安装nvm
$ sudo apt update
$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.10/install.sh | bash
$ export NVM_DIR="$HOME/.nvm"
$ [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"
安装Node
$ nvm install v8.11.1
检查Node版本
$ node -v
输出: v8.11.1
检查npm版本
$ npm -v
输出: 5.6.0
Hyperledger Fabric Samples 下载安装
创建一个空目录
$ mkdir hyfa
进入该目录
$ cd hyfa
下载方式一:
新建文件bootstrap.sh
$ vim bootstrap.sh
将https://github.com/hyperledger/fabric/blob/master/scripts/bootstrap.sh
中的内容拷贝到bootstrap.sh,然后保存退出
赋予bootstrap.sh可执行权限并运行
$ chmod +x bootstrap.sh
配置docker加速器
配置docker加速器的目的是为了在下载docker镜像文件时加速
$ curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://8890cb8b.m.daocloud.io
重启docker服务
$ sudo systemctl restart docker.service
执行bootstrap.sh
确定网络稳定,否则会导致各种问题,例如下载到一半时网络超时,下载失败等等
$ sudo ./bootstrap.sh 1.1.0
下载完成后, 查看相关输出内容, 如果下载有失败的镜像, 可再次执行 $ sudo ./bootstrap.sh 1.1.0
命令
下载方式二:
**建议使用方式一进行下载 **
配置docker加速器,
$ curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://8890cb8b.m.daocloud.io
重启docker服务
$ sudo systemctl restart docker.service
$ curl https://github.com/hyperledger/fabric/blob/master/scripts/bootstrap.sh | bash -s 1.1.0
安装完成后输出:
hyperledger/fabric-ca latest 72617b4fa9b4 5 weeks ago 299 MB
hyperledger/fabric-ca x86_64-1.1.0 72617b4fa9b4 5 weeks ago 299 MB
hyperledger/fabric-tools latest b7bfddf508bc 5 weeks ago 1.46 GB
hyperledger/fabric-tools x86_64-1.1.0 b7bfddf508bc 5 weeks ago 1.46 GB
hyperledger/fabric-orderer latest ce0c810df36a 5 weeks ago 180 MB
hyperledger/fabric-orderer x86_64-1.1.0 ce0c810df36a 5 weeks ago 180 MB
hyperledger/fabric-peer latest b023f9be0771 5 weeks ago 187 MB
hyperledger/fabric-peer x86_64-1.1.0 b023f9be0771 5 weeks ago 187 MB
hyperledger/fabric-javaenv latest 82098abb1a17 5 weeks ago 1.52 GB
hyperledger/fabric-javaenv x86_64-1.1.0 82098abb1a17 5 weeks ago 1.52 GB
hyperledger/fabric-ccenv latest c8b4909d8d46 5 weeks ago 1.39 GB
hyperledger/fabric-ccenv x86_64-1.1.0 c8b4909d8d46 5 weeks ago 1.39 GB
hyperledger/fabric-zookeeper latest 92cbb952b6f8 2 months ago 1.39 GB
hyperledger/fabric-zookeeper x86_64-0.4.6 92cbb952b6f8 2 months ago 1.39 GB
hyperledger/fabric-kafka latest 554c591b86a8 2 months ago 1.4 GB
hyperledger/fabric-kafka x86_64-0.4.6 554c591b86a8 2 months ago 1.4 GB
hyperledger/fabric-couchdb latest 7e73c828fc5b 2 months ago 1.56 GB
hyperledger/fabric-couchdb x86_64-0.4.6 7e73c828fc5b 2 months ago 1.56 GB
添加环境变量
$ export PATH=/bin:$PATH
注: fabric-samples
文件目录所在路径
例: $ export PATH=$HOME/hyfa/fabric-samples/bin:$PATH
HyperLedger Fabric
环境搭建完成
总结和解释
Fabric的安装过程总结:
- 在当前用户目录中创建一个新的目录 -- 方便管理Fabric
- vim bootstrap.sh -- touch bootstrap.sh
- 从指定的网络中路径中将其对应的脚本内容拷贝至新建的脚本文件中 https://github.com/hyperledger/fabric/blob/master/scripts/bootstrap.sh
- bootstrap.sh添加可执行权限 -- chmod +x bootstrap.sh
- 添加docker加速器
- 执行 bootstrap.sh -->
sudo ./bootstrap.sh 1.1.0
镜像解释:
如何查看自己本地的镜像呢?
终端中执行一下命令即可
sudo docker iamges
docker images 解释:
ca:
证书颁发机构
peer
包含了Peer相关的文件
处理交易
保存区块
orderer
包含了Orderer相关的文件
排序
生成区块
javaenv
包含了支持Java语言的链码(智能合约)
ccenv
包含支持Go语言的链码环境
tools
包含Peer, cryptogen, configtxgen相关工具
支持客户端测试
zookeeper
kafka
支持couchdb(一种特定的KV数据库), 保存数据
fabric-samples解释
我们打开我们之前执行的bootstrap.sh
文件,会发现里面有一个samplesInstall()
方法,就会在我们执行命令的所在目录(我们上面hyfa)中 git clone
一个fabric-samples
文件。
我们先来粗略的解释一下这个文件,后面的教程中会有详细的解释
abric-samples/bin:
cryptogen: 用来生成组织结构及相应的证书密钥
在联盟链中有哪些组织,及对应组织下有哪些节点
Orderer
Org
Org1
peer0.org1.example.com
peer1.org1.example.com
org2
peer0.org2.example.com
peer0.org2.example.com
什么组织可以访问通道中的数据依赖于生成的证书及密钥
configtxgen:
1. 用来生成Orderer服务的初始区块(创世区块)
2. 可以生成对的通道交易配置文件(包含了通道中的成员, 及访问策略)
3. 生成Anchor(锚节点更新配置文件)
-1. 用来跨组织的数据交换
-2. 发现通道内新加入的组织/节点
每个组织都会有一个Anchor
configtxlator: 用来添加新组织
fabric目录简介:
bin: 相应的工具目录
chaincode: 链码示例
chaincode-docker-devmode: 用于在开发模式下测试的环境
fabcar: 提供的一个Node.JS的简单示例
fabric-ca: 简单的证书
first-network: 搭建Fabric网络的目录
节点:
Orderer
Peer
背书节点
commiter节点
leader节点: 负责与Orderer通信, 接收orderer产生的区块, 然后将区块同步到同组织中的节点
Anchor节点: 负责跨组织的数据交换
CA节点
客户端节点
第一次写教程,如有考虑不周,望解释。