A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

Hyperledger Fabric 区块链多机部署

本文介绍如何从 Fabric 源码编译可执行程序,到多机部署 fabric区块链网络应用,以及链码测试样例。

环境介绍
源码编译、以及fabric 区块链网络部署环境准备
编译 fabric区块链相关可执行程序
多机部署fabric网络(solo共识)
测试链码
相关配置文件
参考内容
环境介绍

fabric 项目是 hyperledger 项目中的一个联盟链子项目,本文介绍了,如何从fabric 源码编译相关组件以及工具,到实战部署一套fabric 区块链服务,来向大家介绍,并学习 fabric 区块链。
1
Fabric相关组件以及工具介绍:
- orderer 共识节点。为交易排序,并生成区块
- peer共识节点。为交易背书,并记录区块信息
- crypto用于生成区块链网络中相应用户的相关证书文件
- configtxgen 用于生成区块链系统链码的创世区块、新建通道的配置文件、以及组织中锚节点的配置文件

Fabric区块链网络部署环境介绍:
- 5台 Centos 7系统的虚拟机,硬件配置为:4核,8G 内存
- 1个 orderer 节点,4个 peer 节点,使用 solo 共识算法
   10.121.60.1 部署 orderer 节点
   12.10.121.60.2 – 10.121.60.3 部署peer 节点

源码编译、以及fabric 区块链网络部署环境准备

fabric 是基于 go 语言开发的,并且本例子中使用的测试用户链码例子,是基于 go 语言开发的,需要依赖 go 语言的编译开发环境。由于本文着重介绍 fabric 的应用,所以相关的环境请自行查找安装方式。
-安装 go 语言开发环境,并设置 相关环境变量 GOPATH、GOROOT、GOBIN(请安装 Go 1.8,以及以上版本)

-安装编译相关的依赖包 snappy-devel.x86_64、zlib-devel.x86_64、bzip2-devel.x86_64、libtoo-ltdl-devel.x86_64、libtool(依赖包是基于 centos 系统,其他 *nix 以及 mac 系统请自行查找并安装相关依赖文件)

-安装 docker、docker-compose(yum 上的 docker 版本过低,请从官网下载安装)

-安装 git(yum 上的 git 版本过低,请从官网下载安装)

-获取 fabric 源码(本次例子是基于 v1.0.0版本),并保存在目录 $GOPATH/src/github.com/hyperledger 下

-从 github.com 上下载 go 语言编译相关环境 gotools(golang.org 需要翻墙,所以从 github 上获取)

-在目录$GOPATH/src/golang/x/下执行

git clone https://github.com/golang/tools.git
1
编译 fabric区块链相关可执行程序

切换到 fabric 源码的目录下面,通过 makefile 文件,可以编译出 fabric 项目的全部可执行文件,如图:


这次的演示例子中,只需要编译部分必要文件即可:orderer、peer、configtxgen、cryptogen。

以下命令,全部在$GOPATH/src/github.com/hyperledger/fabric 目录下执行。
1
1. 编译 go 相关工具

cp -r $GOPATH/src/golang.org/x/tools/
$GOPATH/src/github.com/hyperledger/fabric/gotools/build/gopath/src

make gotools

2. 编译 fabric基础环境


make buildenv

注意:编译过程中,如果遇到错误信息:
cp:build/docker/gotools/bin/protoc-gen-go:No such file or directory
解决方案:**安装protocbuf**
go get -u github.com/golang/protobuf/protoc-gen-go
cp \$GOPATH/bin/protoc-gen-go \
\$GOPATH/src/github.com/hyperledger/fabric/build/docker/gotools/bin/
1
2
3
4
5
3. 编译区块链服务相关工具

-make orderer
-make peer
-make configtxgen
-make cryptogen
-编译的可执行程序生成在./fabric/build/bin目录下,设置该目录至 PATH环境变量

多机部署fabric网络(solo共识)

接下来,就是本文的重点,如何使用编译出来的可执行程序及相关工具,来搭建一个 fabric 区块链网络,并实现链码的部署以及测试。

分别在五台虚拟机中创建目录/etc/hyperledger/fabric,以下的命令 全部在该目录下执行,并且需要设置 fabric 网络执行的环境变量:
$FABRIC_CFG_PATH=/etc/hyperledger/fabric

1. 配置 fabric 网络用户拓扑关系

   -通过配置文件 crypto-config.yaml配置fabric 网络用户拓扑关系。Crypto-config.yaml 内容如下:

   该配置文件,包含一个 orderer 节点,以及两个 peer组织,两个 peer 组织又分别包含了两个 peer 节点。

   -使用 cryptogen 工具,从crypto-config.yaml配置文件中生成用户相应的秘钥和证书文件:

cryptogen generate –config=./crypto-config.yaml –output ./crypto-config
   执行命令后,会在当前目录下生成文件夹 crypto-config,包含节点用户的秘钥以及证书文件,如图:


   -通过scp命令分发 crypto-config文件夹,至其他4台虚拟机的/etc/hyperledger/fabric 目录下



2. 配置Orderer 节点的启动创世区块,新建通道交易的相关配置

   -通过配置文件 configtx.yaml 配置ordere 节点启动需要的创始区块信息,以及新建应用通道的交易信息。配置文件内容如下:


   -使用工具configtxgen生成 orderer 节点启动所需的创世区块:
configtxgen -profile TwoOrgsOrdererGenesis -outputBlock genesis.block

   -使用工具 configtxgen生成创建应用通道的交易配置文件:
configtxgen -profile TwoOrgsChannel -outputCreateChannelTx testchannel.tx -channelID testchannel

   -使用工具 configtxgen 生成更新组织锚节点的配置信息文件:
configtxgen –profile TwoOrgsChannel
–outputAnchorPeersUpdate ./Org1MSPanchors.tx –channelID testchannel –asOrg Org1MSP

configtxgen –profile TwoOrgsChannel
–outputAnchorPeersUpdate ./Org2MSPanchors.tx –channelID testchannel –asOrg Org2MSP

   -执行命令后,在当前目录下会生成如下文件:

genesis.block、testchannel.tx、Org1MSPanchors.tx、Org2MSPanchors.tx
   -通过 scp 命令发送 testchannel.yx 和 Org1MSPanchors.tx 两个文件至10.121.60.2
   -通过 scp 命令把 Org2MSPanchors.tx 文件至10.121.60.4



3. 设置虚拟机 Hosts 文件

   由于 fabric 网络启动相关的配置文件中,与网络地址相关的信息都是填写的域名,所以需要在 hosts 文件中配置域名与 ip 的对应关系,在我们这次的测试环境中处理 orderer 节点,其他的4个 peer 节点的虚拟机都需要配置相关的 hosts 信息:

10.121.60.1 orderer.test.com
10.121.60.2 peer0.org1.test.com
10.121.60.3 peer1.org1.test.com
10.121.60.4 peer0.org2.test.com
10.121.60.5 peer1.org2.test.com
   其中域名是根据 cryprto-config.yaml 的配置信息得来,后续的配置文件会详细说明

4. 配置 orderer 启动环境

   -在 orderer 节点的虚拟机配置 orderer 节点启动相关配置信息 orderer.yaml,并保存在/etc/hyperledger/fabric 目录下。相关配置文件内容见附件

 -  从 cypto-config 文件夹下,拷贝 orderer 节点的秘钥以及证书文件至 fabric 启动环境变量目录下:

cp –r ./crypto-config/ordererOrganizations/test.com/orderers
/orderer.test.com/msp ./
1
2
cp –r ./crypto-config/ordererOrganizations/test.com/orderers
/orderer.test.com/tls ./
1
2
   -根据前文的操作,fabric 网络 orderer 节点的执行环境目录下必须有以下文件及文件夹:

./crypto-config、./msp、./tls、orderer.yaml、genesis.block
   -启动 orderer 节点:orderer start

5. 配置 peer 启动环境

   -在 peer 节点的虚拟机配置 peer 节点启动相关配置信息 core.yaml,并保存在/etc/hyperledger/fabric 目录下。相关配置文件内容见附件。
   -从 crypto-config 文件夹下,拷贝 peer 节点的秘钥以及证书文件至 fabric 启动环境变量目录下:

cp –r ./crypto-config/peerOrganizations/org1.test.com/peers
/peer0.org1.test.com/msp ./
1
2
cp –r ./crypto-config/peerOrganizations/org1.test.com/peers
/peer0.org1.test.com/tls ./
1
2
注意标记部分应该在对应的目录下拷贝对应的文件信息(可以参考 hosts 配置信息的内容区分)
   -根据前文的操作,fabric 网络 peer 节点的执行环境目录下必须有以下文件及文件夹:

./crypto-config.tx、./msp、./tls、core.yaml、channel.tx 、 core.yaml、
Org1MSPanchors.tx(.2虚拟机)、
Org2MSPanchors.tx(.4虚拟机)
   -启动 peer 节点:peer node start

注意,拷贝 msp、tls 文件夹的动作可以不需要操作,只需要在对应的 orderer.yaml 以及 core.yaml 配置文件中设置相应的路径即可,这里为了能够与附件中的配置信息一致,故把相应的秘钥与证书文件拷贝至fabric 网络执行环境变量的目录下
6. 创建应用通道

 -  设置相应环境变量(根据相应环境修改配置)**

CORE_PEER_LOCALMSPID=”Org1MSP”
CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/fabric/crypto-config \
/peerOrganizations/org1.test.com/users \
/Admin@org1.test.com/msp
 -  执行命令创建应用通道
peer channel create
-o orderer.test.com:7050
-c testchannel \
-f ./channel.tx \
--tls true \
--cafile /etc/hyperledger/fabric/crypto-config \
/ordererOrganizations/test.com/orderers \
/orderer.test.com/msp/tlscacerts \
/tlsca.test.com-cert/pem

   -命令执行成功以后,会在当前目录下生成 应用通道的创世区块testchannel.block 文件,只有使用该文件,才可以加入对应的应用通道。使用 scp命令分发至其他3台 peer 节点虚拟机的 fabric 网络执行环境变量下(/etc/hyperledger/fabric)。

7. 加入应用通道

   -执行命令加入应用通道:

peer channel join –b testchannel.block
   -命令执行成功后,会看到提示信息:

Peer joined the channel!
   -加入应用通道的peer 节点虚拟机都可以通过终端命令查看加入的通过信息,如图:



8. 更新锚节点配置

   -执行命令更新负责代表组织与其他节点通信的锚节点:

peer channel update \
-o orderer.test.com:7050 \
-c testchannel \
-f ./Org1MSPanchors.tx \
–tls true \
–cafile /etc/hyperledger/fabric/crypto-config \
/ordererOrganizations/test.com/orderers \
/orderer.test.com/msp/tlscacerts \
/tlsca.test.com-cert/pem
   -锚节点负责代表组织与其他组织中的节点进行 Gossip 通信。

测试链码

1. 安装链码

   -设置相应环境变量(根据相应环境修改配置):

CORE_PEER_LOCALMSPID=”Org1MSP”
CORE_PEER_MSPCONFIGPATH=/etc/hyperledger/fabric/crypto-config /peerOrganizations/org1.test.com/users/Admin@org1.test.com/msp
   -打包链码,由于这次的例子是基于 go 语言开发的智能合约,会依赖 go 的开发环境进行安装,如果使用 peer chaincode install 命令指定链码路径安装,可能会造成其他虚拟上安装的同样的链码无法同步实例化(go 开发环境不一致引起的问题),所以这里使用 go chaincode package 打包链码,然后通过安装打包链码文件进行链码的安装。

注意:这里进行测试的链码是 fabric 源码中的样例-p 指定的路径在命令执行的时候会自动根据 GOPATH 环境变量自动补全前缀,所以路径一个在 $GOPATH/src/目录下:
peer chaincode package –n test –p \
github.com/hyperledger/fabric/examples/chaincode \
/go/chaincode_exanple02 –v 1.0 test.pak
使用 scp 命令分发 test.pak 文件至其他3台 peer 节点虚拟机的 fabric 网络执行环境变量路径下。
 -  安装链码

peer chaincode install test.pak
   -安装链码的 peer 节点服务器可以通过终端命令查看已安装的链码信息,如图:


2. 初始化链码

   初始化链码,只需要在一台 peer 节点的服务器上执行实例化后自动创建链码容器,其他 peer 节点服务器会同步该实例化的链码信息,并创建链码容器

执行命令实例化链码:
>peer chaincode instantiate \
-o orderer.test.com:7050 \
-C testchannel \
-n test \
-v 1.0 \
-c‘{“Args”:[“init”,”a”,”100”,”b”,”200”]}’ \
-P “OR (‘Org1MSP.member’,’Org2MSP.member’)” \
--tls true
--cafile /etc/hyperledger/fabric/crypto-config \
/ordererOrganizations/test.com/orderers \
/orderer.test.com/msp/tlscacerts \
/tlsca.test.com-cert/pem
1
2
3
4
5
6
7
8
9
10
11
12
13
   命令执行后对交易用户 a赋值100,交易用户 b 赋值200代币。

   执行命令成功后,可以通过命令查看 peer 节点服务下已经实例化的链码信息,如图:


 使  用命令查看链码容器信息:docker ps。如图:


3. 测试交易

   执行命令发送一笔交易,命令 a 向 b 转账 10个代币:

peer chaincode invoke \
-o orderer.test.com:7050 \
-C testchannel \
-n test \
-c ‘{“Args”:[“invoke”,”a”,”b”,”10”]}’ \
–tls true
–cafile /etc/hyperledger/fabric/crypto-config \
/ordererOrganizations/test.com/orderers \
/orderer.test.com/msp/tlscacerts \
/tlsca.test.com-cert/pem
   执行命令成功后,通过命令查询余额信息:

peer chaincode query \
-n test \
-C testchannel \
-c ‘{“Args”:[“query”,”a”]}’
结果如图:

配置相关资源下载fabric多机部署配置文件
---------------------
【转载】
作者:songbin830
原文:https://blog.csdn.net/songbin830/article/details/78778806


2 个回复

倒序浏览
回复 使用道具 举报
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马