Skip to main content
QUICK REVIEW

[论文解读] Semantic Code Search for Smart Contracts

Chaochen Shi, Yong Xiang|arXiv (Cornell University)|Nov 28, 2021
Software Engineering Research参考文献 26被引用 5
一句话总结

该论文提出MM-SCS,一种用于智能合约的多模态语义代码搜索模型,通过引入合约元素依赖图(CEDG)来捕捉控制流与数据流语义,采用多头注意力机制生成上下文相关的代码嵌入,并利用微调后的ALBERT模型进行查询编码。MM-SCS在包含47万对(代码, 文档字符串)的数据集上实现了0.572的MRR,相比最先进模型最高提升59.3%,同时保持0.34秒/查询的快速推理速度。

ABSTRACT

Semantic code search technology allows searching for existing code snippets through natural language, which can greatly improve programming efficiency. Smart contracts, programs that run on the blockchain, have a code reuse rate of more than 90%, which means developers have a great demand for semantic code search tools. However, the existing code search models still have a semantic gap between code and query, and perform poorly on specialized queries of smart contracts. In this paper, we propose a Multi-Modal Smart contract Code Search (MM-SCS) model. Specifically, we construct a Contract Elements Dependency Graph (CEDG) for MM-SCS as an additional modality to capture the data-flow and control-flow information of the code. To make the model more focused on the key contextual information, we use a multi-head attention network to generate embeddings for code features. In addition, we use a fine-tuned pretrained model to ensure the model's effectiveness when the training data is small. We compared MM-SCS with four state-of-the-art models on a dataset with 470K (code, docstring) pairs collected from Github and Etherscan. Experimental results show that MM-SCS achieves an MRR (Mean Reciprocal Rank) of 0.572, outperforming four state-of-the-art models UNIF, DeepCS, CARLCS-CNN, and TAB-CS by 34.2%, 59.3%, 36.8%, and 14.1%, respectively. Additionally, the search speed of MM-SCS is second only to UNIF, reaching 0.34s/query.

研究动机与目标

  • 为解决现有智能合约代码搜索模型中存在的语义鸿沟问题,特别是针对区块链领域特定查询的语义理解不足。
  • 通过捕捉Solidity代码中的深层结构依赖关系(如控制流与数据流),提升代码搜索的准确性。
  • 在低数据训练环境下,通过使用微调后的预训练语言模型进行查询编码,提升模型性能。
  • 提出一种新型基于图的模态——合约元素依赖图(CEDG),用于表示代码元素之间的语义关系。
  • 在真实智能合约代码搜索场景中,实现高搜索准确率与高效推理速度之间的平衡。

提出的方法

  • 模型使用多头自注意力网络生成代码特征的上下文感知嵌入,聚焦于语义上重要的代码元素。
  • 构建一种新型合约元素依赖图(CEDG),用于编码代码元素之间的控制流与数据流依赖关系,作为额外的模态输入。
  • 查询编码器采用微调后的ALBERT模型生成查询嵌入,即使在训练数据有限的情况下也能提升语义理解能力。
  • 模型将多种模态(文本标记T、抽象语法树AST、函数调用序列F、CEDG)融合为统一表示,用于相似度计算。
  • 通过共享向量空间中的余弦距离计算代码与查询之间的语义相似度,并实现端到端优化。
  • 模型在从GitHub和Etherscan收集的47万对(代码, 文档字符串)自定义数据集上进行训练。

实验结果

研究问题

  • RQ1引入CEDG模态在多大程度上提升了智能合约语义代码搜索的性能?
  • RQ2多头注意力机制在多大程度上增强了模型聚焦关键代码语义的能力?
  • RQ3在训练数据有限的情况下,微调后的ALBERT模型在生成查询嵌入方面有多高效?
  • RQ4MM-SCS在准确率与速度方面与最先进模型相比表现如何?
  • RQ5各模态(T、A、F、AST、CEDG)对模型整体性能的贡献分别是什么?

主要发现

  • MM-SCS实现了0.572的MRR,显著优于UNIF(MRR 0.426)、DeepCS(0.359)、CARLCS-CNN(0.418)和TAB-CS(0.501)。
  • 当使用全部模态(T+A+F+CEDG)时,MM-SCS在MRR上相比DeepCS提升59.3%,展现出显著的性能增益。
  • MM-SCS实现每查询0.34秒的搜索速度,仅次于UNIF,表明其在保持高准确率的同时具备高效的推理能力。
  • 与T+A+F基线相比,增加CEDG模态使MRR提升4.9个百分点,证明其在语义理解方面具有显著贡献。
  • 在案例研究中,MM-SCS能正确检索出‘burn’函数以响应查询‘destroy tokens of a certain address’,而基线模型因缺乏对区块链同义术语的语义理解而失败。
  • 模型在不同输入模态下表现稳健,在所有评估指标(SR@1、SR@5、SR@10、MRR)上均一致优于基线模型。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。