首页>参考读物>计算机科学与技术>软件与程序设计

深入理解以太坊
作者 : 王欣 史钦锋 程杰 著
丛书名 : 区块链技术丛书
出版日期 : 2018-12-13
ISBN : 978-7-111-61492-0
定价 : 89.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 276
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

内容简介
这是一本从原理和实践两个层面系统、深入讲解以太坊技术的专著,从设计理念、技术架构、共识算法、智能合约、以太坊虚拟机、开发工具、DApp开发、企业以太坊解决方案、跨链技术等近10个方面进行了详细讲解,既适合初学者系统学习以太坊的原理和应用开发,又适合有一定基础的开发者深入掌握以太坊的底层运行机制。
全书一共11章:
第1~3章对以太坊的系统架构、设计理念和技术架构进行了系统介绍,包括以太坊项目的起源和发展路线图、核心技术、共识问题、图灵完备性、整体设计思路和各模块的核心功能实现等核心内容。
第4章深入剖析了PoW、PoA、PoS等共识算法的适用场景、设计思想、技术实现和优缺点。
第5~7章围绕智能合约展开,系统讲解了智能合约语言Solidity、智能合约应用开发、智能合约运行原理和实现细节,以及以太坊虚拟机的运行原理和智能合约字节码的解析等内容。
第8章介绍了以太坊周边的工具,教读者如何在不开发代码的情况下完成与以太坊网络的交互。
第9章介绍了以太坊技术的企业级应用以及企业以太坊联盟的标准化进展。
第10章对跨链技术和方案进行了方向性探讨,虽然目前跨链技术还不成熟,但被视为后以太坊时代的区块链技术热点。
第11章分析了以太坊现阶段面临的发展瓶颈,并对可能的解决方案进行了展望。

图书特色

作者是中国企业以太坊联盟创始人和核心成员,是国内区块链和以太坊技术的早期布道者
从设计理念、技术架构、共识算法、智能合约、以太坊虚拟机、开发工具、DApp开发、企业以太坊解决方案、跨链技术等9个维度系统、深入讲解以太坊
Dive Into Ethereum
深入理解以太坊
王欣 史钦锋 程杰  著

图书前言

2017年年初,IBM宣布在德国慕尼黑设立物联网事业部,旨在通过Watson物联网技术,从内嵌在机器、汽车、无人驾驶飞机、滚珠轴承、设备部件甚至医院中的数十亿传感器中获取实时数据,围绕区块链、安全,构建全新的物联网。
身处物联网行业,我隐约感觉到区块链将会成为新的研究方向,为传统行业带来新的助力。随后,我查阅了大量的相关资料,以尽可能多地了解区块链。一个偶然的机会,我结识了南京一家区块链初创公司的技术负责人,并受邀加入他们的团队,开始全身心地投入区块链行业。
起初,我的工作围绕以太坊开源项目展开,从白皮书、黄皮书、源码、工具到共识算法、智能合约、雷电网络、零知识证明,无所不含。短短几个月的时间,我所学习的新知识比过去几年加起来还要多。没过几个月,本书的另外两位作者史钦锋和程杰也加入团队,并成立了以太坊技术研究小组。在大家的共同努力之下,我们从理论到实践,完整地总结出一套借助以太坊技术实现区块链应用落地的技术方案。
一路走来,我们深深感受到区块链理论涉及的概念之多,技术涉及的门类之广,对于一个初学者来说实属不易。另外一方面,一些不法分子以区块链技术创新之名,行招摇撞骗、掳掠钱财之实。作为相关从业人员,我们有能力,也有必要尽自己的微薄之力,将所学、所思、所感、所得用文字记录下来,以帮助广大读者客观理性地认识这个新事物。如若读者能就其中一两点产生共鸣,激发创新、创造的热情,那实在是意外的收获。
本书内容仅仅针对以太坊开源项目。回想笔者的工作经历,虽然也接触过其他项目,但总体比较来看,以太坊是比较适合初学者入门的技术栈。因为以太坊技术社区在全球范围较为完善,参考资料多;以太坊核心团队也很具备极客精神,开发速度快;以太坊主网上线运行时间长,经历了严苛的安全性检验;以太坊的目标远大,它要成为世界的计算机。
本书的主线由粗到细,由近及远。全书不仅归纳总结了以太坊项目的整体现状和核心技术,也对未来的发展和技术走向做了总体的预测和分析。全书各章节主要内容具体如下。
第1章 从比特币说起,介绍了以太坊项目的起源,并对项目的整体情况做了概述。
第2章 从理论入手,介绍了以太坊知识体系的诸多概念,比如密码学、共识和图灵完备特性。
第3章 从架构入手,介绍了以太坊设计的整体思路、模块划分以及核心功能实现。
第4章 讨论共识,共识是区块链最核心的问题,共识的设计也是区块链的难点所在。从PoW到PoA,再到PoS,我们比较了各种共识算法的优缺点,也分析了不同算法的适用场景。
第5~7章 围绕智能合约展开讨论。智能合约是以太坊的最大创新点,其将区块链变成了可以服务于任何行业、任何场景的可编程平台。从开发步骤、技术原理到底层实现,这三章覆盖了智能合约软件支持的方方面面。对于偏向区块链技术应用的开发者,我们建议将学习重点放在第5章;对于偏向底层区块链协议的开发者,相信第6章和第7章会带给你不少收获。
第8章 指导读者熟练掌握以太坊周边的工具,在不开发代码的情况下,完成与以太坊网络的交互。
第9章 介绍了以太坊技术的企业级应用以及企业以太坊联盟的标准化进展。
第10章 对跨链方案进行了探讨。由于目前跨链技术还没有达到成熟的阶段,本章仅对大体的技术方向做了介绍。跨链也被视为后以太坊时代的区块链技术热点,将引领区块链3.0时代的到来。
第11章 分析了以太坊现阶段面临的发展瓶颈,并对可能的解决方案进行了展望。
本书内容包罗万象,具体包括项目概述、架构设计、实现细节和开发方法,适合对区块链理论和实现感兴趣的读者阅读,也适合作为技术手册,供读者遇到具体问题时查阅参考。由于区块链技术发展迅速,笔者水平有限,书中难免存在错误或不当之处,希望得到广大读者批评指正。后续,笔者将通过线上专栏或技术社区的方式,与读者保持沟通,并针对感兴趣的话题进行讨论。
感谢带领笔者进入区块链行业的技术大咖Denny,感谢曾经一起工作的同事,也感谢为本书出版费尽心血的华章的各位老师。本书的编写占用了笔者陪伴家人的很多时间,但笔者得到了家人充分的鼓励与支持,在此深深地感谢他们。

王欣

上架指导

计算机\程序设计

封底文字

有幸曾与本书的三位作者一起共事,彼时正处在智能合约平台浪潮的前夕,大家经常在一起开研讨会,交流和分享智能合约这种新兴技术,探讨它们将会带来的各种可能性。《深入理解以太坊》正是这些研究工作的归纳和总结,既包括密码学的数学原理和虚拟机的设计,也包括区块链网络相关的共识机制和数据结构,很适合帮助初学者成长为区块链技术专家。
——Denny Wang Itering Tech Co. LTD创始人
以太坊良好的开发者社区和优秀的框架设计对其他公链具有重要的参考价值。如今,区块链技术仍然在快速发展和迭代中,以太坊亦是如此,状态通道技术、侧链技术、分片等新技术层出不穷。对于希望进行区块链和智能合约开发的技术人员来说,《深入理解以太坊》非常值得阅读。
——响马 FIBOS创始人
这是一本能帮助读者理解以太坊技术的百科全书。以太坊技术革新非常迅速,也面临不少有难度的挑战。本书通过对软件架构的深入阐释和工具的详尽介绍,希望可以吸引新一代的区块链开发者走上去中心化应用的开发之路。
——Chris Seifert Trustlines Network的产品经理和开发者[这个title对不对?]
以太坊有相对成熟的技术体系和完善的社区生态,所以有大量的项目和应用将以太坊作为底层设施。无论是在系统性上,还是深度上,本书都堪称典范,既体现了作者深厚的技术功底、丰富的实践经验,又体现了作者在写作过程中的倾心投入。
——冒志鸿 ArcBlock创始人

作者简介

王欣 史钦锋 程杰 著:作者介绍
王欣
前浙江华信区块链技术总监,中国企业以太坊联合发起人,对以太坊有非常深入的研究。
曾就职于爱立信和中兴通讯,有10余年软件架构和国际项目咨询经验。目前专注于区块链底层协议、智能合约安全以及隐私保护的研究。
史钦锋
前浙江华信区块链研究员,负责以太坊智能合约相关技术的研究和开发,对以太坊底层技术原理、智能合约、跨链技术以及EOS等有非常深入的认识。
曾就职于中兴通讯、华为和北京赛思信安等公司,精通C、Python和Go等多门语言,有多年通信产品底层驱动、通信网络协议和后端核心业务开发经验。
程杰
资深区块链技术专家和架构师,对以太坊、EOS等开源区块链协议和各种共识算法有深入研究,负责DApp的整体软件方案设计。
曾就职于世界500强企业,有超过13年的软件行业和通信行业的研发经验,熟悉大型分布式、微服务软件架构、软件设计模式相关技术,对基于云计算、区块链、微服务和DevOps的软件架构栈有丰富的实践经验,对可落地的高并发、高可用的软件系统有自己的见解。

图书目录

前言
第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 树和验证 23
2.1.5 MPT 状态树 24
2.2 共识问题 28
2.2.1 分布式一致性问题 28
2.2.2 Paxos和Raft 30
2.2.3 拜占庭容错及 PBFT 32
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) 43
2.4 本章小结 44
第3章 技术架构 45
3.1 概述 45
3.2 Geth的架构与启动 47
3.2.1 Geth架构 47
3.2.2 Geth启动流程 49
3.3 web3与RPC接口 50
3.3.1 以太坊中的JSON-RPC 51
3.3.2 以太坊RPC服务 52
3.4 账户管理 55
3.4.1 keystore 55
3.4.2 账户后端 57
3.4.3 签名 58
3.5 节点网络管理 58
3.5.1 节点管理启动 59
3.5.2 节点发现协议启动 61
3.5.3 节点创建和连接 64
3.5.4 消息处理 66
3.6 交易管理 67
3.6.1 交易池 67
3.6.2 交易提交 69
3.6.3 交易广播 70
3.7 链和区块管理 70
3.7.1 区块的结构 70
3.7.2 区块数据验证 72
3.7.3 区块“上链” 72
3.8 共识管理 75
3.8.1 Engine 76
3.8.2 Worker 77
3.8.3 Miner 79
3.8.4 共识激励 80
3.9 数据库 81
3.9.1 rawdb 81
3.9.2 stateDB 82
3.10 Ethereum对外操作接口 86
3.11 本章小结 87
第4章 共识算法 88
4.1 PoW 88
4.1.1 算法概述 88
4.1.2 设计实现 91
4.1.3 优缺点分析 94
4.2 PoA 95
4.2.1 算法概述 95
4.2.2 设计实现 96
4.2.3 优缺点分析 101
4.3 PoS 102
4.3.1 算法概述 102
4.3.2 优缺点分析 110
4.4 本章小结 110
第5章 智能合约开发 111
5.1 智能合约的诞生 111
5.2 以太坊上的智能合约 112
5.2.1 以太坊智能合约概述 112
5.2.2 关于智能合约的理解误区 112
5.2.3 合约账户 114
5.2.4 智能合约举例 114
5.2.5 智能合约在以太坊上的运行流程 117
5.3 智能合约编程语言 117
5.4 智能合约应用开发 118
5.4.1 连接和访问以太坊 118
5.4.2 以太坊集成开发环境Remix 118
5.4.3 truffle 123
5.4.4 智能合约编译器 solc 127
5.5 solidity 语法详解 128
5.5.1 智能合约源文件 128
5.5.2 solidity 数据类型 130
5.5.3 智能合约的内建全局变量和函数 139
5.5.4 智能合约中的单位 142
5.5.5 solidity 表达式和控制结构 143
5.5.6 函数 147
5.5.7 常量状态变量 151
5.5.8 智能合约的事件 151
5.5.9 智能合约的继承性 152
5.5.10 智能合约的创建 153
5.5.11 智能合约的销毁 153
5.6 solidity 编程规范 154
5.6.1 代码布局 154
5.6.2 编码约定 155
5.6.3 命名约定 158
5.7 本章小结 158
第6章 智能合约运行机制 159
6.1 调用智能合约函数 159
6.1.1 外部调用 160
6.1.2 内部调用 161
6.2 以太坊 ABI 协议 162
6.2.1 ABI定义 163
6.2.2 函数选择器 164
6.2.3 参数编码 164
6.2.4 ABI编码举例 165
6.3 交易的费用和计算 167
6.3.1 什么是 Gas 机制 167
6.3.2 为什么需要Gas机制 167
6.3.3 交易费用计算法方法 168
6.3.4 交易费用的组成 169
6.4 智能合约的事件 169
6.4.1 事件的存储和解析 170
6.4.2 Logs 的底层接口 173
6.4.3 事件的查询 173
6.4.4 事件查询过程 174
6.5 库和链接原理 174
6.5.1 库的定义 174
6.5.2 库的使用 175
6.5.3 库的连接 175
6.5.4 库中的事件 176
6.6 智能合约元数据 176
6.7 智能合约安全性分析 178
6.7.1 智能合约中的陷阱 179
6.7.2 建议 181
6.7.3 案例分析:资金回退流程 182
6.8 智能合约与外界的通信 183
6.8.1 oracle 介绍 184
6.8.2 oracle 需要解决的问题 184
6.8.3 数据商店 185
6.9 智能合约的动态升级 185
6.9.1 solidity 是一个受限的语言 185
6.9.2 动态升级的实现 185
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 智能合约字节码解析 193
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 209
8.2.3 Kovan 210
8.2.4 Rinkeby 211
8.2.5 本地以太坊私链 211
8.2.6 连接测试网络 212
8.3 Remix 213
8.3.1 本地安装 Remix 213
8.3.2 在线 Remix 214
8.4 truffle 216
8.4.1 安装 truffle 217
8.4.2 构建应用项目 218
8.4.3 demo 合约实践 219
8.4.4 智能合约测试和验证 221
8.5 myetherwallet 222
8.5.1 创建钱包 223
8.5.2 在线发送 ETH 和代币 223
8.5.3 离线发送 ETH 和代币 224
8.5.4 币间互换 225
8.5.5 智能合约操作 226
8.5.6 以太坊域名服务 227
8.6 Etherscan 228
8.6.1 以太坊浏览器 228
8.6.2 智能合约操作 229
8.6.3 以太坊统计图表 231
8.6.4 Etherscan API 232
8.7 本章小结 233
第9章 企业以太坊 235
9.1 联盟成立 235
9.2 技术框架 238
9.2.1 分层设计 240
9.2.2 组件模块化 242
9.2.3 可插拔共识 242
9.2.4 权限和隐私保护 243
9.2.5 数据安全 244
9.3 治理框架 245
9.4 本章小结 247
第10章 跨链 248
10.1 跨链技术方案 249
10.1.1 见证人模式 249
10.1.2 侧链技术 249
10.1.3 链中继技术 250
10.1.4 Hash锁定 251
10.2 跨链项目 252
10.2.1 Interledger 252
10.2.2 Cosmos 253
10.2.3 Aion 链 254
10.3 本章小结 255
第11章 展望 256
11.1 以太坊性能提升 256
11.1.1 以太坊的“瓶颈” 256
11.1.2 分片 257
11.1.3 Plasma 259
11.2 零知识证明 261
11.2.1 什么是零知识证明? 261
11.2.2 应用场景 262
11.2.3 以太坊支持零知识证明 262
11.3 Casper 263
11.4 本章小结 264

教学资源推荐
作者: 郑阿奇,梁敬东 主编
作者: [美]本贾尼·斯特劳斯特鲁普(Bjarne Stroustrup)著
作者: 郑阿奇 主编 丁有和 编著
参考读物推荐
作者: [美] 戴维·亨德里克森(Dave Hendricksen)著
作者: 刘刚 著