Hyperledger Fabric分布式账本技术原理与应用
- ISBN:9787030696427
- 装帧:一般胶版纸
- 册数:暂无
- 重量:暂无
- 开本:B5
- 页数:404
- 出版时间:2023-02-01
- 条形码:9787030696427 ; 978-7-03-069642-7
本书特色
相关专业的高校教师、研究生、本科生、对区块链技术及其应用感兴趣的社会人士与研究者
内容简介
本书针对现实社会中存在诸多共性的数据痛点与难点问题,按原开发场景采取全过程呈现方式,由浅入深,系统阐述区块链原理、分布式账本技术和应用开发,涵盖分布式账本技术的全栈技术内容,从原理、技术、数据库、机制设计到应用开发形成具有实际应用价值的方法体系,展现近期新的分布式账本技术及其应用开发的全过程,为区块链技术的应用开发提供实际操作方法与科学依据。
目录
第1章 区块链技术概述 1
1.1 区块链发展的技术背景 1
1.1.1 密码学 1
1.1.2 分布式共识 3
1.2 区块链发展的社会背景 4
1.2.1 数字经济 5
1.2.2 数字社会 6
1.2.3 数字技术 7
1.3 区块链基本概念与原理 8
1.3.1 基本概念 8
1.3.2 关键技术 12
1.3.3 基本原理 13
1.4 区块链技术特性与分类 15
1.4.1 技术特性 15
1.4.2 区块链分类 16
1.5 区块链技术代际演进 18
1.5.1 密码朋克 18
1.5.2 加密货币 19
1.5.3 智能合约 20
1.5.4 应用拓展 21
1.6 区块链技术应用现状与发展趋势 21
1.6.1 应用现状 21
1.6.2 发展趋势 24
本章小结 29
第2章 Hyperledger Fabric分布式账本技术基础架构 31
2.1 Fabric概述 31
2.1.1 Fabric项目背景 31
2.1.2 Fabric技术特征 32
2.2 基础架构 33
2.2.1 网络层 34
2.2.2 核心层 36
2.2.3 接口层 36
2.3 基本概念 36
2.3.1 网络节点 36
2.3.2 分布式账本 39
2.3.3 智能合约和链码 39
2.3.4 账本通道 39
2.3.5 私有数据集 40
2.4 交易流程 41
2.4.1 交易流程简介 41
2.4.2 案例说明 42
本章小结 44
第3章 Hyperledger Fabric分布式账本技术环境 45
3.1 Ubuntu操作系统 45
3.1.1 Linux概述 45
3.1.2 Ubuntu Server操作 46
3.2 Docker 47
3.2.1 Docker原理 48
3.2.2 Docker操作 49
3.2.3 Docker-Compose 51
3.3 Go语言 57
3.3.1 Go语言环境配置 57
3.3.2 Go语言语法 59
3.3.3 Go语言编译与运行 60
本章小结 61
第4章 Hyperledger Fabric分布式账本网络 63
4.1 Fabric网络原理 63
4.1.1 P2P网络 63
4.1.2 RPC协议 65
4.1.3 gRPC协议 68
4.1.4 Gossip协议 73
4.2 Fabric网络部署 75
4.2.1 环境配置 75
4.2.2 源码编译 79
4.2.3 身份证书生成 81
4.2.4 容器启动模式 84
4.2.5 本地启动模式 98
4.3 Fabric网络运维与管理 108
4.3.1 增删普通组织 108
4.3.2 网络监控与测试 113
本章小结 116
第5章 Hyperledger Fabric分布式账本Peer节点 118
5.1 Peer概述 118
5.1.1 Peer节点类型 118
5.1.2 Peer交互流程 119
5.2 Peer编译和部署 122
5.2.1 Peer编译 122
5.2.2 Peer核心配置 123
5.2.3 Peer启动 132
5.3 Peer命令 134
5.3.1 Peer命令类型 134
5.3.2 通道操作命令 135
5.3.3 链码操作命令 137
5.3.4 节点操作命令 140
本章小结 141
第6章 Hyperledger Fabric分布式账本存储 142
6.1 Fabric分布式账本 142
6.1.1 账本概念 142
6.1.2 核心组件 144
6.1.3 账本设计模式 146
6.1.4 账本架构 148
6.1.5 文件存储 151
6.2 账本数据库 153
6.2.1 LevelDB 154
6.2.2 CouchDB 155
6.2.3 数据库索引 157
6.3 账本区块 159
6.3.1 区块数据结构 159
6.3.2 区块交易事务 162
6.3.3 区块数据访问 164
6.4 账本区块浏览器 168
6.4.1 区块数据可视化概念 168
6.4.2 Hyperledger Explorer架构 170
6.4.3 Hyperledger Explorer页面 171
6.4.4 Hyperledger Explorer实验 173
本章小结 178
第7章 Hyperledger Fabric分布式账本共识 179
7.1 分布式共识概述 179
7.1.1 共识问题 179
7.1.2 共识演进 183
7.2 分布式共识理论 188
7.2.1 FLP理论 188
7.2.2 CAP理论 188
7.2.3 BASE理论 191
7.3 分布式共识原理 192
7.3.1 Paxos 192
7.3.2 PBFT 197
7.3.3 PoW 201
7.3.4 PoS 203
7.4 Fabric共识机制 208
7.4.1 共识框架 208
7.4.2 Solo共识 216
7.4.3 Kafka共识 216
7.4.4 Raft共识 219
7.5 Fabric共识部署和测试 223
7.5.1 Solo部署和测试 223
7.5.2 Kafka部署和测试 225
7.5.3 Raft部署和测试 231
本章小结 233
第8章 Hyperledger Fabric分布式账本身份管理 234
8.1 PKI基本原理 234
8.1.1 PKI架构 234
8.1.2 数字证书 235
8.1.3 数字签名 237
8.1.4 消息认证 239
8.1.5 PKI示例 239
8.2 Fabric CA架构与部署 244
8.2.1 Fabric CA架构 245
8.2.2 Fabric CA部署 247
8.3 Fabric CA操作 249
8.3.1 Fabric CA操作命令 249
8.3.2 Fabric CA操作示例 252
本章小结 260
第9章 Hyperledger Fabric分布式账本隐私保护机制 261
9.1 区块链隐私保护问题、方法与机制 261
9.1.1 区块链隐私保护问题 261
9.1.2 区块链隐私保护方法与机制 262
9.2 Fabric隐私保护机制 264
9.2.1 Fabric隐私保护体系 264
9.2.2 访问控制 265
9.2.3 通道隔离 267
9.2.4 私有数据集 271
9.3 Fabric隐私保护机制示例 276
9.3.1 通道隔离示例 276
9.3.2 私有数据集示例 279
本章小结 284
第10章 Hyperledger Fabric分布式账本链码 285
10.1 智能合约概述 285
10.1.1 智能合约定义 285
10.1.2 智能合约应用 286
10.2 Fabric链码开发规范 287
10.2.1 链码类型 287
10.2.2 链码编写 289
10.2.3 链码部署 291
10.2.4 链码调用 292
10.3 Fabric链码编程示例 293
10.3.1 状态转移型链码 293
10.3.2 食品溯源型链码 296
本章小结 304
第11章 Hyperledger Fabric Go SDK Web服务开发 305
11.1 Web服务概述 305
11.1.1 Web框架 305
11.1.2 Gin框架 306
11.2 Go Web服务控制层 307
11.2.1 连接配置文件 307
11.2.2 控制层开发 311
11.3 Go Web服务路由层 318
11.3.1 路由层开发 318
11.3.2 路由绑定 320
本章小结 321
第12章 基于Node SDK的数字版权保护系统实现 322
12.1 版权保护场景分析 322
12.1.1 需求分析 322
12.1.2 架构设计 324
12.1.3 数据模型设计 324
12.1.4 环境准备 325
12.2 Node SDK应用开发 328
12.2.1 模块接口 328
12.2.2 链码开发 331
12.2.3 网络连接配置 336
12.2.4 客户端身份注册与登记 337
12.2.5 业务层实现 341
12.3 Express后端服务实现 346
12.3.1 路由文件 346
12.3.2 应用主文件 353
12.4 应用部署与测试 353
12.4.1 启动网络 353
12.4.2 启动后端服务 354
12.4.3 应用测试 354
本章小结 356
第13章 基于Go SDK的物联网数据采集系统 358
13.1 物联网数据采集场景分析 358
13.1.1 需求分析 358
13.1.2 架构设计 358
13.1.3 数据模型设计 360
13.1.4 环境准备 360
13.2 传感器数据采集 362
13.2.1 传感器简介 362
13.2.2 Gobot框架 363
13.2.3 数据采集实现 363
13.3 链码与应用开发 365
13.3.1 链码开发 365
13.3.2 网络连接配置 369
13.3.3 应用开发 374
13.4 应用部署与测试 377
13.4.1 系统搭建 378
13.4.2 应用测试 378
本章小结 383
参考文献 384
节选
第1章 区块链技术概述 区块链既是作为比特币的底层技术而诞生的,也是伴随着以比特币为首的加密货币的出现而兴起的一项不断演进的新兴颠覆性技术,是一种由多方共同维护,以密码学算法为基础保证点对点传输与访问安全,能够实现数据一致存储、难以篡改、防止抵赖的分布式账本技术(distributed ledger technology,DLT)。区块链概念一经提出就直接冲击着人们的惯性思维,近年来,人们拥抱区块链的热情不断高涨,在全球掀起了一波又一波的热潮。事实上,区块链技术可以为很多领域带来诸多革命性变化,如变革社会生产关系、赋能数字经济、重塑产业结构与治理结构等,而且当前已经成功实现了多种业务场景的应用落地,成为我国建设数字经济的重点产业。 1.1 区块链发展的技术背景 区块链技术涉及密码学、计算机科学、经济学等多个学科,是众多技术发展到一定程度之后组合而成的技术栈。通过将不同领域的技术进行巧妙的结合,区块链就可以成为一个可以稳定运行的系统。 1.1.1 密码学 从处处可见的产品条形码到二维码,编码已经与社会经济深度融合,成为日常生活的一部分。除了二维码这类常见的非加密编码,加密编码(即密码)同样对社会发展产生巨大影响。从历史的角度来看,密码学可以分为古典密码学和现代密码学两个阶段。1949年以前为古典密码学阶段,人们一般凭借较为直观的技巧和经验对文字进行变换(如替换、位移等)来设计加密方法,如凯撒密码 。这些古典密码学加密方法一般设计简单且容易破译。1949年以后为现代密码学阶段,人们利用数学理论设计加密方法,如公钥密码(public-key cryptography,又称非对称加密),并采用电子计算机进行信息的加密和解密。 在现代密码学阶段,1949年,香农(Shannon)发表名为“Communication Theory of Secrecy Systems”的论文,将信息论引入密码学,研究了密码系统的数学结构和代数理论,为密码学建立了坚实的数学基础,使之发展成为一门学科。 图1-1为香农提出的一般密码系统,其中M表示明文消息,K表示密钥(加密和解密的密钥相同),TK表示加密方法,E表示密文,TK–1表示解密方法。在这个一般密码系统中,实现信息安全传输的前提条件是:在信息传输之前,信息收发双方必须安全共享密钥K。这一前提同样带来一个问题,即在一个不安全的信道环境中,密钥K无法被安全的共享,在此基础之上的信息安全传输同样难以达成。 这一问题于1976年被迪菲(Diffie)和赫尔曼(Hellman)解决,他们在“New Directions in Cryptography”一文中提出了 DH密钥交换(Diffie–Hellman key exchange)算法,解决了不安全信道的密钥交换问题,同时首次公开提出了公钥密码的概念。在他们的构想中,公钥密码需要设计相互独立的加密密钥和解密密钥,以解决对称密码体制中通信双方必须事先安全共享密钥的问题,这一构想在1977年被里维斯特(Rivest)、沙米尔(Shamir)和阿德尔曼(Adlema)实现,他们在论文“A Method for Obtaining Digital Signatures and Public-key Cryptosystems”中提出非对称加密算法,这在密码学的发展中具有划时代的意义。 如图1-2所示为公钥密码系统,其中P表示消息明文,信息发送者利用接收者的公钥(密钥源#1)对信息加密,接收者在收到密文后,使用自己的私钥(密钥源#2)进行解密,即可得到原始消息。 1983年,威斯纳(Wiesner)首次将量子力学与密码学相结合,提出一种利用量子态来传输消息的方法,开创了量子密码学的先河。1984年,本内特(Bennett)和布拉萨尔(Brassard)提出量子密码学的**个密钥分发协议——BB84协议,走出了开发实用性量子密码的**步。1994年,肖尔(Shor)提出了一种可以在多项式时间内完成整数分解问题的算法(Shor算法),该算法需在量子计算机上运行。2003年,Shor算法又被推广到解决有限域中椭圆曲线的困难问题上。Shor算法的提出,意味着一旦量子计算机研制成功,则目前常用的基于整数分解或者椭圆曲线的加密方法[如RSA算法和ECC(elliptic curve cryptography,椭圆曲线公钥密码)算法]将不再安全。因此,许多学者开始研究能够抵抗量子计算机攻击的加密方法(抗量子密码学或者后量子密码学),如基于纠错码的CFS(courtois finiasz sendrier)算法,基于格问题的NTRU(number theory research unit)算法等。虽然这些抗量子密码的加密方法仍然基于数学理论,但在相应的能破解这些加密方法的量子算法出现之前,即使量子计算机研制成功,这些加密方法仍然是安全的。 密码学广泛用于现代信息网络通信系统,是人们在网络世界进行安全信息传输的基础,同时也是区块链技术栈中的一个重要组成部分,单向加密、对称加密及非对称加密等算法在区块链中都有应用。 1.1.2 分布式共识 共识问题是社会科学和计算机科学领域的经典问题,已经有很长的研究历史。目前有记载的文献至少可以追溯到1959年兰德公司和布朗大学的艾森伯格(Eisenberg)和盖尔(Gale)发表的“Consensus of Subjective Probabilities: The Pari-Mutuel Method”,该论文主要研究对于某个特定的概率空间,一组个体各自有其主观的概率分布时,如何形成一个共识概率分布的问题。随后,共识问题逐渐引起了各科学领域的研究兴趣。 分布式计算领域的共识问题于1980年由皮斯(Pease)、肖斯塔克(Shostak)和兰波特(Lamport)等提出,该问题主要研究在具有故障节点的P2P网络中,非故障节点如何针对特定值达成一致共识。1982年,他们在另一篇文章中正式将该问题命名为“拜占庭将军问题”,提出了基于口头消息和基于签名消息的两种解决算法。拜占庭假设是对现实世界的模型化,强调的是由于硬件错误、网络堵塞或断开以及遭到恶意攻击时,计算机网络可能会出现的各种不可预料的行为。此后,分布式系统的共识算法可以分为拜占庭容错和非拜占庭容错两类。早期共识算法一般为非拜占庭容错算法,如应用于分布式数据库的VR(viewstamped replication)和Paxos算法,2008年比特币诞生后拜占庭容错类共识算法才逐渐获得实际应用。由于拜占庭将军问题是区块链共识算法核心思想的根源,直接影响着区块链系统共识算法的设计思路和实现方式,因此在区块链技术体系中具有非常重要的研究意义。 1985年费希尔(Fisher)等发表了论文“Impossibility of Distributed Consensus with One Faulty Process”,这篇文章证明了在拥有多个确定性进程的异步系统中,只要任一个进程存在发生故障的可能,就不存在能够保证在有限时间内使所有进程达成一致的协议,后来该结论称为FLP不可能定理(该定理由Fischer、Lynch和Patterson三位学者共同提出,故取姓名首字母简写),是分布式系统领域的重要定理之一。1988年,麻省理工学院的布赖恩(Brian)等提出了VR一致性算法,采用了主机-备份(primary-backup)模式,规定所有数据操作都必须通过主机进行,然后再复制到各个备份机器上以确保数据的一致性。1989年,兰波特在论文“The Part-Time Parliament”中提出了Paxos算法,由于文章内容过于晦涩,直到1998年才发表于ACM Transactions on Computer Systems上。Paxos算法是基于消息传递的一致性算法,主要解决分布式系统如何就某个特定值达成一致的问题。随着分布式共识理论研究的深入,Paxos算法衍生出了Abstract Paxos、Classic Paxos、Byzantine Paxos和Disk Paxos等四类变种,成为解决异步系统共识问题的一系列重要的算法。 在分布式系统中,虽然共识和一致性在很多场景下被认为是近似等价或可互相替代的,但两者还是存在本质上的区别。首先,共识侧重于研究分布式节点达成一致的过程及其相关算法,而一致性研究则侧重于节点共识过程*终达成的稳定状态;其次,传统分布式一致性研究一般不考虑拜占庭容错问题,即假设不存在恶意篡改和伪造数据的拜占庭节点,因此在很长一段时间内,传统分布式一致性算法的应用场景大部分是节点数量有限,且相对可信的分布式数据库环境。而区块链共识算法运行于更加复杂、开放和缺乏信任的网络环境中,节点数量更多且可能存在恶意的拜占庭节点。因此,即使VR、Paxos等分布式一致性算法早在20世纪80年代就已经提出来了,但是如何通过算法解决拜占庭容错问题,设计简单易行的分布式共识算法仍然是分布式计算领域的难题之一。 1.2 区块链发展的社会背景 从20世纪70年代开始,个人计算机以及计算机信息管理系统被广泛应用,无纸化办公成为常态,从而加速了信息资源的获取和积累,人类进入以信息为主要资源、以信息处理为主要生产方式的信息化阶段;进入90年代中期,互联网的广泛应用,各种信息系统的高效连接,标志着“从人脑到众脑”时代的来临,信息交互与任务协同不再受时空分割的限制,从而促进了数据资源流通与汇聚,人类进入以互联网应用为主要特征的网络化阶段;到了90年代后期,移动互联网广泛使用,人类开启了在网络空间中的消费娱乐社交方式,进一步促使数据资源爆炸式增长。21世纪以来,大数据、人工智能、云计算、物联网等数字技术在全产业链的各个环节不断地推动着大数据与产业深度融合发展,有效推进互联网向生产力发展领域拓展,从而使得经济社会各个领域产生的数据呈现越来越大规模的交换、共享和聚集态势,呈现信息应用的类人智能,人类进入以数据驱动为主要特征的数字化阶段。 从信息化到网络化,再到数字化,社会处于加速发展状态,其中一个很重要的原因是科技、网络、信息的关系更加紧密,作用日益强化。各个领域通过网络产生的信息量呈爆发式增长,而且这些信息交换的频率与速度大大加快,从而进一步提高了科技创新的速度,对社会发展进程产生了深刻影响。在数字化的发展浪潮中,计算机技术的创新尤为迅速,区块链技术作为其中一项重要成果,其诞生与发展不但受到了时代背景的影响,而且适应了时代发展的需要,并对时代进步产生了重要的推动作用。 1.2.1 数字经济 数字经济是以数字化的知识和信息作为关键生产要素,以数字技术为核心驱动力量,以现代信息网络为重要载体,通过数字技术与实体经济深度融合,不断提高经济社会的数字化、网络化、智能化水平,加速重构经济发展与治理模式的新型经济形态(中国信息通信研究院,2021b)。在数字经济发展过程中,万物以前所未有的速度数字化,数据规模迅速扩大,大数据在加速生产要素流通、重塑组织形态、驱动产业升级与商业发展、改善生产关系与社会分工等方面展现出巨大的力量,数据成为与劳动力、资本、土地、知识、技术并列的生产要素。数据要素不仅可以作为“黏合剂”全面融入劳动、资本、技术等传统生产要素,促进各项要素的连接与流通,增强要素间的协作性与联动性,发挥要素组合和要素结构的乘数效应与网络效应,提高各项生产要素向产品转化的效率(李海舰和赵丽,2021);还可以通过数据分析与数据挖掘等计算机技术,生产出社会所需的各类信息产品与信息服务;更可以与人工智能、机器学习等计算机程序结合,取代部分人力劳动,拓展生产力的范畴;是驱动社会创新、经济高质量发展的新引擎。 与其他生产要素相同,要充分挖掘数据要素的潜能,必须保证数据要素的顺畅流通。但由于数据要素具有虚拟性、非
-
深度学习的数学
¥43.5¥69.0 -
全图解零基础word excel ppt 应用教程
¥12.0¥48.0 -
机器学习
¥59.4¥108.0 -
有限与无限的游戏:一个哲学家眼中的竞技世界
¥37.4¥68.0 -
智能硬件项目教程:基于ARDUINO(第2版)
¥31.9¥65.0 -
硅谷之火-人与计算机的未来
¥14.3¥39.8 -
元启发式算法与背包问题研究
¥38.2¥49.0 -
AI虚拟数字人:商业模式+形象创建+视频直播+案例应用
¥62.9¥89.8 -
UNIX环境高级编程(第3版)
¥164.9¥229.0 -
剪映AI
¥52.8¥88.0 -
深度学习高手笔记 卷2:经典应用
¥90.9¥129.8 -
纹样之美:中国传统经典纹样速查手册
¥76.3¥109.0 -
UG NX 12.0数控编程
¥22.1¥45.0 -
MATLAB计算机视觉与深度学习实战(第2版)
¥90.9¥128.0 -
界面交互设计理论研究
¥30.8¥56.0 -
微机组装与系统维护技术教程(第二版)
¥37.8¥43.0 -
明解C语言:实践篇
¥62.9¥89.8 -
Linux服务器架设实战(Linux典藏大系)
¥83.3¥119.0 -
Visual Basic 语言程序设计基础(第6版)
¥32.0¥45.0 -
贝叶斯推理与机器学习
¥139.3¥199.0