Hyperledger Fabric以及pbft(实用拜占庭)共识环境配置[ubuntu16.04 docker配置]

工具包:
Hyperledger Fabric以及pbft(实用拜占庭)共识环境配置[ubuntu16.04 docker配置]
-fabric1.4.4,docker以及pbft工具包百度云链接
链接:https://pan.baidu.com/s/1hshTuQXyFlZA0xeiFF-fwQ
提取码:8888

Go安装

先解压安装包:
tar -xf go1.15.linux-amd64.tar.gz
将解压包移到安装路径:
mv go /usr/local
创建工作目录:
mkdir /usr/local/gopath
mkdir -p /usr/local/gopath/src/github.com/hyperledger/
cd /home/mima00
chmod -R 777 go
配置环境:
gedit ~/.bashrc
在最后添加以下内容:
export PATH=$PATH:/usr/local/go/bin

export GOPATH=/usr/local/gopath
export GOROOT=/usr/local/go
export GOBIN=$GOROOT/bin
更新:
source ~/.bashrc
查看:
go env

GO 包安装:
mkdir -p $GOPATH/src/golang/x
cd $GOPATH/src/golang/x

chmod -R 777 golang
下载需要的包:
修改代理:
go env -w GO111MODULE=on
go env -w GOPRIVATE=*.corp.example.com
go env -w GOPROXY=https://goproxy.cn,direct
(若设置失败可以多个逗号相隔或者先 unset GOPROXY)
例如:(go get的安装,若不是http地址则寻找的路径默认是$GOROOT)
git clone https://github.com/golang/tools.git
go get golang/x/tools/go/packages

安装nodejs

tar -xf node-v8.10.0-linux-x64.tar.gz
chmod -R 777 node-v8.10.0-linux-x64
ln -s /usr/local/node/bin/node /usr/bin/node
node –version
ln -s /usr/local/node/bin/npm /usr/bin/npm
npm --version
ln -s /usr/local/node/bin/npx /usr/bin/npx
npx –version
修改npm源:
npm config set registry http://registry.npm.taobao.org

Docker安装

安装必要工具:
apt install git
apt-get -y install apt-transport-https ca-certificates curl software-properties-common
dpkg -i containerd.io_1.2.5-1_amd64.deb
dpkg -i docker-ce-cli_19.03.5_3-0_ubuntu-xenial_amd64.deb
dpkg -i docker-ce_19.03.53-0ubuntu-xenial_amd64.deb
查看版本:
docker version
创建docker组:
groupadd docker
将当前用户添加到 docker 组:
usermod -aG docker mima00
添加国内docker镜像:
mkdir -p /etc/docker
gedit /etc/docker/daemon.json
把以下内容添加进去:
{
“registry-mirrors”: [“https://obou6wyb.mirror.aliyuncs.com”]
}
运行命令:
systemctl daemon-reload
systemctl restart docker
权限不足修改:
sudo chmod -R 777 /var/run/docker.sock
docker version
安装docker-compose:
mv docker-compose-Linux-x86_64 /usr/bin/docker-compose
docker-compose -v
拉取镜像
(源bootstrap.sh下载https://github.com/hyperledger/fabric/blob/master/scripts/bootstrap.sh)
(云盘下载不能直接复制文件):
gedit bootstrap.sh
复制下载好bootstrap.sh的内容进去并运行:
chmod 777 bootstrap.sh
./bootstrap.sh 1.4.4 1.4.4

fabric1.4.4添加pbft共识:

下载文件:
fabirc1.4.4: https://codeload.github.com/hyperledger/fabric/zip/v1.4.4
fabric-samples1.4.4: https://codeload.github.com/hyperledger/fabric-samples/zip/v1.4.4
文件夹/bin 和/config: https://github.com/hyperledger/fabric/releases/download/v1.4.4/hyperledger-fabric-linux-amd64-1.4.4.tar.gz
将fabirc,fabric-samples下载好
Fabric-samples放入fabric文件夹中。
https://github.com/yezhem/fabric-sample 下载pbft共识。
将pbft文件夹放到/ fabric/orderer/consensus文件夹下。
将/bin文件夹和/config文件夹复制到fabric-samples下。

设置全局工具:
gedit ~/.bashrc
将以下内容加进去:(注意修改自己路径)
export PATH=/usr/local/gopath/src/github.com/hyperledger/fabric/fabric-samples/bin:$PATH
source ~/.bashrc

添加pbft配置:

// common/tools/configtxgen/localconfig/config.go:388
switch ord.OrdererType {
case ‘pbft’:
}
// commom/tools/configtxgen/encoder/encoder.go:38
const ConsensusTypePbft = “pbft”
// commom/tools/configtxgen/encoder/encoder.go:215
switch conf.OrdererType {
case ConsensusTypePbft:
}
// orderer/common/server/main.go:664
头部 import 添加:
“github.com/hyperledger/fabric/orderer/consensus/pbft”
664行添加:
consenters[“pbft”] = pbft.New()
//fabric/image
运行:
make orderer-docker
make configtxgen
报错:
Hyperledger Fabric以及pbft(实用拜占庭)共识环境配置[ubuntu16.04 docker配置]

运行以下命令:
export GO111MODULE=on
go mod init
go get github.com/golang/sys
go get golang/x/grpc-go
go get github.com/golang/zap
go get net
go get sync
go get github.com/golang/atomic
go get github.com/golang/lint
go get github.com/golang/text
go get github.com/golang/genprot
go get github.com/golang/tools
go get github.com/golang/multierr
go get crypto
go get github.com/golang/pierrec/lz
go mod vendor
在fabric路径下再次运行:
go mod vendor
make configtxgen
到此二进制文件configtxgen,orderer已经制作完成。
将制作好的二进制文件复制到fabric-samples/bin下:
先将原文件备份.
然后将orderer和configtxgen二进制文件复制到fabric-samples/bin文件夹下:
cp /usr/local/gopath/src/github.com/hyperledger/fabric/.build/docker/bin/orderer /usr/local/gopath/src/github.com/hyperledger/fabric/fabric-samples/bin

cp /usr/local/gopath/src/github.com/hyperledger/fabric/.build/bin/configtxgen /usr/local/gopath/src/github.com/hyperledger/fabric/fabric-samples/bin

将pbft-network文件夹复制到fabric下。
修改:
pbft-network/base/peer-base.yaml:4和17行
bft-network/docker-compose-cli.yaml59行
删掉:$IMAGETAG
到此环境已经配置完毕。

Fabric运行:

进入到pbft-network目录下
mkdir channel-artifacts
cryptogen generate --config ./crypto-config.yaml
Hyperledger Fabric以及pbft(实用拜占庭)共识环境配置[ubuntu16.04 docker配置]

configtxgen --profile Genesis -outputBlock ./channel-artifacts/genesis.block
configtxgen --profile Channel -outputCreateChannelTx ./channel-artifacts/channel.tx -channelID mychannel
Hyperledger Fabric以及pbft(实用拜占庭)共识环境配置[ubuntu16.04 docker配置]

运行镜像:
docker-compose -f docker-compose-cli.yaml up -d
查看镜像:
docker ps -a

docker-compose -f docker-compose-cli.yaml down
停止和移除镜像:
docker stop $(docker ps -aq)
docker rm $(docker ps -aq)