前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Solidity vs Move vs Rust: 智能合约编程语言的演变

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

作者头像
Tiny熊
发布2023-01-09 17:43:28
1.1K0
发布2023-01-09 17:43:28
举报

译文出自:登链翻译计划[1] 译者:张小雨[2] 校对:Tiny 熊[3]

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

然而,由于最新出现的智能合约的区块链,Aptos 和 Sui,使用 Move 作为他们的基础编程语言,以实现更安全和可扩展的第 1 层,所以对这三者做一个比较是非常合适的。

编码术语

高级语言(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 和 ERC721)
  • 多链兼容(Layer2、侧链和 EVM 兼容的第一层区块链)。

Solidity 的劣势

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

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 作为主要编程语言的区块链仍然拥有最大的活跃开发者份额,但增长速度较快。

Move

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

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

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

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

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

作为一种解释型语言,Move 的性能与编译型语言相比要慢一些。然而,由于缺乏编译器和编译器错误,Move 在本质上比 Solidity 更安全。

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

Move 的优势

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

Move 的劣势

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

Move 的采用

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

结语

Solidity 是区块链开发中最受欢迎的编程语言,因为它的用户友好性和在以太坊上的广泛使用。不过,在过去,Solidity 的一些漏洞,造成了昂贵的损失。相比之下,Rust 和 Move 由于其更高的安全性和效率而成为有趣的替代品。

虽然 Rust 已经在 Solana 上提供了更好的性能,并显示出不错的采用率,而 Move 被设计为提供三者中最安全的解决方案,消除了 Solidity 的许多漏洞。

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

虽然提供了智能合约开发的基础,但编程语言只是决定区块链及其 dApps 的速度和安全性的一个因素。

然而,像 Move 这样的新方法会在可扩展性和安全性的竞赛中推动竞争和创新,值得我们关注。

原文链接:https://yieldapplabs.medium.com/solidity-vs-rust-move-e6fec78f77df

参考资料

[1]

登链翻译计划: https://github.com/lbc-team/Pioneer

[2]

张小雨: https://learnblockchain.cn/people/390

[3]

Tiny 熊: https://learnblockchain.cn/people/15

Twitterhttps://twitter.com/NUpchain

Discordhttps://discord.gg/pZxy3CU8mh

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-11-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 深入浅出区块链技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 编码术语
    • 高级语言(HLL)
      • 低级语言(LLL)
        • 运行时环境
          • 解释型或编译型编程语言
            • 顺序或并行处理
            • Solidity - EVM 智能合约的编程语言
              • Solidity 的优势
                • Solidity 的劣势
                  • Solidity 的采用
                  • Rust - Solana 的主要编程语言
                    • Rust 的优势
                    • Rust 的采用
                    • Move
                      • Move 的优势
                        • Move 的劣势
                          • Move 的采用
                          • 结语
                            • 参考资料
                            相关产品与服务
                            区块链
                            云链聚未来,协同无边界。腾讯云区块链作为中国领先的区块链服务平台和技术提供商,致力于构建技术、数据、价值、产业互联互通的区块链基础设施,引领区块链底层技术及行业应用创新,助力传统产业转型升级,推动实体经济与数字经济深度融合。
                            领券
                            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档