Summary 第 1 章 区块链思想的诞生 Introduction Introduction 从实体货币到数字货币 站在巨人的肩膀上 了不起的社会学实验 潜在的商业价值 本章小结 第 2 章 核心技术概览 Introduction 定义与原理 技术的演化与分类 关键问题和挑战 趋势与展望 认识上的误区 本章小结 第 3 章 典型应用场景 Introduction 应用场景概览 金融服务 银行业金融管理 证券交易 众筹投资 征信和权属管理 资源共享 贸易管理 物联网 其他场景 本章小结 第 4 章 分布式系统核心问题 Introduction 一致性问题 定义与重要性 问题与挑战 一致性要求 带约束的一致性 共识算法 问题与挑战 常见算法 理论界限 FLP 不可能原理 定义 正确理解 CAP 原理 定义 应用场景 ACID 原则 Paxos 算法与 Raft 算法 Paxos 算法 Raft 算法 拜占庭问题与算法 可靠性指标 几个 9 的指标 两个核心时间 提高可靠性 本章小结 第 5 章 密码学与安全技术 Introduction Hash 算法与数字摘要 Hash 定义 常见算法 性能 数字摘要 Hash 攻击与保护 加解密算法 加解密系统基本组成 对称加密算法 非对称加密算法 选择明文攻击 混合加密机制 离散对数与 Diffe-Hellman 密钥交换协议 消息认证码与数字签名 消息认证码 数字签名 安全性 数字证书 X.509 证书规范 证书格式 证书信任链 PKI 体系 PKI 基本组件 证书的签发 证书的撤销 Merkle 树结构 布隆过滤器 同态加密 其他问题 本章小结 第 6 章 比特币 -- 区块链思想诞生的摇篮 Introduction 比特币项目简介 比特币大事记 其他数字货币 原理和设计 基本交易过程 重要概念 创新设计 挖矿 基本原理 挖矿过程 如何看待挖矿 共识机制 工作量证明 权益证明 闪电网络 侧链 SPV 证明 双向挂钩 最新进展 热点问题 设计中的权衡 分叉 交易延展性 扩容之争 比特币的监管和追踪 相关工具 本章小结 第 7 章 以太坊 -- 挣脱数字货币的枷锁 Introduction 以太坊项目简介 以太坊项目简史 主要特点 核心概念 主要设计 智能合约相关设计 交易模型 共识 降低攻击 提高扩展性 相关工具 客户端和开发库 以太坊钱包 IDE 网站资源 安装客户端 从 PPA 直接安装 从源码编译 使用智能合约 搭建测试用区块链 创建和编译智能合约 部署智能合约 调用智能合约 智能合约案例:投票 智能合约代码 代码解析 本章小结 第 8 章 超级账本 -- 面向企业的分布式账本 Introduction 超级账本项目简介 社区组织结构 基本结构 在中华区技术工作组 顶级项目介绍 Fabric 项目 Sawtooth 项目 Iroha 项目 Blockchain Explorer 项目 Cello 项目 Indy 项目 Composer 项目 Burrow 项目 开发必备工具 Linux Foundation ID Jira -- 任务和进度管理 Gerrit -- 代码仓库和 Review 管理 RocketChat -- 在线沟通 贡献代码 本章小结 第 9 章 超级账本 Fabric 部署和使用 Introduction 简介 本地编译安装 操作系统 环境配置 获取代码 编译安装 fabric-peer 组件 编译安装 fabric-orderer 组件 编译安装 fabric-ca 组件 编译安装辅助工具 获取 chaintool 安装 Go 语言相关工具 示例配置 使用 Docker 镜像 安装 Docker服务 安装 docker-compose 获取 Docker 镜像 镜像 Dockerfile 启动 Fabric 网络 网络拓扑 准备相关配置文件 启动 Orderer 节点 启动 Peer 节点 操作网络 基于容器方式 链码的概念与使用 链码操作命令 命令参数 安装链码 实例化链码 调用链码 查询链码 升级链码 打包链码和签名 使用多通道 通道操作命令 命令选项 创建通道 加入通道 列出所加入的通道 获取某区块 更新通道配置 SDK 支持 生产环境注意事项 本章小结 第 10 章 超级账本 Fabric 配置管理 Introduction 简介 配置文件 配置管理工具 Peer 配置剖析 logging 部分 peer 部分 vm 部分 chaincode 部分 ledger 部分 Orderer 配置剖析 cryptogen 生成组织身份配置 配置文件 子命令和参数 生成密钥和证书文件 查看配置模板信息 configtxgen 生成通道配置 configtx.yaml 配置文件 命令选项 生成 Orderer 初始区块并进行查看 生成新建通道交易文件并进行查看 生成锚节点更新交易文件 configtxlator 转换配置 RESTful 接口 解码为 Json 格式 编码为二进制格式 计算配置更新量 更新通道配置 本章小结 第 11 章 超级账本 Fabric CA 应用与配置 Introduction 简介 安装服务端和客户端 本地编译 获取和使用 Docker 镜像 示例 Dockerfile 启动 CA 服务 服务端命令剖析 全局命令参数 init 命令 start 命令 服务端配置文件解析 与服务端进行剖析 客户端命令剖析 全局命令参数 enroll 命令 getcacert 命令 reenroll 命令 register 命令 revoke 命令 客户端配置文件解析 生产环境部署 本章小结 第 12 章 超级账本 Fabric 架构与设计 Introduction 整体架构概览 核心特性 整体架构 典型工作流程 核心概念与组件 网络层相关组件 共识相关组件 权限管理相关组件 业务层相关组件 gRPC 消息协议 Envelope 消息结构 客户端访问 Peer 节点 客户端、Peer 节点访问 Orderer 链码容器和 Peer 节点之间的操作 多个节点之间的操作 权限管理和策略 策略应用场景 身份证书 权限策略的实现 通道策略 背书策略 实例化策略 用户链码 基本结构 链码与 Peer 的交互过程 链码处理状态机 系统链码 排序服务 gRPC 服务接口 链和账本管理 通道配置更新 共识插件 本章小结 第 13 章 区块链应用开发 Introduction 简介 链码的原理、接口与结构 Chaincode 接口 链码结构 链码基本工作原理 链码开发 API 账本状态交互 API 交易信息相关 API 参数读取 API 其他 API 应用开发案例一:转账 链码结构 Init 方法 Invoke 方法 应用开发案例二:资产权属管理 链码结构 Invoke 方法 应用开发案例三:调用其他链码 应用开发案例四:发送事件 开发最佳实践小结 本章小结 第 14 章 区块链服务平台设计 Introduction 简介 参考架构 考量指标 IBM Bluemix 云区块链服务 微软 Azure 云区块链服务 使用超级账本 Cello 搭建区块链服务 基本架构和特性 环境准备 下载 Cello 源码 配置 Worker 节点 配置 Master 节点 使用 Cello 管理区块链 基于 Cello 进行功能扩展 本章小结 附录 附录 A 术语表 附录 B 常见问题解答 附录 C Golang 开发相关 附录 D ProtoBuf 与 gRPC 附录 E 参考资源