Fabric环境搭建

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

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦