超级账本执行董事Brian Behlendorf领衔推荐,资深一线区块链专家联合撰写,是深度了解区块链和Hyperledger技术的扛鼎之作
深度剖析区块链框架Hyperledger Fabric 1.0的架构、核心技术、部署与应用开发
本书由超级账本执行董事Brian Behlendorf领衔推荐,区块链一线落地实践团队、Hyperleger会员智链骨干团对撰写。深入讲解Hyperledger Fabric 1.0的架构、执行逻辑、核心功能实现、从零部署,并以票据案例为例,讲解具体开发实践,穿插开发所需的*佳实践和遇到的问题解决。
本书分三篇,共12章内容。
准备篇(第1~2章),高度浓缩、信息量大的第1章,揭示区块链的价值、核心理念、演进、主流平台、商用场景。第2章进入实践环节,涵盖安装、部署与调试,让读者初步直观感受区块链,培养学习和实践的兴趣。
核心篇(第3~9章),先从Fabric1.0架构开始讲解,方便读者了解整体结构与运作逻辑,带着问题与轮廓去阅读,事半功倍。第4~9章讲解内部实现机制,该篇并不点到为止,而是深入到底层实现原理层面,让读者透彻了解Fabric的设计与实现细节,该篇是理解区块链设计与实现的关键所在,也是日后做好应用开发的基础,有了问题可以自己动手解决。
涵盖以下几个方面:
区块链架构、组件关系与运行机制总览;
Gossip协议与P2P数据分发机制;
分布式账本数据相关的存储技术;
共识机制及其可插拔的架构设计;
如何实现数据隔离的多链与多通道;
基于数字证书的成员管理服务实现与使用;
智能合约实现、交互,以及有限状态机。
应用篇(10~12章),从安装部署、开发模型和应用开发的角度,以一个票据背书的案例讲解如何基于Hyperledger Fabric 1.0开发区块链应用,以完整地掌握区块链应用开发,动手实践具体的项目。
序一
序二
序三
前言
第一篇 准备篇
第1章 区块链概述 2
1.1 区块链的前世今生 2
1.1.1 区块链的历史起源——比特币 2
1.1.2 欢迎来到区块链的世界 3
1.1.3 区块链演进趋势 4
1.2 区块链概念 5
1.2.1 区块链本质 6
1.2.2 区块链工作原理 6
1.2.3 区块链技术特点 7
1.2.4 区块链层次模型 8
1.2.5 区块链共识算法 8
1.2.6 区块链并不一定去中心化 9
1.3 区块链技术平台 10
1.3.1 比特币 10
1.3.2 以太坊 11
1.3.3 瑞波 13
1.3.4 区块链商用平台:超级账本 13
1.3.5 区块链技术平台比较 15
1.4 区块链的商用之道 15
1.4.1 区块链的2.0时代:商用区块链 15
1.4.2 超级账本:商用区块链的“第五元素” 17
1.4.3 区块链的商业应用场景 17
1.5 本章小结 18
第2章 超级账本初体验 19
2.1 基础环境安装 19
2.1.1 Docker的安装和使用 19
2.1.2 Docker Compose的安装和使用 21
2.1.3 下载超级账本源代码 24
2.2 超级账本部署调用 24
2.2.1 下载Docker镜像文件 24
2.2.2 部署超级账本网络 25
2.2.3 链码调用和查询 26
2.2.4 常见错误 27
2.3 节点的配置参数传递规则 29
2.4 本章小结 31
第二篇 核心篇
第3章 超级账本的系统架构 34
3.1 系统逻辑架构 35
3.2 网络节点架构 37
3.3 典型交易流程 39
3.3.1 创建交易提案并发送给背书节点 39
3.3.2 背书节点模拟交易并生成背书签名 41
3.3.3 收集交易的背书 42
3.3.4 构造交易请求并发送给排序服务节点 43
3.3.5 排序服务节点以对交易进行排序并生成区块 45
3.3.6 排序服务节点以广播给组织的主节点 45
3.3.7 记账节点验证区块内容并写入区块 45
3.3.8 在组织内部同步最新的区块 49
3.4 消息协议结构 49
3.4.1 信封消息结构 49
3.4.2 配置管理结构 51
3.4.3 背书流程结构 52
3.5 策略管理和访问控制 56
3.5.1 策略定义及其类型 56
3.5.2 交易背书策略 57
3.5.3 链码实例化策略 60
3.5.4 通道管理策略 61
3.6 本章小结 63
第4章 基于Gossip的P2P数据分发 64
4.1 概述 64
4.2 超级账本中的Gossip协议 65
4.3 成员认证及身份管理 67
4.4 节点启动及成员管理 67
4.5 主节点选举过程 68
4.6 基于反熵的状态同步 69
4.7 数据传播过程 70
4.8 多通道的支持 70
4.9 消息的验证策略 71
4.10 消息的多路分用及分区 73
4.11 和Gossip相关的配置参数 76
4.12 本章小结 77
第5章 分布式账本存储 78
5.1 概述 78
5.2 读写集 79
5.2.1 交易模拟和读写集 79
5.2.2 交易验证和世界状态更新 80
5.2.3 模拟和验证示例 80
5.3 账本编号 81
5.4 账本数据 81
5.4.1 账本数据存储 82
5.4.2 账本数据读取 83
5.4.3 交易模拟执行 84
5.5 区块索引 84
5.5.1 文件位置指针 85
5.5.2 索引的同步过程 86
5.6 状态数据 87
5.6.1 LevelDB 88
5.6.2 CouchDB 89
5.6.3 基于状态数据的区块验证 91
5.7 历史数据 92
5.8 数据恢复 92
5.9 本章小结 93
第6章 集成共识机制的排序服务 94
6.1 概述 94
6.1.1 共识算法的类型 95
6.1.2 Hyperledger Fabric 1.0的共识机制 96
6.2 实现数据隔离的多通道 97
6.2.1 排序服务的初始化 99
6.2.2 通道的创建 101
6.2.3 通道的更新 105
6.2.4 通道的加入 107
6.2.5 通道的查询 107
6.3 可插拔的排序服务 108
6.3.1 排序服务接口 108
6.3.2 基于单进程的排序服务 110
6.3.3 基于Kafka的排序服务 110
6.3.4 链消息过滤器 122
6.4 本章小结 124
第7章 实现数据隔离的多链及多通道 125
7.1 数据存储对多链的支持 126
7.1.1 账本数据 126
7.1.2 索引数据 126
7.1.3 状态数据 127
7.1.4 历史数据 127
7.2 链码对多链的支持 128
7.2.1 链码的生命周期管理 128
7.2.2 链码和背书节点的通信 129
7.2.3 链码的部署和调用 130
7.3 多通道对多链的支持 131
7.4 命令行和SDK对多链的支持 132
7.5 关于系统链 132
7.6 本章小结 132
第8章 基于数字证书的成员管理服务 133
8.1 实现成员管理的MSP 133
8.1.1 MSP成员的验证 133
8.1.2 MSP的目录结构 134
8.1.3 MSP的配置最佳实践 140
8.2 颁发数字证书的Fabric CA 142
8.2.1 概述 142
8.2.2 Fabric CA服务端的安装部署 143
8.2.3 Fabric CA服务端的操作使用 148
8.3 本章小结 158
第9章 支持多种语言的智能合约 159
9.1 概述 160
9.2 链码的生命周期管理 160
9.2.1 链码的生命周期 160
9.2.2 应用程序和链码的交互流程 164
9.2.3 背书节点接收应用程序的请求处理 165
9.2.4 采用上下文实现交易的模拟执行 166
9.2.5 链码消息的数据分发 166
9.2.6 链码运行环境的管理 168
9.3 内置的系统链码 172
9.3.1 生命周期管理系统链码 173
9.3.2 配置管理系统链码 180
9.3.3 查询管理系统链码 182
9.3.4 交易背书系统链码 182
9.3.5 交易验证系统链码 184
9.4 链码的相互调用 184
9.5 背书节点和链码的有限状态机 185
9.5.1 背书节点和链码之间的事件 188
9.5.2 背书节点的有限状态机 189
9.5.3 链码的有限状态机 190
9.6 本章小结 192
第三篇 应用篇
第10章 超级账本的应用开发模型 194
10.1 应用开发模型 194
10.2 应用程序开发的SDK 194
10.2.1 概述 195
10.2.2 SDK规范 195
10.2.3 应用场景介绍 204
10.3 链码的开发和调试 210
10.3.1 链码需要实现的接口 210
10.3.2 链码的SDK提供给链码的接口 212
10.3.3 链码开发的注意事项 214
10.3.4 链码的调试 215
10.4 本章小结 216
第11章 从零开始部署超级账本网络 217
11.1 准备超级账本运行环境 217
11.1.1 超级账本运行环境 217
11.1.2 编译超级账本镜像文件 224
11.2 快速构建超级账本网络 227
11.2.1 下载BYFN的代码 227
11.2.2 BYFN脚本介绍 227
11.2.3 生成网络初始化配置 228
11.2.4 启动超级账本网络 230
11.2.5 关闭超级账本网络 235
11.3 逐步建立超级账本网络 236
11.3.1 生成MSP证书 236
11.3.2 生成排序服务创世区块 236
11.3.3 生成通道配置创世区块 236
11.3.4 定义组织锚节点 237
11.3.5 启动超级账本网络 237
11.3.6 创建并加入通道 238
11.3.7 安装和实例化链码 240
11.3.8 执行链码查询 243
11.3.9 执行链码调用 244
11.4 本章小结 245
第12章 超级账本的应用开发实例 246
12.1 票据背书场景介绍 246
12.1.1 票据关系人 247
12.1.2 票据行为分类 247
12.1.3 基于区块链技术的数字票据 249
12.2 票据背书需求分析 250
12.3 票据背书架构设计 251
12.3.1 票据背书的分层架构 252
12.3.2 票据背书的数据模型 253
12.4 票据背书实现 254
12.4.1 应用程序实现 254
12.4.2 链码功能实现 275
12.5 票据背书快速部署 287
12.6 票据背书展示 288
12.6.1 系统登录 288
12.6.2 发布票据 288
12.6.3 我的票据 289
12.6.4 发起票据背书 289
12.6.5 待签收票据列表 290
12.6.6 签收票据背书 290
12.6.7 拒收票据背书 291
12.7 本章小结 292
附录A 术语表 293
附录B 超级账本的实用工具 297
参考文献 308
本书集合了多方共同的心血,由Linux基金会会员、智链ChainNova的一线技术团队主笔撰写,他们不但是超级账本中国社区的主要贡献者,还长期奋战在市场前线,对商业应用环境有相当的了解,相信从书中内容的翔实程度可见一斑。
——Brian Behlendorf,超级账本执行董事
这是我迄今为止所见关于超级账本技术和应用非常有参考意义的技术书籍,值得向广大区块链的研究者与开发同行们推荐。
——陈钟,北京大学信息科学技术学院教授、北京大学金融信息化研究中心主任
本书的目的不是蜻蜓点水地介绍一些Hyperledger入门知识,而是通过阅读本书能让读者达到一定的水平,甚至可以加入区块链产业应用中来,为区块链的发展和实践落地添砖加瓦。
——何宝宏,中国信息通信研究院云计算与大数据研究所所长
本书作者均来自超级账本会员企业骨干团队,拥有多年一线实践经验,这让本书不仅内容翔实,更具备很强的可操作性。作为中国技术工作组的核心成员,智链的成员为超级账本项目的国际化和技术推广都做出了重要贡献。无论是想了解最先进的企业级区块链技术,还是进行应用实践参考,本书都值得一读。
——杨保华,超级账本全球技术委员会委员,中国技术工作组主席
董宁牵头编写这本《深度探索区块链:Hyperledger技术与应用》系统阐述了超级账本的技术原理、架构、核心组件及应用开发实例,是学习超级账本底层技术和应用实例的优秀工具书,值得推荐。
——马小峰,苏州同济金融科技研究院院长、中国电子学会区块链专委会副主任委员
可以预见,不久的将来区块将成为数字社会的基础设施。作为富含IBM基因的超级账本资深参与者,作者对超级账本有着深刻的理解。本书从区块链的概述到超级账本的技术解读与操作,处处见功夫,是非常有价值的读本。
——孙贻滋,中国电子学会区块链专委会副主任委员兼秘书长