hyperledger fabric-----1系统搭建
hyperledger fabric是IBM的区块链项目,本文着重讲其技术实现,有不对的地方还希望各位指正。
fabric我从一个例子开始讲起,这样更有逻辑性,框架的层面后续会补充。
1. fabric系统的搭建
1.1 安装go
到https://golang.org/doc/install网址去下载对应的go版本,我自己用的是1.8,其他没测过
安装完毕后设置GOPATH和GOROOT
export GOROOT=/usr/local/go
export GOPATH=/opt/gopath
1.2. 安装git
如果需要进行源码编译的,那么需要下载git,因为fabric更新非常快,需要实时跟进他的代码,所以最好是安装git去同步
git的安装可以到https://git-scm.com/book/en/v2/Getting-Started-Installing-Git网址
1.3. 下载源代码
安装完毕后,可以到fabric官网或者我们自己的git去下载源代码
fabric官方源码是https://github.com/hyperledger/fabric
创建文件夹 mkdir -P /opt/gopath/src/github.com/hyperledger/
git clone https://github.com/hyperledger/fabric.git
1.4. 下载docker并启动
智能合约是通过docker来进行包装的,所以需要运行docker环境。
不同的系统需要下载不同的docker,这里仅做参考,具体请到docker官网查看
安装docker,运行下面命令
apt-get install -y linux-image-extra-$(uname -r) apparmor docker-engine
安装 docker-compose,这个docker-compose也需要安装下,也许某天通过他来启动n个peer
curl -L https://github.com/docker/compose/releases/download/1.8.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
配置docker,运行下面命令
DOCKER_OPTS="-s=${DOCKER_STORAGE_BACKEND_STRING} -r=true --api-cors-header='*' -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock ${DOCKER_OPTS}"
sed -i.bak '/^DOCKER_OPTS=/{h;s|=.*|=\"'"${DOCKER_OPTS}"'\"|};${x;/^$/{s||DOCKER_OPTS=\"'"${DOCKER_OPTS}"'\"|;H};x}' /etc/default/docker
重启docker,运行下面命令
service docker restart
usermod -a -G docker ubuntu # Add ubuntu user to the docker group
1.5. 导入依赖的docker image
docker pull hyperledger/fabric-baseimage:x86_64-0.3.2
docker pull hyperledger/fabric-baseos:x86_64-0.3.2
1.6. 执行Makefile
请到$GOPATH/src/github.com/hyperledger/fabric目录下执行make all
编译完毕后运行docker images命令,可以得到fabric的相关镜像
$GOPATH/src/github.com/hyperledger/fabric/build/bin下的可执行文件如下:
chaintool configtxgen configtxlator cryptogen orderer peer
1.7. 运行example
请到$GOPATH/src/github.com/hyperledger/fabric/examples/e2e_cli目录下,先生成对应的msp目录
运行./generateArtifacts.sh
再执行./network_setup.sh up
就可以看到节点的启动,智能合约的部署,交易及查询了
1.8. 可能遇到的问题
A.在 mac os 下出现如下错误:
Error processing tar file(bzip2 data invalid: bad magic value in continuation file):
解决办法 ,更新gnu-tar
brew install gnu-tar --with-default-names
B. 在 mac os 下出现'ltdl.h' file not found错误
brew install libtool openssl