本书以Hyperledger Fabric 2.0为蓝本,由浅入深地剖析底层源码,系统讲解Fabric 2.0的技术框架、各个模块实现以及背后所蕴含的技术思想,并结合区块链国产化的当前发展,分析Fabric技术的国产化实践。本书主要分为三个部分,第一部分(第1~12章)介绍区块链和Fabric技术相关概念、Fabric 2.0底层源码;第二部分(第13章)讲述如何部署Fabric 2.0,包括使用Kubernetes进行部署;第三部分(第14~17章)融合自主可控技术国产化趋势,结合“5G+物联网”等区块链国内应用场景,通过实际应用分析Fabric技术的国产化实践。
无论是对区块链感兴趣,想要入门Fabric技术的新手,还是初涉Fabric技术,需要通过源码深入理解并使用该技术的区块链行业从业者,抑或是对区块链国产化实践有需求,需要实践案例参考的区块链国产化践行者,都能从本书中获益。
自区块链上升为国家战略,我国各地、各部门着力于推动区块链技术和产业的创新发展,在新的技术革新和产业变革中积极应用区块链技术,不断完善区块链技术标准和产业发展规划。本书特点:
1.从浅入深的系统化讲解,适合从初级到高级相关技术人员。
2.深度剖析源码,使读者知其然,更知其所以然,轻松地进阶学习Hyperledger Fabric技术,克服学习的难点。
3.从理论到实践,以Hyperledger Fabric 2.0为蓝本,结合自主可控技术国产化和万物互联的行业热点,以实际项目示例,扩展读者对Hyperledger Fabric技术的行业认知。
王雅震,目前就职于北京微芯区块链与边缘计算研究院,任区块链高级开发工程师,从事区块链硬件加速和隐私计算相关的研发工作,具有8年研发经验。
第 1章 Fabric概述 1
1.1 Fabric核心概念 1
1.2 Fabric经典网络架构 3
1.3 Fabric经典交易流程 4
1.4 Fabric项目源码目录结构 5
第 2章 Fabric中的配置 7
2.1 配置的形式 7
2.2 网络配置 9
2.3 应用通道配置 10
2.4 peer节点配置 13
2.5 orderer节点配置 16
2.6 MSP配置 17
第3章 成员服务提供者(MSP) 21
3.1 MSP的类型和关联 21
3.2 本地MSP 24
3.2.1 MSP的初始化 25
3.2.2 MSP的使用 28
3.3 多通道下的MSP管理者 30
第4章 加密服务提供者(BCCSP) 32
4.1 BCCSP初始化 33
4.1.1 BCCSP的条件编译 33
4.1.2 默认类型SWBCCSP 33
4.1.3 公钥加密标准类型PKCS11BCCSP 34
4.2 BCCSP的使用 36
4.2.1 签名方法 36
4.2.2 验签方法 37
第5章 身份对象 38
5.1 身份对象的初始化 38
5.1.1 公开身份对象 38
5.1.2 签名身份对象 39
5.1.3 序列化身份对象 40
5.2 身份对象的使用 40
5.2.1 公开身份的使用 40
5.2.2 签名身份的使用 41
5.2.3 序列化身份的使用 41
第6章 策略 43
6.1 MSP主体 43
6.2 策略的类型 44
6.2.1 签名策略 45
6.2.2 隐式元策略 46
6.3 策略对象 48
6.4 签名策略对象 48
6.4.1 签名策略分析器 48
6.4.2 签名策略评估员 49
6.4.3 身份反序列化工具 50
6.4.4 接口实现 51
6.5 隐式元策略对象 51
6.5.1 隐式元策略分析器 51
6.5.2 接口实现 51
6.6 策略管理员 52
6.7 策略检查器 53
6.8 策略的层级 54
6.9 策略的使用 55
6.9.1 通道策略 55
6.9.2 背书策略 56
6.9.3 ACL策略 58
第7章 账本 60
7.1 账本的配置 60
7.2 账本的结构 61
7.3 区块链数据结构 62
7.4 私有数据结构 64
7.5 账本对象的层级 66
7.6 账本数据的存储流程 67
7.7 块存储对象 70
7.7.1 状态数据库 70
7.7.2 blockfile的管理 71
7.7.3 简化块文件存储 77
7.8 私有数据存储对象 77
7.9 账本存储对象 81
7.10 节点账本对象和账本管理者对象 82
7.10.1 交易管理工具 83
7.10.2 历史状态数据库 96
7.10.3 账本初始化工具 97
7.10.4 节点账本对象 99
7.10.5 节点账本管理对象 104
第8章 通道 106
8.1 通道的配置 107
8.2 系统通道的启动 109
8.3 应用通道的启动 112
8.4 加入应用通道 118
第9章 通道服务 124
9.1 基础gRPC网络通信服务 124
9.1.1 Fabric对gRPC的封装 124
9.1.2 服务通信功能 125
9.2 背书服务endorse 127
9.2.1 服务功能和原型定义 127
9.2.2 服务流程 128
9.3 原子广播服务AtomicBroadcast 136
9.3.1 服务功能和原型定义 136
9.3.2 服务流程 138
9.4 共识排序服务etcdraft 145
9.4.1 etcdraft共识网络的拓扑结构 150
9.4.2 etcdraft共识网络的配置和启动 150
9.4.3 etcdraft共识网络的服务流程 156
9.5 散播服务gossip 161
9.5.1 服务功能和原型定义 162
9.5.2 服务的配置和启动 163
9.5.3 服务流程 169
9.6 发现服务discovery 177
9.6.1 服务配置和原型定义 177
9.6.2 服务流程 178
9.7 操作服务operation 180
9.7.1 服务配置和原型定义 182
9.7.2 服务流程 182
第 10章 通道配置更新和交易验证 184
10.1 通道配置更新流程 184
10.2 交易验证流程 192
10.2.1 TLS连接验证 192
10.2.2 身份认证 195
10.2.3 多版本并发控制验证 203
10.2.4 版本能力验证 204
第 11章 Fabric区块链网络核心节点 207
11.1 peer节点 207
11.1.1 peer程序的命令结构 207
11.1.2 peer节点的启动过程 211
11.2 orderer节点 212
11.2.1 orderer程序的命令结构 213
11.2.2 orderer节点的启动过程 213
11.3 第三方节点 215
11.3.1 ZooKeeper、Kafka节点和共识排序服务 215
11.3.2 CouchDB节点与状态数据库 217
第 12章 链码生命周期管理 219
12.1 系统链码 220
12.1.1 系统链码的类型和功能 220
12.1.2 系统链码的初始化 220
12.2 应用链码 225
12.2.1 应用链码与系统链码的关系 225
12.2.2 应用链码与容器的关系 225
12.2.3 应用链码的安装交易过程 229
12.2.4 应用链码的实例化交易过程 237
12.2.5 应用链码的升级交易过程 246
12.2.6 应用链码作为外部服务 246
第 13章 Fabric区块链网络部署 253
13.1 Fabric SDK 253
13.1.1 Fabric SDK的分类 253
13.1.2 Fabric SDK在Fabric区块链网络中的角色 253
13.2 Fabric镜像 254
13.2.1 Fabric区块链网络中的核心镜像 254
13.2.2 获取Fabric核心镜像 255
13.3 Fabric的编译 255
13.3.1 编译工程文件Makefile 255
13.3.2 编译Fabric项目工程 256
13.4 官方示例fabric-samples 257
13.4.1 fabric-samples的结构 257
13.4.2 部署first-network 258
13.4.3 扩展first-network 262
13.4.4 以Kubernetes为容器,部署first-network 262
第 14章 国内区块链技术的发展 270
14.1 区块链技术应用发展趋势浅析 270
14.2 区块链技术与网络信息安全 273
14.3 区块链技术与自主可控 276
14.4 Fabric的发展与自主可控 278
第 15章 Fabric的国产化之路 280
15.1 超级账本社区与中国的桥梁 280
15.2 加解密算法领域的国产化实践 280
15.2.1 应用国密算法的重要性 280
15.2.2 Fabric应用国密算法的难点和方向 281
15.2.3 Fabric国密改造实践 283
15.3 性能优化领域的国产化实践 298
15.3.1 Fabric性能模型分析 298
15.3.2 已做的性能优化 301
15.3.3 打造高性能交易数据模型 302
15.3.4 性能优化的方向性实践 303
第 16章 BaaS平台的应用实践 313
16.1 BaaS平台的特性与应用场景 313
16.2 BaaS平台架构设计实践 318
16.3 BaaS平台开发实践 320
16.3.1 部署负载均衡层 321
16.3.2 接口层 323
16.3.3 资源编排层 324
16.3.4 执行层 327
16.3.5 消息队列 328
第 17章 当Fabric遇上树莓派 331
17.1 区块链与物联网发展的融合 331
17.2 树莓派参与的Fabric区块链网络架构 333
17.3 搭建树莓派参与的Fabric开发环境 336
17.4 部署树莓派参与的Fabric区块链网络 339
17.5 Fabric+物联网的应用场景 341