IEEE Access (Jan 2024)

General-Purpose Languages for Blockchain Smart Contracts Development: A Comprehensive Study

  • Luca Olivieri,
  • Vincenzo Arceri,
  • Badaruddin Chachar,
  • Luca Negrini,
  • Fabio Tagliaferro,
  • Fausto Spoto,
  • Pietro Ferrara,
  • Agostino Cortesi

DOI
https://doi.org/10.1109/ACCESS.2024.3495535
Journal volume & issue
Vol. 12
pp. 166855 – 166869

Abstract

Read online

Smart contracts are undoubtedly one of the most successful and popular applications of the blockchain industry. They consist of computer programs that are stored in blockchain, typically immutable, allowing the creation of decentralized applications (DApps). Their source code describes how the blockchain’s global state should evolve as a consequence of input received from transaction requests. There are two categories of programming languages for writing smart contracts: domain-specific languages (DSLs) and general-purpose languages (GPLs). The research community has spent a great effort for proposing, studying, and verifying DSLs, while the same is not true for GPLs applied to blockchain, although the most popular blockchains adopt them at different levels of the software development. This paper investigates the use of the most popular GPLs in smart contracts and DApps development. It first overviews blockchains that use GPLs for writing smart contracts. Then, it provides a taxonomy of how GPLs are used to develop smart contracts, highlighting limitations and challenges for each type of GPL. The goal of this study is to provide blockchain practitioners with a better comprehension of GPLs, while shedding light on this class of programming languages that are widespread in blockchain software.

Keywords