微信扫码下载PDF

编辑推荐

适读人群:区块链从业人员、工程师,爱好者。

  《HyperledgerFabric核心技术》深入Fabric的底层代码,详细讲述各功能模块的具体实现过程,做到了由点到面的深入讲解。不管是区块链的开发人员、测试人员、运维人员,还是区块链的爱好者,都可以在《Hyperledger Fabric核心技术》中找到所需要的内容。

内容简介

  《HyperledgerFabric核心技术》通过精选十分重要和极其巧妙的代码片段,剖析了超级账本HyperledgerFabric的技术细节、底层原理和整体架构。《Hyperledger Fabric核心技术》涵盖开发环境的部署、源码如何编译、**个示例网络的运行,以及orderer、peer、Chaincode、MSP、Ledger、Consensus和Gossip几个重要的组成部分。读者阅读《Hyperledger Fabric核心技术》,可以更加清晰地理解超级账本的核心技术和设计思想,了解分布式账本一致性的具体实现;同时,可以识别在区块链应用过程中遇到的问题,实现区块链功能和性能的*大化。

作者简介

  陈树宝

  中链科技区块链负责人,专注于区块链、大数据、物联网以及人工智能的研究。参与多个区块链项目的核心系统设计,有多年的研发经验,喜欢学习和分享知识,致力于区块链技术的推广。早期深入研究过Linux和Windows操作系统,著有《Windows内核设计思想》一书。

  郑少华

  中国农业银行(广州)区块链负责人,主要从事区块链在银行金融业务中的开发和应用,探索区块链技术在数字资产的落地场景。对各种密码学、加密算法、点对点协议、分布式存储和高性能网络有深入研究。

  佟艳娟

  西南大学硕士,从事人工智能和区块链的研究,包括分布式系统的性能优化、一致性、容错性和高效的点对点网络。对基于椭圆曲线的非对称加密算法的数学原理有较深的理解,并将其应用到特定的区块链场景下,积极参与HyperledgerFabric的代码贡献。

目录

第1章搭建HyperledgerFabric开发环境

第1章搭建HyperledgerFabric开发环境1

1.1下载Go语言安装包1

1.2WindowsMSI安装2

1.3Linux、macOS和FreeBSD安装4

1.4Linux下安装Docker和docker-compose5

1.5Windows下安装Git7

1.6Windows下安装tdm-gcc9

1.7Windows下安装VisualStudioCode10

第2章编译HyperledgerFabric源码14

2.1Fabric源码下载14

2.2FabricMakefile15

2.3构建peer17

2.4构建peer-docker19

2.5构建orderer22

2.6构建orderer-docker22

2.7构建tools-docker23

2.8查看构建的镜像24

第3章第一个网络26

3.1克隆fabric-samples26

3.2运行第一个网络27

3.2.1生成证书28

3.2.2启动网络29

3.2.3关闭网络32

3.3基本步骤33

3.3.1生成证书33

3.3.2生成配置交易35

3.3.3启动网络38

3.3.4CLI容器命令39

3.4数据持久性44

3.5出错处理45

第4章Chaincode46

4.1Chaincode接口47

4.2Chaincode实现58

4.3Chaincode安装62

4.4Chaincode实例化62

4.5Chaincode交易62

4.6Chaincode查询62

第5章区块链加密算法63

5.1RSA加密算法63

5.1.1相关的数论知识63

5.1.2RSA原理64

5.1.3加密过程65

5.1.4解密过程65

5.1.5RSA正确性证明65

5.1.6具体实例66

5.1.7数字签名67

5.2椭圆曲线加密算法67

5.2.1椭圆曲线68

5.2.2群68

5.2.3椭圆曲线上的群公理69

5.2.4椭圆曲线上的加法69

5.2.5有限域上的椭圆曲线70

5.2.6具体实例71

5.2.7ECC加密原理72

5.2.8ECC签名原理72

第6章MSP74

6.1整体架构75

6.2MSP概述77

6.3BCCSP80

6.4Setup(证书关联)87

6.4.1setupCAs(建立根证书和中间证书列表)88

6.4.2setupAdmins(建立管理员证书列表)94

6.4.3setupCRLs(建立撤销证书)95

6.4.4finalizeSetupCAs(建立证书树内部节点映射列表)95

6.4.5newSigningIdentity(建立签名身份列表)96

6.4.6Sign(签名)99

6.4.7Verify(验证)99

6.4.8Serialize(序列化)100

6.4.9DeserializeIdentity(反序列化)101

6.4.10Validate(校验身份)102

6.4.11SatisfiesPrincipal(检查规则)106

6.4.12setupTLSCAs(建立TLS根证书和中间证书列表)110

6.4.13setupOUs(建立组织单元列表)111

6.5签名策略112

6.5.1签名策略定义112

6.5.2签名策略封装114

6.5.3策略编译115

第7章账本管理121

7.1账本关系121

7.2账本管理概述126

7.2.1Initialize初始化账本提供者126

7.2.2CreateLedger创建账本137

7.2.3OpenLedger打开账本140

7.2.4GetLedgerIDs获取账本ID141

7.2.5Close关闭账本141

7.3账本ID存储idStore142

7.4账本存储提供者ledgerStoreProvider144

7.4.1区块数据存储提供者blkStoreProvider146

7.4.2私有数据储存提供者pvtStoreProvider155

7.5记账提供者bookkeepingProvider161

7.6版本数据库提供者vdbProvider162

7.7历史数据库提供者historydbProvider165

7.8建立账本newKVLedger168

7.8.1初始化交易管理器170

7.8.2实例化私有数据清除管理器173

7.8.3新建有效期记账管理器176

7.8.4创建验证管理器179

第8章orderer182

8.1入口函数183

8.2总体描述185

8.3账本工厂186

8.4共识接口190

8.4.1solo模式196

8.4.2kafka模式198

第9章Gossip210

9.1Gossip协议211

9.2映射器idMapper215

9.3发现层disc218

9.4通信层Comm228

9.5分批发射器emitter232

9.6安全顾问secAdvisor233

9.7消息加密服务mcs234

9.8调停器Mediator236

9.9拉取引擎PullEngine242

9.10状态模块state245

9.10.1gos.listen()246

9.10.2gos.deliverPayloads()246

9.10.3gos.antiEntropy()251

9.10.4gos.processStateRequests()251

第10章gRPC254

10.1发现Discovery255

10.1.1注册服务端实例255

10.1.2新建客户端实例256

10.2流言蜚语Gossip258

10.2.1注册服务端实例258

10.2.2新建客户端实例260

10.3原子广播AtomicBroadcast261

10.3.1注册服务端实例262

10.3.2新建客户端实例269

10.4管理Admin269

10.4.1注册服务端实例270

10.4.2新建客户端实例271

10.5链码支持ChaincodeSupport272

10.5.1注册服务端实例272

10.5.2新建客户端实例279

10.6投递Deliver284

10.6.1注册服务端实例284

10.6.2新建客户端实例285

10.7背书Endorser285

10.7.1注册服务端实例286

10.7.2新建客户端实例288

第11章peer294

11.1peercommand294

11.2main295

11.3nodestart299

11.4新建访问控制列表提供者301

11.5新建操作系统307

11.6账本管理器初始化308

11.7链码开发模式309

11.8新建投递事件服务310

11.9启动链码服务310

11.10启动管理服务312

11.11新建背书服务312

11.12初始化Gossip服务313

11.13peer初始化314

11.14注册发现服务315

11.15启动peer服务319

11.16启动性能分析服务319

11.17nodeend320

前言/序言

  【推荐序】

  众所周知,区块链技术的核心是一种去中心化的对等网络协议。基于此核心思想,位于世界上任何地方的两个陌生人,可以在不依赖第三方中介机构背书的情况下进行点对点的交易,所有的对等节点共同维护一套账本以保障数据的完整性和正确性,理论上可以抵御不高于51%的作恶节点的篡改行为。比特币就是经典的区块链应用案例,其市值高峰达到了420亿美元。

  通常来说,通过挖矿获得奖励的类比特币区块链技术为第一代区块链技术。第二代区块链技术以以太坊为代表,任何人和机构都可以基于以太坊智能合约发布自己的代币,因此第二代技术也称为可编程的区块链技术。这也造成了从2016年开始,很多ICO项目应运而生,出现了一系列金融乱象。

  随着R3、IBM、微软、亚马逊、BATJ等科技巨头的加入,区块链技术才逐渐脱虚向实,服务于实体经济,实现产业化改造和升级。其中,具有代表性的框架为Linux基金会和IBM推出的Hyperledger,也称为超级账本。截至目前,Hyperledger已经拥有十几个子项目,涉及代码约360万行,200多家企业成员入驻。

  Hyperledger著名的项目为Fabric,目前Fabric框架参与开发人员达150人之多。Fabric提供了一个无币的联盟链开源基础设施。基于FabricCA身份认证技术,我们可以很方便地实现联盟成员准入控制;基于Fabric多通道技术,我们可以很方便地实现业务数据隔离和访问控制;基于Fabric交易背书机制,我们可以实现在保证交易安全的前提下高效验证和打包;基于Fabric智能合约技术,我们可以很方便地将现实世界的人、物、行为、权益等信息资产数字化,实现可信身份认证、数据确权、数据流转、数据审计,从而实现信息时代到数字时代的重大转变。

  区块链是一种通过技术手段改变信任关系的纽带,是一种身份互认、行为互信、信任共建的思想,是一种实现数据共享、业务共生、生态共建的思想。通过区块链技术,我们可以很方便地将现实世界中不可信或不易协调的场景逻辑迁移到链内,由智能合约自动执行,这样就可以真正地实现点对点信任,从而真正消除中间商。

  区块链典型的应用场景就是供应链金融场景,供应链金融是指将供应链上的核心企业及其相关的上下游企业看作一个整体,以核心企业为依托,以真实贸易为前提,运用自偿性贸易融资方式,对供应链上下游企业提供综合性金融产品和服务。我们可以通过区块链技术,将银行等金融机构、核心企业、上下游企业组建一个联盟链,参与方通过区块链节点签名、共享数据,并得到多方共识,保障数据不可篡改。通过以上方法可以很方便地对供应链企业进行信用评估和风险控制,减少欺诈行为,从而降低整个供应链的融资成本,使大部分中小企业能够享受到融资便利,提高企业的生产效率。

  北京链圈科技致力区块链核心技术和原理的研究,目前已经搭建了自主可控的产业化BaaS平台,后续将会深耕溯源、供应链金融场景,实现全过程溯源、全链金融的产业化发展战略。

      李锴

      北京链圈科技CEO

  【前言】

  近几年,随着区块链技术的兴起和蓬勃发展,以及其广阔的应用前景,从企业到学校,越来越多的人对其产生浓厚的兴趣并投入区块链技术的学习和研究中。从比特币到以太坊,再到现在应用广泛的超级账本(HyperledgerFabric),区块链技术也在飞速更新中。

  在这些开源的区块链项目(比特币、以太坊、超级账本等)中,比特币是笔者最早开始研究的。当时就想撰写比特币方面的书籍,但在这些零乱的工作中,很难有足够的时间去完成,后来想撰写时市面上已经出现了很多成熟的作品,当然也包括以太坊。但超级账本几乎没有,而且HyperledgerFabric1.0版本在部署时很容易遇到问题,熟读源码理解整个构架是一个比较困难的过程,因此《Hyperledger Fabric核心技术》自1.0版本开始着手撰写,现在已经更新到2.0版本。整个过程经历了无数次的修改、整理、重构,尽量做到逻辑严谨、结构清晰,力求为读者提供更好的读书体验和更有价值的参考。Fabric项目的源码仍然是比较巨大的,除了需要从宏观上整体把控外,还需要在细节上深入概述,以便读者多角度研读。

  对区块链的初学者来说,在无人指导的情况下直接进入代码学习确实有一定的难度,很难快速地掌握整体架构及其主要实现原理,《Hyperledger Fabric核心技术》的作者都是区块链一线研发及应用人员,《Hyperledger Fabric核心技术》也是作者长时间学习和研究过程中的经验总结,希望为那些想学习超级账本的读者提供一些提示和引导,使读者能够快速掌握其精髓。

  作为Fabric项目开发过程的见证者,笔者时刻关注Fabric项目的变化,查看每一位贡献者的代码,查看源码守护者的评论,这已经成为一种常态。很多人上网是浏览新闻、听歌、看电影,但笔者喜欢看Commit的Subject。看得多了,自然而然也就会了解更多。

  在撰写《Hyperledger Fabric核心技术》时笔者也遇到了很多困难,要写哪些内容,如何进行布局,如何将专业知识讲解得更加通俗易懂,因此进行了多种尝试和修改,同时在比较难理解的地方增加了备注和实例,以帮助读者理解和接受。不断修改的过程对笔者来说也是一个知识不断重塑的过程。《Hyperledger Fabric核心技术》几乎涵盖了底层技术中的所有相关内容,所以整体框架变得更加清晰。

  《Hyperledger Fabric核心技术》不仅讲解了Fabric中的核心技术,包括Chaincode、MSP、加密算法、账本管理、orderer、peer、Gossip、gRPC,还详细讲述了HyperledgerFabric开发环境的搭建、源码的编译过程,以及如何运行一个网络,并且在引言部分演示了环境部署运行的整个过程。《Hyperledger Fabric核心技术》不是停留在理论层面上,而是深入Fabric的底层代码详细讲述各功能模块的具体实现过程,做到了由点到面的深入讲解。不管是区块链的开发人员、测试人员、运维人员,或是区块链技术的爱好者,都可以在《Hyperledger Fabric核心技术》中找到所需要的内容。因此,如果想更进一步学习和研究区块链技术,《Hyperledger Fabric核心技术》绝对是一个不错的选择。

  当然,笔者相信这《Hyperledger Fabric核心技术》仍然不是最好的,还有很多不足之处,欢迎广大读者提出宝贵的建议或意见,共同交流,共同推动区块链技术的发展。

      陈树宝


其他推荐