描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787111614920
编辑推荐
(1)作者是中国以太坊企业联盟的联合发起人和核心成员,是中国区块链和以太坊技术的早期布道者。(2)三位作者在中兴、华为等大企业工作多年,有丰富的系统架构和软件开发经验,技术功底深厚。(3)从设计理念、技术架构、共识算法、智能合约、DApp开发、以太坊虚拟机等近10个维度系统、深入讲解以太坊。
内容简介
内容简介
这是一本从原理和实践两个层面系统、深入讲解以太坊技术的专著,从设计理念、技术架构、共识算法、智能合约、以太坊虚拟机、开发工具、DApp开发、企业以太坊解决方案、跨链技术等近10个方面进行了详细讲解,既适合初学者系统学习以太坊的原理和应用开发,又适合有一定基础的开发者深入掌握以太坊的底层运行机制。
全书一共11章:
第1~3章对以太坊的系统架构、设计理念和技术架构进行了系统介绍,包括以太坊项目的起源和发展路线图、核心技术、共识问题、图灵完备性、整体设计思路和各模块的核心功能实现等核心内容。
第4章深入剖析了PoW、PoA、PoS等共识算法的适用场景、设计思想、技术实现和优缺点。
第5~7章围绕智能合约展开,系统讲解了智能合约语言Solidity、智能合约应用开发、智能合约运行原理和实现细节,以及以太坊虚拟机的运行原理和智能合约字节码的解析等内容。
第8章介绍了以太坊周边的工具,教读者如何在不开发代码的情况下完成与以太坊网络的交互。
第9章介绍了以太坊技术的企业级应用以及企业以太坊联盟的标准化进展。
第10章对跨链技术和方案进行了方向性探讨,虽然目前跨链技术还不成熟,但被视为后以太坊时代的区块链技术热点。
第11章分析了以太坊现阶段面临的发展瓶颈,并对可能的解决方案进行了展望。
这是一本从原理和实践两个层面系统、深入讲解以太坊技术的专著,从设计理念、技术架构、共识算法、智能合约、以太坊虚拟机、开发工具、DApp开发、企业以太坊解决方案、跨链技术等近10个方面进行了详细讲解,既适合初学者系统学习以太坊的原理和应用开发,又适合有一定基础的开发者深入掌握以太坊的底层运行机制。
全书一共11章:
第1~3章对以太坊的系统架构、设计理念和技术架构进行了系统介绍,包括以太坊项目的起源和发展路线图、核心技术、共识问题、图灵完备性、整体设计思路和各模块的核心功能实现等核心内容。
第4章深入剖析了PoW、PoA、PoS等共识算法的适用场景、设计思想、技术实现和优缺点。
第5~7章围绕智能合约展开,系统讲解了智能合约语言Solidity、智能合约应用开发、智能合约运行原理和实现细节,以及以太坊虚拟机的运行原理和智能合约字节码的解析等内容。
第8章介绍了以太坊周边的工具,教读者如何在不开发代码的情况下完成与以太坊网络的交互。
第9章介绍了以太坊技术的企业级应用以及企业以太坊联盟的标准化进展。
第10章对跨链技术和方案进行了方向性探讨,虽然目前跨链技术还不成熟,但被视为后以太坊时代的区块链技术热点。
第11章分析了以太坊现阶段面临的发展瓶颈,并对可能的解决方案进行了展望。
目 录
前言
第1章 以太坊概述 1
1.1 区块链起源 1
1.2 以太坊发展之路 3
1.3 以太坊核心技术 6
1.3.1 智能合约 6
1.3.2 PoS 7
1.4 以太坊系统架构 8
1.5 以太坊社区 9
1.6 以太坊路线图 10
1.7 本章小结 11
第2章 设计理念 12
2.1 密码学 13
2.1.1 Hash 13
2.1.2 椭圆曲线的加解密 18
2.1.3 签名 20
2.1.4 Merkle树和验证 24
2.1.5 MPT状态树 24
2.2 共识问题 28
2.2.1 分布式一致性问题 28
2.2.2 Paxos 和Rfat 30
2.2.3 拜占庭容错及PBFT 31
2.2.4 以太坊IBFT共识 33
2.2.5 PoW 35
2.2.6 Casper 36
2.2.7 以太坊性能 38
2.3 图灵完备 40
2.3.1 比特币脚本 41
2.3.2 EVM虚拟机 44
2.3.3 Gas机制 46
2.4 本章小结 49
第3章 技术架构 50
3.1 分层设计 51
3.1.1 应用层 51
3.1.2 合约层 54
3.1.3 激励层 55
3.1.4 共识层 56
3.1.5 网络层 59
3.1.6 数据层 60
3.2 数据结构设计 62
3.2.1 交易 62
3.2.2 状态树 65
3.2.3 区块 67
3.2.4 区块链 71
3.2.5 数据库 72
3.3 P2P网络 76
3.3.1 节点发现 76
3.3.2 节点管理 78
3.4 客户端 84
3.4.1 RPC 85
3.4.2 web3 88
3.5 本章小结 89
第4章 共识算法 90
4.1 PoW 90
4.1.1 算法概述 90
4.1.2 设计实现 93
4.1.3 优缺点分析 96
4.2 PoA 97
4.2.1 算法概述 97
4.2.2 设计实现 99
4.2.3 优缺点分析 102
4.3 PoS 103
4.3.1 算法概述 103
4.3.2 优缺点分析 111
4.4 本章小结 112
第5章 智能合约开发 113
5.1 智能合约的诞生 113
5.2 以太坊上的智能合约 114
5.2.1 以太坊智能合约概述 114
5.2.2 关于智能合约的理解误区 114
5.2.3 合约账户 115
5.2.4 智能合约举例 116
5.2.5 智能合约在以太坊上的运行流程 118
5.3 智能合约编程语言 119
5.4 智能合约应用开发 120
5.4.1 连接和访问以太坊 120
5.4.2 以太坊集成开发环境remix 120
5.4.3 truffle 126
5.4.4 智能合约编译器solc 129
5.5 solidity语法详解 130
5.5.1 智能合约源文件 130
5.5.2 solidity数据类型 132
5.5.3 智能合约的内建全局变量和函数 141
5.5.4 智能合约中的单位 143
5.5.5 solidity表达式和控制结构 144
5.5.6 函数 148
5.5.7 常量状态变量 152
5.5.8 智能合约的事件 153
5.5.9 智能合约的继承性 153
5.5.10 智能合约的创建 154
5.5.11 智能合约的销毁 154
5.6 solidity编程规范 155
5.6.1 代码布局 155
5.6.2 编码约定 157
5.6.3 命名约定 159
5.7 本章小结 159
第6章 智能合约运行机制 160
6.1 调用智能合约函数 160
6.1.1 外部调用 161
6.1.2 内部调用 162
6.2 以太坊ABI协议 163
6.2.1 ABI接口定义 164
6.2.2 函数选择器 165
6.2.3 参数编码 165
6.2.4 abi编码举例 166
6.3 交易的费用和计算 167
6.3.1 什么是Gas机制 167
6.3.2 为什么需要Gas机制 168
6.3.3 交易费用计算法方法 169
6.3.4 交易费用的组成 170
6.4 智能合约的事件 170
6.4.1 事件的存储和解析 170
6.4.2 Logs的底层接口 173
6.4.3 事件的查询 174
6.4.4 事件查询过程 174
6.5 库和链接原理 175
6.5.1 库的定义 175
6.5.2 库的使用 175
6.5.3 库的连接 176
6.5.4 库中的事件 176
6.6 智能合约元数据 177
6.7 智能合约安全性分析 179
6.7.1 智能合约中的陷阱 179
6.7.2 建议 182
6.7.3 案例分析:资金回退流程 183
6.8 智能合约和外界的通信 184
6.8.1 oracle介绍 184
6.8.2 oracle需要解决的问题 185
6.8.3 数据商店 185
6.9 智能合约的动态升级 185
6.9.1 solidity是一个受限的语言 185
6.9.2 动态升级的实现 186
6.10 智能合约的数据存储 187
6.10.1 存储 187
6.10.2 内存 187
6.10.3 栈 188
6.11 本章小结 188
第7章 智能合约字节码与汇编 189
7.1 智能合约汇编指令集 189
7.2 智能合约字节码解析 192
7.3 状态变量的存储 196
7.3.1 普通状态变量的存储 196
7.3.2 动态数据的storage存储 198
7.3.3 总结 201
7.4 solidity内嵌汇编 201
7.4.1 内嵌汇编指令 201
7.4.2 单独使用汇编指令 203
7.5 本章小结 204
第8章 开发者工具 205
8.1 MetaMask 205
8.1.1 MetaMask安装 205
8.1.2 MetaMask作为Web钱包 206
8.1.3 MetaMask作为DApp客户端 207
8.2 以太坊测试网络 209
8.2.1 Morden 209
8.2.2 Ropsten 210
8.2.3 Kovan 210
8.2.4 Rinkeby 211
8.2.5 本地以太坊私链 212
8.2.6 连接测试网络 213
8.3 Remix 213
8.3.1 本地安装Remix 213
8.3.2 在线Remix 214
8.4 truffle 217
8.4.1 安装truffle 218
8.4.2 构建应用项目 218
8.4.3 demo合约实践 220
8.4.4 智能合约测试和验证 222
8.5 myetherwall
第1章 以太坊概述 1
1.1 区块链起源 1
1.2 以太坊发展之路 3
1.3 以太坊核心技术 6
1.3.1 智能合约 6
1.3.2 PoS 7
1.4 以太坊系统架构 8
1.5 以太坊社区 9
1.6 以太坊路线图 10
1.7 本章小结 11
第2章 设计理念 12
2.1 密码学 13
2.1.1 Hash 13
2.1.2 椭圆曲线的加解密 18
2.1.3 签名 20
2.1.4 Merkle树和验证 24
2.1.5 MPT状态树 24
2.2 共识问题 28
2.2.1 分布式一致性问题 28
2.2.2 Paxos 和Rfat 30
2.2.3 拜占庭容错及PBFT 31
2.2.4 以太坊IBFT共识 33
2.2.5 PoW 35
2.2.6 Casper 36
2.2.7 以太坊性能 38
2.3 图灵完备 40
2.3.1 比特币脚本 41
2.3.2 EVM虚拟机 44
2.3.3 Gas机制 46
2.4 本章小结 49
第3章 技术架构 50
3.1 分层设计 51
3.1.1 应用层 51
3.1.2 合约层 54
3.1.3 激励层 55
3.1.4 共识层 56
3.1.5 网络层 59
3.1.6 数据层 60
3.2 数据结构设计 62
3.2.1 交易 62
3.2.2 状态树 65
3.2.3 区块 67
3.2.4 区块链 71
3.2.5 数据库 72
3.3 P2P网络 76
3.3.1 节点发现 76
3.3.2 节点管理 78
3.4 客户端 84
3.4.1 RPC 85
3.4.2 web3 88
3.5 本章小结 89
第4章 共识算法 90
4.1 PoW 90
4.1.1 算法概述 90
4.1.2 设计实现 93
4.1.3 优缺点分析 96
4.2 PoA 97
4.2.1 算法概述 97
4.2.2 设计实现 99
4.2.3 优缺点分析 102
4.3 PoS 103
4.3.1 算法概述 103
4.3.2 优缺点分析 111
4.4 本章小结 112
第5章 智能合约开发 113
5.1 智能合约的诞生 113
5.2 以太坊上的智能合约 114
5.2.1 以太坊智能合约概述 114
5.2.2 关于智能合约的理解误区 114
5.2.3 合约账户 115
5.2.4 智能合约举例 116
5.2.5 智能合约在以太坊上的运行流程 118
5.3 智能合约编程语言 119
5.4 智能合约应用开发 120
5.4.1 连接和访问以太坊 120
5.4.2 以太坊集成开发环境remix 120
5.4.3 truffle 126
5.4.4 智能合约编译器solc 129
5.5 solidity语法详解 130
5.5.1 智能合约源文件 130
5.5.2 solidity数据类型 132
5.5.3 智能合约的内建全局变量和函数 141
5.5.4 智能合约中的单位 143
5.5.5 solidity表达式和控制结构 144
5.5.6 函数 148
5.5.7 常量状态变量 152
5.5.8 智能合约的事件 153
5.5.9 智能合约的继承性 153
5.5.10 智能合约的创建 154
5.5.11 智能合约的销毁 154
5.6 solidity编程规范 155
5.6.1 代码布局 155
5.6.2 编码约定 157
5.6.3 命名约定 159
5.7 本章小结 159
第6章 智能合约运行机制 160
6.1 调用智能合约函数 160
6.1.1 外部调用 161
6.1.2 内部调用 162
6.2 以太坊ABI协议 163
6.2.1 ABI接口定义 164
6.2.2 函数选择器 165
6.2.3 参数编码 165
6.2.4 abi编码举例 166
6.3 交易的费用和计算 167
6.3.1 什么是Gas机制 167
6.3.2 为什么需要Gas机制 168
6.3.3 交易费用计算法方法 169
6.3.4 交易费用的组成 170
6.4 智能合约的事件 170
6.4.1 事件的存储和解析 170
6.4.2 Logs的底层接口 173
6.4.3 事件的查询 174
6.4.4 事件查询过程 174
6.5 库和链接原理 175
6.5.1 库的定义 175
6.5.2 库的使用 175
6.5.3 库的连接 176
6.5.4 库中的事件 176
6.6 智能合约元数据 177
6.7 智能合约安全性分析 179
6.7.1 智能合约中的陷阱 179
6.7.2 建议 182
6.7.3 案例分析:资金回退流程 183
6.8 智能合约和外界的通信 184
6.8.1 oracle介绍 184
6.8.2 oracle需要解决的问题 185
6.8.3 数据商店 185
6.9 智能合约的动态升级 185
6.9.1 solidity是一个受限的语言 185
6.9.2 动态升级的实现 186
6.10 智能合约的数据存储 187
6.10.1 存储 187
6.10.2 内存 187
6.10.3 栈 188
6.11 本章小结 188
第7章 智能合约字节码与汇编 189
7.1 智能合约汇编指令集 189
7.2 智能合约字节码解析 192
7.3 状态变量的存储 196
7.3.1 普通状态变量的存储 196
7.3.2 动态数据的storage存储 198
7.3.3 总结 201
7.4 solidity内嵌汇编 201
7.4.1 内嵌汇编指令 201
7.4.2 单独使用汇编指令 203
7.5 本章小结 204
第8章 开发者工具 205
8.1 MetaMask 205
8.1.1 MetaMask安装 205
8.1.2 MetaMask作为Web钱包 206
8.1.3 MetaMask作为DApp客户端 207
8.2 以太坊测试网络 209
8.2.1 Morden 209
8.2.2 Ropsten 210
8.2.3 Kovan 210
8.2.4 Rinkeby 211
8.2.5 本地以太坊私链 212
8.2.6 连接测试网络 213
8.3 Remix 213
8.3.1 本地安装Remix 213
8.3.2 在线Remix 214
8.4 truffle 217
8.4.1 安装truffle 218
8.4.2 构建应用项目 218
8.4.3 demo合约实践 220
8.4.4 智能合约测试和验证 222
8.5 myetherwall
前 言
2017年年初,IBM宣布在德国慕尼黑设立物联网事业部,旨在围绕区块链、安全,通过Watson物联网技术,从嵌在机器、汽车、无人驾驶飞机、滚珠轴承、设备部件甚至医院中的数十亿传感器中获取实时数据,构建全新的物联网。
身处物联网行业的我,隐约感觉到区块链将会成为新的研究方向,为传统行业带来新的助力。随后,我查阅了大量相关资料,想尽可能多地了解区块链。一个偶然的机会,我结识了南京一家区块链初创公司的技术负责人,并受邀加入他们的团队,开始全身心投入区块链行业中。
我的初始工作围绕以太坊开源项目展开,范围包括白皮书、黄皮书、源码、工具、共识算法、智能合约、雷电网络、零知识证明等。短短几个月的时间,我学习到的新知识比过去几年加起来还要多。没过几个月,本书的另外两位作者史钦锋和程杰也加入团队,并一起成立了以太坊技术研究小组。在大家的共同努力下,我们从理论到实践,完整地总结出一套借助以太坊技术实现区块链应用落地的技术方案。
一路走来,我们深深感受到区块链理论涉及的概念之多,技术涉及的门类之广。这对于一个初学者来说实属不易。另外,一些不法分子利用区块链技术创新之名,行招摇撞骗、掳掠钱财之实。作为相关从业人员,我们有能力,也有必要尽自己的微薄之力,将自己所学和心得体会用文字记录下来,让广大的读者客观理性地认识这个新事物。如若读者能就其中一两点产生共鸣,激发创新、创造的热情,那实在是意外的收获。
本书仅仅针对以太坊开源项目。回想笔者的工作经历,虽然也接触过其他项目,但总体比较来看,以太坊是最适合初学者入门的技术栈。因为以太坊技术社区在全球范围最完善,参考资料多;以太坊核心团队最具备极客精神,开发速度快;以太坊主网上线运行时间长,经历了最严苛的安全性检验;以太坊的目标最远大,它要成为世界的计算机。
本书共分11章。书中不仅归纳总结了以太坊项目的整体现状,也对未来的发展和技术走向进行了总体预测和分析。
第1章 从比特币说起,谈以太坊项目的起源,对项目整体情况做了概述。
第2章 从理论入手,介绍了以太坊知识体系的诸多概念,比如密码学、共识和图灵完备特性。
第3章 从架构入手,介绍了以太坊设计的整体思路、模块划分以及核心功能实现。
第4章 讨论共识,共识是区块链最核心的问题,共识的设计也是区块链的难点所在。从PoW到PoA,再到PoS,我们比较了各种共识算法的优缺点,也分析了不同算法的适用场景。
第5~7章 围绕智能合约展开讨论。智能合约是以太坊的最大创新点,它将区块链变成了可以服务任何行业、任何场景的可编程平台。从开发步骤、技术原理到底层实现,覆盖了智能合约软件支持的方方面面。对于偏向区块链技术应用的开发者,我们建议将学习重点放在第5章;对于偏向底层的区块链协议开发者,相信第6、7章会带给你不少收获。
第8章 指导读者熟练掌握以太坊周边的工具,在不开发代码的情况下,完成与以太坊网络的交互。
第9章 介绍了以太坊技术的企业级应用以及企业以太坊联盟的标准化进展。
第10章 对跨链方案进行了探讨。由于目前跨链技术还不成熟,本章仅对大体的技术方向做了介绍。跨链也被视为后以太坊时代的区块链技术热点,将引领区块链3.0时代的到来。
第11章 分析了以太坊现阶段面临的发展瓶颈,并对可能的解决方案进行了展望。
本书内容包罗万象,有项目概述、架构设计、实现细节和开发方法,适合对区块链理论和实现感兴趣的读者阅读,也适合作为技术手册,供读者遇到具体问题时查阅参考。由于区块链技术发展迅速,水平有限,书中难免存在错误或不当之处,希望得到广大读者的批评指正。后续,我们将通过线上专栏(https://zhuanlan.zhihu.com/c_210509549)的方式,保持和读者的沟通,并针对大家感兴趣的话题进行讨论。
感谢带领我进入区块链行业的技术大咖Denny,感谢曾经一起工作的同事,也感谢为本书出版费尽心血的华章出版社的各位老师。在本书的编写过程中,占用了很多陪伴家人的时间,但得到了家人充分的鼓励与支持,深深地感谢他们。
身处物联网行业的我,隐约感觉到区块链将会成为新的研究方向,为传统行业带来新的助力。随后,我查阅了大量相关资料,想尽可能多地了解区块链。一个偶然的机会,我结识了南京一家区块链初创公司的技术负责人,并受邀加入他们的团队,开始全身心投入区块链行业中。
我的初始工作围绕以太坊开源项目展开,范围包括白皮书、黄皮书、源码、工具、共识算法、智能合约、雷电网络、零知识证明等。短短几个月的时间,我学习到的新知识比过去几年加起来还要多。没过几个月,本书的另外两位作者史钦锋和程杰也加入团队,并一起成立了以太坊技术研究小组。在大家的共同努力下,我们从理论到实践,完整地总结出一套借助以太坊技术实现区块链应用落地的技术方案。
一路走来,我们深深感受到区块链理论涉及的概念之多,技术涉及的门类之广。这对于一个初学者来说实属不易。另外,一些不法分子利用区块链技术创新之名,行招摇撞骗、掳掠钱财之实。作为相关从业人员,我们有能力,也有必要尽自己的微薄之力,将自己所学和心得体会用文字记录下来,让广大的读者客观理性地认识这个新事物。如若读者能就其中一两点产生共鸣,激发创新、创造的热情,那实在是意外的收获。
本书仅仅针对以太坊开源项目。回想笔者的工作经历,虽然也接触过其他项目,但总体比较来看,以太坊是最适合初学者入门的技术栈。因为以太坊技术社区在全球范围最完善,参考资料多;以太坊核心团队最具备极客精神,开发速度快;以太坊主网上线运行时间长,经历了最严苛的安全性检验;以太坊的目标最远大,它要成为世界的计算机。
本书共分11章。书中不仅归纳总结了以太坊项目的整体现状,也对未来的发展和技术走向进行了总体预测和分析。
第1章 从比特币说起,谈以太坊项目的起源,对项目整体情况做了概述。
第2章 从理论入手,介绍了以太坊知识体系的诸多概念,比如密码学、共识和图灵完备特性。
第3章 从架构入手,介绍了以太坊设计的整体思路、模块划分以及核心功能实现。
第4章 讨论共识,共识是区块链最核心的问题,共识的设计也是区块链的难点所在。从PoW到PoA,再到PoS,我们比较了各种共识算法的优缺点,也分析了不同算法的适用场景。
第5~7章 围绕智能合约展开讨论。智能合约是以太坊的最大创新点,它将区块链变成了可以服务任何行业、任何场景的可编程平台。从开发步骤、技术原理到底层实现,覆盖了智能合约软件支持的方方面面。对于偏向区块链技术应用的开发者,我们建议将学习重点放在第5章;对于偏向底层的区块链协议开发者,相信第6、7章会带给你不少收获。
第8章 指导读者熟练掌握以太坊周边的工具,在不开发代码的情况下,完成与以太坊网络的交互。
第9章 介绍了以太坊技术的企业级应用以及企业以太坊联盟的标准化进展。
第10章 对跨链方案进行了探讨。由于目前跨链技术还不成熟,本章仅对大体的技术方向做了介绍。跨链也被视为后以太坊时代的区块链技术热点,将引领区块链3.0时代的到来。
第11章 分析了以太坊现阶段面临的发展瓶颈,并对可能的解决方案进行了展望。
本书内容包罗万象,有项目概述、架构设计、实现细节和开发方法,适合对区块链理论和实现感兴趣的读者阅读,也适合作为技术手册,供读者遇到具体问题时查阅参考。由于区块链技术发展迅速,水平有限,书中难免存在错误或不当之处,希望得到广大读者的批评指正。后续,我们将通过线上专栏(https://zhuanlan.zhihu.com/c_210509549)的方式,保持和读者的沟通,并针对大家感兴趣的话题进行讨论。
感谢带领我进入区块链行业的技术大咖Denny,感谢曾经一起工作的同事,也感谢为本书出版费尽心血的华章出版社的各位老师。在本书的编写过程中,占用了很多陪伴家人的时间,但得到了家人充分的鼓励与支持,深深地感谢他们。
王欣
评论
还没有评论。