Skip to main content
QUICK REVIEW

[论文解读] Smart Contract Languages: a comparative analysis

Massimo Bartoletti, Lorenzo Benetollo|arXiv (Cornell University)|Apr 5, 2024
European and International Contract Law被引用 4
一句话总结

本文通过名为“Rosetta Smart Contracts”的自定义基准测试,对六种主流智能合约语言——Ethereum 的 Solidity、Solana 的 Rust、Cardano 的 Aiken、Algorand 的 PyTEAL、Aptos 的 Move 和 Tezos 的 SmartPy——进行了比较分析,评估其设计、安全性、易用性以及对资产管理和成本控制等关键功能的支持。研究发现,Move 语言通过线性类型在编译时提供了最强的保障,可有效防止与资产相关的漏洞;而过程式编程风格相比审批式模型更易于理解且更少出错。

ABSTRACT

Smart contracts have played a pivotal role in the evolution of blockchains and Decentralized Applications (DApps). As DApps continue to gain widespread adoption, multiple smart contract languages have been and are being made available to developers, each with its distinctive features, strengths, and weaknesses. In this paper, we examine the smart contract languages used in major blockchain platforms, with the goal of providing a comprehensive assessment of their main properties. Our analysis targets the programming languages rather than the underlying architecture: as a result, while we do consider the interplay between language design and blockchain model, our main focus remains on language-specific features such as usability, programming style, safety and security. To conduct our assessment, we propose an original benchmark which encompasses a wide, yet manageable, spectrum of key use cases that cut across all the smart contract languages under examination.

研究动机与目标

  • 评估无许可区块链中主流智能合约语言的设计原则及其实际影响。
  • 识别语言层面的特性如何影响去中心化应用(DApps)的安全性、可读性和开发效率。
  • 评估语言对资产支持、合约交互及平台特定功能的支持在减少漏洞方面的作用。
  • 比较过程式与审批式编程模型在错误倾向性和可维护性方面的差异。
  • 为未来智能合约语言及平台的评估建立标准化基准。

提出的方法

  • 作者开发了一项名为“Rosetta Smart Contracts”的自定义基准测试,涵盖现实世界去中心化应用(DApps)用例的代表性范围。
  • 选取了在主流无许可区块链上使用的六种主要智能合约语言进行分析:Ethereum 的 Solidity、Solana 的 Rust、Cardano 的 Aiken、Algorand 的 PyTEAL、Aptos 的 Move 和 Tezos 的 SmartPy。
  • 分析重点聚焦于语言特定功能,如类型安全、资产建模、对自定义代币的支持以及编程范式(过程式 vs. 审批式)。
  • 研究根据区块链模型(账户模型 vs. UTXO 模型)对语言进行分类,并评估这些模型如何影响语言设计与安全性。
  • 通过在所有语言中实际实现该基准测试,实现了代码清晰度、样板代码量和错误易感性的直接对比。
  • 作者采用分层区块链架构模型,将合约层决策作为影响语言设计与行为的主要因素进行隔离。

实验结果

研究问题

  • RQ1不同智能合约语言在易用性、安全性和资产管理支持方面有何差异?
  • RQ2底层区块链模型(账户模型 vs. UTXO 模型)如何影响智能合约语言的设计与安全性?
  • RQ3过程式与审批式编程模型在代码可读性和漏洞面方面如何比较?
  • RQ4原生语言级特性(如线性类型、自定义数据类型)在多大程度上可减少双重支出或资产损失等常见漏洞?
  • RQ5标准化基准是否可有效用于对跨平台智能合约语言进行定性评估与比较?

主要发现

  • Move 语言使用线性类型,在编译时提供了最强的静态保障,可防止资产重复和丢失,使其在抵御与资产相关的漏洞方面最具韧性。
  • 过程式编程风格(合约更新状态并触发效果)相比审批式模型(需复杂验证交易字段)更易于理解且更少出错。
  • 提供对自定义代币和资产类型原生支持的语言(如 Aiken、Move)相比依赖临时数据类型的语言,显著降低了财务损失和未经授权转账的风险。
  • 缺乏原生功能(如任意精度算术或安全随机数生成)迫使开发人员使用计算开销大或不安全的替代方案,从而损害效率与去中心化特性。
  • 基于 UTXO 的平台(如 Cardano 和 Algorand)在资产类型纪律方面面临更大挑战,如 Aiken 依赖记录字段更新和算术操作,增加了出错的可能性。
  • 尽管某些语言在理论上图灵完备,但其在处理复杂操作(如使用 Church 编码实现大整数)时仍需不切实际的替代方案,凸显了对关键功能提供一等语言支持的重要性。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。