以太坊技术详解与实战
以太坊技术详解与实战
编辑推荐
(1)以太坊创始人、首席科学家 Vitalik Buterin 倾力推荐,工业界与学术界区块链专家联合撰写,系统性和实用性毋庸置疑
(2)深入剖析以太坊架构、核心部件、智能合约编写与开发案例等关键技术,并涵盖以太坊数据分析、性能优化、隐私与数据安全等前沿实践与进展
内容简介
本书得到以太坊创始人、首席科学家 Vitalik Buterin 认可与推荐,是为数不多系统性介绍以太坊的书籍,涵盖架构、核心概念、部署、智能合约实践等,并涵盖多个读者关心的热点主题。
第 1~2 章介绍区块链基本原理、架构、核心概念等,以对区块链有整体性了解。
第 3 章部署不同网络类型以太坊区块链,含有多种技巧与脚本样例。
第 4~6 章剖析智能合约和以太坊虚拟机的原理,并手把手教学,给出具体编写、编译、部署智能合约的方法与案例,密集锻炼读者智能合约编程与实践能力。
第 7 章剖析以太坊上数字资产定义的原理和方法,包括 CryptoKitties 养猫游戏基于的 ERC 721 合约标准,到此读者可以编写以太坊应用了。
第 8~10 章涵盖太坊公有链数据分析、以太坊对性能优化、隐私保护、数据安全等技术。这也是业界讨论比较多的内容,作为读者后续研究和深入的基础。
作者简介
闫莺(博士),微软亚洲研究院主管研究员,区块链领域负责人,微软 Coco 区块链平台中国负责人。中国软件协会区块链创业学院及区块链专委会专家、中国电子学会区块链专家委员。专注于区块链技术、大数据分析、数据库以及云计算的研究。在区块链领域获得多项国际专利,并在数据库和云计算领域国际会议论文和期刊 30 余篇。参与翻译《区块链项目开发指南》。
郑凯(博士),电子科技大学教授,博士生导师,澳大利亚昆士兰大学计算机科学博士。主要研究领域为区块链数据管理,以及时空数据挖掘、不确定数据库、内存数据库、图数据库等。在数据库、数据挖掘等领域的重要会议和期刊发表论文 100 余篇,被累计引用 1500 余次。2013 年获澳大利亚优秀青年基金,2015 年获数据库会议 ICDE 论文奖。担任数据库领域知名国际会议的程序主席和联合执行主席,国际 SCI 期刊客座编委,以及数十个国际会议的程序委员。
郭众鑫,微软亚洲研究院研发工程师,微软 Coco 区块链平台核心开发者。专注于区块链技术、大数据分析、分布式系统等方面的研究和开发。
目录
- 前 言
第 1 章 以太坊:新一代的区块链平台 1
-
1.1 理解区块链 2
-
1.2 以太坊设计思路与特色技术 4
-
1.3 应用场景 8
-
1.4 去中心化应用 DApp 10
-
1.4.1 DApp 的优势 10
-
1.4.2 DApp 实例 11
-
1.5 以太坊的主流开源项目 13
-
1.6 本书的组织结构 14
第 2 章 以太坊架构和组成 15
-
2.1 以太坊整体架构 15
-
2.2 区块 16
-
2.3 账户 18
-
2.3.1 外部账户 19
-
2.3.2 合约账户 20
-
2.3.3 私钥和公钥 20
-
2.3.4 钱包 22
-
2.4 数据结构与存储 24
-
2.4.1 数据组织形式 24
-
2.4.2 状态树 29
-
2.4.3 交易树 29
-
2.4.4 收据树 29
-
2.4.5 数据库支持——LevelDB 30
-
2.5 共识机制 30
-
2.5.1 PoW 31
-
2.5.2 PoS 34
-
2.6 以太币 36
-
2.7 交易 41
-
2.7.1 交易费用 41
-
2.7.2 交易内容 43
-
2.7.3 一个交易在以太坊中的“旅程” 45
-
2.8 数据编码与压缩 51
-
2.9 以太坊客户端和 API 52
-
2.10 以太坊域名服务 57
-
2.11 本章小结 58
第 3 章 不同类型的以太坊区块链及其部署 59
-
3.1 区块链类型 59
-
3.1.1 公有链 60
-
3.1.2 联盟链 61
-
3.1.3 私有链 66
-
3.2 安装和部署以太坊 67
-
3.2.1 安装以太坊客户端 67
-
3.2.2 部署以太坊联盟链 70
-
3.3 如何在 Azure 上挖矿 81
-
3.3.1 部署虚拟机 81
-
3.3.2 安装 GPU 驱动 82
-
3.3.3 安装挖矿工具包 83
-
3.3.4 加入矿池 83
-
3.3.5 GPU 挖矿收益权衡 83
-
3.4 本章小结 84
第 4 章 智能合约与以太坊虚拟机 86
-
4.1 智能合约 86
-
4.1.1 智能合约的操作 89
-
4.1.2 存储方式 90
-
4.1.3 指令集和消息调用 92
-
4.1.4 日志 93
-
4.2 Solidity 语言 93
-
4.2.1 结构 93
-
4.2.2 变量类型 94
-
4.2.3 内置单位、全局变量和函数 100
-
4.2.4 控制结构语句 101
-
4.2.5 函数 103
-
4.2.6 constant 函数和 fallback 函数 105
-
4.2.7 函数修改器 106
-
4.2.8 异常处理 107
-
4.2.9 事件和日志 109
-
4.2.10 智能合约的继承 110
-
4.3 本章小结 112
第 5 章 编写和部署智能合约 113
-
5.1 智能合约工具 113
-
5.2 Solidity 集成开发工具 Remix 115
-
5.2.1 Remix 界面 115
-
5.2.2 初探 Remix 调试 117
-
5.2.3 使用 Remix 调试智能合约的多种调用方式 120
-
5.3 Truffle 126
-
5.3.1 Truffle 安装 126
-
5.3.2 创建 128
-
5.3.3 编译 129
-
5.3.4 部署 129
-
5.3.5 测试 132
-
5.3.6 配置文件 133
-
5.4 如何保证智能合约的安全可靠 134
-
5.4.1 常见的安全陷阱 135
-
5.4.2 智能合约开发建议 140
-
5.5 本章小结 141
第 6 章 智能合约案例详解 143
-
6.1 投票 143
-
6.2 拍卖和盲拍 153
-
6.2.1 公开拍卖 153
-
6.2.2 盲拍 156
-
6.3 状态机 161
-
6.4 权限控制 163
-
6.5 本章小结 166
第 7 章 以太坊上数字资产的发行和流通 167
-
7.1 以太坊上的数字资产定义 167
-
7.2 发行和流通 168
-
7.3 ERC 20 代币合约标准 168
-
7.3.1 标准定义 169
-
7.3.2 ERC 20 标准接口 169
-
7.3.3 现有 ERC 20 标准代币 171
-
7.4 ERC 721 代币合约标准 174
-
7.4.1 标准定义 174
-
7.4.2 CryptoKitties DApp 175
-
7.5 本章小结 177
第 8 章 以太坊数据查询与分析工具 178
-
8.1 以太坊浏览器 Etherscan 178
-
8.1.1 Etherscan 的基本功能 179
-
8.1.2 其他功能 190
-
8.1.3 API 193
-
8.1.4 ENS 域名查询 194
-
8.2 ETHERQL 195
-
8.2.1 同步管理器 197
-
8.2.2 处理程序链 197
-
8.2.3 持久化框架 198
-
8.2.4 开发者接口 198
-
8.2.5 实现 199
-
8.3 本章小结 199
第 9 章 以太坊性能优化 201
-
9.1 分片技术 201
-
9.2 雷电网络 205
-
9.3 Casper——下一代以太坊共识协议 208
-
9.4 本章小结 210
第 10 章 隐私保护和数据安全 211
-
10.1 区块链的隐私问题 212
-
10.1.1 “化名”与“匿名” 212
-
10.1.2 去匿名攻击:交易表分析 212
-
10.2 零钞:基于 zkSNARK 的完美混币池 214
-
10.2.1 零知识证明 214
-
10.2.2 零钞的运行原理 215
-
10.3 Hawk:保护合约数据私密性 216
-
10.4 Coco 框架 218
-
10.4.1 TEE 环境简介 219
-
10.4.2 Coco 框架的运行原理 219
-
10.5 以太坊隐私保护技术路线:Baby ZoE 221
-
10.6 总结与展望 223
-
10.6.1 隐私方案总结 223
-
10.6.2 隐私技术展望 223
-
后记 225