A Multi-Modal Transformer-based Code Summarization Approach for Smart Contracts.
Abstract
Code comment has been an important part of computer programs, greatly facilitating the understanding and maintenance of source code. However, high-quality code comments are often unavailable in smart contracts, the increasingly popular programs that run on the blockchain. In this paper, we propose a Multi-Modal Transformer-based (MMTrans) code summarization approach for smart contracts. Specifically, the MMTrans learns the representation of source code from the two heterogeneous modalities of the Abstract Syntax Tree (AST), i.e., Structure-based Traversal (SBT) sequences and graphs. The SBT sequence provides the global semantic information of AST, while the graph convolution focuses on the local details. The MMTrans uses two encoders to extract both global and local semantic information from the two modalities respectively, and then uses a joint decoder to generate code comments. Both the encoders and the decoder employ the multi-head attention structure of the Transformer to enhance the ability to capture the long-range dependencies between code tokens. We build a dataset with over 300K <method, comment> pairs of smart contracts, and evaluate the MMTrans on it. The experimental results demonstrate that the MMTrans outperforms the state-of-the-art baselines in terms of four evaluation metrics by a substantial margin, and can generate higher quality comments. Index Terms-Smart Contracts, Code Summarization, Transformer, Graph Convolution, Structure-based Traversal I. I NTRODUCTION Automatic code summarization, which generates a brief natural language description for source code, can greatly facilitate programmers in code comprehension and maintenance. Many approaches have been proposed to generate comments for some common programming languages, such as Java and Python. In recent years, smart contracts, as programs automatically running on the blockchain [1]-[3], have been applied in various business areas to enable more efficient and trustable transactions [4], [5]. More and more developers also devote themselves to the development of smart contracts, and contribute their code to various smart contract communities (e.g., Etherscan.io [6]). However, as an increa