Solidity vs Move vs Rust:智能合约编程语言的演变

区块链的安全性、速度和开发人员活动取决于其底层编程语言和虚拟机。两种最流行的编程语言是 Solidity,用于为以太坊虚拟机 (EVM) 构建去中心化应用程序,以及用于在 Solana 上构建 dApp 的 Rust。

然而,由于最新出现的基于智能合约的区块链 Aptos 和 Sui 使用 Move 作为其更安全和可扩展的第 1 层的基础,因此对这三者进行并排比较是合适的。

编码术语

高级语言 (HLL)

HLL 通常更易于开发人员阅读和编写,因为与更接近机器代码的低级语言相比,它们更接近人类语言。计算机要读取和执行源代码,首先需要将其编译成机器语言。

低级语言 (LLL)

LLL 对于开发人员来说更难读写,因为它们类似于机器代码。因此,它们可以在没有中间编译器或解释器的情况下转换为机器代码。

运行环境

在区块链上,虚拟机充当操作系统运行时环境。

解释或编译的编程语言

编程语言将自己区分为解释语言或编译语言。

编译后的编程语言需要从源代码转换为可执行的字节码。

另一方面,解释性编程语言在运行时由解释器逐行读取和执行。

因此,解释型语言通常比编译型语言慢。然而,解释型语言不太容易出现错误,因为代码的调试发生在运行时并且中间编译表示被删除。

在编译型语言中,即使源代码完美无缺,编译器错误也会出现,因此它们更容易出错。

顺序或并行处理

如今,大多数主要区块链都使用顺序执行交易,这意味着运行时环境一次只能处理一项交易。这是网络吞吐量的主要瓶颈。

相比之下,一些编程语言支持并行处理(或并行执行),与顺序处理相比允许更高的 TPS,而不需要像零知识证明这样的数学驱动解决方案。

并行执行识别独立事务以同时执行它们。然而,依赖事务会影响另一个事务的执行,因此必须按顺序执行。

Solidity——EVM 智能合约的编程语言

以太坊是第一个可编程的区块链,直到今天它仍然是 Web3 生态系统增长的基础开发环境。为了在以太坊上编程,您需要首先使用 Solidity 创建一个“智能合约”——一种由 Gavin Wood 博士在 2014 年专门为以太坊智能合约设计的自定义语言。智能合约然后在以太坊虚拟机上运行(EVM)。

作为 HLL,Solidity 使软件开发更加人性化。此外,Solidity 受 C++、Java 和 Python 等其他流行语言的影响和相似,使新开发人员更容易在 EVM 生态系统中开始开发。

然而,作为一种编译语言,Solidity 更容易出现错误,因为将其翻译成机器可读的字节码需要额外的步骤。因此,尽管智能合约经历了极其复杂和昂贵的审计,但我们继续看到以太坊生态系统中的智能合约漏洞。

今天,Solidity 是一个独立的开源项目,在 GitHub 上得到进一步完善和发展。虽然它不是唯一可用于为以太坊编写代码的语言,但 Solidity 的语法是专门为 EVM 设计的。

Solidity 的优势

  • HLL,因此更容易学习和用户友好
  • 大量优秀的开发人员工具和开源库
  • Web3 中使用最多的语言
  • 类似于 C++、Python 和 JavaScript 等语言
  • 开发人员不太可能在他们已经熟悉的语言中犯错误
  • 良好的社区支持
  • 现有标准(ERC20 和 ERC 721)
  • 多链兼容性(第二层区块链、侧链和 EVM 兼容的第一层区块链)

    Solidity 的缺点

  • 作为一种编译型语言,Solidity 更容易出现可利用的错误
  • 顺序处理是网络吞吐量的瓶颈

Solidity 使用

在撰写本文时,Solidity 占智能合约锁定总价值的 87.45%,其次是 Vyper (8.95%) 和 Rust (2.31%)

Rust——Solana 的主要编程语言

虽然许多生态系统都试图通过与 EVM 兼容来吸引新的开发人员,但 Solana 以其独特的编程语言走了一条不同的道路,自推出以来采用率有了惊人的增长。

Rust 于 2011 年推出,与 Solidity 不同,它是从头开始设计的通用编程语言,并不局限于智能合约程序。

与 Solidity 相比,Rust 是一种编译型、低级且更复杂的编程语言。因此,它对新开发人员的吸引力可能会降低,因为它更难学习。然而,Web3 生态系统之外的许多开发人员已经精通 Rust,这使得开始从事 Solana 或 Near 项目变得更加容易。

Rust 以作为 Solana 的主要编程语言而闻名,它有助于实现其他区块链梦寐以求的吞吐量。对于许多人来说,与 Solidity 相比,它也是一种更强大、更通用的语言,因为它允许开发人员有效地管理内存并利用并行处理。

Rust的优点

  • 作为一种面向机器的编译型语言,Rust 提供了高速和良好的内存效率
  • Rust 允许通过并行处理实现更高的吞吐量
  • Rust通过所有权和借用原则实现内存安全,在编译时消除与内存相关的错误
  • 由于 Rust 开发人员通常是更有经验的开发人员,因此预计 Solana 上的智能合约(称为程序)不太容易出现错误

Rust的缺点

  • 作为 LLL,Rust 的学习曲线陡峭,通常更难学
  • 大型项目的程序编译最多可能需要 10 分钟
  • 今天,只有少数区块链支持 Rust,即 Solana 和 Near

Rust的使用

虽然使用 Solidity 作为主要编程语言的区块链继续拥有最大份额的活跃开发人员,但 Solana 目前的增长速度超过了以太坊。

Move

Move 于 2019 年推出,是 Aptos 和 Sui 等新的第一层链中使用的最现代的编程语言之一。Move 基于 Rust,但由 Meta 为其 Diem 区块链专门设计,以解决现有智能合约语言的问题。

因此,Move 背后的团队有机会检查 Web3 空间的现有语言并从中学习它们的缺点。

最重要的是,Move 被设计为一种面向对象的语言,用于编写具有安全资源管理的智能合约或程序。资产被定义为“资源”,可以在账户之间移动,但不能被双花或重复。

这使得编写无错误代码变得非常容易,与 Solidity 相比,在 Solidity 中,资产的转移必须手动指定,从而增加了编写错误代码的可能性。

因此,Move 消除了重入攻击的可能性,这是对 Solidity 智能合约最严重的攻击之一。

作为一种解释型语言,Move 的性能比编译型语言慢。然而,缺少编译器和编译器错误使得 Move 本质上比 Solidity 更安全。

此外,Move 继承了 Rust 的内存效率和并行处理,使其成为整体性能的可靠选择。

Move的优势

  • 与 Rust 一样,Move 允许用户通过并行处理实现更高的吞吐量
  • 作为一种解释型语言,Move 没有编译器,因此没有编译器错误
  • Move 的设计考虑到了安全性,旨在消除重入等漏洞

    Move的缺点

  • 工具、资源和社区有限的新语言
  • 比高级语言更难学
  • 解释型语言的性能通常比同类编译型语言差
  • 没有多链兼容性,因为目前还没有主要的区块链采用 Move

    Move使用

    Aptos 和 Sui 是目前唯一使用 Move 作为主要编程语言的区块链项目,现在说该语言会有多成功还为时过早。

结论

由于其用户友好性和在以太坊上的广泛使用,Solidity 是最流行的区块链开发编程语言。然而,它有几个漏洞,在过去曾导致代价高昂的错误。相比之下,Rust 和 Move 是有趣的替代方案,因为它们提高了安全性和效率。

虽然 Rust 已经在 Solana 上提供了更好的性能并显示出令人印象深刻的采用率,但 Move 旨在提供三者中最安全的解决方案,消除了 Solidity 的许多漏洞。

重要的是要记住这三种语言都是相对较新的。潜在的安全隐患尚未被发现,它们的长期成功还有待观察。

在为智能合约开发提供基础的同时,编程语言只是决定区块链及其 dApp 的速度和安全性的一个因素。

然而,像 Move 这样的新方法只会在可扩展性和安全性的竞争中推动竞争和创新,我们将密切关注这个新兴生态系统的发展和进步。

评论