1、安装fabric需要的工具
- git
- curl
- vim (可选,vm)
- Golang(GOROOT,GOPATH)1.10.1
- Docker 一个容器
- docker_compose 实现对Docker的自动化操作,简化了Docker容器的操作命令,一条命令即可启动docker容器,相关的操作命令是被集成在一个配置文件中
- Node,npm(可选)
安装git
$ sudo apt update
$ sudo apt install git
安装curl
$ sudo apt install curl
安装vim
$ sudo apt install vim
安装Golang
Fabric1.1.0版本要求Go1.9+
Fabric1.0.0版本要求Go1.7+
下载 go1.10.1.linux-amd64.tar.gz 需要翻墙 没有翻墙可以从百度网盘下载
将压缩包放到Home目录下,解压文件
$ 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,然后再重新安装
$ su - # apt-get remove golang-go --purge && apt-get autoremove --purge && apt-get clean
安装Docker
$ sudo apt update
$ sudo apt install docker.io
查看Docker版本信息
version 1.12+
$ docker --version
输出: Docker version 1.13.1, build 092cba3
安装Docker Compose
$ sudo apt install docker-compose
查看DockerCompose版本信息
$ docker-compose --version
输出: docker-compose version 1.8.0, build unknown
Hyperledger Fabric Samples 下载安装
1、在当前用户目录中创建一个新的目录 –方便管理fabric
$ mkdir hyfa
2、进入该目录
$ cd hyfa
3、下载方式一:
新建文件bootstrap.sh
$ vim bootstrap.sh
将https://github.com/hyperledger/fabric/blob/master/scripts/bootstrap.sh
中的<font color=red>内容</font>拷贝保存退出
赋予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
<font color=red>这里需要下载一些工具包,会很耗时,如果失败重复执行$ sudo ./bootstrap.sh 1.1.0
</font>
下载完成后, 查看相关输出内容, 如果下载有失败的镜像, 可再次执行 $ 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
ca:证书颁发机构 peer:包含Peer相关的文件 处理交易 保存区块 orderer:包含orderer相关的文件 请求排序 生成区块 javaenv:包含了支持java语言的链码(智能合约) ccenv:包含了支持Go语言的链码环境 tools:工具集,包含peer,cryptogen,configtxgen相关工具,支持客户端测试 kafka:支持couchdb(一种特定的kv数据库),保存数据 zookeeper:
一些补充
p2p:Gossip 数据传输协议,一个节点将数据随机分发给临近的节点,接收到数据的节点再重复此过程
leader节点:在本组织中进行通信,从Orderer服务节点中拉取区块,然后分发给本组织内的其他节点
节点:
leader:从peer中选举产生 peer:保存区块 orderer: – 服务节点 – 产生区块 anchor: –锚节点 –锚节点是指定的 –用来跨组织的数据交换 –发现通道内新加入的组织/节点
查看docker容器中有哪些镜像文件:
sudo docker images
fabric-samples/bin:
相应的工具目录
-
cryptogen:用来生成组织结构及相应的证书密钥,在联盟链中有哪些组织及对应组织下有哪些节点 orderer: org: org1 peer0.org1.exmaple.com peer1.org1.example.com org2 peer0.org2.exmaple.com peer1.org2.example.com
什么组织可以访问通道中的的数据依赖于生成的证书及密钥
-
configtxgen: 1、用来生成Orderer服务的初始区块(创世区块), 2、还可以生成对应的通道交易配置文件(包含了通道中的成员及访问策略) 3、生成Anchor(锚节点更新配置文件) (1)用来跨组织的数据交换 (2)发现通道内新加入的组织/节点
每个组织都会有一个Anchor
- configtxlator:用来添加新组织
chaincode: 链码示例
chaincode-docker-devmode:
用于在开发模式下测试的环境
fabcar
提供一个Node.js的简单实例
fabric-ca
简单的证书
first-network
搭建Fabric网络的目录
安装shadowsocks
如果有shadowsocks客户端跳过此步骤
$ sudo apt install shadowsocks
$ mkdir shadowsocks && cd shadowsocks/
$ vim shadowsocks.json
{
"server":"代理IP",
"server_port":代理端口,
"local_port":1080,
"password":"密码",
"timeout":600,
"method":"aes-256-cfb"
}
启动:
sslocal -c $HOME/shadowsocks/shadowsocks.json
命令行翻墙
如果安装了shadowsocks,浏览器是可以翻墙的,但是命令行不能翻墙,命令行翻墙需要安装polipo
$ sudo apt install polipo
$ sudo vim /etc/polipo/config
原内容删除后插入如下内容:
# This file only needs to list configuration variables that deviate
# from the default values. See /usr/share/doc/polipo/examples/config.sample
# and "polipo -v" for variables you can tweak and further information.
logSyslog = false
logFile = "/var/log/polipo/polipo.log"
socksParentProxy = "127.0.0.1:1080"
socksProxyType = socks5
chunkHighMark = 50331648
objectHighMark = 16384
serverMaxSlots = 64
serverSlots = 16
serverSlots1 = 32
proxyAddress = "0.0.0.0"
proxyPort = 8123
重启Polipo:
$ /etc/init.d/polipo restart
设置环境变量(重启后需要重新设定)
export http_proxy=”http://127.0.0.1:8123/” export https_proxy=”http://127.0.0.1:8123/”
验证代理是否正常工作:
$ curl www.google.com
如果正常,就会返回抓取到的Google网页内容
但是这时候ping 网址是ping不通的,比如 ping www.baidu.com
,因为resolv.conf
文件被polipo
修改为127.0.0.1
, 造成无法解析任何域名
修改resolv.conf文件
$ sudo vim /etc/resolv.conf
添加如下内容:
nameserver 114.114.114.114
nameserver 8.8.8.8