首页>参考读物>计算机科学与技术>计算机网络

区块链原理、设计与应用 第2版
作者 : 杨保华 陈昌 编著
丛书名 : 区块链技术丛书
出版日期 : 2020-07-20
ISBN : 978-7-111-65980-8
定价 : 139.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 524
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

本书由超级账本核心设计和开发者撰写,是区块链开发落地专业指南。由浅入深、系统化介绍超级账本Fabric设计精华、应用开发等。全书分为理论篇和实践篇两大部分;第1~3章介绍区块链技术的由来、核心思想及典型的应用场景;第4~5章重点介绍区块链技术中大量出现的分布式系统技术和密码学安全技术;第6~8章介绍区块链领域的三个典型开源项目:比特币、以太坊以及超级账本;第9-11章以超级账本Fabric项目为例,具体讲解了安装部署、配置管理,以及使用 Fabric CA 进行证书管理的实践经验;第12章重点剖析超级账本Fabric项目的核心架构设计;第13章介绍区块链应用开发的相关技巧和示例;第14章介绍区块链服务平台的设计与开发,并讲解应用超级账本Cello项目构建服务平台的相关知识。本书覆盖了区块链和分布式账本领域的最新技术,可帮助读者深入理解区块链核心原理和典型设计实现,以及高效地开发基于区块链平台的分布式应用。

图书特色

超级账本核心设计和开发者撰写,区块链开发落地专业指南。
由浅入深,详细讲解超级账本Fabric 2.X架构设计与应用开发。

图书前言

“科技怎样才能更好地为人类服务?”相信无数科技从业者都曾思考过这个问题。
从钻木取火、冶铁农耕,到跨海贸易、探索星空,科技领域的每一项进步都或早或晚地推动着文明之舟不断前行,改变着人们对世界的认知。有趣的是,科技创新在诞生之初,往往不被认可。汽车发明后,英国曾规定其在市内时速不得超过2英里;电力刚出现时,曾被认为极度危险而毫无用处……但从来没有一项新事物像区块链这样,引发的争议如此激烈而混乱,产生的影响如此全面且深远。
经过数次大起大落的洗礼,人们再次认识到,事物发展的一般规律并不因个人意志而改变—区块链也必然遵循从小到大、从带前提的行业联盟到更开放的商业网络这一路径成长与发展。在此过程中,来自开源界和业界的贡献将起到决定性的作用。
作为先进的企业级开源区块链项目,超级账本Fabric发布了2.0版本。该版本增强了性能和稳定性,引入了不少新特性,其中有来自企业的生产实践反馈,也有来自学术界和开源界的最新研究成果。毫无疑问,这是对超级账本社区四周年的最佳献礼!
为了更好地介绍区块链领域的最新进展,呈现超级账本最新版本的设计原理和实现细节,本书第2版对内容进行了全面更新,并重点增加了对超级账本Fabric项目的设计和实现的深度剖析。希望可以帮助读者深入理解企业区块链的设计思路和具体实现方案,掌握应用和管理区块链网络的最佳实践技巧。
本书在结构上分为三篇:理论篇包括第1~8章,讲解区块链相关的理论知识;实践篇包括第9~13章,讲解区块链的应用实践技巧;进阶篇包括第14~17章,剖析超级账本Fabric项目最新版本的设计和实现细节。读者可以循序渐进地学习,亦可重点阅读。
在编写本书的过程中,得到了业界同仁的不少建议和反馈。IBM、腾讯、阿里巴巴、百度等团队帮忙提供了其区块链产品相关信息。在此表示万分感谢!
未来已来,信息不息!希望本书能为推动区块链行业的进步和开源文化的普及做出微薄的贡献!

作者
2020年5月于硅谷

上架指导

计算机\网络

封底文字

区块链(Blockchain)无疑是近十年来最具颠覆性的新兴信息技术之一。业界甚至把它与人工智能(Artificial Intelligence)、云计算(Cloud Computing)和数据科学(Data Science)统称的“ABCD”推崇为未来颇具潜力的四大信息技术方向。这本书的作者有深厚的学术背景和丰富的实战经验,在区块链技术方面接触广泛、钻研深入,积累了大量基于超级账本的实践和应用案例。本书深入浅出,系统地总结、归纳了区块链及其相关技术基础,全面地比较、分析了区块链主要开源项目的异同,相信对区块链技术与系统的应用和研发是一个很有价值的指南。
李军 原清华大学信息技术研究院院长,清华信息科学与技术国家实验室常务副主任

区块链技术正与云计算、大数据和人工智能等新兴技术交叉融合,孕育出新的商业模式和产业格局,具有重构数字经济发展生态的重要潜力。这本书既有对区块链原理的深度解析、三大典型开源区块链项目的底层剖析和Fabric 架构设计的细致阐述,也有转账、资产权属管理、调用其他链码等具体应用的开发示例,是一本知行合一的好书。
刘多 中国信息通信研究院院长,中国通信标准化协会副理事长

互联网使得关于信息的创作、获取、存储、再加工无处不在。区块链也将改变人类的交易过程,以一种全新的方式建立交易的信任、仲裁、记录基础。区块链和分布式账本技术很可能是我们这个时代下一个可以和互联网相提并论的发明。这本书介绍了区块链技术和分布式账本技术,包括核心概念、应用场景、关键技术和开发技巧,并且全面地介绍了三大典型区块链开源项目——比特币、以太坊和超级账本。本书的作者不仅是超级账本项目的重要代码贡献者和开源社区组织者,也是将区块链技术应用到客户实际生产项目的实践者。因此,书中不仅有深入、透彻的架构设计剖析,可以让读者快速掌握该领域的核心知识,还有容易上手的实战案例,可以让读者了解区块链技术的应用前景。无论是希望了解区块链和分布式账本领域的核心技术,还是学习如何更好地开发区块链应用,本书都值得一读。
田忠 IBM 全球杰出工程师,IBM 中国创新工程院院长


Baohua Yang has an impressive technical depth and breadth of knowledge on blockchain and distributed ledger technologies and the impact they will have on the way businesses and governments work. He has made enormous contributions to Hyperledger, the distributed ledger project of the Linux Foundation, both in China and globally.
Brian Behlendorf 超级账本管理委员会执行董事(Executive Director),Apache 基金会创始人

图书序言

第1版序言
金融是人类文明发展过程中经济运行的基础,伴随着经济的发展和商业模式的变迁,金融领域不断涌现出先进的技术手段,这些都大大提升了社会和经济的运转效率。从延续了近千年的纸质记账,到20世纪的电子化交易,再到影响现在及未来的互联网、大数据、人工智能和区块链,金融行业和金融科技领域始终以开放的姿态迎接新技术和新变化,并不断进行自我革新和升华。
区块链技术是金融科技领域当下最受关注的方向之一。区块链作为一个新兴技术,具备去中心化、防篡改、可追溯等众多金融领域十分需要的特点。它可以实现多方场景下开放、扁平化的全新合作信任模型,而这些都为实现更高效的资源配置,更具体地说是金融交易,提供了有效的技术手段。在可见的未来,区块链技术将为人类商业社会的快速发展带来更多发展机遇和成长空间。
区块链技术在金融领域的实际应用之一—新型数字货币,被认为具备了变革整个金融行业的潜力,引发了国内外广泛的研究、讨论和实践。英国央行已在研发基于分布式账本技术的下一代支付系统。中国人民银行也组建了数字货币研究所,深入研究数字货币相关的技术和监管课题。国际货币基金组织也公开认可区块链技术在清算和结算方面的独特优势。
清华五道口金融学院始终密切关注和积极开展金融行业及区块链相关领域的学术与研究,于2012年成立互联网金融实验室,专注于互联网金融和金融科技领域的研究、开发与孵化,并联合国内外众多创新型企业和研究机构一起开展数字资产和区块链相关的课题和项目。
当然,创新技术的发展和落地往往难以一蹴而就。我们应该认识到,区块链技术目前仍处于早期阶段,在支撑大规模商业应用场景方面还面临不少挑战,例如:如何在不影响业务运行的前提下,将区块链系统融合到已有的业务系统;如何让区块链系统的处理性能满足金融交易的苛刻需求;如何设计基于区块链的全新业务运营框架,并对其实现有效的监管。这些都是非常值得进一步探索的课题。
此时,很欣喜能看到有这样一本系统讲解区块链技术及实践的书籍。与其他介绍区块链的图书不同,本书并没有局限在阐述区块链的思想、概念和应用场景等理论知识层面,而是进一步从实现角度剖析了区块链平台的架构、设计,并提供了大量一手的开发实践案例,特别是全球区块链领域首屈一指的开源项目—超级账本。这些都将帮助读者更深刻地理解和掌握区块链技术的核心原理与应用方法。
本书作者在技术体系的经验和视野 、创新意识、国际化合作等方面都展现了金融科技专家的综合素养,让我们对中国金融业进入下一个全新的发展阶段的人才储备充满了信心。我们愿意跟作者一起,共同关注、共同努力于中国金融科技的未来。

廖理,教授,博士生导师,清华大学五道口金融学院
2017 年 8 月于清华五道口



第1版前言
区块链和机器学习被誉为未来十年内最有可能提高人类社会生产力的两大创新科技。如果说机器学习的兴起依赖于新型芯片技术的发展,那么区块链技术的出现,则源自商业、金融、信息、安全等多个领域众多科技成果和业务创新的共同推动。
比特币网络自横空出世,就以前所未有的新型理念支持新的交易模式;以太坊项目站在前人肩膀上,引入图灵完备的智能合约机制,进一步释放了区块链技术的应用威力;众多商业、科技巨头,集合来自大型企业的应用需求和最先进的技术成果,打造出支持权限管理的联盟式分布式账本平台—超级账本……开源技术从未如今天这样,对各行各业都产生着极为深远的影响。本书在剖析区块链核心技术时,正是以这些开源项目(特别是超级账本Fabric项目)为具体实现进行讲解,力图探索其核心思想,展现其设计精华,剖析其应用特性。
我们在写作中秉承了由浅入深、由理论到实践的思想,将全书分为两大部分:理论篇和实践篇。前三章介绍了区块链技术的由来、核心思想及典型的应用场景。第4~5章重点介绍了区块链技术中大量出现的分布式系统技术和密码学安全技术。第6~8章分别介绍了区块链领域的三个典型开源项目:比特币、以太坊和超级账本。第9~11章以超级账本Fabric项目为例,具体讲解了安装部署、配置管理,以及使用Fabric CA进行证书管理的实践经验。第12章重点剖析了超级账本Fabric项目的核心架构设计。第13章介绍了区块链应用开发的相关技巧和示例。最后,本书还就热门的“区块链即服务”平台进行了介绍,并讲解了应用超级账本Cello项目构建区块链服务和管理平台的相关经验及知识。
相信读者在阅读完本书后,在深入理解区块链核心概念和原理的同时,对于区块链和分布式账本领域最新的技术和典型设计实现也能了然于心,从而更加高效地开发基于区块链平台的分布式应用。
在本书长达两年时间的编写过程中,得到了来自家人、同事以及开源社区开发者和技术爱好者的众多支持和鼓励,在此表示感谢!
最后,希望本书能为推动区块链技术的进步和开源文化的普及做出一点微薄的贡献!

作者
2017年8月于北京

图书目录

前言
第1版序言
第1版前言
理论篇
第1章 区块链的诞生 2
1.1 记账科技的千年演化 2
1.2 分布式记账与区块链 7
1.3 集大成者—比特币 10
1.4 区块链的商业价值 12
1.5 本章小结 14
第2章 核心技术概览 15
2.1 定义与原理 15
2.2 技术的演化与分类 17
2.3 关键问题和挑战 19
2.4 趋势与展望 23
2.5 认识上的误区 26
2.6 本章小结 27
第3章 典型应用场景 28
3.1 应用场景概览 28
3.2 金融服务 29
3.2.1 数字货币 30
3.2.2 支付清结算业务 31
3.2.3 证券交易后处理 34
3.2.4 供应链金融 35
3.2.5 税收服务 36
3.2.6 众筹管理 37
3.3 征信管理 38
3.4 权属管理与溯源 39
3.4.1 存证 39
3.4.2 溯源 41
3.4.3 数据管理 42
3.5 资源共享 42
3.6 物流与供应链 44
3.7 物联网 45
3.8 其他场景 46
3.9 本章小结 48
第4章 分布式系统核心技术 49
4.1 一致性问题 49
4.2 共识算法 52
4.3 FLP不可能原理 54
4.4 CAP原理 56
4.4.1 定义 56
4.4.2 应用场景 56
4.5 ACID原则与多阶段提交 57
4.6 Paxos算法与Raft算法 58
4.6.1 Paxos算法 58
4.6.2 Raft算法 61
4.7 拜占庭问题与算法 61
4.8 可靠性指标 65
4.9 本章小结 66
第5章 密码学与安全技术 67
5.1 密码学简史 67
5.2 Hash算法与数字摘要 68
5.3 加解密算法 70
5.4 消息认证码与数字签名 75
5.4.1 消息认证码 76
5.4.2 数字签名 76
5.4.3 安全性 77
5.5 数字证书 77
5.6 PKI体系 80
5.7 默克尔树结构 83
5.8 布隆过滤器 84
5.9 同态加密 85
5.10 其他技术 86
5.11 本章小结 89
第6章 比特币—初露锋芒的区块链 90
6.1 比特币项目简介 90
6.2 工作原理 94
6.2.1 基本交易过程 94
6.2.2 重要概念 95
6.2.3 创新设计 98
6.3 挖矿过程 99
6.4 共识机制 100
6.5 闪电网络 102
6.6 侧链 103
6.7 热门问题 105
6.8 相关工具 108
6.9 本章小结 109
第7章 以太坊—挣脱加密货币的枷锁 110
7.1 以太坊项目简介 110
7.2 核心概念 112
7.3 主要设计 114
7.4 相关工具 115
7.5 安装客户端 117
7.6 使用智能合约 118
7.6.1 搭建测试用区块链 118
7.6.2 创建和编译智能合约 119
7.6.3 部署智能合约 120
7.6.4 调用智能合约 121
7.7 智能合约案例 121
7.7.1 智能合约代码 121
7.7.2 代码解析 123
7.8 本章小结 125
第8章 超级账本——面向企业的分布式账本 126
8.1 超级账本项目简介 126
8.2 社区组织结构 128
8.3 顶级项目介绍 129
8.4 开发协作工具 134
8.5 贡献代码 136
8.6 本章小结 139
实践篇
第9章 Fabric安装与部署 142
9.1 简介 142
9.2 本地编译组件 143
9.2.1 环境配置 144
9.2.2 获取代码 145
9.2.3 编译安装Peer组件 145
9.2.4 编译安装Orderer组件 145
9.2.5 编译安装Fabric CA组件 146
9.2.6 编译安装配置辅助工具 146
9.2.7 安装Protobuf支持和Go语言相关工具 146
9.2.8 示例配置 147
9.3 容器方式获取 147
9.3.1 安装Docker服务 147
9.3.2 安装docker-compose 147
9.3.3 获取Docker镜像 148
9.3.4 镜像Dockerfile 150
9.4 用本地方式启动Fabric网络 154
9.4.1 规划初始网络拓扑 155
9.4.2 准备启动配置文件 156
9.4.3 启动排序节点 163
9.4.4 启动Peer节点 165
9.4.5 创建通道 166
9.4.6 加入通道 166
9.4.7 更新锚节点配置 167
9.5 用容器方式启动Fabric网络 167
9.6 本章小结 169
第10章 管理Fabric网络 170
10.1 简介 170
10.2 使用通道 170
10.3 管理节点 184
10.4 管理链上代码 186
10.5 监听网络事件 202
10.6 自动发现网络信息 205
10.6.1 主要功能 205
10.6.2 全局参数 205
10.6.3 子命令 205
10.7 使用运维服务 210
10.8 如何升级网络版本 213
10.8.1 能力类型 213
10.8.2 推荐升级步骤 214
10.9 使用SDK 216
10.10 注意事项与最佳实践 217
10.11 本章小结 219
第11章 智能合约的开发 220
11.1 简介 220
11.2 链码的概念与结构 221
11.2.1 Chaincode接口 222
11.2.2 链码结构 222
11.3 链码开发API 223
11.3.1 账本状态交互API 223
11.3.2 交易信息API 225
11.3.3 参数读取API 226
11.3.4 私密数据API 226
11.3.5 其他API 227
11.4 应用开发案例一:转账 228
11.5 应用开发案例二:资产权属管理 231
11.6 应用开发案例三:调用其他链码 240
11.7 应用开发案例四:发送事件 241
11.8 应用开发案例五:基于属性的权限控制 242
11.9 应用开发案例六:私密数据 243
11.10 使用外部链码 248
11.10.1 外部链码构建器结构 248
11.10.2 链码安装包结构 251
11.10.3 配置Peer节点调用外部链码 252
11.10.4 外部链码编写示例 252
11.11 最佳开发实践 253
11.12 本章小结 257
第12章 Fabric配置解析 258
12.1 简介 258
12.2 Peer配置剖析 259
12.2.1 peer部分 259
12.2.2 vm部分 266
12.2.3 chaincode部分 267
12.2.4 ledger部分 267
12.2.5 operations部分 268
12.2.6 metrics部分 268
12.3 Orderer配置剖析 269
12.4 生成组织身份 272
12.5 通道配置文件 277
12.6 管理通道配置 284
12.7 转换网络配置 294
12.8 本章小结 298
第13章 身份证书管理 299
13.1 简介 299
13.2 安装服务端和客户端 300
13.2.1 本地编译 300
13.2.2 获取和使用Docker镜像 301
13.3 启动CA服务 302
13.4 服务端命令剖析 304
13.4.1 全局命令参数 304
13.4.2 init命令 307
13.4.3 start命令 307
13.5 服务端RESTful API 307
13.6 服务端配置文件解析 310
13.7 与服务端进行交互 316
13.8 客户端命令剖析 317
13.8.1 全局命令参数 318
13.8.2 affiliation命令 320
13.8.3 enroll命令 320
13.8.4 gencrl命令 321
13.8.5 gencsr命令 322
13.8.6 getcacert和getcainfo命令 322
13.8.7 identity命令 322
13.8.8 reenroll命令 322
13.8.9 register命令 323
13.8.10 revoke命令 323
13.9 客户端配置文件解析 324
13.10 生产环境部署 325
13.11 本章小结 327
进阶篇
第14章 Fabric架构与设计 330
14.1 整体架构概览 330
14.2 核心概念与组件 333
14.2.1 网络层相关组件 334
14.2.2 共识机制相关组件 337
14.2.3 权限管理相关组件 338
14.2.4 业务层相关组件 339
14.3 消息协议 345
14.3.1 消息结构 345
14.3.2 客户端访问Peer节点 346
14.3.3 客户端、Peer节点访问Orderer 348
14.3.4 链码和Peer节点交互 348
14.3.5 Peer节点之间Gossip交互 349
14.4 权限策略和访问控制 352
14.4.1 应用场景 353
14.4.2 身份证书 354
14.4.3 身份集合 354
14.4.4 权限策略的实现 355
14.4.5 通道策略 359
14.4.6 通道访问控制 360
14.4.7 背书策略 362
14.4.8 基于证书属性的链码访问控制 364
14.4.9 实例化策略 365
14.5 隐私保护 365
14.5.1 通道机制 365
14.5.2 私密数据库 366
14.5.3 加密保护 368
14.6 用户链码 369
14.6.1 基本结构 369
14.6.2 链码与Peer的交互过程 370
14.6.3 Peer侧处理 372
14.6.4 链码侧处理 373
14.7 系统链码 375
14.7.1 配置系统链码 375
14.7.2 查询系统链码 376
14.7.3 背书系统链码 376
14.7.4 验证系统链码 377
14.7.5 传统生命周期系统链码 377
14.7.6 新的生命周期系统链码 378
14.8 排序服务 379
14.8.1 gRPC服务接口 380
14.8.2 账本管理 380
14.8.3 共识插件 383
14.9 本章小结 386
第15章 Fabric Peer实现剖析 387
15.1 节点启动 387
15.2 加入通道 399
15.2.1 解析和校验请求 399
15.2.2 创建本地账本结构 401
15.2.3 创建通道结构 402
15.2.4 启动Gossip服务 404
15.2.5 注册通道结构到全局字典 410
15.3 Gossip过程 411
15.3.1 整体流程 411
15.3.2 初始化配置 412
15.3.3 初始化和启动Gossip服务 413
15.4 链码启动和初始化 419
15.4.1 整体流程 419
15.4.2 编译和启动链码 421
15.4.3 初始化链码 426
15.4.4 处理链码消息 426
15.5 背书处理 430
15.5.1 检查和校验提案 431
15.5.2 模拟执行链码调用 431
15.5.3 对结果背书并返回结果 433
15.6 提交交易结果 434
15.6.1 整体流程 436
15.6.2 提交前准备 437
15.6.3 提交过程 440
15.6.4 提交后处理 449
15.6.5 总结本地账本结构 449
15.7 本章小结 451
第16章 Fabric Orderer实现剖析 452
16.1 核心工作过程 452
16.1.1 工作原理 452
16.1.2 核心共识过程 453
16.1.3 分块决策 455
16.2 排序服务启动 455
16.3 Broadcast调用 466
16.3.1 整体流程 466
16.3.2 解析消息 468
16.3.3 处理普通交易消息 469
16.3.4 处理配置交易消息 472
16.4 构造本地区块 475
16.4.1 整体流程 475
16.4.2 成为Leader后的处理 477
16.4.3 成为Follower后的处理 477
16.4.4 主共识循环 478
16.4.5 请求应答协程逻辑 483
16.5 Deliver调用 484
16.5.1 整体流程 485
16.5.2 解析消息 488
16.5.3 检查访问权限 489
16.5.4 计算区块范围 489
16.5.5 发送区块 490
16.5.6 返回响应 490
16.6 本章小结 490
第17章 区块链服务平台 491
17.1 简介 491
17.2 IBM区块链服务 492
17.3 甲骨文区块链服务 493
17.4 腾讯云区块链服务平台 494
17.5 阿里云区块链服务平台 495
17.6 百度超级链服务平台 497
17.7 纸贵科技Z-BaaS区块链服务平台 499
17.8 超级账本Cello项目 500
17.9 本章小结 502
附录
附录A 术语 504
附录B 常见问题 508
附录C 参考资源链接 511

教学资源推荐
作者: 杜军朝
作者: 卓伟 李俊锋 李占波 主编
作者: 罗军勇,刘琰,常斌
作者: (美)Ted G.Lewis 著
参考读物推荐
作者: Gill Held
作者: 李宗标 著
作者: [美]布鲁斯·施奈尔〔Bruce Schneier〕 著