本书系统地介绍了超级账本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.2.1节所述”,应该是“按第1.2.2节所述”
Go语言环境安装时解压缩命令中的go语言包版本与实际不符,命令中是1.8.3,但应该是1.10.1
文章中使用go get命令来下载fabric源码,应该使用git clone https://github.com/hyperleger/fabric.git命令来下载,同时fabric的官网文档也是使用的git clone命令
完成之后会在 bin 目录下生成一个……
应将 bin 改为 aberic
在.com/tls/……中的“在”字多余,应去掉