English

Micro-Patterns in Solidity Code

Software Engineering 2025-05-05 v1 Programming Languages

Abstract

Solidity is the predominant programming language for blockchain-based smart contracts, and its characteristics pose significant challenges for code analysis and maintenance. Traditional software analysis approaches, while effective for conventional programming languages, often fail to address Solidity-specific features such as gas optimization and security constraints. This paper introduces micro-patterns - recurring, small-scale design structures that capture key behavioral and structural peculiarities specific to a language - for Solidity language and demonstrates their value in understanding smart contract development practices. We identified 18 distinct micro-patterns organized in five categories (Security, Functional, Optimization, Interaction, and Feedback), detailing their characteristics to enable automated detection. To validate this proposal, we analyzed a dataset of 23258 smart contracts from five popular blockchains (Ethereum, Polygon, Arbitrum, Fantom and Optimism). Our analysis reveals widespread adoption of micro-patterns, with 99% of contracts implementing at least one pattern and an average of 2.76 patterns per contract. The Storage Saver pattern showed the highest adoption (84.62% mean coverage), while security patterns demonstrated platform-specific adoption rates. Statistical analysis revealed significant platform-specific differences in pattern adoption, particularly in Borrower, Implementer, and Storage Optimization patterns.

Keywords

Cite

@article{arxiv.2505.01282,
  title  = {Micro-Patterns in Solidity Code},
  author = {Luca Ruschioni and Robert Shuttleworth and Rumyana Neykova and Barbara Re and Giuseppe Destefanis},
  journal= {arXiv preprint arXiv:2505.01282},
  year   = {2025}
}
R2 v1 2026-06-28T23:19:16.312Z