A large-scale empirical study of low-level function use in Ethereum smart contracts and automated replacement

被引:4
作者
Xi, Rui [1 ]
Pattabiraman, Karthik [1 ]
机构
[1] Univ British Columbia UBC, Dept Elect & Comp Engn, Rm 4048,Fred Kaiser Bldg,2332 Main Mall, Vancouver, BC V6T 1Z4, Canada
基金
加拿大自然科学与工程研究理事会;
关键词
Ethereum blockchain; smart contract; source-to-source transformation; static analysis;
D O I
10.1002/spe.3163
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
The Ethereum blockchain stores and executes complex logic via smart contracts written in Solidity, a high-level programming language. The Solidity language (in its early versions) provides features to exercise fine-grained control over smart contracts, whose usage is discouraged by later-released Solidity documentation, but nonetheless supported in later versions for backward compatibility. We define these features as low-level functions. However, the high-volume of transactions and the improper use of low-level functions lead to security exploits with heavy financial loss. Consequently, the documentation suggests secure alternatives to the use of low-level functions. In this article, we first perform an empirical study on the use of low-level functions in Ethereum smart contracts. We study a smart contract dataset consisting of over 2,100,000 real-world smart contracts. We find that low-level functions are widely used and that the majority of these uses are gratuitous. We then propose GoHigh, a source-to-source transformation tool to eliminate low-level function-related vulnerabilities, by replacing low-level functions with secure alternatives. Our experimental evaluation on the dataset shows that GoHigh successfully replaces all low-level functions with 4.9% fewer compiler warnings. Further, no unintended side-effects are introduced in 80% of the contracts, and the remaining 20% are not verifiable due to their external dependency. GoHigh saves more than 5% of the gas cost of the contract. Finally, GoHigh takes 7 s on average per contract.
引用
收藏
页码:631 / 664
页数:34
相关论文
共 91 条
  • [1] Taming Callbacks for Smart Contract Modularity
    Albert, Elvira
    Grossman, Shelly
    Rinetzky, Noam
    Rodriguez-Nunez, Clara
    Rubio, Albert
    Sagiv, Mooly
    [J]. PROCEEDINGS OF THE ACM ON PROGRAMMING LANGUAGES-PACMPL, 2020, 4 (OOPSLA):
  • [2] Alt Leonardo, 2018, Leveraging Applications of Formal Methods, Verification and Validation. Industrial Practice. 8th International Symposium, ISoLA 2018. Proceedings: Lecture Notes in Computer Science (LNCS 11247), P376, DOI 10.1007/978-3-030-03427-6_28
  • [3] [Anonymous], 2022, ETHER MARKET CAPITAL
  • [4] [Anonymous], 2022, SWC 101 INTEGER OVER
  • [5] [Anonymous], 2022, SWC 136 UNENCRYPTED
  • [6] [Anonymous], 2022, SWC 128 DOS BLOCK GA
  • [7] [Anonymous], 2022, SWC 107 REENTRANCY
  • [8] [Anonymous], 2018, ETHEREUM BIGQUERY PU
  • [9] Ashizawa N., 2021, P 3 ACM INT S BLOCKC, P47, DOI 10.1145/3457337.3457841
  • [10] A Survey of Attacks on Ethereum Smart Contracts (SoK)
    Atzei, Nicola
    Bartoletti, Massimo
    Cimoli, Tiziana
    [J]. PRINCIPLES OF SECURITY AND TRUST (POST 2017), 2017, 10204 : 164 - 186