描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787111589327丛书名: 区块链技术丛书
编辑推荐
内容简介
准备篇(第1~2章)涵盖区块链技术概览与简单的安装、部署。核心篇(第3~9章)介绍Hyperledger的P2P协议、存储、数据隔离、会员管理、共识机制、智能合约等核心技术与实现。实践篇(第10~12章)介绍区块链的应用开发模型、部署,以及开发实战案例。
目 录
目 录?Contents
序一
序二
序三
前言
篇 准备篇
第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 链码运行环境
序一
序二
序三
前言
篇 准备篇
第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 链码运行环境
前 言
Preface?前 言为什么要写这本书区块链是在全球范围内受到极高关注的技术。简而言之,区块链就是防篡改并且由大家共同维护的账本,其中包含不断增长的数据记录列表。根据现在的发展趋势,区块链将在商用领域得到广泛应用。
超级账本(Hyperledger)是Linux基金会旗下的区块链开发平台项目,致力于发展跨行业的商用区块链平台技术。超级账本项目自创立伊始便吸引了众多行业的领头羊,包括金融、银行、互联网、运输、制造等行业。目前,超级账本项目在全球拥有超过100个成员,包括IBM、Cisco、Intel、J.P. Morgan、荷兰银行、SWIFT、R3等。基于区块链技术、智能合约及其他相关技术,超级账本项目致力于建立新一代的分布式账本交易应用平台,从而在简化与商业流程相关的事务的同时,建立起商业信任、透明、审查等能力。Hyperledger Fabric子项目是以IBM早期捐献出的Open Blockchain为主体搭建而成的,是一个带有可插入各种功能模块架构的区块链实施方案,其目标是建立一个更加标准化的开源区块链开发平台,类似OpenStack之于云计算。开源地址是:https://github.com/hyperledger/fabric。Fabric主要框架的核心开发语言是Go语言,它非常适合联盟链,具有更高的商业应用前景。
从2015年开始,由于在IBM中国实验室工作,我开始接触区块链技术和IBM的Open Blockchain项目(即Hyperledger Fabric的前身),并开始为中国的金融用户推荐它,帮助这些用户借助区块链的技术价值来实现科技和业务的创新。到了2016年下半年,Hyperledger Fabric开发平台阶段性地稳定在0.6版本,无论是IBM还是云图智链(后来被智链ChainNova并购),都在很多行业应用场景中开始实践Fabric 0.6版本。那时在国内,绝大多数的金融企业都在尝试通过Hyperledger Fabric 0.6平台来开发属于自己的区块链应用,我在那个时候有机会参与了不少相关的区块链项目,涉及领域包括数字积分、资产托管和交易、保险、高价值商品溯源等。也正是从那时起,萌生了编写一本书来解释Hyperledger原理,介绍各项开发组件,并通过真实案例还原区块链开发全过程,让更多的人觉得区块链或者Hyperledger离自己并不遥远。于是,当时我们几个作者从社区、不同的开发项目,以及各个开发团队中开始收集和整理资料,完成了基于0.6版内容的大部分写作工作。
但恰逢此时,Hyperledger的个商用版本1.0准备推出,我们也时间从Linux基金会得到了这个消息。从当时1.0版本的计划来看,推出它的目的主要有两个方面:一是Hyperledger希望以这个版本为基调,作为企业级区块链平台;二是为了解决0.6版本中出现的一些问题,1.0版本进行了很大的改变和调整,可以说这个变化是翻天覆地的,以至于我们半开玩笑地说从0.6版本到1.0版本甚至没有可直接升级的路径。当时我还在IBM工作,时间找到了云图智链的张增骏老师等几位作者和出版社的高婧雅编辑,和他们商量是否需要调整写作方向和内容,因为在此之前实际上张增骏老师已经在上一个版本的写作中付出了很多的时间和精力。几乎是在十分钟之内我们就一致决定要基于Hyperledger Fabric 1.0版本重新组织材料,重新编写这本书,因为我们希望自己投入的时间和付出的精力为社区、众多开发者和广大对区块链技术感兴趣的读者带来一本真正实用的书,而不是仅仅为了把我们几个人的名字留在封面上。数月后的今天,我们把初审过的稿件提交给出版社。这个过程中由于Hyperledger开源社区和代码版本不断迭代内容也不断调整,经历了更多我们之前没涉及的新行业和应用场景,甚至经历了我个人工作角色的变化,我们几个作者终坚持完成了本书的写作。当然必须承认,由于能力和经验不足,本书还有很多提升空间,内容本身也难免出现表达不准确的地方。本书希望抛砖引玉,欢迎读者多提宝贵意见,指出本书存在的技术错误,争取在下一版本中能纠正错误,不断完善,进一步提升质量。同时,我们还会一直基于Hyperledger这个平台不断地进行产业实践,后面还会以本书为起点策划系列丛书,把我们在工作学习过程中得到的启发和经验分享给读者。
本书作者大多来自智链ChainNova,均具有多年IT工作、实践经验。智链ChainNova与超级账本社区一直有非常紧密的合作。2017年智链ChainNova研究院联手Linux Foundation和IBM,共同主办了HyperLedger Fabric商用正式版本1.0发布后Hyperledger开源社区次线下会议(北京Meetup),Hyperledger全球副总裁、亚太区负责人Julian Gordan和多家国内知名金融企业、科技企业高层出席。在2018年,智链ChainNova正在计划携手Linux Foundation、北京大学和IBM共同主办超级账本黑客马拉松大赛(HyperLedger Hackathon)。同时为了进一步活跃Hyperledger社区,我们还即将承办多项开源社区活动,欢迎读者积极参与。相信读者将在学习区块链技术和Hyperledger的过程中获益匪浅。
本书特色笔者是Hyperledger社区成员,参与超级账本社区的日常工作,了解超级账本发展和技术细节的手资料。本书以Fabri
超级账本(Hyperledger)是Linux基金会旗下的区块链开发平台项目,致力于发展跨行业的商用区块链平台技术。超级账本项目自创立伊始便吸引了众多行业的领头羊,包括金融、银行、互联网、运输、制造等行业。目前,超级账本项目在全球拥有超过100个成员,包括IBM、Cisco、Intel、J.P. Morgan、荷兰银行、SWIFT、R3等。基于区块链技术、智能合约及其他相关技术,超级账本项目致力于建立新一代的分布式账本交易应用平台,从而在简化与商业流程相关的事务的同时,建立起商业信任、透明、审查等能力。Hyperledger Fabric子项目是以IBM早期捐献出的Open Blockchain为主体搭建而成的,是一个带有可插入各种功能模块架构的区块链实施方案,其目标是建立一个更加标准化的开源区块链开发平台,类似OpenStack之于云计算。开源地址是:https://github.com/hyperledger/fabric。Fabric主要框架的核心开发语言是Go语言,它非常适合联盟链,具有更高的商业应用前景。
从2015年开始,由于在IBM中国实验室工作,我开始接触区块链技术和IBM的Open Blockchain项目(即Hyperledger Fabric的前身),并开始为中国的金融用户推荐它,帮助这些用户借助区块链的技术价值来实现科技和业务的创新。到了2016年下半年,Hyperledger Fabric开发平台阶段性地稳定在0.6版本,无论是IBM还是云图智链(后来被智链ChainNova并购),都在很多行业应用场景中开始实践Fabric 0.6版本。那时在国内,绝大多数的金融企业都在尝试通过Hyperledger Fabric 0.6平台来开发属于自己的区块链应用,我在那个时候有机会参与了不少相关的区块链项目,涉及领域包括数字积分、资产托管和交易、保险、高价值商品溯源等。也正是从那时起,萌生了编写一本书来解释Hyperledger原理,介绍各项开发组件,并通过真实案例还原区块链开发全过程,让更多的人觉得区块链或者Hyperledger离自己并不遥远。于是,当时我们几个作者从社区、不同的开发项目,以及各个开发团队中开始收集和整理资料,完成了基于0.6版内容的大部分写作工作。
但恰逢此时,Hyperledger的个商用版本1.0准备推出,我们也时间从Linux基金会得到了这个消息。从当时1.0版本的计划来看,推出它的目的主要有两个方面:一是Hyperledger希望以这个版本为基调,作为企业级区块链平台;二是为了解决0.6版本中出现的一些问题,1.0版本进行了很大的改变和调整,可以说这个变化是翻天覆地的,以至于我们半开玩笑地说从0.6版本到1.0版本甚至没有可直接升级的路径。当时我还在IBM工作,时间找到了云图智链的张增骏老师等几位作者和出版社的高婧雅编辑,和他们商量是否需要调整写作方向和内容,因为在此之前实际上张增骏老师已经在上一个版本的写作中付出了很多的时间和精力。几乎是在十分钟之内我们就一致决定要基于Hyperledger Fabric 1.0版本重新组织材料,重新编写这本书,因为我们希望自己投入的时间和付出的精力为社区、众多开发者和广大对区块链技术感兴趣的读者带来一本真正实用的书,而不是仅仅为了把我们几个人的名字留在封面上。数月后的今天,我们把初审过的稿件提交给出版社。这个过程中由于Hyperledger开源社区和代码版本不断迭代内容也不断调整,经历了更多我们之前没涉及的新行业和应用场景,甚至经历了我个人工作角色的变化,我们几个作者终坚持完成了本书的写作。当然必须承认,由于能力和经验不足,本书还有很多提升空间,内容本身也难免出现表达不准确的地方。本书希望抛砖引玉,欢迎读者多提宝贵意见,指出本书存在的技术错误,争取在下一版本中能纠正错误,不断完善,进一步提升质量。同时,我们还会一直基于Hyperledger这个平台不断地进行产业实践,后面还会以本书为起点策划系列丛书,把我们在工作学习过程中得到的启发和经验分享给读者。
本书作者大多来自智链ChainNova,均具有多年IT工作、实践经验。智链ChainNova与超级账本社区一直有非常紧密的合作。2017年智链ChainNova研究院联手Linux Foundation和IBM,共同主办了HyperLedger Fabric商用正式版本1.0发布后Hyperledger开源社区次线下会议(北京Meetup),Hyperledger全球副总裁、亚太区负责人Julian Gordan和多家国内知名金融企业、科技企业高层出席。在2018年,智链ChainNova正在计划携手Linux Foundation、北京大学和IBM共同主办超级账本黑客马拉松大赛(HyperLedger Hackathon)。同时为了进一步活跃Hyperledger社区,我们还即将承办多项开源社区活动,欢迎读者积极参与。相信读者将在学习区块链技术和Hyperledger的过程中获益匪浅。
本书特色笔者是Hyperledger社区成员,参与超级账本社区的日常工作,了解超级账本发展和技术细节的手资料。本书以Fabri
评论
还没有评论。