快速部署hyperleger_fabric1.0.0

CentOS下快速部署fabric项目

1. 安装git

yum install git

2. 安装go环境

centosyum虽然提供了Go的安装,但是版本比较旧,最好的方法还是参考官方网站,下载最新版的Go。具体涉及到的命令包括:

https://www.golangtc.com/download下载相应版本安装包
sudo tar -C /usr/local -xzf go1.10.3.linux-amd64.tar.gz

接下来编辑当前用户的环境变量:

vi /etc/profile

添加以下内容:

export PATH=$PATH:/usr/local/go/bin

export GOPATH=/opt/gopath

编辑保存并退出vi后,记得把这些环境载入:

source /etc/profile
我们把go的目录GOPATH设置为当前用户的文件夹下,所以记得创建go文件夹
cd GOPATH
mkdir src

3. Docker安装

1. yum install docker

2. 配置加速器:官方docker非常慢,请一定在阿里云等提供docker仓库加速器的网站注册好帐户(比如https://cr.console.aliyun.com/#/accelerator),配置好加速器。

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://obou6wyb.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

不同的版本添加方法是不一样的

4. Docker-Compose的安装

Docker-compose是支持通过模板脚本批量创建Docker容器的一个组件。在安装Docker-Compose之前,需要安装Python-pip,运行脚本:

yum install python-pip

pip install docker-compose

然后如果内网无法pip 或者pip无法访问外网安装docker-compose,我们也可以从官方网站(https://github.com/docker/compose/releases)下载也可以从国内的进行DaoClound下载,为了速度快接下来从DaoClound安装Docker-compose,运行脚本:

curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

5. fabric源码下载

我们可以使用git命令下载源码,首先需要建立对应的目录,然后进入该目录,Git下载源码:
mkdir -p /opt/gopath/src/github.com/hyperledger 
cd   /opt/gopath/src/github.com/hyperledger 
git clone https://github.com/hyperledger/fabric.git

由于fabric一直在更新,所有我们并不需要最新最新的源码,需要切换到v1.0.0版本的源码即可:

cd /opt/gopath/src/github.com/hyperledger/fabric
git checkout –b v1.0.0

6. fabric Docker镜像的下载

这个其实很简单,因为我们已经设置了Docker Hub镜像地址,所以下载也会很快。官方文件也提供了批量下载的脚本。我们直接运行:

cd /opt/gopath /src/github.com/hyperledger/fabric/examples/e2e_cli/
source download-dockerimages.sh -c x86_64-1.0.0 -f x86_64-1.0.0

这样就可以下载所有需要的Fabric Docker镜像了。由于我们设置了国内的镜像,所以下载应该是比较快的。

下载完毕后,我们运行以下命令检查下载的镜像列表:

docker images 得到的结果如下:

7.启动Fabric网络并完成智能合约的测试

我们仍然停留在e2e_cli文件夹,这里提供了启动、关闭fabric网络的自动化脚本。我们要启动Fabric网络,并自动运行chaincode_example02的测试,执行一个命令:

bash network_setup.sh up

这个做了以下操作:

7.1编译生成Fabric公私钥、证书的程序,程序在目录:fabric/release/linux-amd64/bin

7.2基于configtx.yaml生成创世区块和通道相关信息,并保存在channel-artifacts文件夹。

7.3基于crypto-config.yaml生成公私钥和证书信息,并保存在crypto-config文件夹中。

7.4docker-compose基于docker-compose-cli.yaml启动1Orderer+4Peer+1CLIFabric容器。

7.5CLI启动的时候,会运行scripts/script.sh文件,这个脚本文件包含了创建Channel,加入Channel,安装Example02,运行Example02等功能。

整个过程包括

1. 进行相关的部署和准备工作

2. 执行测试脚本,部署example02例子并执行

3. 如果看到这个界面,这说明我们整个Fabric网络已经通了。

8.手动测试一下Fabric网络

我们仍然是以现在安装好的Example02为例,在官方例子中,channel名字是mychannel,链码的名字是mycc。我们首先进入CLI,我们重新打开一个命令行窗口,输入:

docker exec -it cli bash

运行以下命令可以查询a账户的余额:

peer chaincode query -C mychannel -n mycc -c '{"Args":["query","a"]}'

可以看到余额是90

然后,我们试一试把a账户的余额再转50元给b账户,运行命令:

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","50"]}'

运行结果为:

现在转账完毕, 我们试一试再查询一下a账户的余额,没问题的话,应该是只剩下40了。我们看看实际情况:

果然,一切正常。最后我们要关闭Fabric网络,首先需要运行exit命令退出cli容器。关闭Fabric的命令与启动类似,命令为:

./network_setup.sh down

现在我们整个Fabric的环境已经测试完毕,恭喜,一切正常,接下来我们就是去做自己的区块链的开发。希望我的文章对大家有所帮助。

附:手动测试未涉及的相关补充

peer命令

peer命令含有五个子命令,如下:

  1. peer chaincode [option] [flags]
  2. peer channel   [option] [flags]
  3. peer logging   [option] [flags]
  4. peer node      [option] [flags]
  5. peer version   [option] [flags]

每个子命令可使用--help查看详细帮助。

fabric里,所有的交易必须通过智能合约才能操作,而chaincode链码就是智能合约。chaincode支持以下option操作:

  • package 智能合约需要打包后才能使用
  • install 智能合约必须安装后才能使用
  • instantiate 置初始状态。比如设系统一开始用户a有100元,用户b有200元
  • invoke 调用智能合约
  • query 查询状态
  • signpackage 包签名
  • upgrade 智能合约升级
  • list 显示智能合约

智能合约需要先install才能使用。

peer chaincode install -n mycc -v 1.0 -p github.com/hyperledger/fabric/examples/chaincode/go/chaincode_example02

其中-n表示合约名字,-p指向合约文件目录路径,-v是版本号。

智能合约初始化

example02Init方法接收4个参数(包括帐户A,余额pA,帐户B,余额pB),比如:

peer chaincode instantiate -o orderer.example.com:7050 -C mychannel -n mycc -v 1.0 -c '{"Args":["init","a","90","b","210"]}' -P "OR    ('Org1MSP.peer','Org2MSP.peer')"

其中,-C指向channel名字,-c则是初始构造json格式的消息,-P是背书策略,-o指定共识节点。这里置帐户a初始余额为100,帐户b初始余额为200。其代码实现如下:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值