本书详细介绍了区块链的概念与技术体系,涉及其本质、作用、技术背景、原理、关键知识点和应用场景等,在内容写作上由整体到局部,层次分明,难度由浅入深,理论联系实际,力图使读者能快速、全面地了解区块链相关技术。
全书共10章。章从区块链的背景知识切入,介绍了区块链的基本概念,分析了区块链的价值基础,概括了当前区块链的主要应用与面临的挑战。第2章介绍了区块链的发展历程,揭示了区块链技术从产生到发展壮大的过程。第3章介绍了区块链的总体技术体系架构、核心层原理、开发架构与评估体系,并介绍了目前经典的区块链软件架构。第4章主要介绍区块链的账户系统,详细介绍了区块链涉及的主要密码学知识。第5章介绍了区块链的数据结构,阐述了区块链产生和运行的基本原理。第6章介绍了区块链的网络基础,即P2P网络的结构和基本原理。第7章分析了区块链的共识机制,并对不同共识机制的特性与适用场景进行了分析。第8章介绍了智能合约的基本原理、发展过程与面临的挑战。第9章详细介绍了在以太坊上编写智能合约的方法和部署过程。0章介绍了一个简单的区块链系统的开发实例,逐步带领助读者进行区块链系统的开发。
本书可作为信息类相关专业本科生教学类用书,也适合作为有志于研究区块链的读者的入门图书,还可作为科研人员、工程技术人员以及商务人员的参考用书。
第 1章 区块链概述
1.1 区块链产生的背景 002
1.1.1传统信任体系的局限 004
1.1.2互联社会发展的瓶颈 005
1.1.3区块链“信任”的发展 006
1.2 区块链的基本概念 008
1.2.1区块链的定义 009
1.2.2私有链、联盟链与公有链 010
1.2.3主链和侧链 011
1.3 区块链的价值基础 012
1.3.1区块链解决的根本问题 012
1.3.2区块链思维 014
1.3.3区块链技术架构 015
1.3.4区块链服务网络 017
1.3.5区块链价值生态系统 018
1.4 区块链的应用 020
1.4.1资产区块链化 020
1.4.2价值存储区块链化 022
1.4.3提升社会协同效率 022
1.4.4催生互助型产业生态 023
1.4.5培育共识自治社群 024
1.5 区块链的挑战 025
1.5.1技术的挑战 025
1.5.2商业的挑战 026
1.5.3社会治理的挑战 026
1.6 课后习题 027
第 2章 区块链的发展
2.1 区块链的发展历程 029
2.2 区块链1.0 030
2.2.1比特币简介 030
2.2.2比特币的获取与交易 031
2.2.3比特币的工作流程 032
2.2.4“双花”问题 033
2.2.5“分叉”问题 034
2.3 区块链2.0 036
2.3.1从智能合约到以太坊 036
2.3.2以太坊的工作流程 038
2.3.3基于以太坊的去中心化应用 039
2.4 区块链3.0 041
2.4.1超级账本 042
2.4.2区块链3.0 应用场景 043
2.5 区块链在中国的发展 045
2.6 课后习题 046
第3章 区块链技术体系
3.1 总体架构 048
3.1.1基础层 050
3.1.2合约层 051
3.1.3应用层 052
3.1.4接入层 055
3.2 核心层技术原理 055
3.2.1共识账本 056
3.2.2核心层架构 056
3.2.3区块链中的交易 059
3.2.4区块与区块链的形成 061
3.3 开发架构 062
3.3.1系统分析 062
3.3.2总体设计 065
3.3.3软件设计 066
3.3.4特殊考虑 068
3.4 典型区块链软件架构 069
3.4.1比特币 069
3.4.2以太坊 071
3.4.3超级账本 074
3.4.4EOS 077
3.5 区块链项目评价 079
3.5.1指标体系 080
3.5.2指标评价 082
3.5.3评估流程 084
3.6 课后习题 086
第4章 区块链账户
4.1 哈希函数 088
4.1.1概述 089
4.1.2SHA256 算法 090
4.2 公钥密码体制 094
4.2.1非对称加密算法 094
4.2.2数字签名技术 096
4.2.3RSA 算法 097
4.2.4椭圆曲线算法 100
4.3 区块链状态库 104
4.3.1状态库 104
4.3.2用户账户和合约账户 104
4.4 用户账户活动 105
4.4.1用户地址 106
4.4.2交易发起 107
4.5 合约账户活动 108
4.5.1合约的创建 108
4.5.2合约的调用 110
4.6 课后习题 111
第5章 区块链数据结构
5.1 设计思路 113
5.1.1哈希指针 113
5.1.2树 114
5.2 数据结构 116
5.2.1区块 116
5.2.2区块结构 117
5.2.3区块头 117
5.2.4区块体 118
5.3 结构树 119
5.3.1交易树 120
5.3.2状态树 121
5.3.3收据树 122
5.4 区块链的生成 122
5.4.1区块的生成 123
5.4.2区块的传播 127
5.4.3区块的校验 127
5.5 比特币交易示例 128
5.6 课后习题 133
第6章 区块链与P2P网络
6.1 P2P网络概述 135
6.1.1P2P 网络的基本概念 135
6.1.2P2P 网络的特点 137
6.1.3P2P 网络的主要应用场景 140
6.2 P2P网络模型 142
6.2.1P2P 网络模型概述 142
6.2.2集中目录式P2P 网络模型 143
6.2.3纯P2P 网络模型 145
6.2.4分层式P2P 网络模型 148
6.3 区块链P2P网络 152
6.3.1P2P 与区块链的关系 152
6.3.2区块链网络的可靠性 153
6.3.3案例:日食攻击 154
6.4 实现案例:比特币系统的P2P网络 156
6.4.1节点发现 157
6.4.2连接节点 158
6.4.3初始化区块下载 159
6.4.4区块广播 164
6.4.5孤立区块 166
6.4.6交易广播 166
6.4.7交易池(内存池) 167
6.5 实现案例:以太坊的P2P网络 167
6.5.1引导节点的实现 168
6.5.2以太坊的P2P 协议结构类型 169
6.5.3以太坊的P2P 协议 170
6.5.4以太坊的P2P 节点 171
6.6 课后习题 176
第7章 共识机制与奖励机制
7.1 共识机制的引入 178
7.1.1两军问题 179
7.1.2拜占庭将军问题 181
7.2 共识机制与奖励机制概述 183
7.2.1共识机制的设计 183
7.2.2奖励机制的设计 185
7.3 PoW共识机制 191
7.3.1基本概念 191
7.3.2比特币系统PoW 共识机制的实现原理 192
7.3.3以太坊PoW 共识机制的实现原理 195
7.3.4算法分析 196
7.4 PoS系列共识机制 198
7.4.1PoS 共识思想 199
7.4.2股份授权证明共识机制 201
7.4.3基于投注的共识机制 204
7.4.4基于认证的共识机制 205
7.5 其他常见的公有链共识机制 209
7.6 拜占庭共识机制 210
7.6.1拜占庭容错系统 210
7.6.2实用拜占庭容错 212
7.6.3授权拜占庭容错 214
7.7 传统分布式共识机制 215
7.7.1帕克索斯算法系列 215
7.7.2Raft 算法 217
7.8 共识机制总结 219
7.9 实现案例:共识机制 221
7.9.1比特币系统PoW 共识机制的实现案例 221
7.9.2以太坊PoW 共识机制的实现案例 230
7.9.3以太坊的PoS 共识机制的实现原理 237
7.10 课后习题 259
第8章 智能合约
8.1 智能合约概述 262
8.1.1智能合约的定义 262
8.1.2智能合约与区块链结合的意义 264
8.2 智能合约的工作原理 266
8.2.1区块链智能合约的演变 266
8.2.2以太坊智能合约的运行原理 270
8.2.3以太坊智能合约的构建与执行过程 272
8.3 以太坊智能合约基础 274
8.3.1智能合约的编程语言 274
8.3.2入门代码例程 275
8.3.3智能合约的操作 275
8.3.4EVM 的存储方式 277
8.3.5指令集和消息调用 278
8.3.6日志功能 279
8.4 智能合约的潜在问题 280
8.4.1以太坊智能合约安全事件 280
8.4.2其他安全事件 283
8.4.3智能合约的安全建议 287
8.5 课后习题 288
第9章 以太坊智能合约的开发与实践
9.1 以太坊开发环境的搭建 290
9.2 以太坊的交易与合约 291
9.2.1以太坊的账户类型 291
9.2.2交易与消息 292
9.3 以太坊接口 293
9.3.1接口方式 293
9.3.2以太坊接口配置 294
9.4 以太坊智能合约开发 296
9.4.1本地私有链的搭建与配置 296
9.4.2智能合约的结构 301
9.4.3智能合约的开发工具 303
9.4.4智能合约的部署与调用 304
9.5 创建企业级智能合约 307
9.5.1探索ganache-cli 307
9.5.2ganache-cli 的安装与使用 308
9.5.3可用RPC 方法 310
9.5.4Truffl e 概述 311
9.5.5编译合约 313
9.5.6配置文件 314
9.5.7合约部署与测试 315
9.6 课后习题 318
第 10章 区块链设计案例:AppChain
10.1 环境的搭建 320
10.1.1环境准备 321
10.1.2安装所需要的环境 321
10.2 学习搭建自己的基本区块链 333
10.2.1基于Python 2 的基本区块链 333
10.2.2基于Python 3 的区块链例程 335
10.3 搭建自己的区块链 338
10.3.1创建一个区块链 338
10.3.2区块链接口 347
10.3.3运行区块链 351
10.3.4网络一致性 355
10.4 课后习题 361
赵其刚,博士后,国信区块链研究中心主任,成都高新信息技术研究院院长,西南交通大学教师,国信公链(CIC)、CNG 农业链首席架构师;长期从事互联网、智慧城市及软件技术架构相关研究、教学及工程实践活动,近年来重点从事工业4.0、区块链相关理论及技术研发工作;发表学术论文20 余篇,出版图书5 种,并在中国大学MOOC 平台开设“区块链技术与应用”在线课程;主持各类科研课题100 余项,获得软件著作权、发明及相关科技成果奖励50 余项(区块链技术发明20 余项)。
王红军,博士, 西南交通大学信息科学与技术学院副研究员, 硕士生导师, 中国计算机学会不错会员,中国计算机学会人工智能与模式识别专委会委员,中国计算机学会协同计算专委会委员,中国人工智能学会机器学习专委会委员,四川省学术与技术带头人后备人选;主持、主研重量项目5项;发表学术论文70 余篇。
李天瑞,博士, 西南交通大学信息科学与技术学院教授, 博士生导师, 人工智能研究院副院长, 四川省云计算与智能技术高校重点实验室主任, 四川省学术与技术带头人, 靠前粗糙集学会会士和指导委员会主席;主持国家重点研发计划课题、国家自然科学基金项目等重量项目7 项, 在靠前会议做大会报告24 次;发表学术论文360 余篇,出版图书6 种, 主编SCI 期刊专辑10 集, 获得发明12 项。
王明文,博士, 西南交通大学数学学院副教授, 硕士生导师, 中国计算机学会不错会员,四川省计算机学会多媒体专委会委员;主持重量项目1 项, 省部级项目5 项;发表学术论文30 余篇,获得发明3 项。
成飏,博士,西南交通大学信息化研究院助理研究员,主要研究方向为区块链技术、云计算与计算智能,主持、主研国家和省部级项目多项,发表论文10 余篇,参与编写教材2 种。