上一篇https://www.cnblogs.com/xdyixia/p/11738096.html

介绍了Hyperledger Fabric环境中各种软件安装和源码编译,这一篇介绍快速运行一个简单的Fabric网络。

方法一:利用源码中的脚本运行docker镜像

在Fabric的源码中提供了一个基于docker-compose运行上篇文章中的Docker镜像文件的例子。

在$GOPATH/src/github.com/hyperledger/fabric/examples/e2e_cli目录里运行脚本
./network_setup.sh up

下面是运行该脚本启动Fabric的结果

这个做了以下操作:
1)编译生成Fabric公私钥、证书的程序,程序在目录:fabric/release/linux-amd64/bin
2)基于configtx.yaml生成创世区块和通道相关信息,并保存在channel-artifacts文件夹。
3)基于crypto-config.yaml生成公私钥和证书信息,并保存在crypto-config文件夹中。
4)基于docker-compose-cli.yaml启动1Orderer+4Peer+1CLI的Fabric容器。
5)在CLI启动的时候,会运行scripts/script.sh文件,这个脚本文件包含了创建Channel,加入Channel,安装Example02,运行Example02等功能。

以上我们的整个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账户的余额再转20元给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","20"]}'

运行结果为:

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

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

cd ~/go/src/github.com/hyperledger/fabric/examples/e2e_cli
./network_setup.sh down

现在我们整个Fabric的环境已经测试完毕

该实验参照该文实现https://www.cnblogs.com/studyzy/p/7437157.html

方法二:直接运行模块可执行文件的方式,不用docker

1. 创建一个目录来存放命令执行过程中生成的相关文件

mkdir -p /opt/hyperledger

2. 生成fabric需要的证书文件

首先创建存放配置文件和证书的文件夹

 mkdir -p /opt/hyperledger/fabricconfig

cryptogen提供了一个命令可以获取cryptogen模块所需的配置文件的样式

cryptogen showtemplate

cryptogen showtemplate > crypto-config.yaml 可以直接把样式保存到文件中再进行修改

根据模板修改后保存到crypto-config.yaml文件中。

然后执行以下命令,生成证书文件crypto-config:

cryptogen generate --config=crypto-config.yaml --output ./crypto-config

发现新增文件夹crypto-config,里面存在本例相关的配置文件,可以通过tree命令查看证书文件内容。

现在所有证书文件都生成完毕。

3. 创始块的生成

账本区块链用来存储账本的交易数据,但是第一个区块是例外,它用于存储配置信息,该区块被称为创始块。configtxgen模块是专门用来生成 系统的创始块Channel的创始块,并且configtxgen模块也需要一个配置文件定义相关属性。Fabric源码中提供了该配置文件的例子,我们只需修改一下即可。模板文件configtx.yaml在$GOPATH/src/github.com/hyperledger/fabric/sampleconfig/目录下。

首先创建一个目录来存储orderer节点相关的文件:

mkdir -p /opt/hyperledger/order

把配置模板文件复制到刚创建的order目录

cp -r $GOPATH/src/github.com/hyperledger/fabric/sampleconfig/configtx.yaml /opt/hyperledger/order/

生成创始块文件

configtxgen -profile TestTwoOrgsOrdererGenesis -outputBlock ./orderer.genesis.block

上述命令执行完成后会在order文件夹中生成创始块文件orderer.genesis.block

4. 账本创始块的生成

通道,即账本,在Fabric中称为Channel,一个Channel表示一个账本,Fabric和其他区块链最大的区别是它支持多账本,每个Fabric应用至少包含一个Channel,下面创建Channel创始块,创建channel的配置文件也是configtx.yaml。

configtxgen -profile TestTwoOrgsChannel -outputCreateChannelTx ./roberttestchannel.tx -channelID roberttestchannel

命令执行完成之后会在order文件夹中生成roberttestchannel.tx文件,该文件用来生成channel,除此之外还需要生成相关的锚点文件,对应的执行以下两条命令:

configtxgen -profile TestTwoOrgsChannel -outputAnchorPeersUpdate ./Org1MSPanchors.tx -channelID roberttestchannel -asOrg Org1MSP
configtxgen -profile TestTwoOrgsChannel -outputAnchorPeersUpdate ./Org2MSPanchors.tx -channelID roberttestchannel -asOrg Org2MSP

执行完后会在order文件夹中生成两个锚节点文件Org1MSPanchors.tx和Org2MSPanchors.tx。

 5. orderer节点的启动

orderer节点即排序节点,负责交易的打包和区块的生成。orderer节点的配置信息通常放在环境变量或者配置文件中,本例放于配置文件中,Fabric源码提供了节点启动所需配置文件的实例,将示例文件复制到orderer的文件夹修改使用。

 cp -r $GOPATH/src/github.com/hyperledger/fabric/sampleconfig/orderer.yaml /opt/hyperledger/order

修改配置,然后在配置文件orderer.yaml所在目录执行启动order命令

orderer start

orderer服务启动起来了,因此需要新开一个终端进行后续操作。

6. peer节点的启动

同样的,首先需要创建一个文件夹来存放peer模块的配置文件和区块数据

mkdir -p /opt/hyperledger/peer

将相关的模板配置文件core.yaml复制到peer文件夹下并修改内容

cd /opt/hyperledger/peer
cp $GOPATH/src/github.com/hyperledger/fabric/sampleconfig/core.yaml /opt/hyperledger/peer

然后在core.yaml文件所在目录下执行以下命令启动peer节点

export set FABRIC_CFG_PATH=/opt/hyperledger/peer/
peer node start >> log_peer.log >& &

7. 创建通道

第一步:创建通道

export set CORE_PEER_LOCALMSPID=Org1MSP
export set CORE_PEER_MSPCONFIGPATH=/opt/hyperledger/fabricconfig/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp

peer channel create -t 50s -o orderer.example.com: -c roberttestchannel -f /opt/hyperledger/order/roberttestchannel.tx

创建完成后会在当前目录生成roberttestchannel.block文件,即为通道初始块文件。

第二步:让已经运行的peer节点加入通道

export set CORE_PEER_LOCALMSPID=Org1MSP
export set CORE_PEER_ADDRESS=peer0.org1.example.com:7051
export set CORE_PEER_MSPCONFIGPATH=/opt/hyperledger/fabricconfig/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
peer channel join -b /opt/hyperledger/peer/roberttestchannel.block 

第三步;更新锚节点

export set CORE_PEER_LOCALMSPID=Org1MSP
export set CORE_PEER_ADDRESS=peer0.org1.example.com:
export set CORE_PEER_MSPCONFIGPATH=/opt/hyperledger/fabricconfig/crypto-config/peerOrganizations/org1.example.com/users/Admin@org1.example.com/msp
peer channel update -o orderer.example.com:7050 -c roberttestchannel -f /opt/hyperledger/order/Org1MSPanchors.tx

 8.chaincode的部署和调用

可以使用Fabric源码自带的例子作为测试Chaincode.

$GOPATH/src/github.com/hyperledger/fabric/examples/chaincode/go chaincode_example02

chaincode相关测试一共有四个步骤

第一步:部署chaincode即链代码

第二步:实例化链代码

第三步:通过链代码写入数据

第四步:通过链代码查询数据

参考:

《区块链开发实战 Hyperledger Fabric关键技术与案例分析》

《区块链原理、设计与应用》

http://www.luyixian.cn/news_show_14963.aspx

https://www.cnblogs.com/zhangmingcheng/p/10556469.html

Hyperledger Fabric 环境搭建(2)的更多相关文章

  1. 【推荐】 HyperLedger Fabric环境搭建、测试及注意事项 [详尽指导] [亲测有效]

    系统:Ubuntu16.04 LTS 一.环境准备 1.1 Ubuntu下安装 crul sudo apt install curl curl是利用URL语法在命令行方式下工作的开源文件传输工具.它被 ...

  2. Hyperledger Fabric 环境搭建(1)

    1,Fabric的程序模块组成 Fabric不是一个单独的程序而是由一组模块组成,这些模块中的每一个都是一个可独立运行的可执行文件. (1)peer 主节点模块,负责存储区块链数据,运行维护链码: ( ...

  3. 联盟链初识以及Fabric环境搭建流程

    这篇文章首先简单介绍了联盟链是什么,再详细的介绍了Fabric环境搭建的整个流程. 区块链分类: 以参与方式分类,区块链可以分为:公有链.联盟链和私有链. 定义: 我们知道区块链就是一个分布式的,去中 ...

  4. Hyperledger Fabric 手动搭建【区块链学习三】

    Hyperledger Fabric 手动搭建 前面我们学习了区块链是什么.还有自动搭建学习东西我们就要从简单到深入(入门到放弃),现在自动部署已经跑通了接下来就是手动搭建Fabric 网络可以更好的 ...

  5. Ubuntu下配置Hyperledger Fabric环境

    在win10系统的台式机上安装配置Hyperledger Fabric环境 安装Ubuntu 16.04 双系统 镜像下载地址:https://www.ubuntu.com/download/desk ...

  6. 7.搭建hyperledger fabric环境及启动——2019年12月12日

    2019年12月12日13:05:16 声明:从网络中学习整理实践而来. 1.介绍fabric Fabric 是一个面向企业应用的区块链框架,基于 Fabric 的开发可以粗略分为几个层面: 1. 参 ...

  7. 深入理解Fabric环境搭建的详细过程

    博主之前的文章都是教大家怎么快速的搭建一个Fabric的环境,但是其中大量的工作都隐藏到了官方的脚本中,并不方便大家深入理解其中的过程,所以博主这里就将其中的过程一步步分解,方便大家! 前面的准备工作 ...

  8. 深入理解Fabric环境搭建的详细过程(转)

    前面的准备工作我就不用多说了,也就是各种软件和开发环境的安装,安装好以后,我们git clone下来最新的代码,并切换到v1.0.0,并且下载好我们需要使用的docker镜像,也就是到步骤6,接下来我 ...

  9. Hyperledger Fabric 环境配置

    简单说一下 Hyperledger Fabric的配置 1.第一步,安装curl brew install curl 注:没有brew的自行百度(mac) 2. 安装Docker 下载并安装Docke ...

随机推荐

  1. Android通过JNI实现守护进程与卸载后跳转指定网页

    JNI进程守护 c代码部分如下:JNIEXPORT void JNICALL Java_com_sharetimes_qude_jni_JNIDaemon_daemon(JNIEnv * env, j ...

  2. Tensorflow的gRPC编程(一)

    https://blog.csdn.net/langb2014/article/details/69559182 如何用TF Serving部署TensorFlow模型 https://www.jia ...

  3. Django之模型的高级用法

    from django.db import models class Publisher(models.Model): name = models.CharField(max_length=30) a ...

  4. 12@365 java上传文件(word、图片等)至服务器

    这种方法是servlet,编写好在web.xml里配置servlet-class和servlet-mapping即可使用 后台(服务端)java服务代码:(上传至ROOT/lqxcPics文件夹下) ...

  5. sh脚本实战

    做了什么东西还是要尽快移动到博客上,不然回头看自己写的东西已经看不懂了... 凭着回忆+搜资料,把当初写sh脚本的过程写上来. 首先新建一个.sh文件,用vim就可以 在sh的第一行,写上 #!/bi ...

  6. SSO单点登录统一身份认证系统

    什么是单点登录 简单点说就是公司有A,B两个系统,我登录了A系统之后再跳转到B系统可以直接访问,而不需要再次登录B系统. 几种常见的单点登录实现方式 在讲解单点登录之前先讲解几个基本的概念: Cook ...

  7. Unity中的动画系统和Timeline(3) 模型和动画导入

    动画导入 美工做好的模型,直接将文件夹拖进来就导入好了.导入模型后,检查模型的材质贴图等是否丢失,若丢失,根据名字补上.如果美工取名规范,一一对应的话,就很简单.如果不是,那就呵呵哒. 有的美工做的比 ...

  8. Django与Cookie

    Cookie Cookie的由来 ​ 大家都知道HTTP协议是无状态的.无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也 ...

  9. [c++] 用宏定义一个函数

    要点:变量都用括号括起来,防止出错,结尾不需要;.在实际编程中,不推荐把复杂的函数使用宏,不容易调试.多行用\ 要写好C语言,漂亮的宏定义是非常重要的.宏定义可以帮助我们防止出错,提高代码的可移植性和 ...

  10. [Python3] 038 函数式编程 偏函数

    目录 函数式编程 之 偏函数 1. 关于强制类型转换 int 的补充 2. 利用 int 新建函数 3. functools.partial 函数式编程 之 偏函数 1. 关于强制类型转换 int 的 ...