环境:
Windows10 + VirtualBox + Ubuntu16.04.6
参考教程:
https://blog.csdn.net/qq_35353931/article/details/105398398
目录
1.【前期准备】
2.【环境准备】
(1)Go语言环境
(2)安装docker 17.06.2-ce以及以上版本
(3)安装docker-compose 1.14.0以及以上版本
(4)下载fabric源码、fabric-samples源码、fabric镜像
(5)启动Fabric网络并完成ChainCode的测试
(6)手动测试Fabric网络
进入虚拟机Ubuntu——>系统设置——>软件和更新——>软件源改为aliyun
sudo apt-get update
sudo apt-get install vim
安装git
sudo apt-get install git
安装curl
sudo apt-get install curl
安装wget
sudo apt-get install wget
补充:
1.wget:下载文件的工具,用在命令行下。经常要下载一些软件或从远程服务器恢复备份到本地服务器。
2.curl:利用URL语法在命令行下工作的文件传输工具。支持文件上传和文件下载。
安装go1.11以及以上版本
cd ~
下载
wget https://studygolang.com/dl/golang/go1.11.linux-amd64.tar.gz
解压
tar -xzf go1.11.linux-amd64.tar.gz
移动
sudo mv go /usr/local
配置环境变量
进入.bashrc配置环境变量
在后面加入:
export PATH=$PATH:/usr/local/go/bin
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$HOME/go/bin
使环境变量生效:
用户环境变量:
在后面加上:
export PATH=$PATH:/usr/local/go/bin
export GOROOT=/usr/local/go
export GOPATH=$HOME/go
export PATH=$PATH:$HOME/go/bin
使文件生效:
创建go目录(把go的目录GOPATH设置到当前用户的文件夹下)
cd ~
mkdir -p go/src/github.com/hyperledger/fabric
sudo chmod -R 777 go
sudo apt-get update
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \ software-properties-common
由于国内网络问题,建议使用国内源,为了确认所下载软件包的合法性,需要添加软件源的GPG密钥
curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add –
#官方源
#curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add –
sudo add-apt-repository \
"deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu \
$(lsb_release -cs) \
stable"
官网源(慢):
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
下载docker-ce:
sudo apt-get update
sudo apt-get install docker-ce
检查docker是否安装成功:
docker version
sudo groupadd docker 创建docker组
sudo usermod -aG docker XXX (XXX是当前用户名)
添加阿里云的docker镜像:
sudo mkdir -p /etc/docker
sudo vim /etc/docker/daemon.json
将以下内容写入daemon.json:
{
"registry-mirrors": ["https://aeckruos.mirror.aliyuncs.com"],
"insecure-registries": ["192.168.6.129:5000"]
}
接着输入:
sudo systemctl daemon-reload
sudo systemctl restart docker
docker version
如果权限不足,输入sudo chmod -R 777 /var/run/docker.sock
sudo apt-get install python-pip
sudo apt install docker-compose
pip install --upgrade pip
查看版本:
docker-compose –version
通过go env查看:
下载fabric源码:
cd /home/libei/go/src/github.com/hyperledger
git clone https://github.com/hyperledger/fabric.git
该过程中遇到的问题:
问题1: fatal: The remote end hung up unexpectedly
解决方法:
git config http.postBuffer 524288000
原因:文件太大导致的。
问题2:Fatal: out of memory Malloc Failed
解决方法:
sudo dd if=/dev/zero of=swapfile bs=2048 count=$((2048*1000))
sudo mkswap swapfile
sudo swapon swapfile
提高下载速度的教程(只需要几分钟,超棒):
https://blog.csdn.net/kcx64/article/details/83866633
进入fabric目录:
cd ~/go/src/github.com/hyperledger/fabric
git checkout v1.0.0
下载fabric docker镜像:
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
docker-compose version
启动Fabric网络并完成ChainCode测试
sudo ./network_setup.sh up
> 在该过程中遇到的问题:
问题1:UnixHTTPConnectionPool(host='localhost', port=None): Read timed out. (read timeout=60)
解决方案:
sudo systemctl restart docker
export DOCKER_CLIENT_TIMEOUT=120
export COMPOSE_HTTP_TIMEOUT=120
首先进入CLI,然后重新打开一个命令行窗口,输入:
docker exec -it cli bash
peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'
可以看到余额90,下面我们可以进行转账操作,操作为invoke ,由a转b 20:
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中的值:
关闭e2e_cli的demo服务,然后
./network_setup.sh down