新書推薦:
《
女人的中国医疗史:汉唐之间的健康照顾与性别
》
售價:HK$
103.8
《
资治通鉴熊逸版:第四辑
》
售價:HK$
470.8
《
中国近现代名家精品——项维仁:工笔侍女作品精选
》
售價:HK$
66.1
《
宋瑞驻村日记(2012-2022)
》
售價:HK$
115.6
《
汗青堂丛书138·帝国的切口:近代中国口岸的冲突与交流(1832-1914)
》
售價:HK$
127.4
《
人世事,几完缺 —— 啊,晚明
》
售價:HK$
115.6
《
樊树志作品:重写明晚史系列(全6册 崇祯传+江南市镇的早期城市化+明史十二讲+图文中国史+万历传+国史十六讲修订版)
》
售價:HK$
498.0
《
真谛全集(共6册)
》
售價:HK$
1156.4
|
編輯推薦: |
(1)作者是区块链领域专家,对Hyperledger Fabric的源代码有深入的研究。
(2)从源代码角度展示Hyperledger Fabric内核和全景图,同时为底层系统研发和上层应用开发提供指导。
(3)宏观上分析了Hyperledger Fabric的整体架构、设计逻辑和运行机制,微观上剖析了各核心模块的设计理念与实现原理。
|
內容簡介: |
近年来的企业实践表明,联盟链是极具重要应用前景与潜力的区块链落地技术方案,而超级账本Hyperledger Fabric已经成为联盟链领域中具有国际影响力的主流技术。
本书深入分析了Hyperledger Fabric的源代码,从宏观上分析了Hyperledger Fabric的整体架构、设计逻辑和运行机制,从微观上剖析了各核心模块的设计理念与实现原理,同时兼顾区块链系统底层架构研发者和上层应用开发者的需求,帮助读者掌握Hyperledger Fabric的精髓。
全书一共7章,以系统运行的流程为主线展开分析:
第1章主要介绍了区块链的核心技术、典型平台,以及Hyperledger Fabric的基本概念、部署流程、实验环境搭建、系统架构和源代码分析思路,是阅读全书的基础。
第2~7章详细分析和解读了Orderer排序节点、Peer节点、Endorser背书节点、Committer记账节点、Gossip消息模块、公共功能模块等核心功能和模块的设计理念、实现原理和运行机制,同时从应用角度阐释其难点及其优化细节。
|
關於作者: |
作者简介
李鑫(博士)
区块链技术专家,专注于区块链关键技术和行业解决方案的研究,对Hyperledger Fabric等联盟链技术有非常深入的研究,同时参与并积极推动超级账本开源社区的发展。
目前是国防科技大学的研究人员,计算机系统结构专业,研究兴趣包括分布式计算与区块链、容器云等新兴技术,长期参与高性能计算、863计划、国家自然科学基金等项目的研发与管理工作,曾获部级科技进步三等奖一项,发表学术论文十余篇,参与译著一部。
|
目錄:
|
前言
第1章 区块链基础与Hyperledger Fabric架构1
1.1 区块链背景、概念与现状1
1.1.1 区块链产生的背景及研究热潮1
1.1.2 区块链概念与核心技术6
1.1.3 区块链典型平台现状及趋势12
1.2 Hyperledger Fabric基本概念与架构15
1.2.1 基本概念15
1.2.2 Hyperledger Fabric架构22
1.2.3 安装基础环境与部署Fabric系统25
1.2.4 Fabric初始化启动流程30
1.2.5 Fabric交易处理流程58
1.3 Hyperledger Fabric源码分析说明60
1.3.1 源码分析思路60
1.3.2 配置机制64
1.4 小结66
第2章 Orderer排序节点67
2.1 功能概述68
2.2 Orderer节点启动流程70
2.2.1 加载orderer.yaml配置文件71
2.2.2 初始化日志与本地MSP组件73
2.2.3 启动Orderer排序节点74
2.3 Broadcast交易广播服务92
2.3.1 概述92
2.3.2 Broadcast服务消息处理93
2.4 Orderer共识排序服务(配置交易消息)102
2.4.1 概述102
2.4.2 Solo共识组件103
2.4.3 Kafka共识组件110
2.5 Orderer共识排序服务(普通交易消息)122
2.5.1 概述122
2.5.2 Solo共识组件123
2.5.3 Kafka共识组件126
2.6 Deliver区块分发服务131
2.6.1 概述132
2.6.2 Deliver服务消息处理133
2.6.3 Deliver服务客户端140
2.7 小结150
第3章 Peer节点151
3.1 功能概述152
3.1.1 链码生命周期管理152
3.1.2 系统链码155
3.1.3 用户链码156
3.2 Peer节点启动流程157
3.2.1 启动流程概述157
3.2.2 定义、注册命令与初始化配置157
3.2.3 初始化本地MSP组件159
3.2.4 执行启动Peer节点命令161
3.3 peer channel通道子命令183
3.3.1 定义注册channel子命令183
3.3.2 创建通道命令create189
3.3.3 Peer节点加入通道命令join193
3.3.4 获取区块命令fetch198
3.3.5 获取区块链信息getinfo201
3.3.6 获取已加入通道列表list205
3.3.7 签名配置交易文件signconfigtx207
3.3.8 更新通道配置update210
3.4 peer chaincode链码子命令212
3.4.1 定义注册chaincode子命令213
3.4.2 安装链码命令install216
3.4.3 实例化链码命令instantiate224
3.4.4 调用链码命令invoke232
3.4.5 查询链码命令query237
3.4.6 升级链码命令upgrade239
3.4.7 查询链码列表命令list244
3.4.8 打包链码命令package250
3.4.9 签名链码包命令signpackage254
3.5 其他子命令257
3.5.1 状态查询子命令257
3.5.2 版本子命令257
3.5.3 日志子命令257
3.6 小结258
第4章 Endorser背书节点259
4.1 功能概述259
4.2 Endorser背书服务261
4.3 预处理签名提案消息264
4.3.1 验证消息格式与签名合法性265
4.3.2 检查是否为允许外部调用的系统链码266
4.3.3 检查签名提案消息的唯一性266
4.3.4 检查是否满足通道的访问权限策略267
4.4 模拟执行提案268
4.4.1 检查实例化策略270
4.4.2 启动链码容器概述271
4.4.3 准备启动链码容器276
4.4.4 启动系统链码inprocContainer容器285
4.4.5 启动用户链码Docker容器290
4.4.6 消息处理核心函数300
4.4.7 请求链码执行311
4.4.8 停止链码容器321
4.4.9 处理模拟执行结果323
4.5 对模拟执行结果签名背书326
4.6 小结330
第5章 Committer记账节点331
5.1 功能概述332
5.2 创建与调用Committer功能模块333
5.2.1 创建Committer功能模块333
5.2.2 调用Committer功能模块335
5.3 交易验证器341
5.3.1 验证交易数据的合法性342
5.3.2 VSCC验证交易背书策略353
5.4 账本提交器370
5.4.1 验证与准备数据374
5.4.2 提交账本数据388
5.5 小结397
第6章 Gossip消息模块398
6.1 功能概述399
6.2 Gossip消息模块启动流程402
6.2.1 创建与初始化Gossip服务器实例402
6.2.2 初始化通道上的Gossip服务模块410
6.3 Gossip消息通信与处理机制418
6.3.1 Gossip消息概述418
6.3.2 Gossip消息通信与处理机制420
6.3.3 Gossip服务实例中的消息处理462
6.3.4 state模块中的数据消息处理485
6.3.5 state模块中的远程状态与隐私数据消息处理490
6.3.6 Fetcher组件中的隐私数据请求与响应消息处理494
6.3.7 election选举模块中的主节点选举消息处理499
6.4 Gossip节点管理机制501
6.4.1 管理新加入Peer节点501
6.4.2 选举Leader主节点503
6.4.3 更新节点相关信息机制508
6.5 Gossip数据分发与状态同步机制513
6.5.1 分发区块数据流程513
6.5.2 分发隐私数据流程515
6.5.3 更新通道状态信息521
6.5.4 更新数据消息522
6.6 Gossip反熵算法523
6.6.1 获取当前最大的账本高度523
6.6.2 分批发送远程状态请求消息525
6.6.3 处理远程状态请求消息527
6.7 小结530
第7章 公共功能模块531
7.1 账本数据存储模块531
7.1.1 Peer节点账本532
7.1.2 idStore数据库541
7.1.3 区块数据文件与隐私数据库542
7.1.4 区块索引数据库565
7.1.5 状态数据库565
7.1.6 历史数据库579
7.1.7 transient隐私数据库580
7.2 安全服务模块600
7.2.1 MS
|
內容試閱:
|
2016年12月,区块链(BlockChain)被列入国家十三五规划,并作为未来重点突破与发展的六大关键技术之一。2018年5月,两院院士大会将区块链的发展趋势表述为以人工智能、量子信息、移动通信、物联网、区块链为代表的新一代信息技术加速突破应用。区块链领域正在以前所未有的速度聚集着社会资源,加速技术应用与关键技术的突破,并受到国家、企业、资本等各方的广泛关注。当前,区块链作为风口概念受到国内外媒体的火热炒作,同时受到大量VC风投的极力热捧。
根据产业创新创投数据平台Innov100的数据统计,2017年全球ICO(Initial Coin Offering,首次代币发行)融资金额高达350亿元。2018年1月至5月,ICO融资规模为118亿美元。博链研究发布的《全球区块链 创投报告》指出,截至2017年4月底,全球455家区块链公司累计获得融资金额达19.47亿美元。在获投公司数量上,中国共有61家位列全球第二。2018年第1季度,俄罗斯微信Telegram进行了两轮ICO融资分别获得8.5亿美元共17亿美元。中国平安旗下金融管理门户金融壹账通获得SBI投资(思佰益)和IDG资本的6.5亿美元融资,成为2018年第1季度中国区块链行业融资额最高的项目。2018年6月,Block.one推出的加密数字货币EOS结束了为期350天的众筹活动,总融资额近42亿美元。
截至2018年3月底,我国以区块链业务为主营业务的区块链公司数量已经达到了456 家,区块链产业初步形成规模。同时,区块链明星创业公司如井通科技、智链、量子链、小蚁、趣链、布比等如雨后春笋般纷纷出现并迅速成长,国内BAT、小米等互联网巨头与众安保险等新型互联网公司相继投入资源,研发核心技术与探索应用落地,传统行业巨头如中国平安、万向集团等也耗巨资,成立新型网络科技公司或实验室,研究区块链技术与应用。这些企业都试图在未来的科技竞争中弯道超车,抢占先发优势,积累资源与技术壁垒。鉴于国内行业发展的碎片化,以及应用存在一定的盲目性,国家工信部在区块链产业整合上积极引导,由中国电子技术标准化研究院牵头,联合国内典型区块链企业成立中国区块链技术和产业发展论坛,共同制定我国区块链技术的相关标准与推动产业发展。该组织于2016年10月18日发布了《2016年中国区块链技术和应用发展白皮书》;2017年5月与12月分别提出了我国区块链技术和产业发展论坛标准《区块链参考架构》与《区块链数据格式规范》,其中,《区块链参考架构》已处于国家标准立项阶段;2018年5月发布了《2018 年中国区块链产业白皮书》,2018年6月拟筹建全国区块链和分布式记账技术标准化技术委员会,推进区块链标准体系框架工作,提出了基础、业务和应用、过程和方法、可信和互操作、信息安全等标准,并初步明确了21个标准化重点方向及相关标准化方案。同时,2016年12月以来,中国信息通信研究院联合数据中心联盟等单位相继发布了可信区块链系列标准《第1部分 区块链技术参考框架》《第2部分 总体要求和评价指标》《第3部分 评测方法》等,2018年4月9日,牵头与158家企业联手启动了可信区块链推进计划,截至2018年9月初,推进计划成员已发展至225家,陆续成立了标准与评测、知识产权、云服务等10个工作组,积极推动国内外企业的可信区块链标准以及产品评测工作。另外,中国电子产品可靠性与环境试验研究所、中国银联电子支付研究院与同济苏州区块链研究院、贵阳区块链测试中心等都在研究与提供相应的区块链平台测评服务。国内的这些工作都在积极推动和促进国内区块链产业的发展,并积极与国际标准(ISOTC 307等)、ITU-T FGDLT组与SG16研究组等进行接轨及交流,这有利于统一对区块链新兴技术的认知和共同解决区块链关键技术问题,对我国区块链产业的发展具有重大意义。
与此同时,国际上影响力较大的主流区块链开源平台逐渐融合发展,互相借鉴,目前已经涌现出数个典型的生态体系及平台。
以比特币为代表的虚拟货币平台开源社区生态体系。比特币就是以区块链作为底层技术进行设计与研发的,中本聪(Satoshi Nakamoto)在2008年发表的论文《Bitcoin: A Peer-to-Peer Electronic Cash System》中就曾指出,比特币是通过随机哈希值为全部交易加上时间戳,并将它们融入不断延伸的、基于随机哈希值的工作量证明链条中作为交易记录(即区块),除非重新完成全部的工作量证明,否则形成的交易记录将不可更改。这种独特的记账方式使得比特币的发行可以不依赖于任何政府与货币机构的公信力,而是根据特定共识算法并通过大规模计算来生成的,由全系统所有节点共同背书,其记账权由全网51%的算力决定,第一次在全球范围内实现了一个去中心化的真实的点对点电子现金系统。这完全颠覆了以往人们对货币的认知,点燃了以比特币为代表的虚拟货币风口。
以以太坊(Ethereum)为代表的支持可编程智能合约的公有链或公链平台开源社区生态体系。其核心理念是将区块链作为可编程的分布式信用基础设施,支持自动化运行的智能合约应用,并将平台交易内容扩展到金融、股权、债务凭证等领域。Vitalik Buterin等创始人于2013年12月开始发起以太坊项目,并迅速激发了人们在可信平台上交易金融资产的热情与创造力,现在应用方面有超过上千个DApp上链(https:www.stateofthedapps.com),已经成为具有国际影响力的开源公链平台。
以超级账本Hyperledger Fabric为代表的联盟链平台开源社区生态体系。其目标是完全面向企业级应用场景的许可区块链(Permissioned Chain),用以解决多个弱信任企业主体之间的信任问题,以降低企业间复杂繁琐业务流程带来的信任成本,实现在可控主体范围内共享敏感数据,从而有效提升企业主体之间大规模协作活动的效率。Hyperledger Fabric开源社区提供带有身份权限认证的商用区块链平台,采用模块化插件的灵活设计架构,避免了比特币类公链平台与以太坊类公链平台交易效率低下、缺乏完善的身份认证模块等问题,能够广泛应用于金融资产存管、供应链、共享经济等领域。Hyperledger Fabric自2015年底开源以来发展迅速,已经成为主流的联盟链开源平台。另外,值得注意的是,企业以太坊联盟(Enterprise Ethereum Alliance,EEA)、蚂蚁金服、腾讯、百度、BCOS(由微众银行、万向、矩阵元共同发布的开源联盟链平台)、众安、趣链、CITA(秘猿科技)等都是其潜在的竞争对手或产品。企业级BaaS(Blockchain as a Service)平台作为基础设施服务亦是未来国际企业市场的竞争焦点,国际巨头IBM、微软等已经在此领域深耕发力多年,以实现高效动态的部署跨域区块链网络的能力,从而提供高质量的商用企业级服务。
此外,目前还涌现出IPFS(InterPlanetary File System,星际文件系统)、石墨烯(Graphene)、哈希图(Hashgraph)、Blockstack、侧链、DAG、分片技术(Sharding)、抗量子攻击算法、高性能跨链技术、新型共识机制(如拜占庭协商BA-VRF、DDPOS、HyperPOW等)等众多的新型区块链平台、新型底层支撑技术以及相关方向,以着力解决当前区块链系统面向领域应用中遇到的关键技术问题(如指数量级提升单链或多链交易处理性能),积极探索新型技术落地与大规模应用场景,这些都是未来具有前景与值得关注的潜在技术。
本书重点介绍了Hyperledger Fabric系统架构的设计与实现,根据Hyperledger的官网介绍,超级账本旨在通过创建企业级的开源分布式账本框架,协助组织扩展、建立行业专属的应用程序、平台和硬件系统来支持交易业务,是全球跨行业领导者的合作项目,覆盖金融、银行、物联网、供应链、制造行业和技术领域。Hyperledger Fabric作为联盟链的典型架构,逐渐得到了国际主流公司与研究机构的青睐与大力支持。截至2018年2月底,已经有260个组织机构加入了Hyperledger社区阵营,包括IBM、Intel、Oracle、思科、摩根大通、富国银行、百度、阿里巴巴、腾讯、联想、小米、迅雷、华为等,分为高级会员、标准会员与联盟会员;另外还有一种学术性机构联盟会员,如剑桥大学贾吉商学院、北京大学、浙江大学等。Hyperledger项目设有理事会、技术指导委员会、市场委员会和用户顾问团等,代码许可协议采用Apache License Version 2.0,以满足大多数商业用途需求。截至2018年7月底,超级账本亚太副总裁Julian Gordon声称超级账本中20%的会员(50多个中国会员,百度属于高级会员)与10%的贡献都来自中国。目前,Hyperledger开源社区包括11个商业区块链和分布式账本项目,其中3个项目是中国企业与个人首先发起或提供主要工作的,包括Hyperledger Caliper(区块链性能测试平台,华为等)、Hyperledger Cello(区块链平台部署和运行管理项目,Oracle区块链首席架构师杨保华博士等)以及Hyperledger Explorer(区块链数据可视化工具项目,上海旺链科技等)。另外,中国企业与个人也为Hyperledger Fabric等项目做出了重大贡献。
Hyperledger Fabric得益于模块化插件架构等良好特性,近年来的发展异常迅速,已经开始在很多国内外机构和大公司的实际PoC(Proof of Concept,概念验证)项目以及实际应用系统中推广使用,如民生银行贸易金融领域产品即国内信用证信息传输系统目前支撑数十亿级别的交易业务量,以及智链ChainNova航运物流行业项目等。Hyperledger Fabric所在的GitHub开源社区也非常活跃,Meetup以及国内外会议上的相关研讨交流同样异常频繁。自2017年3月正式发布1.0测试版本以来,GitHub代码更新速度飞快,经过2016年0.6技术预览版本的升级之后,1.0版架构重新分离出Orderer节点与Committer节点,以提高系统的可扩展性与并发性,并且引入模块插件化的共识算法,整个系统架构日臻成熟实用。Hyperledger Fabric于2017年7月在社区正式发布了1.0正式版代码,在这个过程中约有27个组织、159名开发者、3500多个代码修改以及超过一年的协作和测试。发布1.0版是超级账本社区真正的里程碑事件,用户和技术供应商可以基于Hyperledger Fabric来推进产品的部署和运营。这标志着Hyperledger Fabric已经能够作为一个较为独立完整的开源软件被集成到其他系统中,提供给全世界的开发者进行研究。然而,Hyperledger Fabric开源社区并没有在1.0版本中发布sbft等支持拜占庭容错的重要共识机制模块,而是谨慎地推迟了该模块加入发布的时间,因此,Hyperledger Fabric还有很长的路要走。但是作为一个开源区块链系统,Hyperledger Fabric已经可以作为一个有影响力的典型联盟链范例来进行深入研究,这对于普及推广区块链技术有着积极意义。
作为Blockstream、Digital Asset Holdings与IBM贡献给开源社区的许可联盟链平台,Hyperledger Fabric是一个模块插件化的链式区块数据共享账本平台,支持自动化智能合约。更准确地说,它是利用密码学特征将构造成区块的交易数据集合基于区块哈希值链接起来,按时间戳顺序形成以区块对象为基本单元的链,并在参与节点之间共享该链,同时链上内容根据共识机制由参识节点集体维护,而不再由单一节点决定记账权,关于其来源在本书中会有更详细的探讨。总体来说,Hyperledger Fabric具有如下鲜明的技术特点:
支持可插拔的架构;
基于PKI体系与X.509标准身份证书的安全管理体系;
支持多通道、隐私数据集合等多粒度的数据隐私保护特性;
Peer、Orderer等节点可扩展性良好;
支持多种链码(智能合约)开发语言(Node.js、Go、Java等);
基于Docker容器技术提供链码运行时环境等。
这些特点使得Hyperledger Fabric能够具备提供高效可靠的企业级区块链平台服务能力的潜质,并真正从研究走向实用,企业界与开源社区对Hyperledger Fabric异常热情,纷纷表示热烈拥抱与接纳。除了Fabric项目外,Hyperledger还包括Burrow(支持以太坊虚拟机)、Indy(提供去中心化的身份管理机制)、Iroha(关注移动特性的账本平台项目)、Sawtooth(区块链平台)、Caliper(区块链性能测试平台)、Cello(提供区块链平台部署和运行管理)、Composer(提供面向链码开发的高级语言支持)、Explorer(区块链数据可视化工具)、Quilt(关注账本互操作性)、uRSA(共享加密库项目)等,这些项目构成了相对完善的区块链生态系统。
笔者正是在了解Hyperledger Fabric源码中逐渐熟悉其系统架构与实现机制的,并选择1.1.0正式版作为剖析对象,能够体现当前Fabric架构设计发展的主流新特性(隐私数据集合等)演变,并兼顾Fabric 1.2(1.2.0与1.2.1版本)与Fabric 1.3(1.3.0版本)中架构与功能升级的源码,以帮助读者能够深入了解整体架构的演变,让读者在应用Hyperledger Fabric时有所参考,从而对推进项目落地能够有所帮助。
本书面向的读者
区块链应用开发人员
区块链底层开发人员
区块链技术爱好者
分布式计算方向研究人员
如何阅读本书
限于篇幅,本书没有深入介绍比特币、以太坊等主流平台体系架构以及Docker、gRPC、protocol buffer、yaml配置文件、现代密码学等常用系统知识。本书不是一本初级入门资料,所以需要读者具备相关的基础知识。同时,Hyperledger Fabric知识体系非常丰富,本书也不试图成为一部能够兼顾所有方面的百科全书式的权威指南,例如本书就没有重点分析Fabric CA与Fabric SDK等相关模块。
本书介绍了Hyperledger Fabric的架构设计与实现原理,基于源码剖析了Hyperledger Fabric核心模块,以Hyperledger Fabric系统运行流程为主线展开分析,是一部面向Hyperledger Fabric系统架构的技术专著。因此,本书更适合于Hyperledger Fabric底层架构开发者与应用开发者,以及对Hyperledger Fabric感兴趣的技术爱好者。
希望读者学习相关知识(现代密码学、X.509标准等),搭建实验环境以配合源码阅读学习(推荐JetBrains GoLand或IDEA编程开发环境阅读源码与编写Go程序)。Hyperledger Fabric官方网站提供了非常不错的入门教程与背景资料,介绍了Hyperledger Fabric的专业知识与示例。如果读者对现代密码学和PKI安全体系有所了解,将更容易理解Fabric的身份权限控制机制,有兴趣的读者可以进一步参考相关资料。当然,最重要的学习资源还是源代码本身,正如大师所言,源码面前,了无秘密。
研究底层架构需要把握真正有价值的整体系统架构,应该将研究的关注点集中在理解系统设计的逻辑思路、重要原理与机制、核心模块接口等方面,如果不是为了改进和优化专用模块,则不必过分关注局部实现细节,从而丢失全局架构设计的宏观视野。因此,结合整体系统架构去研究核心模块会更容易理解Hyperledger Fabric系统设计的精髓。
对于区块链应用开发者,推荐按照交易处理流程的顺序阅读本书。对于区块链底层开发者,推荐按照本书章节的正常顺序进行阅读。对于区块链技术爱好者,推荐除了核心模块章节之外,可以尝试研究第6章Gossip消息模块,该模块是通道上组织节点间通信的基础,提供了高效数据分发与状态的同步机制,属于更底层的基础服务,实现机制相对比较复杂。如果读者更关注Hyperledger Fabric其他层次的主题,则可以暂时跳过不作深入了解。
本书结构
本书分为7个正文章节与附录。第1章介绍区块链的基本概念、Hyperledger Fabric架构等基础知识。第2章至第7章分别介绍Orderer排序节点、Peer节点、Endorser背书节点、Committer记账节点、Gossip消息模块、公共功能模块等核心模块的底层细节,使得读者可以完整了解Hyperledger Fabric架构的设计思想与实现机制。
第1章介绍了区块链的基本概念、Hyperledger Fabric架构与流程,并以e2e_cli为例介绍Fab
|
|