基础篇 3
第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 configtx.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
链码篇 63
第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
核心篇 101
第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
项目实战篇 165
第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 利用Makefiile简化步骤 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 创建config.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