首页>参考读物>计算机科学与技术>软件与程序设计

区块链开发实战:Hyperledger Fabric关键技术与案例分析
作者 : 冯翔、刘涛、吴寿鹤、周广益 编著
丛书名 : 区块链技术丛书
出版日期 : 2018-05-28
ISBN : 978-7-111-59942-5
定价 : 79.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 316
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

内容介绍
本书是“区块链开发实战”系列的第1本,旨在让零基础的读者也能迅速掌握Hyperledger Fabric的各种基本概念、关键技术、工作原理、应用开发方法。作者是国内区块链领域的早期实践者和布道者,Hyperledger核心项目的核心开发者,在区块链技术开发领域积累了丰富的项目经验,这本书得到了ChinaLedger技术委员会主任白硕、MATRIX区块链首席AI科学家邓仰东、阿希链CTO钱汉涛、元界CEO陈浩等多位专家的鼎力推荐。
全书主要内容在逻辑上分为三个部分:
第一部分 准备篇(第1~2章)
这部分介绍了从事区块链开发需要具备的预备知识,如区块链的各种概念的了解、开发环境的搭建和开发工具的使用等。
第二部分 以太坊篇(第3~13章)
这部分是本书的核心内容,系统、全面地讲解和分析了Hyperledger Fabric的各种基本概念、关键技术、工作原理,以及应用开发方法。如Hyperledger的技术体系,以及Hyperledger Fabric的基本概念、核心模块、账号体系、智能合约、编程接口、系统架构设计、应用开发流程。除此之外,还有区块链浏览器、供应链金融和食品溯源方面的3个综合案例。
第三部分 扩展篇(附录)
详细介绍了比特币的工作原理、运行方式、功能模块、编程接口,以及基于比特币的应用开发方法,对于想研究比特币技术原理和从事比特币应用开发的读者来说,是一份难得的资料。

图书特色

Hyperledger代码贡献者撰写,Hyperledger亚太区副总裁Julian Goldon、ChinaLedger技术委员会主任白硕以及多个区块链公司的CEO、CTO、科学家联袂推荐
零基础掌握Hyperledger Fabric的关键技术、工作原理和应用开发方法,多个案例实战并附项目源代码

图书前言

为何写作本书
近年来区块链技术逐步占据各大技术类网站的头条,各种基于区块链特性的想法和创新层出不穷。这些繁荣是区块链技术在幕后默默支撑的,可是人们经常忽略区块链的技术而把投资、融资、保值等金融属性和区块链画上了等号。其实区块链本质上还是一门技术。区块链技术源于比特币,经过近几年的发展,已经超越比特币逐步形成一门单独的技术体系。目前区块链技术已经渗透到各行各业中,比如区块链技术同大数据、人工智能等技术产生了让人意想不到的化学反应。我们有理由相信区块链技术在未来一定会成为IT基础技术之一,成为每个IT技术人员必备的基础技能。
同时我们也可以看到区块链技术在国内外的发展非常迅速。在国外,IBM发起了超级账本项目,并把超级账本项目的源码捐献给了Linux基金,借助社区的力量来发展。全球已经有将近200多个公司和组织加入了超级账本,成为超级账本项目的会员。当然其他巨头也随之跟进,微软早就和以太坊达成了战略合作协议。互联网巨头Google、社交媒体行业的龙头Facebook等在区块链领域均有所布局。
但是在繁荣的背后我们也应该看到危机,目前区块链技术在实际项目中的应用还存在不少问题。我们认为出现这种情况是因为目前区块链技术的实用化还存在以下障碍:
技术新,学习资料匮乏。区块链技术是最近几年刚刚兴起的一门综合技术,目前资料特别是中文资料还是比较缺乏的。
技术种类多,有一定的学习成本。区块链是一门综合型的技术,如果把每个单项技术列出来学习并不难,但是当把这些技术组合起来之后学习难度就大大增加了。
可借鉴的成功案例少。由于区块链技术是一门比较新的技术,因此目前缺少比较成功的案例。即使诸如IBM等巨头开发了一些成功案例,但是由于各种各样的原因,目前并没有公开,这些都给广大技术人员学习区块链技术特别是把区块链技术应用到具体项目中造成了一定的障碍。
这些问题的存在是我们编写“区块链开发实战”系列图书的目的,第一批有两本书同时面世,分别是基于Hyperledger Fabric和以太坊进行区块链开发实战。我们希望读者通过这两本书,在了解区块链的基本概念和核心技术的同时,能够将区块链技术更多应用到具体的项目中,解决现有技术无法解决的一些行业痛点。
读者对象
这两本书都非常适合区块链开发工程师、区块链架构师、区块链技术爱好者阅读。
其中:
Hyperledger Fabric部分更适合对Hyperledger Fabric和比特币技术感兴趣的相关技术人员;
以太坊部分更适合以太坊爱好者、以太坊DAPP开发者、比特币开发者等。
主要内容
《区块链开发实战:Hyperledger Fabric关键技术与案例分析》
这本书以Hyperledger Fabric和比特币这两个典型区块链技术平台的核心技术、开发方法和相关的项目案例为核心内容,此外,还提供了大量的命令脚本和代码示例供读者参考,力图使读者在最短的时间内掌握这两个平台的使用方法。
全书分为三个部分:
第一部分(第1~2章):首先从基本认识的角度对区块链进行了宏观上的介绍,包括区块链技术的起源和演进过程、区块链核心技术及其特性、区块链技术的缺点和常见错误认识,以及区块链技术的应用领域和常见的技术框架;然后介绍了进行区块链开发需要掌握的技术和使用的工具。
第二部分(第3~13章):主要讲解了Hyperledger Fabric的核心技术、原理、开发方法,以及多个项目案例。包括Hyperledger的全面介绍、Fabric的技术特性和快速入门、Fabric的核心模块和账号体系、Fabric的智能合约和编程接口、Fabric的系统架构与设计、Fabric项目案例的开发流程和方法,以及几个综合性的案例,如区块链浏览器、供应链金融、食品溯源等。
第三部分(附录):主要讲解了比特币的原理、运行方式、重要模块和编程接口,同时还讲解了一个比特币客户端的案例。
《区块链开发实战:以太坊关键技术与案例分析》
本书详细讲解了以太坊和比特币这两个典型的区块链技术平台的技术特性、原理、开发方法,同时也配有多个综合性的项目实例。
全书分为三个部分:
第一部分(第1~2章):首先从基本认识的角度对区块链进行了宏观上的介绍,包括区块链技术的起源和演进过程、区块链核心技术及其特性、区块链技术的缺点和常见错误认识,以及区块链技术的应用领域和常见的技术框架;然后介绍了进行区块链开发需要掌握的技术和使用的工具。
第二部分(第3~11章):主要讲解了以太坊的基本使用、技术特性、工作原理、开发方法和项目案例。首先介绍了以太坊的各种核心概念——编译、安装、运行,以及私有链的搭建和运行等基础内容;其次详细讲解了Solidity语法、Solidity IDE、Solidity智能合约的编译部署,以及Solidity的智能合约框架Truffle;最后讲解了DApps开发的方法和流程。
第三部分(附录及后记):主要讲解了比特币的原理、运行方式、重要模块和编程接口,同时还讲解了一个比特币客户端的案例。
为什么两本书有重复内容
大家可能注意到,两本书有部分内容是重复的,这么安排并不是为了凑篇幅,而是经过精心考虑的。主要原因如下:
以太坊和Hyperledger Fabric是两个不同的技术平台,涉及的技术都非常多,读者一般不会同时学习并在这两个平台上进行开发,于是我们没有将这两个主题的内容放到一本书中,这样便于读者按需选择。
两本书的前两章是相同的,因为这两章的内容对两个平台的用户来说是通用的,而且是都需要了解和学习的。
两本书关于比特币的内容是相同的,因为比特币系统是出现最早、运行最稳定的区块链技术平台,它的很多概念和核心技术对其他区块链平台有非常好的借鉴意义,值得所有区块链开发者学习。
主要特色
这两本书是作者在参与众多区块链项目之后提炼而成,具有以下特点:
既没有高深的理论也没有晦涩难懂的公式,力求通过最简单通俗的语言和大量的图表让读者能够了解区块链技术的精髓。
提供大量的命令脚本和相关程序的源代码文件,这些命令脚本和源代码文件都来自实际的项目,我们整理后展现给读者,通过这些命令和源代码读者可以了解到相关区块链技术平台的操作细节。
提供了大量的项目案例,这些项目案例能够帮助读者更好地理解区块链技术和业务场景的结合。
与国内专业的区块链技术社区——“区块链兄弟”深度合作,社区中有两本书的专题页面,读者可以到社区中与作者和其他读者进行深入交流。
本书相关源代码下载地址:https://github.com/blockchain-technical-practice。
致谢
这本书能够完成首先要感谢机械工业出版社华章分社的杨福川先生为本书的顺利出版付出的努力。同时我们要感谢区块链技术社区的全体“兄弟”,你们对区块链的探索和执着是我们创作的动力,你们对区块链的付出和努力给我们提供了创作的素材。在编写这本书的过程中无论是提问题的“兄弟”,还是回答问题的专家“兄弟”,感谢你们。最后我们还要感谢所有加入的区块链技术讨论组,在和你们的交流中我们发现了本书的价值。

本书编写小组
2018年2月于上海

上架指导

计算机\程序设计

封底文字

这是一本强调实战的书,也是目前区块链社区比较缺乏的书,本书的两位作者都是超级账本的开发者。我相信这本书能够很好地帮助读者快速掌握Hyperledger Fabric的开发技能,我推荐您阅读这本书。 
——Julian Goldon 超级账本亚太区副总裁

Hyperledger Fabric是联盟链领域的重要平台,为许多联盟链项目所采用,已成为联盟链开发事实上的首选平台。这一平台不仅实现了不含原生代币的基础账本和智能合约,而且在集约化的BaaS服务支持方面也做了大量铺垫,可以方便地在同一批硬件基础设施上为小型企业虚拟出不同的专用区块链来。
这是一本介绍如何在Hyperledger Fabric上进行应用开发的工具书。从一个程序员的视角,将在Hyperledger Fabric上从事开发工作必备的知识和技能做了系统性介绍,并附有大量实例。全书基础扎实、内容实用,适合区块链的企业/行业级应用开发者学习参考。
——白硕 ChinaLedger技术委员会主任/中科院博士生导师

联盟链适用于很多行业,有很多应用场景,Hyperledger Fabric技术已经成为联盟链开发的事实标准。本书理论与实战兼顾,专为没有区块链开发基础的读者量身打造,首先从理论角度讲解了Hyperledger Fabric的基本概念、实现原理、关键技术,然后讲解了如何基于Hyperledger Fabric开发应用,最后是多个相关的实战案例,循序渐进,通俗易懂。通过本书,相信读者能迅速掌握Hyperledger Fabric的相关技术和应用开发方法。
——李庆华 MATRIX链 CTO

本书理论与实践相结合,首先讲解了Hyperledger Fabric的架构、原理和核心技术,然后介绍了应用开发的方法,最后结合多个具体案例展示了如何应用Hyperledger Fabric开发区块链应用系统。内容翔实具体、深入浅出,更令人惊喜的是,读者从本书中不仅能学到如何使用区块链应用开发,还能品味到作者解决问题的技巧和对区块链的深入思考,是学习区块链应用开发实战的精品。
——钱汉涛 阿希链CTO

以太坊已成为公链技术最具竞争力的开放标准之一,活跃的开发者社区以及相对丰富的DApp类型促成了良好的应用生态,以太坊也极大地推动了区块链的发展。而以超级账本为代表的DLTs(分布式账本技术)则从企业层面补足了公链技术的一些不足,在受限环境中把分布式系统的优势发挥到极致。以太坊和超级账本技术的应用和发展,离不开像本书的4位作者这样的布道者和贡献者,他们无私地将自己在实践中总结出来的经验呈现在了这两本书中,对于区块链开发的初学者而言,具有很重要的学习和参考价值。
——陈浩 元界CTO

作者简介

冯翔、刘涛、吴寿鹤、周广益 编著:作者介绍
冯翔
资深区块链技术专家, IONChain(离子链)CTO,上海旺链科技区块链研究院负责人,Hyperledger核心项目核心代码开发者。中国区块链技术的早期探索者和传播者,创立了有广泛影响力的区块链技术社区“区块链兄弟”。已经参与过多个基于区块链技术的落地项目,现在阶段主要致力于区块链技术和传统行业的融合,尤其关注区块链技术和物联网技术的结合。
刘涛
上海旺链信息科技有限公司CEO,IONChain(离子链)创始人,致力于结合中国本土情况的区块链研究开发,现为复旦大学区块链研究生课程讲师。前埃森哲高级总监,在高科技制造、汽车、金融行业有超过15年的业务咨询和技术架构经验,曾担任华为、Alcatel-lucent、上汽通用、平安、中国移动高端外部顾问。

吴寿鹤
资深区块链技术专家, IONChain(离子链)首席架构师,HyperLedger核心项目开发人员,同时对以太坊相关技术有深入研究。是国内区块链技术领域的早期实践者和布道者,一直积极推动区块链技术的传播和应用落地,是国内知名区块链技术社区“区块链兄弟”的联合创始人,目前从事基于物联网的区块链底层基础平台的开发。
个人主页:http://gcc2ge.github.io
周广益
上海指旺金科CEO,中国区块链技术的早期探索者,36Kr、未央网、共享财经等媒体特约作家,现为复旦大学软件学院特聘讲师。

图书目录

前言
第1章 全面认识区块链 1
1.1 区块链技术的起源和解释 1
1.2 区块链的核心技术及其特性 2
1.2.1 区块链技术的特性 3
1.2.2 区块链的分布式存储技术特性 3
1.2.3 区块链的密码学技术特性 4
1.2.4 区块链中的共识机制 8
1.2.5 区块链中的智能合约 12
1.3 区块链技术演进过程 13
1.4 区块链技术的3个缺点 13
1.5 区块链技术常见的4个错误认识 14
1.6 区块链技术的应用领域 15
1.6.1 区块链在金融行业的应用 15
1.6.2 区块链在供应链中的应用 16
1.6.3 区块链在公证领域的应用 17
1.6.4 区块链在数字版权领域的应用 18
1.6.5 区块链在保险行业的应用 19
1.6.6 区块链在公益慈善领域的应用 21
1.6.7 区块链与智能制造 22
1.6.8 区块链在教育就业中的应用 23
1.7 区块链的其他常见技术框架 24
1.8 本章小结 25
第2章 实战准备 26
2.1 开发环境准备 26
2.1.1 操作系统的配置 26
2.1.2 Docker的使用 27
2.1.3 Git的使用 30
2.2 开发语言 30
2.2.1 GO语言 30
2.2.2 Node.js 32
2.3 常用工具 32
2.3.1 Curl 32
2.3.2 tree 33
2.3.3 Jq 33
2.4 本章小结 34
第3章 Hyperledger简介 35
3.1 Hyperledger综述 35
3.1.1 Hyperledger的项目背景 35
3.1.2 Hyperledger的项目成员 36
3.2 Hyperledger的体系结构 37
3.2.1 获取Hyperledger源代码并成为开发者 37
3.2.2 Hyperledger的9个正式项目 38
3.3 本章小结 43
第4章 Fabric快速入门 44
4.1 Fabric的技术特性 44
4.1.1 Fabric的多账本特性 44
4.1.2 Fabric的智能合约 45
4.1.3 Fabric的权限系统 46
4.1.4 Fabric的共识算法 47
4.2 Hyperledger中与Fabric相关的项目 47
4.3 Fabric的模块、安装和使用 48
4.3.1 Fabric的编译和安装 49
4.3.2 Fabric模块安装结果检查 50
4.3.3 利用Docker运行Fabric相关模块 51
4.4 快速运行一个简单的Fabric网络 53
4.4.1 Fabric环境准备 53
4.4.2 生成Fabric需要的证书文件 54
4.4.3 创始块的生成 56
4.4.4 Orderer节点的启动 59
4.4.5 Peer节点的启动 60
4.4.6 创建通道 64
4.4.7 Chaincode的部署和调用 65
4.5 本章小结 66
第5章 Fabric核心模块详解 67
5.1 Fabric的核心模块功能、通用选项和命令 67
5.1.1 Fabric核心模块及其功能 67
5.1.2 Fabric模块的通用选项和命令 68
5.2 Fabric模块的子命令、选项和配置文件 68
5.2.1 cryptogen 69
5.2.2 conf?igtxgen 74
5.2.3 conf?igtxlator 77
5.2.4 orderer 79
5.2.5 peer 85
5.3 Fabric模块在系统中的作用 92
5.3.1 peer模块在Fabric系统中的作用 92
5.3.2 orderer模块在Fabric系统中的作用 95
5.4 Fabric数据安全传输的方式 95
5.4.1 Fabric中orderer模块TLS设置 95
5.4.2 Fabric中peer模块TLS设置 96
5.5 本章小结 98
第6章 Fabric的账号体系 99
6.1 Fabric账号简介 99
6.1.1 Fabric账号是什么 99
6.1.2 什么地方需要使用Fabric的账号 101
6.2 基于cryptogen的账号管理体系 103
6.3 Fabric账号服务器:Fabric-ca 106
6.3.1 Fabric-ca的编译和安装 107
6.3.2 fabric-ca-server的启动和配置 108
6.3.3 fabric-ca-client的使用 115
6.4 将fabric-ca-server绑定到现有项目中 117
6.5 本章小结 120
第7章 Fabric的智能合约详解 121
7.1 Chaincode初探 121
7.2 快速编写和运行一个Chaincode 122
7.3 Golang版本的Chaincode的代码结构 125
7.3.1 Chaincode源代码的基本结构 125
7.3.2 shim包的核心方法 127
7.3.3 ChaincodeStubInterface接口中的核心方法 128
7.4 Chaincode相关的操作命令和选项 136
7.5 如何通过Chaincode进行交易的endorse 140
7.6 Chaincode的调试方法 142
7.6.1 Chaincode在Docker容器之外的运行 142
7.6.2 Chaincode在IDE中的调试 145
7.7 本章小结 148
第8章 Fabric和Fabric-ca的编程接口 149
8.1 Fabric接口的通信协议和功能划分 149
8.2 Fabric Nodejs SDK的使用 151
8.2.1 如何获取Fabric Nodejs SDK源代码 151
8.2.2 快速构建基于Nodejs的Fabric客户端 151
8.2.3 Fabric Nodejs SDK中TLS的设置 159
8.3 Fabric Java SDK 160
8.3.1 Fabric Java SDK的安装 160
8.3.2 Fabric Java SDK的常用接口 161
8.3.3 Fabirc Java SDK中TLS的设置 169
8.4 Fabric Go SDK 170
8.4.1 Fabric Golang的安装 170
8.4.2 创建配置文件 170
8.4.3 一个简单的Golang访问Fabric的例子 171
8.4.4 Fabric Golang SDK其他用法 174
8.4.5 Fabric Golang SDK的背书操作 176
8.5 本章小结 176
第9章 Fabric系统架构设计 177
9.1 Fabric架构中的组织规划 177
9.1.1 确认组织 178
9.1.2 组织的管理方式 178
9.2 Fabric系统的结构 179
9.2.1 Fabric系统的逻辑结构 179
9.2.2 Fabric系统的物理结构 181
9.3 Fabric中Channel的设计 181
9.4 Chaincode 182
9.5 数据访问层 183
9.6 历史遗留系统的兼容 185
9.7 Fabric系统的维护和管理 186
9.8 本章小结 187
第10章 Fabric开发实战:开发流程与实例详解 188
10.1 Fabric项目的开发流程 188
10.2 Fabric项目开发实例详解 191
10.2.1 系统初始化 191
10.2.2 Orderer节点的初始化和启动 193
10.2.3 启动第一个Peer 198
10.2.4 Channel的创建和加入 200
10.2.5 启动当前组织的Fabric-ca 202
10.2.6 测试Chaincode的部署和开发 202
10.2.7 客户端的开发 203
10.2.8 启动本组织的其他Peer 205
10.2.9 其他组织Peer节点的加入 208
10.2.10 背书交易的测试 210
10.2.11 非初始化组织的加入 214
10.3 本章小结 220
第11章 基于Fabric的区块链浏览器项目实战 221
11.1 项目介绍 221
11.2 开发过程 222
11.2.1 项目准备 222
11.2.2 项目开发 222
11.3 本章小结 229
第12章 基于Fabric的供应链金融项目实战 230
12.1 供应链金融的背景知识和痛点 230
12.1.1 供应链金融的背景知识 230
12.1.2 供应链金融的痛点 231
12.1.3 用Fabric解决供应链金融痛点的方法 231
12.2 用Fabric构建供应链金融系统的方法 232
12.2.1 系统的设计 232
12.2.2 系统环境搭建 233
12.2.3 客户端开发 239
12.3 本章小结 244
第13章 基于Fabric的食品溯源项目实战 245
13.1 数据溯源的背景知识和痛点 245
13.1.1 数据溯源的背景知识 245
13.1.2 数据溯源的痛点 245
13.2 Fabric如何优化数据溯源系统 246
13.3 Fabric如何构建数据溯源系统 246
13.3.1 系统环境搭建 247
13.3.2 客户端开发 262
13.4 本章小结 271
附录A 比特币的原理和运行方式 272
附录B 比特币的bitcoin-cli模块详解 282
附录C 比特币系统的编程接口 292
附录D 比特币系统客户端项目实战 297
附录E 区块链相关术语 304

教学资源推荐
作者: 郑阿奇 梁敬东
作者: [美] 本贾尼?斯特劳斯特鲁普 (Bjarne Stroustrup)著
作者: 钱晓捷 编著
参考读物推荐
作者: [西]葛罗瑞亚·布埃诺·加西亚(Gloria Bueno Garcia) 奥斯卡·德尼茨·苏亚雷斯(Oscar Deniz Suarez) 何塞·路易斯·埃斯皮诺萨·阿兰达(Jose Luis Espinosa Aranda) 等著
作者: 吴永辉 王建德 编著
作者: Kate Gregory