标注:如有错误欢迎指正和探讨,共同进步
另外,网络中支持多通道的特性使用一条独立的系统通道( system channel )负责管理网络中的各种配置信息,并完成对其他应用通道( application channel ,供用户发送交易使用)的创建。
在/root/downloads/下
wget -c https://storage.googleapis.com/golang/go1.7.1.linux-amd64.tar.gz
解压文件至/usr/local
tar -C /usr/local -xzf go1.7.1.linux-amd64.tar.gz
设置环境变量(让命令go有效)
cd ~
vim .profile
在文件最后添加
export PATH=$PATH:/usr/local/go/bin
export GOPATH=/opt/gopath
保存退出,使语句生效
. .profile
测试
go version
输出
go version go1.7.1 linux/amd64
$ sudo apt-get update
$ apt-get install -y libsnappy-dev zliblg-dev libbz2 - d ev libltdl-dev btool
Docker简介
Docker 是一个开源的应用容器引擎,基于 Go 语言并遵从Apache2.0协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
$ curl -fsSL https://get.docker.com/ I sh (根据docker的安装脚本进行安装即可)
参考文章:http://www.runoob.com/docker/ubuntu-docker-install.html
Fabric 网络目前依赖 Docker 服务作为链码容器的支持,因此即使是本地环境运行。
Fabric 网络,也需要在 Peer 节点上安装 Docker 环境。
补充:如果是 Ubuntu 或者 Debian 操作系统,修改 Docker 的配置文件 etc/ default/ docker,增Docker的socket 绑定,运行在 Docker 中的进程才能通过映射的 socket 调用 Docker的API 执行镜像编译和创建容器
DOCKER_ OPTS=" -s=auf s -r=true --api-cors-header=’*’-H tcp://0.0.0.0:2375 -H
unix:///var/run/docker.sock
重启 Docker 服务让配置生效:
sudo service docker start
一键配置镜像地址:
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
可以从源码编译生成,或通过从 DockerHub 仓库下载获取
。
$git clone http://gerrit.hyperledger.org/r/fabric 获取镜像。
git clone https://github.com/hyperledger/fabric.git(github获取方式)
默认情况下,会下拉获取带有完整历史的仓库,这个过程取决于网络速度,可能需要较长时间。
建立bash 文件, setup_fabric_1.0.sh.
添加shell命令
docker pull yeasy/hyperledger-fabric-base:0.8.9 \
&& docker pull yeasy/hyperledger-fabric-peer:0.8.9 \
&& docker pull yeasy/hyperledger-fabric-orderer:0.8.9 \
&& docker pull yeasy/hyperledger-fabric-ca:0.8.9 \
&& docker pull yeasy/blockchain-explorer:latest \
&& docker tag yeasy/hyperledger-fabric-peer:0.8.9hyperledger/fabric-peer \
&& docker tag yeasy/hyperledger-fabric-orderer:0.8.9hyperledger/fabric-orderer \
&& docker tag yeasy/hyperledger-fabric-ca:0.8.9hyperledger/fabric-ca \
&& docker tag yeasy/hyperledger-fabric-base:0.8.9hyperledger/fabric-ccenv:x86_64-1.0.0-preview \
&&docker tag yeasy/hyperledger-fabric-base:0.8.9hyperledger/fabric-baseos:x86_64-1.0.0-preview
官方提供的自动化部署脚本。
参考网址:https://www.cnblogs.com/studyzy/p/6973334.html
下载时指定二进制版本号,CA证书的版本号,镜像版本号。 注意涉及的主要内容。
curl -sSL https://raw.githubusercontent.com/hyperledger/fabric/master/scripts/bootstrap.sh | bash -s 1.2.0 1.2.0 0.4.10
参考网址:
Unbuntu 18.04下 Hyperledger Fabric 1.0 的搭建
Fabric0.6/1.0镜像文件拉取
下载官方脚本
问题:什么是Peer节点
首先需要明确的是,Peer节点是一个物理的概念(与之对比,通道是一个逻辑的概念,通道并没有实体),一台服务器可以充当Peer的作用。这台服务器既可以是私有物理机,也可以是云上的资源。Peer是整个Fabric体系的基础设施,下面会解释为什么。Peer节点存储关键的数据,并且执行特定的程序。****存储的数据包括账本、链码(智能合约),执行的程序主要包括背书以及链码的执行。所有的账本查询以及账本修改必须通过链码来操作,所有的链码操作必须通过Peer节点在唤起,所以SDK或者应用需要存取账本数据时,必须通过Peer。这就是为什么说Peer是Fabric的基础设施。
除了前面讲解的在服务器上手动部署的方式,读者还可以基于容器方式快速部署一套本地的 Fabric 网络进行体验(第一种在分布式服务器上的部署方式参考:区块链的设计与应用的章节九9.4.6之前)
Fabric基于容器的一套Fabric 的快速部署方式 的部署方式
git clone https://github.com/yeasy/docker-compose-files
bash download_images.sh
关于fabric的使用操作部分笔记
- git clone -b 分支 地址,github项目仓库 download or clone网址位置
- git clone -b release-1.0 https://github.com/hyperledger/fabric.git
问题:
遇到问题
- error: RPC failed; curl 18 transfer closed with outstanding read data remaining
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: index-pack failed
git config --global http.postBuffer 524288000
进入fabric /examples/e2e_cli ,执行 ./download-dockerimages.sh
/opt/gopath/fabric/examples/e2e_cli# ./download-dockerimages.sh
此时 fabric 1.0镜像下载完毕。
错误:
API error (404): {“message”:“network e2ecli_default not found”}
参考:https://www.jianshu.com/p/22c108e0b463
参考文章:https://blog.csdn.net/vivian_ll/article/details/79966210
由于在这里卡了好久,所以重点记一下。不要使用beta版本
Error: Error endorsing query: rpc error: code = Unknown desc = could not find chaincode with name ‘mycc’ - make sure the chaincode mycc has been successfully instantiated and try again -
!!! Query result on peer0 is INVALID !!!
操作
docker rmi `docker images -q`
source download-dockerimages.sh -c x86_64-1.0.0 -f x86_64-1.0.0
重新运行就可以了。1
# 下载最新的 sample ,二进制可执行文件,镜像文件
curl -sSL https://raw.githubusercontent.com/hyperledger/fabric/master/scripts/bootstrap.sh|bash -s
# 当以上步骤完成后, 将fabric sample 路徑下
# 前提是配置了go 語言環境
$GOPATH=/opt/gopath
# /opt/gopath/src/github.com/hyperledger/fabric-samples/
cd fabric-samples/first-network
./byfn.sh generate
./byfn.sh up (./byfn.sh up -l java , 调用java链码)
./byfn.sh down (关闭 first network )
补充:如何调用raft 排序服务启动网络
./byfn.sh up -o etcdraft
同理
#使用kafka启动kafka 网络
./byfn.sh up -o kafka
完成后出现这个. 说明fabric 1.4.3 版本 first-network 运行成功。
具体参考官方文档:https://hyperledger-fabric.readthedocs.io/en/latest/build_network.html
参考:https://blog.csdn.net/PistachioGuoGuo/article/details/81008038 ↩︎