fabric-samples目录中的一些目录及文件都是要做些什么的

首先,我们来说一下我们下载的fabric-samples目录中的一些目录及文件都是要做些什么的

在fabric-samples里面的bin目录下【我这里是 /home/gavin/fabric/fabric-samples/bin】有这么三个工具 configtxgen configtxlator cryptogen 提供给我们在启动fabric网络之前用来构建我们所需要启动网络的一些配置以及用来启动Orderer及peer节点的 二进制文件,然后我们回到 fabric-samples的根目录下【我这里是 /home/gavin/fabric/fabric-samples 】:

15873283-7bbffa83bdd62019
image

01 balance-transfer目录

​ 这是一个转账的案例,通过node.js SDK完成如下功能:创建通道(chanel),加入通道,部署链码(chaincode-就是智能合约),实例化链码,调用链码完成交易,以及查询链码等功能。链码的编程语言提供了两种语言的示例:golang和node.js语言。而app端又提供了两种语言的示例:node.js和typescript。整体如下图。


13024096-033871b4dc269fce.png
360截图20180806161613515.png

02 basic-network目录

​ 该目录提供了一系列shell脚本,去生成初始化并启动一个最基本的网络,包含一个order节点,一个组织下的一个普通的peer节点。

脚本 作用
init.sh 删除之前存储的证书数据
generate.sh 生成加密材料、创世区块、通道等
start.sh 启动网络
stop.sh 删除网络
teardown.sh 彻底删除所有与网络有关的证据(删除存储和镜像)

03 bin目录

04 chaincode目录

官方提供的链码示例,智能合约的示例;自己本地测试链码的时候也可以把写好的链码放置这里,然后挂载到容器里面,包括以下目录:

目录 作用
abac Attribute-Based Access Control 基于身份属性的访问控制
chaincode_example02 一个简单的账户间转账和查询 的示例
fabcar 一个关于汽车的综合示例,提供了Fabric功能的广泛演示。 演示与证书颁发机构进行交互并生成注册证书的过程,用这些身份来查询和更新帐本
marbles02 弹珠资产管理链码,演示couchDB的富查询(基于json)
marbles02-private 暂不了解
sacc SimpleAssetChainCode 简单资产管理链码示例

05 chaincode-docker-devmode目录

官方提供的本地调试链码的时候所具备的一些配置及启动文件【即 本地调试的环境】

​ 该目录演示在开发网络时,利用预生成的order和chanel来启动“开发模式”。 这样,用户可以立即进入编译链码和驱动调用的过程。

​ 通常,链码由peer节点启动和维护。 然而,在“开发模式”中,链码由用户构建和启动。在链代码开发阶段,此模式非常有用,可用于快速代码/构建/运行/调试。

06 config目录

主要放着三个文件 configtx.yaml、core.yaml、orderer.yaml 其中 configtx.yaml 是主要配置用来生成网络的各项配置(如: genesis.block、channel.tx 、及锚节点的更新配置文件)的示例模板;core.yaml 为peer节点的启动配置;orderer.yaml 为orderer节点的启动配置;【注意了 生成组织结构的配置文件是 crypto-config.yaml 这个在 first-network 中有示例】

07 fabcar目录

​ 一个汽车的例子,主要是通过单机配置模拟环境,实现管理员admin用户的enrollAdmin(注册管理),其他用户的注册(主要是指user1),以及实现query和invoke。

​ 该目录下主要包含的是一些js文件和一个startFabric.sh,没有包含链码(相关的链码放在chaincode/fabcar目录下)。运行startFabric.sh会先运行basic-network启动网络。

08 fabric-ca目录

​ 演示如何使用Hyperledger Fabric CA客户端和服务器为order,peer,管理员和最终用户生成加密证书上,以便私钥永远不会离开生成它们的主机或容器。

​ 为啥要使用CA呢? cryptogen加密工具不适用于生产环境,因为它在一个位置生成所有私钥,然后必须将其复制到适当的主机或容器。

09 first-network目录

​ 我们的第一个fabric网络,这个相对比basic-network更为全面一点,我们在里面可以启动一个基本的fabric网络外,做动态的【即在网络运行的情况下】添加新的组织,新的通道等等之类的操作示例

我们平常说的搭建hyperledger fabric环境,一般指的是就是部署运行这个示例。该目录下提供一个脚本byfn.sh文件,该文件提供一条龙服务,演示了生成证书,启动网络节点(两个组织,每个组织有2个节点),以及部署、实例化链码,并调用链码进行转账和查询,最后停止整个网络。本示例采用的是solo共识服务机制。

10 high-throughput目录

展示了如何搭建一个高并发事务的fabric网络

访目录提供的案例,用于演示如何正确设计链码数据模型,以处理在每秒数千个并发事务,这些事务都更新了账本的相同资产。实际上就如何处理高并发的情况!

11 scripts目录

​ 访目录提供了两种不同的脚本,一个是bootstrap.sh,该脚本跟《Fabric 环境搭建时bootstrap.sh帮我们做了什么?》中说的bootstrap.sh几乎一致,只是少了个sampleInstall这个过程。

​ 还有一种是Jenkins_Scripts,对这行种脚本小编了解得不多,只知道Jenkins是一种基于Java开发的一种持续集成工具。

OK,到这里我们大致上知道了fabric-samples的下的各个目录是做些什么的了,那么我们可以先来玩一下fabric网络搭建流程及链码调用的整个流程是怎么样的,我们先进入first-network目录下 (我这里是 /home/gavin/fabric/fabric-samples/first-network )【注意 我们不一定要进入 first-network目录来启动网络,只是说这个比较能说明整个流程而已,我们在 basic-network 或者 fabcar、fabric-ca 等等目录下都可以启动网络,只是不同文件夹给我们展现的是不同情况下的网络,具体看上面我对各个目录的说明就明白了】,我们在这个目录下会看到一个 byfn.sh 文件(by first-network) vim byfn.sh 通过查看这个文件我们可以看到最底下有这些内容:

15873283-5241ab0a4c9274f8
image

我们可以知道 在执行这个文件的时候可以携带的各项参数,我们来执行下 ./byfn.sh up 然后我们可以在控制台看到它整个启动网络前做了哪些事,怎么启动网络,启动网络后怎么部署链码,怎么调用链码等等全过程,如果我们看到最后显示为 :

15873283-9061902404a288e5
image

则表示整个过程完全执行成功了!我们再执行一下, docker ps 查看下目前网络启动的docker container都有哪些

15873283-6affc1ea11c6e7b5
image

顺便我们可以执行下 docker images 查看下生成了哪些新的镜像文件

15873283-154d09187fd8de27
image

我们可以看到 新生成了几个带有 dev- 开头的镜像文件,这几个就是所被部署的到peer节点的链码所启动的链码镜像文件~

【注意】每一次跑完示例之后我们都需要 ./byfn.sh down 来关闭网络,杀掉docker container 删掉 链码的 docker images

转载于:https://www.jianshu.com/p/3e9b024f8a15

猜你喜欢

转载自blog.csdn.net/weixin_34234721/article/details/91115586