《Hyperledger Fabric菜鸟进阶攻略》

举报
华章计算机 发表于 2020/02/16 18:18:02 2020/02/16
【摘要】 本节书摘来自华章计算机《Hyperledger Fabric菜鸟进阶攻略》 一作者是黎跃春 韩小东 付金亮  。

区块链技术丛书

Hyperledger Fabric菜鸟进阶攻略

1581847898138665.jpg

黎跃春 韩小东 付金亮 编著

 

 

 

 

Preface 前  言

为什么要写这本书

随着跨行业区块链技术的逐渐普及,区块链技术成为应用程序开发或企业级应用解决方案的基础,各机构、企业将区块链、分布式账本和分布式应用平台的底层技术应用于更具有创新性的企业级应用的兴趣也在增长,但无论是开发人员还是企业,在使用区块链技术时都需要结合自身需求,根据不同的情况进行考虑。

从开发人员的角度思考,能够支持在通用编程语言(如目前流行的Java、Python、Golang和Node.js等)中创建的智能合约的分布式账本平台,而不受限于特定的语言。这意味着大多数开发人员只需要熟练掌握一门编程语言就拥有开发智能合约所需的技能,并不需要额外的培训来学习新的语言。

从企业的角度思考,通过其特定的功能与特性,能够使平台支持从政府、金融、公益事业、供应链物流到医疗保健等广泛的行业用例,并且能够保证应用的灵活性及可持续的扩展性。

其中,由Linux基金会主导并牵头,物联网、供应链、制造和科技等各行业的巨头共同宣布了区块链技术中第一个面向企业应用场景的开源分布式账本平台——Hyperledger(超级账本)联合项目,将区块链技术引入联盟链的应用场景中,为未来基于区块链技术打造高效率的商业网络打下基础,为透明、公开、去中心化的企业级分布式账本技术提供开源参考实现。

Hyperledger Fabric分布式超级账本平台技术基于其特点及优势,吸引了一大批区块链技术开发人员的加入,受到众多企业及相应开发人员的关注。但区块链技术涉及广泛,相关学习资料匮乏,偏重于开发实战方面的书籍更少。网络上的相关技术内容缺乏系统性,内容零散,导致学习者付出的时间、精力及成本成倍增长。

这种情况阻碍了许多开发人员的学习脚步,甚至让学习半途而废。为了提高开发人员的学习效率,降低学习成本,快速掌握Hyperledger Fabric应用开发技术,特编写了本书。

本书特色

本书是一本系统性讲解Hyperledger Fabric平台知识并侧重介绍应用项目开发实战的书籍,遵循实践出真知的理念,通过大量动手实践,循序渐进地介绍超级账本技术及相关核心模块。

本书的内容注重实用性及理论与实践相结合,由浅入深地介绍了超级账本技术原理,并详细说明了Hyperledger Fabric的逻辑架构、运行时架构及各网络节点角色的作用,深入介绍Hyperledger Fabric超级账本的交易流程实现;通过网络环境构建、链码开发,逐步探索Hyperledger Fabric分布式超级账本技术及其应用开发过程;最后通过项目实战,着重介绍了相关技术点及开发流程、技巧,让读者熟练掌握分布式超级账本平台技术,并根据不同的应用场景开发基于区块链平台的企业级分布式应用。

读者对象

区块链应用开发人员;

区块链技术爱好者;

超级账本应用开发人员/架构师;

高校计算机及相关专业师生。

如何阅读本书

本书分为4篇,共计13章内容。

基础篇(第1~3章),着重讲解Hyperledger Fabric环境搭建及架构设计,通过详细分析并动手实践的方式构建Hyperledger Fabric网络环境。

第1章 本章从Hyperledger Fabric由来开始,详细介绍了Hyperledger Fabric的框架、特点、环境搭建、快速调试方式。

第2章 本章从Hyperledger Fabric系统逻辑架构设计开始,延伸到运行时网络结构、节点角色与相关的概念,以及Hyperledger Fabric对网络交易处理流程的详细解析。

第3章 本章通过对主要配置文件的分析与讲解,一步一步地完成构建Hyperledger Fabric网络环境所需组件的详细实现过程。

链码篇(第4~5章),详细介绍了链码,帮助读者熟练掌握链码的开发并进行相应的测试。

第4章 本章详细介绍了链码的概念与分类,并实现链码生命周期管理及两种测试。

第5章 本章侧重讲解链码的开发方式、开发过程、链码的主要API,并通过链码开发示例掌握链码对账本数据状态操作的核心API。

核心篇(第6~9章),着重讲解Hyperledger Fabric核心模块,如MSP成员管理、共识机制、数据分发机制,深入了解Hyperledger Fabric分布式账本状态数据的存储方式及过程。

第6章 本章主要讲解与成员管理服务相关的内容,包括MSP成员验证、结构组成、具体应用,并详细说明了Hyperledger Fabric CA服务器的搭建及客户端的具体使用方法。

第7章 本章侧重于Hyperledger Fabric共识机制的实现,包括基于Kafka实现排序服务的具体实践操作,最后介绍了多链及多通道的概念与具体实现。

第8章 本章首先介绍了Gossip协议的内容,以图文并茂的方式说明了Gossip数据传输实现方式,最后详细说明了Hyperledger Fabric中基于Gossip协议实现的P2P数据分发与数据同步机制。

第9章 本章详细介绍了分布式账本的数据组成结构及数据的存储实现方式。

项目实战篇(第10~13章),以循序渐进的方式逐步讲解如何使用Fabric-SDK-Go开发基于Hyperledger Fabric的区块链应用程序;从业务逻辑分析、项目架构设计等方面入手,掌握区块链应用程序的整体开发流程及相关技巧。

第10章 本章侧重于项目开发前期的环境准备工作,包含操作系统环境、工具及配置,以及网络环境的构建、配置。

第11章 本章介绍如何使用Fabric-SDK-Go进行区块链应用开发,包括链码开发、如何使用Fabric-SDK-Go调用链码、应用程序自动化部署与快速测试。

第12章 为了方便用户的使用,本章在第10、11章的基础之上着重介绍实现基于Web的区块链应用程序,主要介绍了Web应用的MVC架构及其具体实现。

第13章 本章通过一个精简的区块链学历信息征信系统,介绍了基于Hyperledger Fabric平台的区块链应用程序的整体开发流程与实现方式。读者可以通过本章全方位掌握区块链应用开发的相关知识,进而可以直接从事基于Hyperledger Fabric的区块链开发工作。

勘误和支持

由于笔者水平及经验所限,编写时间仓促,书中难免出现疏漏或描述不准确之处,恳请读者提出并指正。如果您有更多的宝贵意见,可以直接发送E-mail至hanxiaodong@cldy.org联系笔者,期待能够得到大家的真挚反馈,让我们在技术之路上一起互勉共进。

致谢

感谢Hyperledger Fabric、ZooKeeper、Kaf?ka等官方文档的作者提供了全面、深入、准确的参考资料。

感谢机械工业出版社华章公司的高婧雅编辑,初写书稿时,笔者是从技术人员的角度出发的,正是高婧雅编辑真正从读者的角度出发提出了相关的建议并给予相应帮助,笔者才完成了本书的书稿。

特别致谢

在此,特别感谢家人、同事及众多技术爱好者的鼓励与支持,尤其是家人,编写此书的过程中,我的爱人与女儿从来没有任何抱怨,可以让我安心地思考及写作。

 

韩小东

 

 

 

Contents 目  录


前 言

基 础 篇

第1章 Hyperledger Fabric认知与环境搭建  3

1.1 全面认识超级账本  3

1.1.1     超级账本由来  3

1.1.2     超级账本分类  4

1.1.3     认识Hyperledger Fabric  4

1.2 迈出第一步:搭建环境  5

1.2.1     操作系统  5

1.2.2     安装所需工具  5

1.3 安装Hyperledger Fabric  10

1.3.1     下载fabric-samples与二进制文件  10

1.3.2     Hyperledger Fabric源码方式编译  12

1.4 测试Hyperledger Fabric网络环境  17

1.4.1     测试Hyperledger Fabric环境  18

1.4.2     构建你的第一个Hyperledger Fabric网络  18

第2章 深入浅出介绍Hyperledger Fabric架构设计  21

2.1 透视逻辑架构与运行时架构  21

2.1.1     逻辑架构  21

2.1.2     运行时架构  22

2.2 Hyperledger Fabric交易流程分析  24

2.3 Hyperledger Fabric核心配置文件详解  28

2.3.1     core.yaml详解  29

2.3.2     orderer.yaml详解  36

第3章 搭建自己的Hyperledger Fabric网络  39

3.1 生成组织结构与身份证书  39

3.1.1     与组织结构及身份证书关联的配置文件  39

3.1.2     如何生成组织结构及身份证书  40

3.2 不可或缺的配置文件  45

3.2.1     conf?igtx.yaml配置文件指定的核心内容  45

3.2.2     Orderer服务启动初始区块的创建  47

3.2.3     创建必需的应用通道交易配置文件  48

3.2.4     生成锚节点更新配置文件  49

3.3 一分钟启动分布式网络  49

3.3.1     网络服务的配置  50

3.3.2     关联的docker-compose-base.yaml  52

3.3.3     又被关联的peer-base.yaml  54

3.3.4     启动网络  55

3.4 以最快的方式完成应用通道的创建  57

3.4.1     创建应用通道  57

3.4.2     将节点加入应用通道  58

3.4.3     更新锚节点  59

链 码 篇

第4章 全方位认识链码:链码管理与测试  63

4.1 初识链码:链码的概念与原理  63

4.2 链码使用:安装、实例化、查询与调用  65

4.2.1     安装链码  66

4.2.2     实例化链码  66

4.2.3     查询链码  67

4.2.4     调用链码  67

4.3 链码的其他操作:实现链码的打包与升级  69

4.3.1     链码的打包与签名  69

4.3.2     链码的升级  70

4.4 开发模式下的测试:简化链码的测试过程  72

4.4.1     启动网络  72

4.4.2     构建并启动链码  73

4.4.3     调用链码  74

第5章 链码开发与实践  77

5.1 如何利用Fabric提供的接口编写链码  77

5.1.1     链码接口  78

5.1.2     必要结构  78

5.2 如何操作账本数据:熟悉链码相关API  79

5.3 链码实现的Hello World  81

5.3.1     链码开发  82

5.3.2     链码测试  84

5.4 动手编码一:链码实现资产管理  85

5.4.1     资产链码开发  85

5.4.2     链码测试  88

5.5 动手编码二:链码实现转账  89

5.5.1     转账链码开发  89

5.5.2     链码测试  97

核 心 篇

第6章 MSP成员管理与Hyperledger Fabric CA服务实现  101

6.1 走进MSP  101

6.1.1     MSP的定义与作用  101

6.1.2     MSP的组成结构  102

6.1.3     MSP应用  103

6.2 认识与安装Hyperledger Fabric CA  105

6.3 启动Hyperledger Fabric CA  107

6.3.1     初始化  107

6.3.2     快速启动  108

6.3.3     配置数据库  109

6.3.4     配置LDAP  110

6.4 应用Hyperledger Fabric CA的客户端命令  111

6.4.1     Hyperledger Fabric CA客户端命令  112

6.4.2     查看AKI和序列号  116

第7章 白话Hyperledger Fabric共识机制  118

7.1 Hyperledger Fabric中的共识实现  118

7.1.1     共识算法的属性和类型  118

7.1.2     Hyperledger Fabric中的共识实现  120

7.2 基于Kafka排序服务的实现  121

7.2.1     指定Kafka实现排序服务  122

7.2.2     配置网络环境  123

7.2.3     启动网络  129

7.2.4     测试Kafka排序服务  131

7.3 多链及多通道实现  133

7.3.1     多链及多通道  133

7.3.2     应用多通道  135

第8章 Hyperledger Fabric中数据分发机制的实现  139

8.1 认识Gossip  139

8.1.1     Gossip协议  139

8.1.2     Gossip数据传输  140

8.2 Hyperledger Fabric中数据同步的实现  141

8.2.1     Hyperledger Fabric中的Gossip  141

8.2.2     Hyperledger Fabric的数据同步实现  144

第9章 Hyperledger Fabric分布式账本数据存储  147

9.1 交易数据的存储  147

9.1.1     区块链账本数据  147

9.1.2     数据存储  150

9.2 Hyperledger Fabric状态数据库  154

9.2.1     CouchDB数据库简介  154

9.2.2     CouchDB在Hyperledger Fabric中的具体实现  154

9.2.3     测试CouchDB  159

项目实战篇

第10章 Web项目实战之环境搭建  165

10.1 环境准备清单  165

10.2 搭建网络环境  166

10.2.1   网络环境准备  166

10.2.2   配置docker-compose.yml文件  167

10.2.3   测试网络环境  171

第11章 Web项目实战之使用Fabric-SDK-Go  173

11.1 创建Fabric-SDK对象并建立通道  173

11.1.1   配置Fabric-SDK  173

11.1.2   定义所需结构体  177

11.1.3   创建Fabric-SDK  178

11.1.4   测试创建通道  179

11.2 满足依赖  180

11.2.1   安装dep工具  180

11.2.2   下载所需依赖  181

11.2.3   测试Fabric-SDK  181

11.2.4   关闭网络并清理环境  182

11.2.5   利用Makef?ile简化步骤  182

11.3 链码实现  184

11.4 使用Fabric-SDK实现链码的自动部署  186

11.4.1   添加结构体成员  186

11.4.2   使用Fabric-SDK安装及实例化链码  187

11.4.3   在main中调用  188

11.4.4   测试  188

第12章 Web项目实战之Web应用实现  190

12.1 理解MVC,合理地设计应用  190

12.2 调用链码:设计业务层  192

12.2.1   事件处理  192

12.2.2   调用链码添加状态  193

12.2.3   调用链码查询状态  194

12.3 MVC架构应用实现  196

第13章 实战:构建学历信息征信系统  201

13.1 需求分析与架构设计  201

13.1.1   需求分析  201

13.1.2   架构设计  202

13.1.3   数据模型设计  202

13.1.4   网络环境  203

13.1.5   测试网络环境  205

13.2 SDK与链码的实现  205

13.2.1   创建conf?ig.yaml文件  205

13.2.2   声明结构体  205

13.2.3   编写链码  206

13.2.4   Fabric-SDK-Go实现  211

13.2.5   安装依赖  214

13.2.6   链码自动部署  216

13.3 业务层实现  218

13.3.1   事件处理  218

13.3.2   业务层调用链码实现添加状态  219

13.3.3   根据证书编号与姓名查询状态  221

13.3.4   根据身份证号码查询状态  223

13.3.5   修改/添加信息状态  224

13.4 控制层实现  226

13.4.1   设置系统用户  226

13.4.2   处理响应  228

13.4.3   处理请求  228

13.4.4   指定路由  228

13.5 视图层实现  228

13.5.1   目录结构  228

13.5.2   相关源码实现  229

13.5.3   照片上传  230

13.6 项目交互演示  231

13.6.1   启动Web服务  231

13.6.2   访问页面  232

附录 词汇术语表  235


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。