本文介绍了Solidity的学习重要性、学习方法及核心概念。Solidity是以太坊及EVM兼容区块链的智能合约编程语言,学习Solidity不仅可以提供高收入的职业机会,还能帮助开发者构建影响深远的去中心化应用(dApps)。
Solidity 是一种面向对象的高级语言,用于编程智能合约。学习 Solidity 将使你能够创建智能合约和去中心化应用(dApps)。
本文介绍了学习 Solidity 的最常用方法,并介绍了学生需要学习的重要 Solidity 概念,以便成为以太坊开发者。
Solidity 是编写以太坊及与 EVM 兼容区块链上的智能合约的编程语言,是区块链开发者最重要的技能之一。随着以太坊和其他智能合约平台周围生态系统的增长,对Solidity 开发者的需求也在增加。
高级 Solidity 开发者的平均年薪为 $120,000 到 $225,000,不包括基于代币的股权或员工股票期权。根据 cryptocurrencyjobs.co 的数据,美国 Solidity 开发者的平均基本薪资为 $127,500,最低基本薪资为 $80,000,最高基本薪资为 $180,000。相比之下,远程开发者的年薪为 $111k - $200k。与美国开发者的平均薪资 $103,000 相比,区块链专业化的需求显而易见。
以下是每年 Solidity 开发者的按地区薪资结构(美国美元):
北美 - $125K-$200K
欧洲 - $80K-$135K
亚洲 - $46K-$116K
大洋洲 - $85K-$120K
南美 - $49K-$150K
非洲 - $49K-$75K
远程 - $111K-$200K
学习 Solidity 不仅可以提供巨大的财务机会,而且还可以让你构建出能够对世界产生重大影响的精彩 dApps。实际上,仅以太坊就有近 3,000 个 dApps,服务于金融包容性到可持续能源等多种目标。
学习 Solidity 有多种方式,包括在线课程、训练营、教程,以及阅读来自流行 Solidity 开发工具如 Hardhat 的文档。
如果你希望比教程提供更多的结构和指导,则在线课程是学习 Solidity 的一个不错选择。有许多高质量的课程可供选择,包括 Alchemy 大学的免费 Solidity 开发课程。
虽然教程是自定进度的,但在线课程通常有固定的课程和截止日期,提供时间限制的激励,让学习者保持在轨道上。此外,通常Solidity 课程还包括测验和其他作业,以测试你的知识。
如果你希望在一个结构化和沉浸式的环境中学习 Solidity 和其他区块链开发技能,Solidity 训练营可能适合你。区块链训练营提供密集的实践培训,帮助你成为一名准备上岗的区块链开发者。
在 Alchemy 收购 ChainShot 后,Alchemy 重新设计了 ChainShot 的 7 周、$3,000 的以太坊开发者训练营,现在在 Alchemy 大学向公众免费提供。要与专家教师和积极的同辈一起学习 Solidity,请确保排队报名Alchemy 大学的以太坊训练营。
如果开发者是完全的新手,Alchemy 大学的 3 周 JavaScript 速成课程 在开始以太坊训练营之前是一个很好的先修课程。
如果你是自我驱动并希望以自己的速度学习,教程是学习 Solidity 的一种极好方式。网络上有许多高质量的Solidity 教程,涵盖从初学者到高级水平的内容。
官方的 以太坊开发者资源 包括 53 个标记为“Solidity”的教程,涵盖从智能合约基础知识到更高级主题,如Gas优化和安全签名。
一旦你选择了学习方法,就该开始学习如何使用 Solidity 编码了。一些核心的 Solidity 概念对于编写有效的代码非常重要。
应用程序二进制接口 (ABI) 是一组规则,允许两个不同的软件互相交互。在 Solidity 的上下文中,ABI 允许智能合约彼此之间交互,以及与诸如钱包等外部软件交互。
ABI 使你能够编写可以与任何合约交互的代码,无论你是否具有源代码。这是可能的,因为 ABI 包含所有编码和解码在合约间传递数据所需的信息。
一个 智能合约 是一段代码,它在以太坊区块链上运行,并在满足一系列条件时执行某些操作。智能合约可用于创建数字代币、去中心化应用(dApps)等。
一种常见的智能合约用例是创建一个 ERC20 代币,这仅需几行代码即可完成。更复杂的智能合约包括代币交换、收益耕作和合成资产。这些合约使用 Solidity 编译器 编译,输出用于部署合约的字节码。
ERC20 代币是一种在以太坊区块链上运行的数字资产。它们通常用于代表实际资产,如商品或法定货币。
ERC20 代币是以太坊上最常见的数字资产类型。由于 ERC20 代币也是编写的最简单合约类型之一,因此学习如何创建它们是掌握的重要技能。
一个 接口 是指定合约必须具备哪些函数的一种方式。接口使你可以创建易于重复使用和扩展的合约。例如,你可以为代币合约创建一个接口,任何实现该接口的合约都可以作为代币使用。
继承 是在 Solidity 中重用代码的一种方式。继承允许你创建“子”合约,从“父”合约继承所有代码。这使开发者可以避免代码重复,并使智能合约的维护变得更容易。
继承是面向对象编程中的一个重要概念,也是 Solidity 强大的原因之一。学习如何创建标准化合约,便于扩展和修改是学习 Solidity 的重要课程。
与任何编程语言一样,函数是 Solidity 的一个关键部分。Solidity 函数 是接收输入、执行某些操作并返回输出的代码片段。
函数可以写入 Solidity 智能合约中,以执行各种操作,从发送代币到存储数据。旨在重用的函数集合称为库。
编程中的一个基本原则称为“D.R.Y. 原则”,即“不要重复自己”。这个原则指出,开发者不应当重复编写同一段代码。相反,开发者应当编写一次函数,并在需要执行该操作时调用该函数。
关于 Solidity 函数,有一点很重要的是它们具有可见性设置。可见性决定了谁可以看到和执行该函数。Solidity 中有四种可见性级别:public,external,internal,和 private。
公共函数 可以被任何人看到和执行。
外部函数 可以被任何人看到,但只能被其他合约执行。
内部函数 只能被同一合约中的其他函数看到和执行。
私有函数 只能被合约自身看到和执行。
call 函数 允许你在另一个合约中执行代码。这就是合约如何在以太坊上互相交互的方式。
call 函数允许你编写可以与任何合约交互的代码,无论你是否具有源代码。这是可能的,因为 ABI 包含编码和解码在合约间传递的数据所需的所有信息。
delegatecall 函数类似于 call 方法,但有一个重要区别;它在调用者的上下文中执行代码。这意味着由被调用合约所做的任何存储更改将被应用于调用者的存储。
delegatecall 函数允许你编写可以被其他合约重用的合约。例如,你可以编写一个实现接口的合约,然后其他合约可以 delegatecall 该合约以使用接口。
修饰符 类似于函数,但有一些重要的区别。首先,修饰符只能用于函数。其次,修饰符在函数执行之前被调用。修饰符的一个例子是 payable,它允许一个函数将以太接收至合约中。
修饰符使你可以在不触碰实际代码的情况下,改变函数的行为。例如,修饰符可以在执行函数之前检查用户的余额是否足够,或者添加在调用函数时触发的事件。
数组是线性数据结构,存储固定大小的相同数据类型的元素,这些元素存储在连续的相邻内存位置。数组的大小可以是固定的或动态的。动态数组的大小在声明时并未预定义,而固定数组则具有预定义的大小。
如果开发者需要遍历一组数据(例如,使用循环),则可以使用数组。如果不需要遍历数据集,而是可以根据已知 key 检索值,则应考虑使用映射。
结构体 是在 Solidity 合约中存储数据的一种方式。结构体适合创建具有多种属性的复杂数据类型。
一个 映射 是在 Solidity 合约中存储数据的一种方式。映射与数组相似,但其键可以是任何类型,而不仅仅是整数。这一特性使映射灵活且强大。映射允许你以灵活且易于使用的方式在合约中存储数据。
事件是一种在满足特定条件时触发代码执行的方法。例如,开发者可以编写一个事件,当用户购买代币或交易在区块链上被确认时触发。
Solidity 事件 使开发者能够编写响应现实世界事件的代码。这就是许多 dApps 能够与现实世界交互的方式,例如在条件满足时发送电子邮件或短信。
"require" 关键字是三种特殊函数之一:require,assert 和 revert。Require 检查条件是否为真,如果不为真,它将回退事务并返回错误信息。
使用 require 可以防止合约中出现错误。例如,你可以使用 require 来检查用户的余额是否足够以进行购买,或在发送交易之前检查地址是否有效。
可升级智能合约 是一种可以在不需要重新部署合约的情况下升级的合约。可升级智能合约允许你在合约部署后对其进行更改,而不会影响区块链上已存在的数据或代码。
代理合约 是一种可更新的路由合约,旨在将函数调用引导到最新的实现。
通过这种方式,协议能够升级其实现,而不需要所有用户将代码更新为新地址。通过使用代理,开发者可以为其函数保持一个静态地址,以便查找。
代理合约拥有一个更新函数,团队可以调用此函数,将函数路由路径更新到新的实现合约地址。
多重签名合约 是一种合约,要求多个签名才能执行其代码。Solidity 多重签名合约在开发者希望要求多人对交易进行审批后再执行时尤为有用。
多重签名合约也适用于需要限制在特定时间段内可以花费的金额的情况。例如,你可以使用多重签名合约,要求对任何超过 $1,000 的交易进行两次签名。
重入攻击 是一种可以在 Solidity 合约中发生的攻击,当一个合约调用另一个合约,而第二个合约又调用返回第一个合约或另一个不可信的合约,通常是在第一个合约尚未完成执行之前。
重入攻击可用于利用合约中的漏洞。例如,攻击者可以通过重入攻击从合约中抽走所有以太。
无论你的目标是什么,总有一种适合你的学习 Solidity 的方法。如果你正在寻找一种快速简便的入门方式,教程是一个不错的选择。你也可以查看我们关于 Solidity 的介绍。如果你希望获得更多的结构和指导,在线课程可能更适合你。如果你正在寻找沉浸式的实践经验,那么训练营可能是合适的选择。
一旦你选择了学习方法,就有许多重要概念需要确保你掌握,包括智能合约、函数、事件等。通过了解这些概念,你将能够顺利成为一名精通 Solidity 的开发者。
- 原文链接: alchemy.com/overviews/le...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!