主页 > imtoken钱包官方版下载 > 《深入以太坊智能合约开发》序言(硬广)

《深入以太坊智能合约开发》序言(硬广)

imtoken钱包官方版下载 2023-04-23 06:53:09

本文摘自本人与姜新宝、朱志生、盖方宇合着的《深入以太坊智能合约开发》一书的序言。 文末附上华章书院清新海报。 这确实是一个艰难的过程,希望它不会失去粉丝...... 阅读全文大约需要6分钟。

你为什么写这本书?

我实际上不是开源软件的早期粉丝。 我在企业IT服务领域工作了16年,是一名老程序员。 2016年下半年左右,因为工作需要,开始研究区块链,开始考虑在企业业务中使用这种所谓的“新技术”。 但由于当时没有企业级区块链的技术平台可用(fabric还很不成熟),所以最终没有在具体业务中使用区块链。 但也因为这次对区块链技术的学习,让我发现了区块链技术的潜力,尤其是以太坊这个项目,让我触动很大。 我觉得我可能对技术的理解和研究的精神在这个新领域取得了超越过去十年的成就。

2017年利用业余时间翻译了以太坊官网的Homestead文档。 我没有使用任何机器翻译软件。 我看了原文,自己翻译成中文。 然后参与了HiBlock社区组织的Solidity官方文档中文翻译项目,很快成为项目管理员,对中文翻译做了很多修改工作,也是官方中文版以太坊社区的(在以太坊官方网站上的 Solidity 文档中有相应的链接)。 之后是以太坊黄皮书。 以太坊黄皮书是以太坊协议的技术描述文档,几乎记录了以太坊协议的所有细节,包括以太坊虚拟机的具体设计; 方方乃至其他区块链技术都具有很高的参考价值。 同时,黄皮书也是所有以太坊客户端的理论和实施依据。 业内几乎所有的智能合约平台都或多或少地“借鉴”了以太坊黄皮书中的设计。

从今年4月下旬开始,我对黄皮书中文版(原作者:袁戈、高天禄译)全文自主修改更新(结合拜占庭版英文版的更新,当然,不使用翻译软件),将于 5 月初定稿。 至此,结合Solidity文档中的相关细节,可以说我已经掌握了以太坊协议和Solidity智能合约开发的方方面面。 当我开始写这本书时,我已经对以太坊协议和智能合约技术有了深入的了解。

在本书中,我们将介绍以太坊必要的基础知识、Solidity语言的基本语法和语言特性、智能合约开发所必需的相关工具和生态,并给出一些基于智能合约的所谓“go-to”合同。 一个中心化应用程序(DApp)的例子”。在这些所谓的“基础知识”之上,我们还将尝试引导智能合约开发者理解以下一些问题:

Solidity 真的很简单吗?

Solidity 是一种为智能合约开发定制的语言,由 C++、Python 和 Javascript 语言组合而成。 它实际上简化了智能合约的开发。 上手容易,对新手“非常友好”。 开发语言。 只要有一点编程经验,就可以快速编写一些简单的智能合约。

然而,这种看似“简单”的语言其实并不简单,因为影响Solidity程序运行的非直觉因素太多; 而大部分开发者可能并没有那么了解智能合约的运行环境——以太坊虚拟机(EVM)的各种技术细节,各种大坑小坑。 比如私有函数和公有函数在调用的时候有什么区别,仅仅是可见性吗? 比如数据在内存和存储(storage)中的结构有什么区别,为什么我可以在存储中对动态数组使用push和pop,而在内存中不能? 例如,fallback 函数是如何工作的? 难道真的不接收参数也不返回值吗? 比如transfer, send, call with value有什么区别? 再比如EVM中复杂的手续费设计(尤其是存储使用费)和gas返还机制如何影响合约的gas消耗量(即运行成本)?

显然,这些问题不是我们通过学习传统编程语言就能理解的,所以对于大多数初学者来说,这些细节很可能会阻碍他们真正掌握合约开发,或者影响他们处理一些相对复杂的逻辑的能力。 所以让智能合约开发者真正了解Solidity与其他开发语言的区别是首要要做的重要工作。

“不要重新发明轮子!”

与我们在其他所谓的传统软件开发中看到的工程特质类似,智能合约开发也存在“重新发明轮子”的问题。 相同的基本功能或非常相近的基本功能被程序员反复编写,出现各种小错误和小漏洞。 这种情况在智能合约开发的初学者中也很常见。 那么有没有什么“轮子”被证明是行之有效且安全的呢? 这也是我希望向合约开发者解释和普及的重要内容。 因为我从刚入行开始就非常重视可重用代码和设计模式,所以学习使用经过反复审核和优化的可重用代码在我看来也是非常非常重要的所谓“最佳实践”。 .

智能合约安全吗?

我想这个问题的答案已经知道了。 事实上,自以太坊诞生以来,各种合约漏洞和安全问题就屡屡出现在技术界乃至公众视野中。 因此,合约安全问题不再是一个小众话题。 本人仔细收集整理了当前智能合约开发中几乎所有已知的合约级漏洞或可能受到的攻击,希望广大合约开发者能够真正了解这些问题的成因和规避方法。 这对开发者自身和实际业务安全都极为关键。

智能合约和软件工程?

任何软件项目都离不开软件工程中的一些基础理论和最佳实践,智能合约开发也不例外。 当然,由于合约运行环境的特殊性,合约开发项目在工程特性上与传统软件工程有很大区别。 最重要的是,合约代码一旦部署就无法更改,这让我们习以为常的冷热补丁工程实践不再可能。 我们必须结合智能合约本身的特点来安排工程活动。 我也会结合自己超过15年的工程经验和对智能合约开发的深入理解,为合约开发者讲解合约开发项目中需要注意的方方面面。

这本书里还有什么?

在以太坊协议中,智能合约的本质是由EVM(以太坊虚拟机)字节码加上合约状态数据组成的所谓“自治对象”。 因此,内联汇编是我们的终极武器。 了解内联汇编后,你就会知道智能合约能做什么,不能做什么; 因为无论我们使用什么高级语言来编写合约,最终都会体现在EVM字节码中,即EVM汇编指令,这是以太坊智能合约的全部能力。 同时,理解EVM指令也是最终gas优化的基础。 这些比较高级的话题,也是我希望更多的合约开发者能够了解的。 不过,这些题目都整理在了附录中,供有足够精力学习的开发者参考。

写在最后

和学习其他技术一样,学习智能合约开发也是一个艰苦的过程,需要积累,没有人可以一蹴而就。 只是希望我所学到的大部分关于以太坊和智能合约的知识能够更快更有效的传授给后来者,让更多的同仁真正了解和掌握智能合约开发的要点。 但这也需要学习者投入相当多的时间和精力。

这本书是写给那些和我一样注重细节,想打好基础,讨厌低质量快餐式学习的同仁的。 确实可以帮助他们提高对智能合约的理解,帮助他们尽快从入门到精通。 关于智能合约开发的书籍。

刚开始有写书的念头时,有幸得到姜新宝、朱志生、盖方宇三位朋友的支持,并收到了机械工业出版社华章分社的邀请,于是四位我们开始了这本书的写作工作。 写作工作当然难度很大,而且大家都是业余时间做的,所以前后大概用了5个月的时间,10月底基本定稿。

我们希望通过本书为以太坊开发者或想学习以太坊智能合约开发的开发者提供一个系统、完整的学习和参考资料,帮助他们快速认识、理解和掌握基于以太坊和Solidity语言的开发。 智能合约开发乃至DApp开发的实践。 本书的附录也可以作为以太坊技术细节的参考手册查阅。

本书特色

本书囊括了开发者基于以太坊平台开发智能合约所需的全部知识和细节,由浅入深地讲解了以太坊智能合约开发的方方面面。

本书基础部分介绍了以太坊智能合约开发语言Solidity几乎所有的语法和语言特性细节,可按排列顺序循序渐进学习以太坊智能合约查询,也可作为工具手册随时查阅。 高级章节详细介绍了以太坊协议和以太坊虚拟机的原理和相关细节,并提供了社区设计和优化的大量合约源代码的详细解读,可以帮助开发者了解这是怎么回事. 同时,进阶章节还详细介绍了所有已知的智能合约攻击方式和基于智能合约的工程实践经验总结。 这些都是稀有的优秀技术材料。 具有很高的参考价值。

此外,本书实战章节还为开发者提供了完整的DApp开发实例,可以帮助开发者快速上手构建基于以太坊智能合约的新一代去中心化应用。

本书附录对以太坊虚拟机的手续费设计、指令设计和Solidity内联汇编进行了介绍,可以作为开发者进一步学习和研究智能合约开发的参考。

截至本书截稿,国内还没有同类书籍能像本书一样涵盖以太坊智能合约开发的几乎所有细节,并具有同等深度和广度的讲解。

如何阅读这本书

本书分为四个部分:

第一部分为预备篇,简要介绍了以太坊及其相关的基本概念,并讲解了与以太坊的基本交互和基本工具的使用。

第二部分是基础篇,详细讲解了智能合约开发语言Solidity的所有语法和编写合约的基本方法以太坊智能合约查询,同时也介绍了编译器的使用和Solidity集成开发工具的使用。

第三部分是一篇进阶文章,详细讲解了以太坊协议的细节和以太坊协议的核心——以太坊虚拟机的实现原理和相关设计; 解释用于以太坊虚拟机函数调用的应用程序二进制代码详情; 目前最有价值的公共基础合约库openzeppelin-solidity全部源码详解; 以及智能合约安全开发的经验和详细指南。

第四部分是实践篇,结合几个DApp实例,讲解如何基于智能合约构建好用的去中心化应用。

附录介绍了以太坊协议涉及的一些基本算法,以太坊虚拟机的费用设计和指令设计,以及Solidity内联汇编的简单介绍。 可以作为我们智能合约开发的参考。

如果你是了解以太坊基础知识和相关工具使用的开发者,那么可以直接从第三部分开始。 但如果你是初学者,或者不了解以太坊的基本概念和工具,请按照本书的顺序从第1章开始学习。

谢谢你

首先,我要感谢伟大的 Vitalik Buterin 和 Dr. Gavin Wood 创建了以太坊平台; 感谢来自世界各地的开源贡献者丰富了以太坊生态系统的发展到现在的状态; 感谢以太坊社区为全球开发者提供高质量的文档和相关信息。 本书是站在巨人的肩膀上完成的。

然后我要感谢我的三位合作者为本书做出的贡献:其中,盖方宇编写了第1、3、5章,朱志生编写了第2、11章,姜新宝编写了第6、5、12章。 没有你们的努力,不可能在这么短的时间内完成这本书。

感谢机械工业出版社华章分社编辑杨福川先生和孙海亮先生,在过去六个月的写作工作中一直支持我和我的三位合作者。 您的鼓励和帮助使我们能够顺利完成所有手稿。

最后,我要感谢我的父母和妻子的支持。

谨以此书献给我最亲爱的家人,以及所有热爱开源和以太坊的朋友们!

——杨震,北京,2018 年 11 月。

作为我的第一本书,虽然很激动也很感激,但是在内容上还是有些遗憾。 希望有机会贡献更高质量的技术书籍。 除了三位合著者姜新宝、朱志生、盖方宇和华章的老师杨富川、孙海亮,还要感谢华章仙都的李亮老师的大力支持和后期工作。

最后也是最后一个就是本文的重点——华章书院清新阅读海报,购买新鲜阅读赠送纸质书一本~。

以太坊智能合约查询_以太坊智能合约是什么_siteblockvalue.com 以太坊智能合约开发