First, look at us, we downloaded some fabric-samples directories and files in the directory are to do something
In fabric-samples inside the bin directory [I here / home / gavin / fabric / fabric-samples / bin] there are so configtxgen configtxlator cryptogen three tools available to us before starting the fabric used to build the network we need to start networking Some configuration and to start Orderer and peer nodes in a binary file, and then we go back to the root directory of fabric-samples under [I here / home / gavin / fabric / fabric-samples]:
01 balance-transfer directory
This is a transfer case, complete the following functions through node.js SDK: Create a channel (chanel), adding the channel, deployed chain code (chaincode- is a smart contract), examples of the chain code, call the chain code to complete the transaction, and query chain code other functions. Chain code programming language provides an example of two languages: golang node.js and language. The app end and provides an example of two languages: node.js and typescript. FIG as a whole.
02 basic-network directory
The directory provides a series of shell scripts, initialize and start to generate a basic network, including a node order, a common peer node under a single organization.
script | effect |
---|---|
init.sh | Certificates stored data before deleting |
generate.sh | Generating keying material, creation block, channel, etc. |
start.sh | Start Network |
stop.sh | Delete Network |
teardown.sh | Completely remove all network-related evidence (delete storage and mirroring) |
03 bin directory
04 chaincode directory
Example, an example of a smart contract chain code provided by the official; their own local test chain code, they also can be written chain code placed here, then mount inside the container, including the following directories:
table of Contents | effect |
---|---|
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 通过查看这个文件我们可以看到最底下有这些内容:
我们可以知道 在执行这个文件的时候可以携带的各项参数,我们来执行下 ./byfn.sh up 然后我们可以在控制台看到它整个启动网络前做了哪些事,怎么启动网络,启动网络后怎么部署链码,怎么调用链码等等全过程,如果我们看到最后显示为 :
则表示整个过程完全执行成功了!我们再执行一下, docker ps 查看下目前网络启动的docker container都有哪些
顺便我们可以执行下 docker images 查看下生成了哪些新的镜像文件
我们可以看到 新生成了几个带有 dev- 开头的镜像文件,这几个就是所被部署的到peer节点的链码所启动的链码镜像文件~
【注意】每一次跑完示例之后我们都需要 ./byfn.sh down 来关闭网络,杀掉docker container 删掉 链码的 docker images
Reproduced in: https: //www.jianshu.com/p/3e9b024f8a15