精通以太坊:开发智能合约和去中心化应用
发布日期:2025-01-04 12:28 点击次数:52
【书 名】精通以太坊:开发智能合约和去中心化应用
【作 者】(希)安德烈亚斯 M.安东波罗斯(Andreas M. Antonopoulos) 等著
【出版者】机械工业出版社
【索书号】F713.361.3/3043
【阅览室】社科三阅览室
作者简介
喻勇
在技术圈驰骋多年,曾担任过微软技术布道师,VMware Cloud Foundry 生态建设负责人,并有幸引领了国内容器技术的创业浪潮。目前赋闲在家,翻译图书,学习新知。
杨镇
资深软件工程师、区块链布道师,17年从业经验,对以太坊黄皮书中文版进行了独立校订和增补,是Solidity官方文档翻译项目管理员,《深入以太坊智能合约开发》一书作者。
阿剑
EthFans主编、译者,曾翻译过区块链相关文章共计十万余字。经济学学士,哲学爱好者,古典自由主义者,读书人。
任露露
元熵科技技术总监,Firestack技术社区联合创始人,R3 CordaLedger Contributor,公链项目Zilliqa Java SDK作者,对区块链和微服务技术有深入理解和实践。喜欢养猫。
Elisa Jiang
语言爱好者,2015年开始着迷以太坊,随后长期为EthFans社区输出各类文献的中文译本,累计翻译、校对数百篇文章。
内容简介
以太坊打开了通向去中心化计算的大门,这个平台使你能够运行去中心化的应用程序(DApps)和智能合约,这些应用程序没有中心故障点或控制点,与支付网络集成,并在开放的区块链上运行。通过这本实用指南,Andreas M. Antonopoulos 和 Gavin Wood 向读者提供了在以太坊和其他基于虚拟机的区块链上构建智能合约和 DApps 所需的一切信息。
本书既可以作为一本技术参考手册,也可供读者全面地了解以太坊。前两章主要是一个入门级的介绍,适合新手用户,这些章节中的示例可以由具有一定技术技能的读者完成。这两章将使你对以太坊基础知识有一个很好的掌握,并教会你使用以太坊的基本工具。第三章及以后的内容主要面向程序员,包括许多技术主题和编程示例。
前言
本书由Andreas M. Antonopoulos和Gavin Wood博士合著。一系列幸运的巧合将这两位作者聚集在一起,他们和数百名贡献者并肩写作,以最具开源精神和创造性的方式完成了本书。
Gavin一直希望写一本书,对以太坊黄皮书(他关于以太坊协议的技术描述)中的概念进行扩展和延伸,主要目的是向更广泛的读者介绍以太坊,这显然是充满了希腊字母和数学公式的黄皮书所无法完成的。
当Gavin与Andreas谈到写这本书的想法时,两人一拍即合,写书的计划按部就班地开始推进。Andreas是以太坊项目的早期参与者,他在这个领域也很有知名度。
当时,Andreas刚出版了他的著作《Mastering Bitcoin》译注1,那本书迅速成为比特币和加密货币的权威技术指南。之后,Andreas的读者就开始问他:“你什么时候写《Mastering Ethereum》呢?”Andreas已经在考虑他的下一个项目,并发现以太坊是一个引人注目的技术主题。
最终,2016年5月,Gavin和Andreas在同一个城市巧遇。他们聚在一起喝咖啡,谈及这本书的计划。由于Andreas和Gavin都是开源理念的忠实拥护者,他们都希望通过社区协作的方式来完成这本书,并最终在Creative Commons许可下发布。值得庆幸的是,出版商O’eilly Media非常支持这个想法,本书这个项目正式启动。
如何使用本书
本书既可以作为一本技术参考手册,也可供读者全面地了解以太坊。前两章主要是入门级的介绍,适合新手阅读,有一定技术能力的读者可以尝试完成其中的示例。这两章将使你对以太坊基础知识有很好的掌握,并教会你使用以太坊的基本工具。第3章及以后的内容主要面向程序员,包括许多技术主题和编程示例。
作为以太坊的参考手册和入门级教材,本书不可避免地包含一些重复的内容。例如,在一些章节中我们介绍了gas,主要目的是配合那些章节的内容;类似gas这样重要的内容,会有单独的章节重点介绍。
目标读者
本书主要面向程序员。如果你可以使用编程语言,本书将教会你运行智能合约的区块链的工作原理、使用方法以及如何使用它们开发智能合约和去中心化应用程序。前几章也适合非开发人员深入了解以太坊。
本书使用的术语和约定
本书使用以下字体约定:
斜体(Italic)
表示新的术语、URL、电子邮件地址、文件名和文件扩展名。
等宽字体(Constant width)
用于程序代码,以及用于引用程序元素的段落,例如变量或函数名称、数据库、数据类型、环境变量、语句和关键字等。
等宽粗体(Constant width bold)
显示应由用户按字面输入的命令或其他文本。
等宽斜体(Constant width italic)
显示应使用用户提供的值或由上下文确定的值替换的文本。
此图标表示提示或建议。
此图标表示普通注释。
此图标表示警告或注意。
示例代码
示例代码采用Solidity、Vyper和JavaScript编写,并使用类Unix操作系统的命令行。所有代码都可以在GitHub存储库中找到。请阅读书籍代码,尝试代码示例,或通过GitHub提交更正:https://github.com/ethereumbook/ethereumbook。
所有代码片段都可以在大多数操作系统上进行复制,只需安装基本的编译器、解释器和相应语言的库。必要时,我们提供基本安装说明和关于输出的逐步说明。
一些代码片段和代码输出已重新格式化,以便进行印刷。在所有情况下,行都用反斜杠(\)字符分隔,然后是换行符。在录入这些代码时,请删除这两个字符并再次连接这些行,你应该看到与示例中显示的结果相同的结果。
所有代码片段都尽可能使用实际值和计算,以便读者可以从这些例子开始按顺序尝试,并在你编写的任何代码中获得相同的结果。例如,私钥和相应的公钥以及地址都是真实的。样本交易、合约、区块和区块链引用都已存在于实际的以太坊区块链中,并且是公共区块链的一部分,因此你可以查看它们。
示例代码的使用许可
这本书是为了帮助你完成工作。通常,如果本书提供了示例代码,你可以在程序和文档中使用它。除非复制了大部分代码,否则无须与我们联系以获得许可。例如,编写使用本书中几个代码块的程序不需要许可。出售或分发O扲eilly书籍中的示例CD-ROM需要获得许可。通过引用本书并引用示例代码来回答问题不需要许可。将本书中的大量示例代码合并到产品文档中需要获得许可。
我们不强制要求注明出处,但如果你能这样做,我们将对此表示感谢。注明出处应该包括书名、作者、出版商、ISBN和版权。例如“Mastering Ethereum by Andreas M. Antonopoulos and Dr. Gavin Wood(O'Reilly). Copyright 2019 The Ethereum Book LLC and Gavin Wood,978-1-491-97194-9”。
本书是根据Creative Commons Attribution-Noncommercial-No Derivative Works 4.0International License(CC BY-NC-ND 4.0)提供的。
如果你认为自己对代码示例的使用超出了合理使用范围或上述许可范围,请随时通过[email protected]与我们联系。
对公司和产品的引用
所有对公司和产品的引用都是为了教育、演示和参考目的。这并不表示作者对所提及的任何公司或产品进行背书。我们尚未测试本书中显示的任何产品、项目或代码段的操作或安全性。使用它们需要你自担风险!
本书中的以太坊地址和交易
本书中使用的绝大部分以太坊地址、交易、密钥、QR码和区块链数据都是真实的。这意味着你可以浏览区块链,查看作为示例提供的交易,使用你自己的脚本或程序检索它们,等等。
但请注意,在本书中使用过的地址的私钥已被“烧毁”。这意味着如果你向这些地址中的任何一个转账,这笔钱将永远丢失或(更可能)被挪用,因为阅读本书的任何人都可以使用书中出现过的私钥来获取这些地址中的以太币。
不要向这本书中的任何地址发送以太币或代币。你的数字资产将被其他知道私钥的读者带走,或永远丢失。
O'Reilly Safari
Safari(以前称为Safari BooksOnline)是一个会员制的培训和学习平台,适用于企业、政府、教育工作者和个人。
会员可以访问来自250多家出版商的数千本书籍、培训视频、学习路径、互动教程和策划播放列表,其中包括O'Reilly Media、Harvard Business Review、Prentice HallProfessional、Addison-Wesley Professional、Microsoft Press、Sams、Que、PeachpitPress、Adobe、Focal Press、Cisco Press、John Wiley&Sons、Syngress、Morgan Kaufmann、IBM Redbooks、Packt、Adobe Press、FT Press、Apress、Manning、New Riders、McGraw-Hill、Jones&Bartlett、Course Technology,等等。
欲了解更多信息,请访问。
如何与我们联系
有关本书以及开放版权和翻译的信息,请访问https://ethereumbook.info/。
请向出版商提出有关本书的评论和问题:
O'Reilly Media,Inc.
1005 Gravenstein Highway North
Sebastopol,CA 95472
800-998-9938(美国或加拿大)
707-829-0515(国际或当地)
707-829-0104(传真)
请将有关本书的评论或技术问题发送至[email protected]。
有关我们的书籍、课程、会议和新闻的更多信息,请访问我们的网站https://www.oreilly.com。
在Facebook上找到我们:https://facebook.com/oreilly。
在Twitter上关注我们:https://twitter.com/oreillymedia。
在YouTube上观看我们:https://www.youtube.com/oreillymedia。
联系Andreas
读者可以在个人网站上联系Andreas M. Antonopoulos:https://antonopoulos.com。
在YouTube上订阅Andreas的频道:https://www.youtube.com/aantonop。
关注Andreas的Facebook页面:https://www.facebook.com/AndreasMAntonopoulos。
在Twitter上关注Andreas:https://twitter.com/aantonop。
在LinkedIn上与Andreas联系:https://linkedin.com/company/aantonop。
Andreas还要感谢所有通过每月捐款支持他的工作的顾客。你可以通过https://patreon.com/aantonop支持Andreas。
联系Gavin
读者可以在个人网站上联系Gavin Wood博士:。
在Twitter上关注Gavin:https://twitter.com/gavofyork。
Gavin一般在Riot.im上的PolkadotWatercooler聊天室:https://riot.im/app/#/room/ #polkadot- watercooler:matrix.org。
来自Andreas的致谢
我把自己对文字和书籍的热爱归功于母亲Theresa,她在一栋墙上堆满了书的房子里把我养大。尽管自称是一个对技术充满恐惧的人,但母亲还是在1982年给我买了第一台电脑。我父亲Menelaos是一位土木工程师,在80岁时出版了他的第一本书,他教会了我逻辑和分析思想以及对科学和工程的热爱。
谢谢大家在整个旅程中对我的支持。
来自Gavin的致谢
我9岁的时候,母亲从邻居那里为我买了第一台电脑,没有它,我的技术进步无疑会减少。我童年时对电充满了恐惧,必须感谢Trevor和我的祖父母,他们一次又一次地履行着“在我给电脑插上电源时保护我”的重任,没有他们,电脑就没用了。还必须感谢我一生中所遇到的几位恩师,从邻居Sean(他教会我第一个计算机程序)到Quinn先生(他是我的小学老师),Quinn先生允许我去编程而不用上历史课,再到我的中学老师Richard Furlong Brown,他给我机会做更多编程,而不是成天打橄榄球。
必须感谢我孩子的母亲Jutta,感谢她一直以来的支持,感谢我生命中的许多人,无论是新朋友还是老朋友,这些朋友使我保持着理智。最后,我要向Aeron Buchanan致以最诚挚的感谢,没有他,我生命中最近这五年不可能像今天这样精彩,如果没有他的时间、支持和指导,这本书就不会像现在这样完美。
许多贡献者在GitHub的早期发布草稿中提供了评论、更正和补充。
两位GitHub编辑为本书的GitHub Repo做出了贡献,他们自愿管理、审查、编辑、合并和批准Pull Request和问题:
GitHub编辑主管:Francisco JavierRojas Garcia(fjrojasgarcia)。
GitHub编辑助理:William Binns(wbnns)。
来自社区的贡献主要体现在DApp、ENS、EVM、分叉历史、gas、预言机、智能合约安全和Vyper等章节。由于时间和篇幅的限制,没有在第1版中包含的其他贡献可以在GitHub存储库的contrib文件夹中找到。整本书收到了数以千计来自GitHub的Pull Request,这些贡献提高了本书的质量、可读性和准确性。衷心感谢所有贡献者!
如果没有你们的帮助,本书不可能顺利完成。你们的贡献彰显了开源技术和开源文化的力量,再次说声谢谢!
资料来源
本书引用了各种公开和开放许可的来源:
https://github.com/ethereum/vyper/blob/master/README.md
(MIT许可)
https://vyper.readthedocs.io/en/latest/
(MIT许可)
https://solidity.readthedocs.io/en/v0.4.21/common-patterns.html
(MIT许可)
https://arxiv.org/pdf/1802.06038.pdf (Arvix Non-Exclusive-Distribution)
https://github.com/ethereum/solidity/blob/release/docs/contracts.rst#inheritance
(MIT许可)
https://github.com/trailofbits/evm-opcodes
(Apache 2.0许可)
https://github.com/ethereum/EIPs/
(Creative Commons CC0许可)
https://blog.sigmaprime.io/solidity-security.html
(Creative Commons CC BY 4.0许可)