00 导言

在上一讲《Fabric 环境搭建时bootstrap.sh帮我们做了什么?》中,我们知道bootstrap.sh帮我们做了三件事:

  1. 从github上克隆 hyperledger/fabric-samples并进入该目录,然后检出适当的版本
  2. 在fabric-samples目录下安装特定平台的 Hyperledger Fabric 二进制可执行文件 和配置文件
  3. 下载 指定版本的Hyperledger Fabric 的docker镜像

其中第一件事情就是从github上克隆 hyperledger/fabric-samples,克隆完成后,它里面包含的目录如下。

360截图20180806161424892.png

接下来我们来介绍一下这些目录是干什么的?这些目录里包含了一些什么?

01 balance-transfer目录

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

360截图20180806161613515.png

02 basic-network目录

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

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

03 chaincode目录

该目录是一些链码的示例,包括以下目录:

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

04 chaincode-docker-devmode目录

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

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

05 fabcar目录

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

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

06 fabric-ca目录

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

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

07 first-network目录

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

08 high-throughput目录

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

09 scripts目录

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

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

10 总结

到此为止,我们几乎把fabric-samples的一级目录和文件都作了个简单的介绍。

学习hyperledger fabric,我们除了首先要学习环境怎么部署和搭建之外,还需要通过一些案例来透彻理解fabric的架构设计、账户体系、授权认证机制、以及智能合约和SDK等方方面面的内容。而fabric-samples里正好包含了若干案例,来帮助我们达到这些目标。可以说,只要认真研究了fabric-samples提供的这些案例,基本上已经对hyperledger fabric的技术知识体系和动作原理有一定的了解了,接下来就要多多参与到工程级别的项目开发中,积累更多业务方面的经验,让hyperledger fabric更接地气,更面向实际业务场景!

作者:链播学院
链接:https://www.jianshu.com/p/147024cf92c9
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

fabric-samples到底包含了哪些案例?相关推荐

  1. DOM基础详细 包含多个案例

    DOM基础详细 包含多个案例 关于DOM的高级事件请查看DOM的高级事件 DOM基础 详细 DOM基础详细 包含多个案例 DOM树 获取元素 如何获取元素 根据ID获取 根据标签名获取 通过HTML5 ...

  2. 看视频常见的 720p、1080p、4k,这些分辨率到底包含了什么

    从早期的420p,到后来的720p,到现在的非1080p不看.视频的清晰度飞快提升,但是在看到色彩越来越丰富清晰度越来越高的画面时,你有关注过他们的到底是怎么做到的么?我们一起来了解一下吧. 想必大家 ...

  3. 4k视频分辨率的码流_看视频常见的 720p、1080p、4k,这些分辨率到底包含了什么...

    想必大家在日常生活中都会看到或听到"分辨率"这个词,比如在视频网站会有几个分辨率选项供我们选择. 我们都知道选不同的分辨率会带来不同的清晰度,但是他们为什么要叫这个名字,720p. ...

  4. 基于Service fabric + Ocelot + Identity Server4 + 52ABP 的案例展示

    10.24-27 大会Microsoft Tech Summit 2018 在上海举办,我 有幸受邀成为这场大会的讲师.Microsoft Tech Summit 2018 微软技术暨生态大会将于10 ...

  5. class ts 扩展方法_一个class文件到底包含了哪些东西?

    通过对一个class文件的分析,基本理解了class文件结构,在这里最后再做一个总结,梳理下class文件内容. 两种结构 class文件内容如果泛化的区分可以分成两种结构: 1.字节数据:通过预先指 ...

  6. SAP C/4HANA到底包含哪些产品?

    2018年6月的SAPPHIRE(蓝宝石大会)上, SAP发布了新的商务软件套件:C/4HANA,意在通过SAP C/4HANA将前台应用和SAP Digital Core(数字化核心)S/4HANA ...

  7. [转载] Python Web开发最难懂的WSGI协议,到底包含哪些内容? WSGI服务器种类和性能对比

    参考链接: 在Python中创建代理Web服务器 1 http://python.jobbole.com/88653/ 我想大部分Python开发者最先接触到的方向是WEB方向(因为总是有开发者希望马 ...

  8. 幼儿园教师怎么教计算机知识,幼儿园教师的专业知识到底包含哪些,家长必知!...

    家长们在给孩子选择幼儿园的时候,一般需要经过这几步,综合考虑以下这几个因素. 首先,选择公立幼儿园还是私立幼儿园.家长们第一个考虑因素是幼儿园属于公立还是私立,并对私立和公立进行分析和比较.比如说,幼 ...

  9. IBM站一个网页到底包含了多少技术

    IBM首页源代码浅析 摘自 http://www.viphot.com 一.浏览器兼容性 作为一个国际大公司的站点,保证能在不同浏览器下的可浏览性是必须考虑的,这点IBM的做法不得不令人佩服.它巧妙的 ...

最新文章

  1. 衡阳之后,重估自动驾驶落地
  2. @ConfigurationProperties与@Value的区别
  3. python2还能用吗_官方推荐python3,为何还有人在用python2呢?
  4. 使用Struts2 验证框架,验证信息重复多次出现
  5. 连点器---鼠标连续点击(c语言)
  6. 线性可分支持向量机与软间隔最大化
  7. 将网页,网站(HTML,php,css)上传浏览器,实现输入网址即可访问(保姆级教学)
  8. 数独解法-变形数独(第二讲:数独基础方法(行唯一列唯一宫唯一唯余数))
  9. 腾讯云服务器云硬盘如何快速扩容!
  10. go语言的魔幻旅程28-go命令
  11. 20189320《网络攻防》第六周作业
  12. 关于 vue3.0 实战项目 setup、 props、 reactive、ref
  13. 辽宁省朝阳市谷歌高清卫星地图下载
  14. java多文件压缩为ZIP
  15. 俄罗斯方块 UWP 版
  16. 2019 DENSE-HAZE: A BENCHMARK FOR IMAGE DEHAZING WITH DENSE-HAZE AND HAZE-FREE IMAGES
  17. 大数据:计算学生成绩
  18. python阴阳鱼绘制(使用turtle)
  19. 05. JavaMail 回复邮件
  20. 论文、专利、文献检索及图像数据工具总结

热门文章

  1. ECH Firefox
  2. linebreak_linebreak-style
  3. 软件设计质量(一)容错设计
  4. xp系统注册表开启打印机的服务器,打印机注册表位置
  5. Python爬取(天地图·武汉\智慧武汉时空信息云平台)社区界线数据以及村子属性信息
  6. PowerDesigner16 状态图
  7. 用Inkspace画logo详细教程
  8. android设置透明状态栏
  9. STC15中断系统介绍
  10. maya嵌入python_Maya:独立和嵌入式mod中的不同行为