书籍详情
深度探索区块链:Hyperledger技术与应用
作者:张增骏,董宁,朱轩彤,陈剑雄 著
出版社:机械工业出版社
出版时间:2018-02-01
ISBN:9787111589327
定价:¥79.00
购买这本书可以去
内容简介
本书由超级账本执行董事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开发区块链应用,以完整地掌握区块链应用开发,动手实践具体的项目。
作者简介
张增骏智链ChainNova技术总监和架构师。十余年软件开发和项目管理经验,设计并实现了多个区块链项目,带领团队获得“2017可信区块链峰会”唯*非金融类*佳案例奖。中国信通院可信区块链专家委员会成员,参与讨论并推动可信区块链测试标准的制定,多次受邀到高校与企业分享与推动区块链落地工作。曾任绿盟科技PDT经理,带领团队研发的远程安全评估系统(RSAS)连续多年国内排名*一,广泛应用于多个重点领域。目前关注区块链、网络安全、大数据、云计算和人工智能等领域。董宁智链 ChainNova科技公司CEO,北京大学(天津滨海)新一代信息技术研究院金融科技研究中心主任。曾任IBM大中华区IT经济学负责人,参与过数家商业银行和金融机构核心系统的设计建设,具有多年金融行业的商业洞察。毕业于北京大学信息科学技术学院智能科学系。朱轩彤清华大学硕士,中国社会科学院数量经济与技术经济研究所博士生,专注于技术经济研究。在政府及国际组织有丰富的工作经验。陈剑雄智链ChainNova首席科学家,原金山云技术VP,中科院计算与通信工程学院硕士。多年大规模集群系统研发经验,参与多个区块链核心系统设计和应用。
目录
序一
序二
序三
前言
第一篇 准备篇
第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
序二
序三
前言
第一篇 准备篇
第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
猜您喜欢