以太坊技术详解与实战

🌙
手机阅读
本文目录结构

以太坊技术详解与实战

编辑推荐

(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

AXIHE / 精选资源

浏览全部教程

面试题

学习网站

前端培训
自己甄别

前端书籍

关于朱安邦

我叫 朱安邦,阿西河的站长,在杭州。

以前是一名平面设计师,后来开始接接触前端开发,主要研究前端技术中的JS方向。

业余时间我喜欢分享和交流自己的技术,欢迎大家关注我的 Bilibili

关注我: Github / 知乎

于2021年离开前端领域,目前重心放在研究区块链上面了

我叫朱安邦,阿西河的站长

目前在杭州从事区块链周边的开发工作,机械专业,以前从事平面设计工作。

2014年底脱产在老家自学6个月的前端技术,自学期间几乎从未出过家门,最终找到了满意的前端工作。更多>

于2021年离开前端领域,目前从事区块链方面工作了