第1章 基本环境部署 1
1.1 环境整理 1
1.2 Docker安装 2
1.2.1 卸载旧版本 3
1.2.2 在线安装Docker CE 3
1.2.3 离线安装Docker CE 5
1.2.4 Docker启动及常用命令 5
1.3 Docker-Compose安装 6
1.3.1 在线安装Docker-Compose 6
1.3.2 离线安装Docker-Compose 7
1.4 Go语言环境安装 8
1.4.1 下载Go语言包 8
1.4.2 配置Go语言环境变量 9
1.5 本章小结 9
第2章 Fabric及环境部署 10
2.1 Fabric介绍 10
2.1.1 什么是区块链 10
2.1.2 区块链的作用 12
2.1.3 超级账本是什么 14
2.2 Fabric功能汇总 16
2.3 Fabric组成模型 17
2.3.1 资产 18
2.3.2 智能合约 18
2.3.3 账本特征 18
2.3.4 隐私频道 19
2.3.5 成员安全性 20
2.3.6 共识机制 20
2.4 Fabric环境部署 20
2.4.1 Fabric源码安装 20
2.4.2 下载Fabric镜像 22
2.4.3 镜像备份和迁移 26
2.5 本章小结 28
第3章 End-2-End案例 29
3.1 平台特定文件 29
3.2 运行e2e_cli 31
3.3 e2e_cli案例分析 38
3.3.1 容器服务脚本 38
3.3.2 容器启动配置文件 52
3.3.3 Fabric网络解析 55
3.4 本章小结 62
第4章 部署单机多节点网络 64
4.1 生成证书文件 65
4.2 部署Orderer节点 69
4.3 部署peer0.org1节点 70
4.4 搭建Fabric网络 75
4.5 初步接触智能合约 78
4.6 部署peer0.org2节点 84
4.7 本章小结 88
第5章 Solo多机部署 89
5.1 网络拓扑 89
5.2 部署Orderer节点 91
5.3 部署peer0.org1节点 92
5.4 部署peer1.org1节点 97
5.5 部署peer0.org2节点 101
5.6 本章小结 107
第6章 Kafka集群部署 108
6.1 Fabric账本 108
6.2 事务处理流程 110
6.2.1 客户端发起事务 111
6.2.2 验证签名并执行事务 112
6.2.3 检查返回协议 112
6.2.4 客户端将背书合并到交易中 113
6.2.5 提交并验证事务 113
6.2.6 账本更新 114
6.3 读写集规则 114
6.4 Kafka集群配置 116
6.4.1 crypto-config.yaml配置 119
6.4.2 configtx配置 121
6.4.3 Zookeeper配置 125
6.4.4 Kafka配置 127
6.4.5 Orderer配置 132
6.5 启动集群 138
6.5.1 启动Zookeeper集群 138
6.5.2 启动Kafka集群 140
6.5.3 启动Orderer集群 144
6.6 集群环境测试 146
6.7 本章小结 158
第7章 智能合约 159
7.1 智能合约概述 159
7.2 背书策略 160
7.3 使用智能合约 161
7.3.1 智能合约是什么 161
7.3.2 智能合约的生命周期 161
7.3.3 Packaging(包) 162
7.3.4 创建package(包) 162
7.3.5 包签名(Package signing) 163
7.3.6 安装智能合约 164
7.3.7 智能合约实例化 164
7.3.8 升级智能合约 165
7.3.9 停止及启动智能合约 166
7.3.10 CLI(客户端) 166
7.3.11 系统智能合约 168
7.4 编写智能合约 168
7.4.1 开发人员眼中的智能合约 168
7.4.2 智能合约接口 169
7.4.3 一个简单的资产智能合约 169
7.5 加密智能合约 178
7.6 系统合约插件 180
7.7 智能合约API 182
7.8 Peer节点与合智能约 184
7.8.1 安装智能合约 185
7.8.2 实例化智能合约 187
7.8.3 调用智能合约 188
7.8.4 列出智能合约 190
7.8.5 打包智能合约 191
7.8.6 查询智能合约 192
7.8.7 签名智能合约包 193
7.8.8 升级智能合约 194
7.9 本章小结 196
第8章 CouchDB 197
8.1 CouchDB介绍 197
8.2 启动部署 201
8.3 索引应用 206
8.4 查询应用 216
8.5 选择器语法 218
8.5.1 基本语法 218
8.5.2 嵌套对象 219
8.5.3 运算符 219
8.5.4 隐式运算符 220
8.5.5 显示运算符 222
8.6 本章小结 226
第9章 Java-SDK客户端 227
9.1 SDK项目前置条件 227
9.2 SDK代码使用 232
9.2.1 Orderers对象 233
9.2.2 Peers对象 235
9.2.3 Chaincode对象 238
9.2.4 FabrieUser 240
9.2.5 FabricStore 245
9.2.6 FabricOrg 250
9.2.7 FabricConfig 256
9.2.8 ChaincodeManager 257
9.3 SDK使用方法 264
9.4 本章小结 269
第10章 项目演练 270
10.1 反欺诈系统 271
10.1.1 需求分析 271
10.1.2 编写合约 272
10.1.3 线上验证 278
10.3 本章小结 283