中文

Solidity智能合约中Gas消耗的剖析

软件工程 2021-12-16 v3 计算与语言 密码学与安全

摘要

如今,越来越多的应用被开发用于运行在分布式账本技术上,即dApp。dApp的业务逻辑通常通过Solidity实现的智能合约来完成,Solidity是一种用于在不同区块链平台(包括流行的以太坊)上编写智能合约的编程语言。在以太坊中,智能合约运行在矿工的机器上,gas对应于补偿此类计算资源的执行费。然而,智能合约的部署与执行成本取决于开发者所做的实现选择。不适当的设计选择可能导致比必要更高的gas消耗。在本文中,我们(i)识别出一组影响智能合约部署与交易成本的19个Solidity代码坏味,并(ii)通过涉及34名参与者的调查评估这些坏味的相关性。基于这些坏味,我们提出GasMet,一套从gas消耗角度静态评估智能合约代码质量的度量指标。一项涉及2,186个智能合约的实验表明,所提指标与部署成本存在直接关联。我们套件中的指标可用于更轻松地识别需要优化的源代码段。

关键词

引用

@article{arxiv.2008.05449,
  title  = {Profiling Gas Consumption in Solidity Smart Contracts},
  author = {Andrea Di Sorbo and Sonia Laudanna and Anna Vacca and Corrado A. Visaggio and Gerardo Canfora},
  journal= {arXiv preprint arXiv:2008.05449},
  year   = {2021}
}