猜你喜欢
深度探索区块链:Hyperledger技术与应用

深度探索区块链:Hyperledger技术与应用

书籍作者:张增骏 ISBN:9787111589327
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:8118
创建日期:2021-02-14 发布日期:2021-02-14
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介

本书由超级账本执行董事Brian Behlendorf领衔推荐,区块链一线落地实践团队、Hyperleger会员智链骨干团对撰写。深入讲解Hyperledger Fabric 1.0的架构、执行逻辑、核心功能实现、从零部署,并以票据案例为例,讲解具体开发实践,穿插开发所需的*佳实践和遇到的问题解决。

本书分三篇,共12章内容。

准备篇(第1~2章),高度浓缩、信息量大的第1章,揭示区块链的价值、核心理念、演进、主流平台、商用场景。第2章进入实践环节,涵盖安装、部署与调试,让读者初步直观感受区块链,培养学习和实践的兴趣。

核心篇(第3~9章),先从Fabric1.0架构开始讲解,方便读者了解整体结构与运作逻辑,带着问题与轮廓去阅读,事半功倍。第4~9章讲解内部实现机制,该篇并不点到为止,而是深入到底层实现原理层面,让读者透彻了解Fabric的设计与实现细节,该篇是理解区块链设计与实现的关键所在,也是日后做好应用开发的基础,有了问题可以自己动手解决。

涵盖以下几个方面:

区块链架构、组件关系与运行机制总览;

Gossip协议与P2P数据分发机制;

分布式账本数据相关的存储技术;

共识机制及其可插拔的架构设计;

如何实现数据隔离的多链与多通道;

基于数字证书的成员管理服务实现与使用;

智能合约实现、交互,以及有限状态机。

应用篇(10~12章),从安装部署、开发模型和应用开发的角度,以一个票据背书的案例讲解如何基于Hyperledger Fabric 1.0开发区块链应用,以完整地掌握区块链应用开发,动手实践具体的项目。


作者简介

张增骏 智链ChainNova技术总监和架构师。十余年软件开发和项目管理经验,设计并实现了多个区块链项目,带领团队获得“2017可信区块链峰会”唯*非金融类*佳案例奖。中国信通院可信区块链专家委员会成员,参与讨论并推动可信区块链测试标准的制定,多次受邀到高校与企业分享与推动区块链落地工作。曾任绿盟科技PDT经理,带领团队研发的远程安全评估系统(RSAS)连续多年国内排名*一,广泛应用于多个重点领域。目前关注区块链、网络安全、大数据、云计算和人工智能等领域。


董宁 智链 ChainNova科技公司CEO,北京大学(天津滨海)新一代信息技术研究院金融科技研究中心主任。曾任IBM大中华区IT经济学负责人,参与过数家商业银行和金融机构核心系统的设计建设,具有多年金融行业的商业洞察。毕业于北京大学信息科学技术学院智能科学系。


朱轩彤 清华大学硕士,中国社会科学院数量经济与技术经济研究所博士生,专注于技术经济研究。在政府及国际组织有丰富的工作经验。


陈剑雄 智链ChainNova首席科学家,原金山云技术VP,中科院计算与通信工程学院硕士。多年大规模集群系统研发经验,参与多个区块链核心系统设计和应用。


编辑推荐

超级账本执行董事Brian Behlendorf领衔推荐,资深一线区块链专家联合撰写,是深度了解区块链和Hyperledger技术的扛鼎之作

深度剖析区块链框架Hyperledger Fabric 1.0的架构、核心技术、部署与应用开发


前言

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至[email protected],并在邮件主题中指明书名,我们将尽力解决问题。如果你有专长领域,并对写书或为书做出其他贡献感兴趣,请访问www.chainnova.com参见作者指南。

特别致谢

首先感谢本书的其他作者——张增骏老师、朱轩彤老师和陈剑雄老师。他们在工作之余,挤出宝贵时间为本书贡献了他们对区块链技术和Hyperledger的理解和洞察。特别感谢张增骏老师在工作本身比较繁忙的前提下,为本书花费了很多精力,他不仅在内容上积极供稿,还在审定、修改和校正方面下了很多工夫。朱轩彤老师博闻强识,本身具有很强的行业背景,对科技产业的发展又格外关注,这些在本书第1章中得到了充分体现。智链首席科学家陈剑雄也对本书的内容给出了很多宝贵的意见和建议,同时对本书合作的达成给予了支持。

万分感谢超级账本执行董事Brian Behlendorf先生,北京大学陈钟教授和中国信息通信研究院云计算与大数据所何宝宏所长在百忙之中拨冗为本书做序,让我感觉特别荣幸。他们在各自领域都是最顶尖的专家,同时对区块链技术都有深刻且独到的见解。还有苏州同济金融科技研究院马小峰院长、中国电子学会区块链专委会孙贻滋秘书长和超级账本中国技术工作组杨保华主席为本书写来热情洋溢的推荐,令人备感温暖。

在成书的过程中,和我一起工作和合作的很多专家对本书都给予了不同程度的支持和帮助,像Linux基金会超级账本亚太区副总裁Julian Gordon和中国地区顾问龙文选先生,北京大学(天津滨海)新一代信息技术研究院马修军副院长,中国信息通信研究院云计算与大数据所魏凯主任和卿苏德博士,IBM的各位领导和专家,以及其他各个单位的领导和大咖,在此抱歉不能一一尽述。

非常感谢机械工业出版社华章公司的编辑高婧雅,她的敬业精神和编辑效率令我由衷敬佩,她的反馈、建议、鼓励和帮助引导我们克服诸多困难完成全部书稿。同时,本书的推广得到了CSDN及其副总裁孟岩先生、InfoQ及其总编辑郭蕾先生这些好朋友的大力支持。

最后,因为工作和写作,牺牲了很多本该陪伴家人的时间。我要特别感谢我的家人长期以来对我的默默支持和理解。

谨以本书献给我最亲爱的家人,多年以来帮助、支持我的师友,以及众多热爱区块链技术的朋友!


董宁  

2017年12月 


目录

序一

序二

序三

前言

第一篇 准备篇

第1章 区块链概述 2

1.1 区块链的前世今生 2

1.1.1 区块链的历史起源——比特币 2

1.1.2 欢迎来到区块链的世界 3

1.1.3 区块链演进趋势 4

1.2 区块链概念 5

1.2.1 区块链本质 6

1.2.2 区块链工作原理 6

1.2.3 区块链技术特点 7

1.2.4 区块链层次模型 8

1.2.5 区块链共识算法 8

1.2.6 区块链并不一定去中心化 9

1.3 区块链技术平台 10

1.3.1 比特币 10

1.3.2 以太坊 11

1.3.3 瑞波 13

1.3.4 区块链商用平台:超级账本 13

1.3.5 区块链技术平台比较 15

1.4 区块链的商用之道 15

1.4.1 区块链的2.0时代:商用区块链 15

1.4.2 超级账本:商用区块链的“第五元素” 17

1.4.3 区块链的商业应用场景 17

1.5 本章小结 18

第2章 超级账本初体验 19

2.1 基础环境安装 19

2.1.1 Docker的安装和使用 19

2.1.2 Docker Compose的安装和使用 21

2.1.3 下载超级账本源代码 24

2.2 超级账本部署调用 24

2.2.1 下载Docker镜像文件 24

2.2.2 部署超级账本网络 25

2.2.3 链码调用和查询 26

2.2.4 常见错误 27

2.3 节点的配置参数传递规则 29

2.4 本章小结 31

第二篇 核心篇

第3章 超级账本的系统架构 34

3.1 系统逻辑架构 35

3.2 网络节点架构 37

3.3 典型交易流程 39

3.3.1 创建交易提案并发送给背书节点 39

3.3.2 背书节点模拟交易并生成背书签名 41

3.3.3 收集交易的背书 42

3.3.4 构造交易请求并发送给排序服务节点 43

3.3.5 排序服务节点以对交易进行排序并生成区块 45

3.3.6 排序服务节点以广播给组织的主节点 45

3.3.7 记账节点验证区块内容并写入区块 45

3.3.8 在组织内部同步最新的区块 49

3.4 消息协议结构 49

3.4.1 信封消息结构 49

3.4.2 配置管理结构 51

3.4.3 背书流程结构 52

3.5 策略管理和访问控制 56

3.5.1 策略定义及其类型 56

3.5.2 交易背书策略 57

3.5.3 链码实例化策略 60

3.5.4 通道管理策略 61

3.6 本章小结 63

第4章 基于Gossip的P2P数据分发 64

4.1 概述 64

4.2 超级账本中的Gossip协议 65

4.3 成员认证及身份管理 67

4.4 节点启动及成员管理 67

4.5 主节点选举过程 68

4.6 基于反熵的状态同步 69

4.7 数据传播过程 70

4.8 多通道的支持 70

4.9 消息的验证策略 71

4.10 消息的多路分用及分区 73

4.11 和Gossip相关的配置参数 76

4.12 本章小结 77

第5章 分布式账本存储 78

5.1 概述 78

5.2 读写集 79

5.2.1 交易模拟和读写集 79

5.2.2 交易验证和世界状态更新 80

5.2.3 模拟和验证示例 80

5.3 账本编号 81

5.4 账本数据 81

5.4.1 账本数据存储 82

5.4.2 账本数据读取 83

5.4.3 交易模拟执行 84

5.5 区块索引 84

5.5.1 文件位置指针 85

5.5.2 索引的同步过程 86

5.6 状态数据 87

5.6.1 LevelDB 88

5.6.2 CouchDB 89

5.6.3 基于状态数据的区块验证 91

5.7 历史数据 92

5.8 数据恢复 92

5.9 本章小结 93

第6章 集成共识机制的排序服务 94

6.1 概述 94

6.1.1 共识算法的类型 95

6.1.2 Hyperledger Fabric 1.0的共识机制 96

6.2 实现数据隔离的多通道 97

6.2.1 排序服务的初始化 99

6.2.2 通道的创建 101

6.2.3 通道的更新 105

6.2.4 通道的加入 107

6.2.5 通道的查询 107

6.3 可插拔的排序服务 108

6.3.1 排序服务接口 108

6.3.2 基于单进程的排序服务 110

6.3.3 基于Kafka的排序服务 110

6.3.4 链消息过滤器 122

6.4 本章小结 124

第7章 实现数据隔离的多链及多通道 125

7.1 数据存储对多链的支持 126

7.1.1 账本数据 126

7.1.2 索引数据 126

7.1.3 状态数据 127

7.1.4 历史数据 127

7.2 链码对多链的支持 128

7.2.1 链码的生命周期管理 128

7.2.2 链码和背书节点的通信 129

7.2.3 链码的部署和调用 130

7.3 多通道对多链的支持 131

7.4 命令行和SDK对多链的支持 132

7.5 关于系统链 132

7.6 本章小结 132

第8章 基于数字证书的成员管理服务 133

8.1 实现成员管理的MSP 133

8.1.1 MSP成员的验证 133

8.1.2 MSP的目录结构 134

8.1.3 MSP的配置最佳实践 140

8.2 颁发数字证书的Fabric CA 142

8.2.1 概述 142

8.2.2 Fabric CA服务端的安装部署 143

8.2.3 Fabric CA服务端的操作使用 148

8.3 本章小结 158

第9章 支持多种语言的智能合约 159

9.1 概述 160

9.2 链码的生命周期管理 160

9.2.1 链码的生命周期 160

9.2.2 应用程序和链码的交互流程 164

9.2.3 背书节点接收应用程序的请求处理 165

9.2.4 采用上下文实现交易的模拟执行 166

9.2.5 链码消息的数据分发 166

9.2.6 链码运行环境的管理 168

9.3 内置的系统链码 172

9.3.1 生命周期管理系统链码 173

9.3.2 配置管理系统链码 180

9.3.3 查询管理系统链码 182

9.3.4 交易背书系统链码 182

9.3.5 交易验证系统链码 184

9.4 链码的相互调用 184

9.5 背书节点和链码的有限状态机 185

9.5.1 背书节点和链码之间的事件 188

9.5.2 背书节点的有限状态机 189

9.5.3 链码的有限状态机 190

9.6 本章小结 192

第三篇 应用篇

第10章 超级账本的应用开发模型 194

10.1 应用开发模型 194

10.2 应用程序开发的SDK 194

10.2.1 概述 195

10.2.2 SDK规范 195

10.2.3 应用场景介绍 204

10.3 链码的开发和调试 210

10.3.1 链码需要实现的接口 210

10.3.2 链码的SDK提供给链码的接口 212

10.3.3 链码开发的注意事项 214

10.3.4 链码的调试 215

10.4 本章小结 216

第11章 从零开始部署超级账本网络 217

11.1 准备超级账本运行环境 217

11.1.1 超级账本运行环境 217

11.1.2 编译超级账本镜像文件 224

11.2 快速构建超级账本网络 227

11.2.1 下载BYFN的代码 227

11.2.2 BYFN脚本介绍 227

11.2.3 生成网络初始化配置 228

11.2.4 启动超级账本网络 230

11.2.5 关闭超级账本网络 235

11.3 逐步建立超级账本网络 236

11.3.1 生成MSP证书 236

11.3.2 生成排序服务创世区块 236

11.3.3 生成通道配置创世区块 236

11.3.4 定义组织锚节点 237

11.3.5 启动超级账本网络 237

11.3.6 创建并加入通道 238

11.3.7 安装和实例化链码 240

11.3.8 执行链码查询 243

11.3.9 执行链码调用 244

11.4 本章小结 245

第12章 超级账本的应用开发实例 246

12.1 票据背书场景介绍 246

12.1.1 票据关系人 247

12.1.2 票据行为分类 247

12.1.3 基于区块链技术的数字票据 249

12.2 票据背书需求分析 250

12.3 票据背书架构设计 251

12.3.1 票据背书的分层架构 252

12.3.2 票据背书的数据模型 253

12.4 票据背书实现 254

12.4.1 应用程序实现 254

12.4.2 链码功能实现 275

12.5 票据背书快速部署 287

12.6 票据背书展示 288

12.6.1 系统登录 288

12.6.2 发布票据 288

12.6.3 我的票据 289

12.6.4 发起票据背书 289

12.6.5 待签收票据列表 290

12.6.6 签收票据背书 290

12.6.7 拒收票据背书 291

12.7 本章小结 292

附录A 术语表 293

附录B 超级账本的实用工具 297

参考文献 308


产品特色