HyperLedger Fabric开发实战——快速掌握区块链技术
  • 推荐11
  • 收藏12
  • 浏览1.3K

HyperLedger Fabric开发实战——快速掌握区块链技术

杨毅 (作者)  宋亚东 (责任编辑)

  • 书  号:978-7-121-34173-1
  • 出版日期:2018-06-01
  • 页  数:296
  • 开  本:16(185*235)
  • 出版状态:上市销售
  • 维护人:宋亚东

相关图书

强化学习实战:强化学习在阿里的技术演进和业务创新

笪庆 曾安祥 (作者)

近年来,随着与深度神经网络的结合,强化学习在以Atari2600和围棋为代表的游戏领域取得了突破性的进展。与学术界关注的方向不同,在阿里巴巴,我们则将重点放在推...

 

深度学习之美:AI时代的数据处理与最佳实践

张玉宏 (作者)

深度学习是人工智能的前沿技术。本书深入浅出地介绍了深度学习的相关理论和实践,全书共分16章,采用理论和实践双主线写作方式。第1章给出深度学习的大图。第2章和第3...

 

机器学习vs复杂系统

许铁 (作者)

本书从跨学科视角来看待人工智能这个技术性的学科。围绕用数学模型预测未来这一主题,介绍算法,主要包括现在流行的机器学习和深度学习算法,以及算法要解决问题本身的复杂...

¥59.00

自然语言处理理论与实战

白宁超 (作者)

自然语言处理是什么?谁需要学习自然语言处理?自然语言处理在哪些地方应用?相关问题一直困扰<br>着不少初学者。针对这一情况,作者结合教学经验和工程应用编写此书。...

¥79.00

Python带我起飞——入门、进阶、商业实战

李金洪 (作者)

本书针对Python 3.5 以上版本,采用“理论+实践”的形式编写,通过大量的实例(共42 个),全面而深入地讲解“Python 基础语法”和“Python ...

¥79.00

深度学习之PyTorch实战计算机视觉

唐进民 (作者)

计算机视觉、自然语言处理和语音识别是目前深度学习领域很热门的三大应用方向,本书旨在帮助零基础或基础较为薄弱的读者入门深度学习,达到能够独立使用深度学习知识处理计...

¥79.00
本书系统地介绍了超级账本HyperLedger Fabric v1.1架构的设计和应用方法,包括环境及源码部署、Solo多机部署、Kafka集群部署、智能合约编写等。同时,针对第三方可插拔式插件CouchDB实战应用,Java-SDK的应用、编写方案和具体接口执行策略进行了详细讲解。另外,本书以搭建一个反欺诈区块链平台项目为例进行了实战演练,读者可以快速掌握区块链技术。
本书适合区块链系统开发人员阅读,需要有一定的面向对象语言的基础,也可供对开发区块链系统感兴趣的高校师生参考。
快速掌握HyperLedger Fabric 1.1应用开发,手把手部署引导、层层深入,帮助你轻松上线区块链项目
杨毅,9年软件系统开发经验,阿里云MVP,先后从事Android、iOS、JAVA后台服务及区块链相关开发,获得过多项国家专利,上线过多个基于区块链的项目。目前专注于区块链技术应用及落地场景等方向。
HyperLedger Fabric最初是由Digital Asset和IBM公司贡献的、由Linux基金会主办的一个超级账本项目,它是一个目前非常流行并广为人知的区块链网络框架的实现方案。作为一种基于模块化架构开发应用程序或解决方案的基础,HyperLedger Fabric支持如共识和会员服务等即插即用的组件。HyperLedger Fabric利用容器技术来运行称为“chaincode”的智能合约,该合约包含了系统的应用程序逻辑。
为什么写作本书
区块链由于去中心化、开放性、自治性、信息不可篡改及匿名性等特征而受到广泛关注,且目前正处在上升势态。抛开炒作的代币项目,应用于行业联盟链或直接搭建私链的项目,采用HyperLedger Fabric作为底层平台无疑是最好的选择之一。
本人从接触HyperLedger Fabric项目以来,经历了其0.6版本到1.1版本的数次迭代。因为早期中文资料稀缺,并且0.6版本到1.0版本是一个跨度非常大的迭代,导致早期的大部分部署和应用经验失去作用,不得已再次从1.0版本开始从头学习。当时中文资料极为有限,且大多数都是单篇翻译或纯粹的概念讲解,导致我一直没有找到入门的头绪,只能不断地从官方文档中汲取知识,并成功搭建了基于Kafka类型的集群网络。
有了集群的经验,加深了自己对HyperLedger Fabric整个网络事务流程的理解,并以此为基础顺利搭建了基于Fabric-SDK-Java的客户端项目。也就在这个时候,开始有了写相关博客的想法,并在博客园上发布了第一篇博客,也是从零开始系列文章的第一篇,开始介绍自己的开发历程和部署经验,希望能通过这样的方式帮助更多的开发伙伴加入HyperLedger Fabric大家庭。再后来又建立了“区块链学习分享”的微信订阅号,也通过微信号建立了一个纯技术讨论分享的HyperLedger Fabric等区块链相关交流群,并在这样的机缘下结识了电子工业出版社宋亚东老师,并正式开始编写本书。
在写书之前我一直在梳理博客的内容,为了真实地还原生产场景,还自费租赁了15台服务器用于测试。在已有博文的基础上,外加后来编写的新文档,我比较顺利地完成了本书的编写工作,且书中的项目都依托于所租赁服务器来完成演练,每一步都基于真实情况和场景中的操作。在此过程中,自己对HyperLedger Fabric也有了新的认识和理解。
本书主要以HyperLedger Fabric案例为引,层层深入,从单机单节点到Solo多机组网再到Kafka集群部署,其中穿插文档讲解加深读者的理解。与一些偏概念性质的区块链教程类书籍不同,我希望能通过本书帮助读者实现基于HyperLedger Fabric的区块链实践落地。
本书主要内容
本书以干货为主,文档为辅,基于HyperLedger Fabric v1.1版本进行讲解。总计10章,每章主要内容介绍如下:
第1章是基本环境部署,包括内网和外网的不同方案,以及内核处理等。
第2章是HyperLedger Fabric及环境部署,先是用文档讲述了Fabric相关的介绍和主要功能点,接着分析了源码部署和镜像处理方面的问题。
第3章带着读者一步步跑通官方的e2e_cli案例,并在随后对该案例进行了分析。
第4章开始,手动部署一次单机多节点网络。
第5章跟随前章的脚步,手动部署一次Solo多机网络环境。
第6章继续深入,搭建基于Kafka的集群网络。
第7章以文档为主,着重讲解如何编写智能合约及有关智能合约的用法。
第8章详细介绍CouchDB的使用,并推荐使用CouchDB。
第9章讲解在Fabric发布1.0版本之后的对外客户端调用方式、客户端对SDK的使用和相关源码。
第10章以一个简单的案例做演练,在数据链上用到了智能合约,对数据提取则提供了另一种思路。
读者对象
这是一本基础讲解类的书,写本书是为了帮助更多的新人入门。所以,本书适合正在寻求HyperLedger Fabric入门的新人阅读,也适合中、高级开发人员用作工具书参考。
在阅读本书之前,读者需要具备以下基础知识:
 具有一定的Linux操作系统基本命令的常识。
 有Java/Go等面向对象语言的基础,其中智能合约用Go语言编写,SDK则用到了Java。如果有这方面的基础,则有助于阅读本书。
致谢
在入门及编写本书的时候,有许多人给予了我鼓励和支持。
首先感谢我的妻子,我在开始学习HyperLedger Fabric时遇到了很多困难,经常熬夜加班,她始终体谅我,鼓励并支持我。在我写书的时候她不遗余力地帮我查阅相关资料以便我能够更顺利地完成书稿。
我还要感谢我的领导,也是我的好友王海林,正是他给了我研究学习HyperLedger Fabric的机会,并在我遇到困难时帮我逐条分析,厘清思路。他也给予了我在公司最大限度的研发条件和时间,让我在最短的时间里完成了一次自我蜕变。
我还要感谢电子工业出版社的宋亚东老师,感谢他一直以来对我的支持和鼓励,感谢在我早期编写书稿的过程中对内容的编排和规范给予了很多帮助。也感谢电子工业出版社所有参与本书出版工作的老师,是你们的辛勤付出让本书成功出版。
最后,我要感谢我博客的读者及微信群里的朋友们,正是与你们一次次地沟通和探讨,让我不断提升自我,也鞭策我不断前行。
由于我水平有限,书中不足及错误之处在所难免,敬请专家和读者给予批评指正。
杨毅
2018年5月

目录

第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 FabricUser 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

本书勘误

印次
  • 页码:5  •  行数:16  •  印次: 1  •  修订印次: 1

    “安装完成后。按第1.2.1节所述”,应该是“按第1.2.2节所述”

    维x 提交于 2018/7/12 23:38:20
    宋亚东 确认于 2018/7/17 15:06:13
  • 页码:8  •  行数:21  •  印次: 1  •  修订印次: 1

    Go语言环境安装时解压缩命令中的go语言包版本与实际不符,命令中是1.8.3,但应该是1.10.1

    维x 提交于 2018/7/12 23:40:14
    宋亚东 确认于 2018/7/17 15:09:39
  • 页码:21  •  行数:7  •  印次: 1  •  修订印次: 1

    文章中使用go get命令来下载fabric源码,应该使用git clone https://github.com/hyperleger/fabric.git命令来下载,同时fabric的官网文档也是使用的git clone命令

    godlovesme 提交于 2018/8/8 15:09:48
    宋亚东 确认于 2018/8/15 11:14:00
  • 页码:67  •  行数:15  •  印次: 1  •  修订印次: 1

    完成之后会在 bin 目录下生成一个……
    应将 bin 改为 aberic

    buaalsy 提交于 2018/7/19 14:59:59
    宋亚东 确认于 2018/7/23 10:38:07
  • 页码:70  •  行数:倒数20  •  印次: 1

    在.com/tls/……中的“在”字多余,应去掉

    宋亚东 提交于 2018/7/23 10:42:28
    宋亚东 确认于 2018/7/23 10:43:15

读者评论

  • 求解答问题,感激不尽:第四章部署单机多节点网络时,容器均已启动,执行第76页创建channel命令时报错:Error: got unexpected status: SERVICE_UN**AILABLE — will not enqueue, consenter for this channel hasn’t started yet

    lawchan发表于 2018/9/20 10:24:16
  • 您好,第五章solo模式,peer结点,创建channel时报错:Error: got unexpected status: BAD_REQUEST — error authorizing update: error validating DeltaSet: invalid mod_policy for element [Policy] /Channel/Application/Writers: mod_policy not set
    请问这个是怎么回事呢?

    hjzdx发表于 2018/9/16 11:58:12
  • 第九章j**a-sdk中SDK代码用的是eclipse,请问去哪里获得本书说描述的eclipse中的代码。

    还好发表于 2018/9/7 15:43:08
  • 4.5章 初步接触智能合约,在加载chaincode_example02.go文件,报错,找不到该文件路径,可以帮忙看下吗?

    hwatu发表于 2018/9/5 15:56:12
  • 第十章项目演练的源码没有找到,能否提供

    快乐的蘑菇发表于 2018/8/29 9:27:38