书籍作者:闫莺 | ISBN:9787111595113 |
书籍语言:简体中文 | 连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 | 下载次数:2995 |
创建日期:2021-02-14 | 发布日期:2021-02-14 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
本书得到以太坊创始人、首席科学家Vitalik Buterin认可与推荐,是为数不多系统性介绍以太坊的书籍,涵盖架构、核心概念、部署、智能合约实践等,并涵盖多个读者关心的热点主题。
第1~2章介绍区块链基本原理、架构、核心概念等,以对区块链有整体性了解。
第3章部署不同网络类型以太坊区块链,含有多种技巧与脚本样例。
第4~6章剖析智能合约和以太坊虚拟机的原理,并手把手教学,给出具体编写、编译、部署智能合约的方法与案例,密集锻炼读者智能合约编程与实践能力。
第7章剖析以太坊上数字资产定义的原理和方法,包括CryptoKitties养猫游戏基于的ERC 721合约标准,到此读者可以编写以太坊应用了。
第8~10章涵盖太坊公有链数据分析、以太坊对性能优化、隐私保护、数据安全等技术。这也是业界讨论比较多的内容,作为读者后续研究和深入的基础。
闫莺(博士),微软亚洲研究院主管研究员,区块链领域负责人,微软Coco区块链平台中国负责人。中国软件协会区块链创业学院及区块链专委会专家、中国电子学会区块链专家委员。专注于区块链技术、大数据分析、数据库以及云计算的研究。在区块链领域获得多项国际专利,并在数据库和云计算领域国际会议论文和期刊30余篇。参与翻译《区块链项目开发指南》。
郑凯(博士),电子科技大学教授,博士生导师,澳大利亚昆士兰大学计算机科学博士。主要研究领域为区块链数据管理,以及时空数据挖掘、不确定数据库、内存数据库、图数据库等。在数据库、数据挖掘等领域的重要会议和期刊发表论文100余篇,被累计引用1500余次。2013年获澳大利亚优秀青年基金,2015年获数据库会议ICDE论文奖。担任数据库领域知名国际会议的程序主席和联合执行主席,国际SCI期刊客座编委,以及数十个国际会议的程序委员。
郭众鑫,微软亚洲研究院研发工程师,微软Coco区块链平台核心开发者。专注于区块链技术、大数据分析、分布式系统等方面的研究和开发。
(1)以太坊创始人、首席科学家Vitalik Buterin倾力推荐,工业界与学术界区块链专家联合撰写,系统性和实用性毋庸置疑
(2)深入剖析以太坊架构、核心部件、智能合约编写与开发案例等关键技术,并涵盖以太坊数据分析、性能优化、隐私与数据安全等前沿实践与进展
前 言
为什么要写这本书
随着区块链技术近两年迅速“走红”,身边越来越多的朋友想了解区块链技术及其应用场景。2017年一整年,笔者也在各种峰会上做过很多次区块链的演讲,约80%会议的听众是入门级别的,每次演讲完,都会有听众询问如何快速学习区块链技术。每当有新的学生加入我们的实习生团队时,他们也会问笔者如何快速入门。通常笔者会回答他们“从以太坊白皮书、黄皮书看起”。但是,真正能帮助他们厘清这个技术的背景、原理、关键知识点和实战要领的资料尚未系统化。为此,笔者也写过一些讲义以帮助大家理解,但是仍难以做到全面和系统。从那时起笔者就萌生了编写一本系统深入的区块链书籍的想法。但是由于工作繁忙,一直没有付诸行动。
随着区块链的升温,想了解该技术的朋友持续增多。每天笔者的微信、信箱都会有来自同事、朋友的信息,他们都在咨询如何学习区块链。于是,笔者觉得是时候写一本探索技术、指导开发的书了。
为什么选择以太坊呢?首先,它是区块链2.0的代表。其实“区块链”这个词脱离比特币(区块链1.0)而单独被各行业重视与以太坊的产生分不开。以太坊是第一个通用的区块链平台,换句话说,用户可以定义在区块链上运行什么和记录什么。以太坊的公有链已经运行两年多,整个社区不断修补出现的问题,积极寻求优化的途径。尽管它不是完美的,但它是目前经得起时间和应用验证的最稳定的系统。其他很多区块链项目都或多或少受到以太坊的启发。因此,系统学习以太坊可认为学习其他系统打下非常好的基础。其次,以太坊社区的建设比较完善和活跃,各个版本的代码质量较高,开发工具相对完善,应用也有一定规模,这使得大家易于上手学习。再次,笔者团队的工作也是以以太坊为主。比如笔者团队在开发微软的Coco区块链平台时,就以集成和优化以太坊为coco第一版本的目标。通过项目开发,笔者更加熟悉以太坊源码,这样也自然使得本书更加具体化。笔者曾在2017年翻译了《区块链项目开发指南》一书,该书介绍了以太坊开发相关知识,特点是覆盖面比较广,而本书会在深度上下工夫。因此,读者可以“搭配”着学习。
本书将展现给读者一个系统、全面的以太坊知识体系,以通俗易懂的语言结合直观的图示介绍每一个原理和工作流程,相信读者通过本书的学习可轻松快速地入门以太坊开发。
本书特色
首先,为了增强知识结构的凝聚性,本书没有泛泛而谈整个区块链,而是更加专注于以太坊公有链本身的技术。通过阅读本书,读者可以全面、深入地了解以太坊的顶层设计、实现原理、重要模块的技术细节,以及智能合约的编写与部署等重要概念和技术。这是本书与目前介绍区块链相关技术的书籍最大的不同。
其次,从技术深度上讲,本书所涉及的内容具有很好的层次性,既涵盖初学者所需的基本概念,也包括以太坊DApp开发工程师感兴趣的编程指南和代码解析,此外对以太坊在性能和安全性方面所尝试的改进技术进行了前瞻性介绍,以供资深工程师和研究人员参考、探讨。
再次,本书不仅介绍以太坊本身技术细节,还加入笔者在开发中的经验和技巧。比如在部署以太坊的时候可以手工操作,也可以用脚本在“云”上操作,其中脚本也分享给大家借鉴。
最后,本书的文字力求简洁、朴实且准确,可读性较强。
读者对象
区块链开发初学者
区块链应用架构师
开发应用架构师
区块链产品经理
其他对区块链技术感兴趣的人员
如何阅读本书
本书分为10章,下图比较清晰地展示了各章的主题。
第1章从区块链背景知识讲起,包括区块链基本原理及应用,使得初学者和开发者都能对区块链有整体性了解。然后引出为什么需要以太坊以及以太坊的基本知识,这为后面章节的阅读提供整体形象的铺垫。
第2章介绍以太坊的组成、关键概念和技术。本章比较重要,其后介绍的内容都将以本章的概念为基础。因此,必须仔细阅读。
第3章介绍不同区块链网络类型,以及如何部署不同类型的区块链。建议读者在阅读本章时也能同时跟着书中介绍的部署步骤进行操作,以更好地理解以太坊网络。根据实际经验,本章将介绍一些部署的窍门及脚本样例,相信一定能为大家的学习提供帮助。
第4章介绍智能合约和以太坊虚拟机的原理。了解该原理,可为接下来第5章学习开发智能合约打好基础。
第5章和第6章详细地介绍具体编写智能合约的方法以及案例详解。建议读者在阅读这两章时能同步操作,一起编写、编译、部署合约,达到最佳的学习效率和理解深度。
第7章介绍以太坊上数字资产定义的原理和方法,其中包括近期火爆的CryptoKitties(养猫游戏)的ERC 721代币合约标准的介绍。到这里为止,读者可以开始编写自己的以太坊应用了。
第8章将进一步对查看、分析以太坊公有链数据的工具和方法进行介绍。
第9章和第10章探讨区块链和以太坊的前沿技术。这两章会对以太坊在性能优化和隐私保护方面的技术进行介绍和讨论。这些技术尚处于比较初级的阶段,读者可以一边阅读一边思考,并提出自己的想法和建议。
勘误和支持
由于笔者的水平和时间有限,加之以太坊技术更新迭代快,书中难免存在一些不准确的叙述,恳请读者批评指正。如果读者朋友有更多的宝贵意见,欢迎通过邮箱[email protected]联系笔者,期待读者朋友的真挚反馈,以在技术之路上互勉共进。
本书的其他贡献者
感谢我们团队李洋、张师铨、张宪、候冠豪、杨文彦、夏劲夫、周豪对本书内容的贡献!
致谢
笔者要特别感谢微软亚洲研究院的周礼栋和洪小文院长对笔者团队区块链项目的指导和支持。感谢陈洋博士过去一年多在区块链方面的共同探讨。感谢杨懋、伍鸣、熊一远、黎强、周沛源、Thomas Moscibroda、张益肇、殷秋丰、田江森、程骉、黎江、梁戈碧、宋青见、桂柯里、石朝阳、张蓉等同事、领导和朋友的支持与鼓励。感谢导师周傲英教授和周晓方教授指引方向。感谢同行的共同努力,感谢家人的支持!还要感谢V神Vitalik的支持与肯定。
最后还要感谢机械工业出版社华章公司的高婧雅编辑对本书的全程支持和指导。她在本书的内容组织和阅读体验方面给我们提出十分宝贵的意见和设计方案,正是她的兢兢业业、一丝不苟的负责态度,保证了本书内容的质量和可读性。
闫莺
前 言
第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