Foreword序 一
作为Linux基金会托管下增长最快的项目,超级账本(Hyperledger)在过去的一年成长十分迅速。这主要归功于Linux基金会开放、公平的治理模式,就是让各种规模的组织、开发者社区和技术专家可以达成最高水准的合作,以公开、公平和结构化的方式进行迭代。我们珍视每一个贡献,也鼓励更多的组织和开发者加入其中。
2017年7月,超级账本(Hyperledger)迎来了Fabric 1.0版本的正式发布,这是首个可用于生产环境部署的商业级应用,它历经了上百个概念验证。截至发布时间,共有27个组织、159位开发者参与并作出贡献。而在之后的每一天,这个数字一直都在上升。
我也很欣喜地看到,自Fabric 1.0版本发布以来,越来越多的企业、组织或个人对此产生了浓厚的兴趣,他们通过各种渠道,想要一探Fabric的究竟。因此,本书的面世可谓恰逢其时。
书中深入浅出地讲解了Fabric的内部运行原理,并且详细解答了Fabric 0.6和Fabric 1.0版本的区别。更难得的是,关于如何搭建Fabric系统,以及如何基于Fabric做区块链应用的开发,书中都有清楚、详尽的步骤演示,易于理解,很适合作为Fabric初学者教材,帮助他们快速上手。
本书集合了多方共同的心血,由Linux基金会会员、智链ChainNova的一线技术团队主笔撰写,他们不仅是超级账本中国社区的主要贡献者,还长期奋战在市场前线,对商业应用环境有相当的了解,相信从书中内容的翔实程度可见一斑。
——Brian Behlendorf,超级账本执行董事
序 二Foreword
区块链技术是当今最具影响力的创新技术之一,得到产业界、学术界和投资领域的广泛关注。
Linux基金会超级账本(Hyperledger)开源项目创立于2015年12月,目前已经发展到160余个成员单位。超级账本项目的愿景是借助项目成员和开源社区的通力协作,共同制定并建立一个开放、跨产业、跨国界的区块链技术开源标准。它通过创建通用的分布式账本技术,协助组织扩展、建立行业专属应用程序以及平台和硬件系统来支持成员各自的交易业务。
董宁先生这本书深入浅出地描绘了HyperLedger技术与应用,为深度探索区块链技术和应用案例提供了很好的参考,是一本不可多得的技术参考书。
本书首先回顾了区块链发展的历史,展望了区块链的商用前景,对超级账本的基础环境、系统架构、交易流程、消息协议、策略管理和访问控制等进行了详细介绍。然后,进一步讨论了Gossip协议、分布式账本存储、共识机制、多链和多通道、基于数字证书的成员管理、智能合约等关键技术。最后,介绍了超级账本的应用开发模型、开发案例和应用部署方面的主题。这是我迄今为止所见关于超级账本技术和应用非常有参考意义的一本技术书籍,值得向广大区块链的研究者与开发同行推荐。
董宁先生长期以来致力于区块链技术的研究与推广,也是Hyperledger中国社区最有活力的推动者之一。相信本书的出版会对社区的发展和区块链技术的应用起到积极的推动作用。
陈钟
北京大学信息科学技术学院教授
北京大学金融信息化研究中心主任
2017年12月于燕园
Foreword序 三
从2008年中本聪在论文中提到区块链开始到区块链结合各类产业应用场景落地,区块链以不可思议的速度发展起来,经常会有人在问区块链究竟是什么。可以说,区块链本质上是一种创建信任的技术机制,通过区块链可以跨机构执行可信的交易。
当下和未来,区块链的用武之地将远远超过加密货币,因此为了适应大多数商业应用的需求,设计与开发适合商用的区块链平台迫在眉睫,“超级账本”(Hyperledger)应运而生。作为一个由IBM等世界著名大企业领衔的商业化联盟链项目,Hyperledger是目前代码数量最大、社区参与度最高的区块链开源项目。更重要的是,该项目也标志着区块链从单纯的开源技术发展到了被主流机构和市场认可的阶段。这对于区块链相关产业的发展意义深远。
区块链数学上的可信,不等于工程实现上的可信。为此,中国信通院联合央行数字货币研究所以及30多家企业,共同讨论制定了可信区块链标准。2017年9月对包括智链ChainNova在内的9家企业的区块链进行了第一轮评测,并且于2017年10月正式在国际标准组织立项。“因为透明,所以可信”,可信区块链标准已经起到了引领和推动我国与全球区块链底层基础设施健康有序发展的目的。在这个过程中,通过与本书作者之一、前IBM大中华区IT经济学负责人和IBM区块链社区发起人、智链CEO董宁的接触,能感觉到他对企业级区块链和Hyperledger的未来充满信心。对于金融科技和互联网业内人士来说,不懂区块链可能冒着被潮流淹没的风险;对于有志于从事区块链技术的人士来说,不学习Hyperledger可能错失与极有可能占据市场领导地位的金融科技结缘的机会。
坦诚地说,本书并非市场上第一本区块链的书。事实上,我了解到在Hyperledger 0.6版本盛行之时,本书的作者就曾经完成了本书的初版。但是由于后来Hyperledger推出了1.0版本,本着对读者极其负责任的态度,他们又全面重写了本书,使读者能够完全跟上Hyperledger发展的最新状态。本书的目的也不是蜻蜓点水地介绍一些Hyperledger入门知识,而是通过阅读本书能让读者达到一定的水平,甚至可以加入区块链产业应用中来,为区块链的发展和实践落地添砖加瓦。同时也希望通过作者的努力,能够给有志于在Hyperledger平台进行开发,并有所进展的程序开发人员带来帮助。
何宝宏
中国信息通信研究院云计算与大数据研究所所长
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社区成员,参与超级账本社区的日常工作,了解超级账本发展和技术细节的第一手资料。本书以Fabric 商用正式版本1.0作为底层平台,其中也凝结了我们在Hyperledger开发理论和实际操作方面的经验。
本书深入讨论Hyperledger的核心技术,帮读者分析原理、关键实现与使用,是为数不多深入探讨和研究区块链的书籍之一。
我们的目标是把本书作为高校、科研院所、职业培训、企业技术学习的教材,向社会普及Hyperledger,培养更多的Hyperledger开发人才。
读者对象
区块链从业者
区块链应用开发人员
其他区块链技术爱好者(金融/Fintec从业者、产品经理、企业管理者等)
计算机及相关专业师生
如何阅读本书
本书共有12章内容,大体可以分为三篇内容。
准备篇(第1~2章),介绍区块链的基本概念,感受区块链的魅力。
第1章 本章是区块链技术与生态的概览,涉及区块链的基本概念、演进、主流平台,并着重分析企业级区块链平台的应用场景,有助于读者对区块链和Hyperledger Fabric 1.0(以下简称Fabric)的设计理念有整体性的了解。
第2章 本章介绍Fabric的安装、部署与调试。抛开复杂的底层技术细节,简化复杂的部署过程,快速体验Fabric的强大功能,以便有直观的感受。
核心篇(第3~9章),从系统架构开始讲解内部实现机制。
第3章 本章基于Fabric 1.0讲解区块链的架构,这是后续章节的基础,高屋建瓴地看待各个部件之间的关系和运行逻辑。本章涉及系统逻辑架构、网络节点架构、典型的交易流程、消息协议结构、策略管理和访问控制等内容,后面章节会从技术角度逐一“拆解”。
第4章 本章介绍基于Gossip的P2P数据分发机制,包括节点启动与成员管理、主节点选举与基于反熵的状态同步、身份认证与管理、多路分用与分区处理过程、消息的多种验证策略等。
第5章 本章介绍最为基础的分布式账本技术,它涵盖账本数据、索引数据、状态数据、历史数据等的实现技术。
第6章 本章介绍如何在排序服务上实现多通道的数据隔离,包括创建通道、节点加入通道等。排序服务采用插件化设计,可以根据业务场景的需求采用不同的共识算法。本章后面的内容详细介绍了排序服务的接口,以及实现了排序服务接口的Solo和Kafka模式。
第7章 本章介绍Fabric 1.0支持的多链及其内部的实现,多个链同时运行是一个系统工程,本章从数据存储、链码、命令行工具和SDK实现等多个方面分析如何支持多链。
第8章 本章介绍成员管理机制。它分为两个部分,第一部分详细介绍了MSP机制,包括MSP成员的验证、目录结构和配置最佳实践等;第二部分介绍可选的Fabric CA,包括服务端的安装部署和客户端的使用,还介绍了服务端提供的RESTful接口。
第9章 本章介绍Fabric 1.0上智能合约的实现。包括的内容有链码的生命周期管理、内置的系统链码、链码的相互调用、背书节点和链码的有限状态机等。
应用篇(第10~12章),从安装部署和应用开发的角度,通过一个票据背书的案例讲解如何基于Hyperledger Fabric 1.0开发区块链应用。
第10章 本章介绍Fabric 1.0的应用开发模型。从应用开发的角度看,开发者需要关注两部分:一部分是基于不同语言的SDK开发和区块链网络交互的应用程序;另一部分是实现超级账本的智能合约。本章详细介绍HFC SDK各个模块及其主要功能,链码的主要接口及其功能。
第11章 本章介绍多种Fabric 1.0的部署方式,包括分别基于Vagrant、Virtualbox、Docker的运行环境,以及BYFN脚本的使用。详细说明如何手动构建Fabric 1.0网络等。
第12章 本章通过一个票据背书示例,讲解如何实际开发一个基于Fabric 1.0的区块链应用。通过本章的实践,读者能够掌握区块链应用开发的方方面面,然后就可以动手开发具体的项目了。
读者反馈与勘误
欢迎读者朋友反馈,请让我们知道你对本书的看法——你喜欢哪些地方,不喜欢哪些地方。读者反馈对于我们很重要,因为这将帮助我们继续写作使你获益的书籍。反馈意见请发送E-mail至jessie@chainnova.com,并在邮件主题中指明书名,我们将尽力解决问题。如果你有专长领域,并对写书或为书做出其他贡献感兴趣,请访问www.chainnova.com参见作者指南。
特别致谢
首先感谢本书的其他作者——张增骏老师、朱轩彤老师和陈剑雄老师。他们在工作之余,挤出宝贵时间为本书贡献了他们对区块链技术和Hyperledger的理解和洞察。特别感谢张增骏老师在工作本身比较繁忙的前提下,为本书花费了很多精力,他不仅在内容上积极供稿,还在审定、修改和校正方面下了很多工夫。朱轩彤老师博闻强识,本身具有很强的行业背景,对科技产业的发展又格外关注,这些在本书第1章中得到了充分体现。智链首席科学家陈剑雄也对本书的内容给出了很多宝贵的意见和建议,同时对本书合作的达成给予了支持。
万分感谢超级账本执行董事Brian Behlendorf先生,北京大学陈钟教授和中国信息通信研究院云计算与大数据所何宝宏所长在百忙之中拨冗为本书做序,让我感觉特别荣幸。他们在各自领域都是最顶尖的专家,同时对区块链技术都有深刻且独到的见解。还有苏州同济金融科技研究院马小峰院长、中国电子学会区块链专委会孙贻滋秘书长和超级账本中国技术工作组杨保华主席为本书写来热情洋溢的推荐,令人备感温暖。
在成书的过程中,和我一起工作和合作的很多专家对本书都给予了不同程度的支持和帮助,像Linux基金会超级账本亚太区副总裁Julian Gordon和中国地区顾问龙文选先生,北京大学(天津滨海)新一代信息技术研究院马修军副院长,中国信息通信研究院云计算与大数据所魏凯主任和卿苏德博士,IBM的各位领导和专家,以及其他各个单位的领导和大咖,在此抱歉不能一一尽述。
非常感谢机械工业出版社华章公司的编辑高婧雅,她的敬业精神和编辑效率令我由衷敬佩,她的反馈、建议、鼓励和帮助引导我们克服诸多困难完成全部书稿。同时,本书的推广得到了CSDN及其副总裁孟岩先生、InfoQ及其总编辑郭蕾先生这些好朋友的大力支持。
最后,因为工作和写作,牺牲了很多本该陪伴家人的时间。我要特别感谢我的家人长期以来对我的默默支持和理解。
谨以本书献给我最亲爱的家人,多年以来帮助、支持我的师友,以及众多热爱区块链技术的朋友!
董宁
2017年12月