本文探讨以下问题:哪种智能合约语言更有优势,Solidity 还是 Vyper?最近,关于哪种是“最好的”智能合约语言存在很多争论,当然了,每一种语言都有它的支持者。
这篇文章是为了回答这场辩论最根本的问题:
我应该使用哪一种智能合约语言?
为了弄清问题的本质,我们将先讨论语言的工具和可用性,然后再考虑智能合约开发者主要关心的问题之一:gas 优化。具体来说,我们将研究四种 EVM 语言(可以在 Ethereum、Avalanche、Polygon 等链上运行的语言):Solidity、Vyper、Huff 和 Yul。Rust 并不在其中,它应该出现在一篇关于非 EVM 链的文章。
但首先,剧透一下结果。
Solidity、Vyper、Huff 和 Yul 都是可以让你完成工作的优秀语言。 Solidity 和 Vyper 是高级语言,大多数人都会用到。但是如果你有兴趣编写近乎汇编的代码,那 Yul 和 Huff 也可以胜任。
所以如果你坚持选择其中一个使用,那就抛硬币吧:因为无论你选择哪种语言,都是可以完成项目的。如果你是智能合约的新手,完全可以使用任何一种语言来开始你旅程。
此外,这些语言也一直在变化,你可以挑选特定的智能合约和数据,从而使得运行它们的不同的语言,表现出来的更好或者更差的效果。所以请注意,为了避免不客观,我们在比较不同语言在 gas 优化上的优劣时,都选择了最简的智能合约作为例子,如果你有更好的例子,也请分享给我们!
现在,如果你是这个领域的老手,让我们深入了解这些语言,看看它们的细节吧。
EVM 编程语言
我们将要研究的四种语言如下:
- Solidity:目前 DeFi TVL (DeFi 锁定的通证价值)占比最大的语言。是一种高级语言,类似于 JavaScript。
- Vyper:目前 DeFi TVL 排名第二的语言。也是一种高级语言,类似于 Python。
- Huff:一种类似于汇编的底层语言。
- Yul:一种类似于汇编的底层语言,内置于 Solidity(尽管有人认为它仍然是高级语言)。
为什么是这四个?
使用这四种语言,是因为它们都与 EVM 兼容,而且其中的 Solidity 和 Vyper 是迄今为止最受欢迎的两种语言。我添加了 Yul,因为在不考虑 Yul 的情况下,与 Solidity 进行 gas 优化比较是不全面的。我们添加了 Huff 是因为想以一种不是 Yul,但是与几乎就是在用 opcode 编写合约的语言作为基准。
就 EVM 而言,在 Vyper 和 Solidity 之后,第三、第四和第五的流行程度也越来越高。对于没有在本文中比较的语言;只是因为它们的使用度不高。然而,有许多很有前景的智能合约语言正在兴起,我期待能够在未来尝试它们。
什么是 Solidity?
Solidity 是一种面向对象的编程语言,用于在以太坊和其他区块链上来编写智能合约。 Solidity 深受 C++、Python 和 JavaScript 的影响,并且专为 EVM 而设计。
什么是 Vyper?
Vyper 是一种面向合约的类似于 Python 的编程语言,也是为 EVM 设计的。 Vyper 增强了可读性,并且限制了某些用法,从而改进了 Solidity。理论上,Vyper 提升了智能合约的安全性和可审计性。
当前的情况

来源于 DefiLlama 语言分析数据
根据 DefiLlama 的数据,截至目前,在 DeFi 领域,Solidity 智能合约获得了 87% 的 TVL,而 Vyper 智能合约获得了 8%。
因此,如果你纯粹基于受欢迎程度来选择语言的话,除了 Solidity,就不需要看别的了。
比较相同的合约
现在让我们了解每种语言写出的合约的是什么样的,然后比较它们的 gas 性能。
这是用每种语言编写的四份几乎相同的合同。做了大致相同的事情,它们都:
- Storage slot 0 有一个私有变量 number (uint256)。
- 有一个带有 readNumber() 函数签名的函数,它读取 storage slot 0 中的内容。
- 允许你使用 storeNumber(uint256) 函数签名更新该变量。
这就是这个合约做的操作。
我们用来比较语言的所有代码都在这个 GitHub repo 中。
🐉 Solidity

🐍 Vyper

♞ Huff

🧮 Yul

开发体验
通过查看这四张图片,我们可以大概了解编写每种语言的感受。就开发人员经验而言,编写 Solidity 和 Vyper 代码要快得多。这些语言是高级语言,而 Yul 和 Huff 是更底层的语言。仅出于这个原因,就很容易理解为什么这么多人采用 Vyper 和 Solidity(同时它们存在的时间也更长)。
看一下 Vyper 和 Solidity,你可以清楚地感觉到 Vyper 是从 Python 中汲取了灵感,而 Solidity 是从 JavaScript 和 Java 中汲取灵感。因此,如果你对于这几种语言更熟悉的话,那就能很好地使用对应的智能合约语言。
Vyper 旨在成为一种简约、易于审计的编程语言,而 Solidity

本文对比了Solidity和Vyper两种智能合约语言,探讨它们的优缺点和适用场景。Solidity因其高级语言特性更受欢迎,Vyper则强调安全性和可审计性。文章还讨论了Huff和Yul两种底层语言在gas优化方面的优势。最终,选择哪种语言取决于项目需求和个人偏好。
最低0.47元/天 解锁文章
2万+

被折叠的 条评论
为什么被折叠?



