猜你喜欢
Hyperledger Fabric源代码分析与深入解读

Hyperledger Fabric源代码分析与深入解读

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

这是一本深度解读Hyperledger Fabric架构设计与实现原理的著作,由国内知名区块链公司趣链科技的创始人和核心技术团队成员撰写。

全书的核心内容以Hyperledger Fabric的源代码为切入点,首先从宏观上分析了Hyperledger Fabric项目的整体架构与设计,然后深入源代码详细分析了Hyperledger Fabric各个重要模块的设计与实现原理。此外,为了兼顾没有区块链开发基础的读者,书中还加入了Hyperledger Fabric开发环境搭建、综合案例、项目部署等实战性内容,可使读者能在深入理解Hyperledger Fabric设计机制的基础上快速动手实践。

全书共14章,逻辑上分为两大部分

第一部分:源码分析(第2~11章)

第2章首先从宏观的角度解读Hyperledger Fabric的整体架构、项目的结构,以及交易流程,这为后面的源码分析打下基础;

第3章分析了Logging日志模块、Error错误处理框架、Config配置模块、GRPC服务4个模块的源码,对理解后续的源码有帮助;

第4~11章深入纤细地分析了Peer、Order、Chaincode、MSP、Gossip、BCCSP、Fabric-CA、账本机制等节点和功能的设计与实现,这部分内容能让读者全面、透彻了解整个Hyperledger Fabric的运作机制。

第二部分:开发实战(第1章及第12~14章)

第1章主要是为开发Hyperledger Fabric应用做准备,讲解了Go语言开发环境的准备,以及Docker环境的准备;

第12~14章分别讲解了一个智能合约的案例、完整的Hyperledger Fabric项目案例,以及项目的部署方法。

实战部分不仅能提升读者的动手实践能力,而且还能辅助他们更好地理解源码分析的内容,使理论和实践完美融合到一起。


作者简介
作者简介
蔡亮
博士,副教授,浙江大学软件学院副院长、浙江大学区块链研究中心常务副主任、中国计算机学会区块链专业委员会副主任、中国可信区块链联盟副理事长,浙江省重大科技专项专家。
主要从事区块链、云计算、网络安全、可信计算和金融业务处理的研究,在核心期刊和国际会议上发表了数十篇论文。参与了多项或省部级科研项目,如国防军工预研基金项目、国家创新基金项目、863项目等。获得教育部科技进步一等奖、浙江省科技进步一等奖和三等奖。
梁秀波
博士,浙江大学软件学院副研究员、浙江大学区块链研究中心主任助理、杭州趣链科技有限公司副总经理。
主要从事区块链、智能信息处理、金融信息技术和移动互联网等方面的研究与开发工作,曾赴法国进行为期一年的访问研究。主持或参与和省部级科研项目十余项,主持企事业单位委托项目二十余项。已发表论文十余篇,已申请区块链方面的发明专利三十余项。
宣章炯
硕士,趣链科技高级架构师,曾就职于网易杭州研究院、阿里巴巴-蚂蚁金服事业群,有丰富大型金融区块链项目开发经验。目前从事Hyperledger Fabric开源项目的研究工作,并为其贡献源代码,对其有较深理解,Hyperledger TWG-China大中华区技术工作组成员,负责社区发展与创新工作及翻译工作,杭州地区Meetup的组织者,担任过Meetup的讲师。
编辑推荐
(1)本书由杭州趣链科技创始人和核心团队撰写,趣链科技是国内的区块链创业公司,区块链专利数量全球排名前列。
(2)本书专注于Hyperledger Fabric源代码分析,对Fabric的整体架构,以及它的重要模块、节点和功能的源码实现都做了详尽分析。
(3)注重实践,为了便于读者进一步理解源码,并动手实践,附加了智能合约和综合性的案例,以及完整项目的线上部署方法。
前言
区块链技术自诞生以来就受到社会各界的广泛关注,甚至被认为是继互联网之后最具颠覆性意义的技术革命。如果说最初的互联网实现了信息在全球范围内的高速传播与共享,那么区块链则致力于构建一个可用于价值交换的下一代可信互联网;如果说人工智能等技术改变的是生产力,那么区块链技术改变的是生产关系。据专家预测,区块链在不远的将来会引发政治、经济、文化、科技、军事、教育、医疗、能源等诸多领域的颠覆性革命。
区块链的本质是一个去中心化的分布式账本系统,是一种涵盖了分布式数据存储、点对点传输、共识机制、加密算法等一系列计算机技术的集成创新技术。区块链采用分布式数据库来存储数据,通过自信任的共识机制实现全网数据的一致性,将对称与非对称加密技术相结合以保证数据安全和不可篡改,采用智能合约技术规范化数据处理,最终实现在无需第三方中介机构的情况下进行人与人之间的价值交换,进而解决信任问题。
众所周知,区块链技术源于比特币,最初是作为比特币的底层技术而存在的。因此,区块链的发展也与比特币息息相关。2008年,一个化名为中本聪的人在一篇名为《比特币:一个点对点的电子现金系统》的论文中详细描述了一种去中心化的分布式账本系统,并把这个系统中所使用的数字加密货币称为比特币。比特币的诞生开启了区块链1.0时代,这一时期各种基于区块链技术的加密数字货币如雨后春笋般涌现出来,如以太币、莱特币、瑞波币等。然而此时的区块链技术仅仅用于交易记账,应用范围非常有限。
随着各种加密数字货币的广泛流行,一些有识之士逐渐意识到区块链技术的巨大应用潜力。他们将区块链技术从比特币系统中分离出来,并通过添加智能合约技术构建出一个更通用的去中心化应用开发平台,其中最具代表性的就是以太坊。以太坊的出现标志着区块链迈入了2.0时代,这一时期区块链技术的应用范围得到了极大的扩展,同时涉及股权众筹、证券交易、货款抵押等诸多金融领域。
然而,以太坊平台作为一个基于公有链的区块链平台,依然存在一些不足之处亟待改进,比如存在共识效率低下、隐私保护缺乏、大规模存储困难和信息难以监管等问题。为了应对大规模商业应用的业务需求,面向企业级应用的联盟区块链技术应运而生。其中的典型代表就是Hyperledger Fabric开源项目,它通过模块化和可插拔设计、权限控制、多链和多通道等技术为区块链技术在各领域的应用打开了广阔的空间。
本书是一本介绍Hyperledger Fabric架构、源代码及其底层实现的专业书籍。从编程语言、源码分析、网络节点、加密算法、智能合约、架构设计等多个角度深入解读Fabric项目,并通过对项目实例的分析介绍,使读者能够理论结合实践,增强实际动手能力,更好地理解Fabric的实现原理。本书是一本实际操作性极强的Hyperledger Fabric的专业书籍,通过阅读本书,能够帮助读者零基础快速入门Fabric。
本书结构
本书共分为14章。
第1章主要介绍如何从零开始,通过准备工作完成多种平台上Hyperledger Fabric应用环境的配置。首先,讲解不同系统中Go语言的安装与环境配置,并简单介绍了Go语言。之后,讲解不同系统中Docker的安装和简单使用方法。最后,介绍了Hyperledger社区与社区中一些常用软件,方便读者在完成环境配置之余,更好地了解Hyperledger Fabric的相关信息。
第2章主要讲解Fabric的架构并进行分析。首先介绍了Fabric整体架构,包括系统架构、交易背书及策略、证实账本和节点账本的检查。然后介绍了Fabric交易流程。接着介绍了Fabric整体项目结构,并详细阐述了Fabric源码中相关缩写的含义。
第3章主要介绍了Fabric中的四个模块:Logging日志模块、Error错误处理框架、Config配置模块、grpc服务。理解日志模块有助于理解源码;理解错误处理框架能使读者学会独立处理代码中常见错误的方法;理解配置模块对具象化程序很有帮助;理解grpc有助于读者理解如何实现客户端与服务器端的远程调用,从而为进一步理解源码打下基础。
第4章主要介绍了Fabric中peer节点的设计与实现。peer节点作为Fabric中处理交易、存储区块的角色,承担了重要的作用。本章对CommandLine进行了解析,介绍了Admin及Endorser服务的实现。同时具体分析了Committer机制及其作用。
第5章主要介绍了order的设计与实现。orderer为Fabric的排序节点,其为所有的客户端提供统一的交易排序及打包服务,并将区块分发到所有的leader节点。本章的内容包括Orderer内部机制窥探、kafka排序服务机制讲解以及orderer在Fabric中的交互流程。
第6章主要介绍了chaincode的设计与实现。chaincode是Fabric实现智能合约的方式,利用容器技术将智能合约放置在容器中运行,同时进行调用。本章的内容包括chaincode生命周期管理,原理浅析,数据结构分析,SystemChaincode的讲解,CSCC、ESCC、LSCC、QSCC、VSCC等概念的分析,SystemChaincode的注册和实例化,ApplicationChaincode的部署及实例化,以及chaincode操作步骤。
第7章主要介绍了MSP成员服务提供者及Fabric的交易网络。通过Membership Service Providers (MSP)主题帮助读者更好地理解加密操作、签名、校验
目录
序一
序二
前言
第1章 准备工作1
1.1 Go语言环境配置1
1.1.1 Go语言简介1
1.1.2 Go安装2
1.1.3 Go标准包安装4
1.1.4 第三方工具安装6
1.1.5 Go环境配置7
1.1.6 代码目录结构规划8
1.1.7 编译应用9
1.1.8 获取远程包10
1.1.9 程序的整体结构11
1.2 安装Docker11
1.2.1 macOS11
1.2.2 Ubuntu12
1.2.3 Docker的简易使用13
1.3 Hyperledger社区介绍14
第2章 架构分析18
2.1 Fabric整体架构18
2.1.1 概述18
2.1.2 系统架构19
2.1.3 交易背书的基本工作流程24
2.1.4 背书策略27
2.1.5 证实账本和节点账本检查28
2.2 Fabric交易流程30
2.3 Fabric整体项目结构介绍33
2.3.1 Fabric项目结构33
2.3.2 Fabric源码中相关缩写的含义34
第3章 源码分析37
3.1 Logging日志模块浅析37
3.1.1 go-logging简介37
3.1.2 flogging38
3.1.3 init函数、MustGetLogger函数与其他函数38
3.2 Error错误机制设计39
3.2.1 总体概览39
3.2.2 使用说明40
3.2.3 显示错误消息40
3.2.4 错误处理的一般准则41
3.3 Config配置模块的设计41
3.3.1 viper简介41
3.3.2 安全文件配置44
3.3.3 命令选项配置44
3.3.4 环境变量配置44
3.4 grpc服务45
3.4.1 grpc用法的Demo45
3.4.2 Fabric中的grpc服务接口和实例46
第4章 peer的设计与实现53
4.1 CommandLine解析53
4.1.1 peer目录结构53
4.1.2 第三方包54
4.1.3 peer命令结构解析55
4.1.4 以node为例进行子命令结构解析55
4.1.5 peer命令结构55
4.2 Admin及Endorser服务的实现56
4.2.1 Admin56
4.2.2 Endorser58
4.2.3 频道中的策略检查器64
4.3 Committer的机制66
4.3.1 committer.go 分析66
4.3.2 committer_impl.go 分析67
4.3.3 validator.go 分析70
4.3.4 vscc_validator.go分析71
第5章 order的设计与实现73
5.1 orderer内部机制窥探73
5.1.1 kingpin73
5.1.2 模块74
5.1.3 配置74
5.1.4 模块的初始化75
5.2 kafka排序服务机制讲解79
5.3 orderer在Fabric中的交互流程82
5.3.1 建立连接82
5.3.2 Broadcast83
5.3.3 orderer83
5.3.4 Deliver86
第6章 chaincode的设计与实现89
6.1 chaincode生命周期管理89
6.1.1 打包89
6.1.2 安装chaincode91
6.1.3 实例化chaincode91
6.1.4 升级chaincode92
6.1.5 停止与启动93
6.1.6 CLI93
6.2 chaincode原理浅析94
6.2.1 什么是chaincode94
6.2.2 Chaincode Support服务95
6.2.3 FSM95
6.2.4 Register96
6.2.5 Handler97
6.2.6 processStream97
6.2.7 HandleMessage97
6.2.8 serialSend或serialSendAsync99
6.2.9 系统chaincode99
6.3 chaincode数据结构分析100
6.3.1 chaincode元数据100
6.3.2 chaincode的元工具102
6.4 SystemChaincode讲解103
6.4.1 SystemChaincode104
6.4.2 预定义和注册104
6.5 CSCC分析106
6.5.1 结构体106
6.5.2 函数106
6.6 ESCC分析108
6.6.1 结构体108
6.6.2 Init函数108
6.7 LSCC分析109
6.7.1 结构体和接口110
6.7.2 函数操作110
6.7.3 安装、部署和升级111
6.7.4 chaincode stub 接口实现112
6.8 QSCC分析113
6.8.1 结构体113
6.8.2 函数操作114
6.8.3 路由规则114
6.9 VSCC分析115
6.9.1 结构体115
6.9.2 函数115
6.10 SystemChaincode的注册和实例化116
6.10.1 概述116
6.10.2 安装117
6.10.3 部署117
6.10.4 Launch118
6.10.5 Execute123
6.10.6 部署后状态124
6.11 ApplicationChaincode的部署124
6.11.1 概述125
6.11.2 生成签名申请包125
6.11.3 处理安装申请125
6.11.4 执行申请126
6.11.5 Launch127
6.11.6 Execute127
6.11.7 一路返回128
6.11.8 安装后的状态129
6.12 ApplicationChaincode的实例化129
6.12.1 概述129
6.12.2 起点130
6.12.3 部署130
6.12.4 广播139
6.12.5 部署后的状态139
6.13 chaincode操作步骤140
6.13.1 选择一个代码存放位置140
6.13.2 内务处理140
6.13.3 初始化chaincode140
6.13.4 调用chaincode142
6.13.5 实现chaincode应用143
6.13.6 整合全部代码143
6.13.7 编译chaincode145
6.13.8 在开发者模式下测试145
6.13.9 安装Hyperledger Fabric样例145
6.13.10 下载Docker镜像146
6.13.11 1号终端146
6.13.12 2号终端146
6.13.13 3号终端147
6.13.14 测试新的chaincode147
第7章 MSP成员服务提供者148
7.1 MSP的设计思路148
7.1.1 MSP配置149
7.1.2 如何生成MSP证书和它们的签名匙150
7.1.3 MSP setup on the peer & orderer side150
7.1.4 Channel MSP setup150
7.1.5 最佳实践151
7.2 MSP实现剖析153
7.2.1 目录结构153
7.2.2 MSP配置154
第8章 Gossip节点间的流言蜚语162
8.1 Gossip协议原理解析162
8.1.1 Gossip协议(Gossip protocol)162
8.1.2 Gossip消息传输(Gossip messaging)163
8.2 Gossip之服务组件163
8.2.1 pr