跳转到主要内容
Change page

智能合约语言

关于以太坊的一个重要方面是,智能合约可以使用相对友好的开发者语言编程。 如果你有 Python 或任何花括号语言 (opens in a new tab)的经验,你可以找到一种语法熟悉的语言。

最受欢迎和维护得最好的两种语言是:

  • Solidity
  • Vyper

Remix 集成开发环境提供了一个全面的开发环境,用于创建和测试用 Solidity 和 Vyper 语言编写的智能合约。 试用浏览器内置的 Remix IDE (opens in a new tab) 开始编码。

经验更丰富的开发者可能还想使用 Yul(一种用于以太坊虚拟机的中间语言)或 Yul+(Yul 的扩展)。

如果你很好奇,喜欢帮助测试仍在大力发展的新语言,则可以尝试使用 Fe,这是一种新兴的智能合约语言,目前仍处于起步阶段。

前提条件

如果已经有编程语言(特别是关于 JavaScript 或 Python)知识,可以帮助你体验到智能合约语言的差异。 同时,我们建议你在深入理解语言差异之前,先理解作为概念的智能合约。 智能合约简介

Solidity

  • 执行智能合约的目标导向高级语言。
  • 受 C++ 影响最深的大括号编程语言。
  • 静态类型(编译时已知变量类型)。
  • 支持:
    • 继承(你可以拓展其它合约)。
    • 库(你可以创建从不同的合约调用的可重用代码 - 就像静态函数在其它面向对象编程语言的静态类中一样)。
    • 复杂的用户自定义类型。

示例合约

这个示例应该能让你感觉到 Solidity 合约语法是什么样子的。 有关函数和变量的更详细说明,请参阅文档 (opens in a new tab)

Vyper

  • 类 Python 编程语言
  • 强类型
  • 小而且易懂的编译器代码
  • 高效的字节码生成
  • 为了让合约更安全和易于审核,特意提供比 Solidity 少的功能。 Vyper 不支持:
    • 修改器
    • 继承
    • 内联汇编
    • 函数重载
    • 操作符重载
    • 递归调用
    • 无限长度循环
    • 二进制定长浮点

更多信息,请阅读 Vyper 的设计原理 (opens in a new tab)

示例

这个例子应该让你了解 Vyper 合约语法是什么样的。 有关函数和变量的更详细说明,请参阅文档 (opens in a new tab)

Yul 和 Yul+

如果你是以太坊的新手并且尚未使用智能合约语言进行任何编码,我们建议你开始使用 Solidity 或 Vyper。 只有在你熟知智能合约安全最佳做法和使用 EVM 的具体细节后,才可以查看 Yul 或 Yul+。

Yul

  • 以太坊的中继语言。
  • 支持 EVMEwasm (opens in a new tab)(一种以太坊风格的 WebAssembly),旨在成为这两个平台的通用分母。
  • 是高级优化阶段的理想目标,可使 EVM 和 Ewasm 平台同等受益。

Yul+

  • Yul 的低级、高效扩展。
  • 最初为乐观卷叠合约而设计。
  • Yul+ 可以被视为对 Yul 的实验性升级建议,为其添加新功能。

示例合约

以下简单示例实现了幂函数。 可以使用 solc --strict-assembly --bin input.yul 对其进行编译。 这个例子应该 存储在 input.yul 文件中。

如果你对智能合约已非常有经验,可以在此处 (opens in a new tab)找到用 Yul 实现的完整 ERC20。

Fe

  • 以太坊虚拟机 (EVM) 静态类型语言。
  • 受到 Python 和 Rust 的启发。
  • 目标是容易学习 - 甚至对以太坊生态系统为新的开发者来说也是如此。
  • Fe 开发仍处于早期阶段,该语言于 2021 年 1 月发行。

示例合约

以下是在 Fe 中执行的简单的智能合约。

如何选择

与任何其他编程语言一样,它主要是关于为合适的工作以及个人喜好选择合适的工具。

如果你还没有尝试过任何一种语言,请考虑以下几点:

Solidity 的优点是什么?

  • 如果你是初学者,这里有很多教程和学习工具。 在“通过编码学习”部分查看更多相关信息。
  • 提供出色的开发者工具。
  • Solidity 拥有庞大的开发人员社区,这意味着你很可能会很快找到问题的答案。

Vyper 的优点是什么?

  • 想要编写智能合约的 Python 开发人员入门的好方法。
  • Vyper 的功能较少,因此非常适合快速制作创意原型。
  • Vyper 旨在易于审计并最大限度地提高人类可读性。

Yul 和 Yul+ 的优点是什么?

  • 简单而实用的低级语言。
  • 允许更接近原始 EVM,这有助于优化合约的燃料使用量。

语言比较

要比较基本语法、合约生命周期、接口、运算符、数据结构、函数、控制流等,请查看 Auditless 制作的这份速查表 (opens in a new tab)

扩展阅读{#further-reading}

页面最后更新: 2026年2月25日

这篇文章对您有帮助吗?