内容
为了增强知识结构的凝聚性,本书没有泛泛而谈整个区块链,而是更加专注于以太坊公有链本身的技术。通过阅读本书,读者可以全面、深入地了解以太坊的顶层设计、实现原理、重要模块的技术细节,以及智能合约的编写与部署等重要概念和技术。这是本书与目前介绍区块链相关技术的书籍最大的不同。
作者
闫莺 (博士),微软亚洲研究院主管研究员,区块链领域负责人,微软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