关于Hyper-V网络设置经验总结(Default Switch/固定IP/SSH)
947
2022-05-30
区块链技术丛书
Hyperledger Fabric菜鸟进阶攻略
黎跃春 韩小东 付金亮 编著
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联系笔者,期待能够得到大家的真挚反馈,让我们在技术之路上一起互勉共进。
致谢
感谢机械工业出版社华章公司的高婧雅编辑,初写书稿时,笔者是从技术人员的角度出发的,正是高婧雅编辑真正从读者的角度出发提出了相关的建议并给予相应帮助,笔者才完成了本书的书稿。
特别致谢
在此,特别感谢家人、同事及众多技术爱好者的鼓励与支持,尤其是家人,编写此书的过程中,我的爱人与女儿从来没有任何抱怨,可以让我安心地思考及写作。
韩小东
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
区块链 分布式 网络
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。