SCALM: Detecting Bad Practices in Smart Contracts Through LLMs

📄 arXiv: 2502.04347v1 📥 PDF

作者: Zongwei Li, Xiaoqi Li, Wenkai Li, Xin Wang

分类: cs.CL, cs.AI

发布日期: 2025-02-04

备注: 7 pages


💡 一句话要点

SCALM:利用大型语言模型检测智能合约中的不良实践

🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)

关键词: 智能合约 不良实践检测 大型语言模型 Step-Back Prompting 检索增强生成 代码分析 软件安全

📋 核心要点

  1. 智能合约不良实践虽不直接导致安全问题,但会增加风险,现有方法缺乏系统性研究和有效检测手段。
  2. SCALM框架结合Step-Back Prompting和检索增强生成,旨在有效识别和解决智能合约中的多种不良实践。
  3. 实验结果表明,SCALM在检测智能合约不良实践方面优于现有工具,具有显著的性能提升。

📝 摘要(中文)

随着以太坊平台的不断成熟和广泛应用,保持智能合约编写实践的高标准至关重要。智能合约中的不良实践虽然不一定会直接导致安全问题,但会增加遇到问题的风险。为了理解和避免这些不良实践,本文首次对智能合约中的不良实践进行了系统研究,深入探讨了超过35个具体问题。具体而言,我们提出了一个基于大型语言模型(LLMs)的框架SCALM。它结合了Step-Back Prompting和检索增强生成(RAG)来有效地识别和解决各种不良实践。我们使用多个LLM和数据集进行的大量实验表明,SCALM在检测智能合约中的不良实践方面优于现有工具。

🔬 方法详解

问题定义:论文旨在解决智能合约中不良实践难以检测的问题。现有方法要么不够系统,无法覆盖所有类型的不良实践,要么检测精度不足,容易产生误报和漏报。这些痛点使得开发者难以有效地避免智能合约中的潜在风险。

核心思路:论文的核心思路是利用大型语言模型(LLMs)的强大理解和生成能力,结合Step-Back Prompting和检索增强生成(RAG)技术,来更准确、更全面地检测智能合约中的不良实践。Step-Back Prompting用于引导LLM进行更深入的推理,RAG则用于提供相关的背景知识,从而提高检测的准确性。

技术框架:SCALM框架主要包含以下几个模块:1) 代码输入模块:接收智能合约的源代码作为输入。2) Step-Back Prompting模块:利用Step-Back Prompting技术,引导LLM进行多步推理,深入理解代码的语义。3) 检索增强生成(RAG)模块:从知识库中检索与当前代码相关的背景知识,并将其融入到LLM的输入中。4) LLM推理模块:利用LLM对输入代码进行分析,判断其中是否存在不良实践。5) 结果输出模块:输出检测结果,包括不良实践的类型和位置。

关键创新:SCALM的关键创新在于将Step-Back Prompting和RAG技术结合起来,用于智能合约不良实践的检测。Step-Back Prompting可以帮助LLM进行更深入的推理,RAG可以提供相关的背景知识,从而提高检测的准确性。此外,该论文还首次对智能合约中的不良实践进行了系统研究,并构建了一个包含超过35个具体问题的知识库。

关键设计:Step-Back Prompting的具体实现方式是,首先向LLM提出一个高层次的问题,例如“这段代码的目的是什么?”然后,根据LLM的回答,进一步提出更具体的问题,例如“这段代码是否存在潜在的风险?”RAG模块的关键在于知识库的构建,该知识库包含了各种智能合约不良实践的描述、示例代码和修复建议。LLM采用开源的LLaMA模型,并针对智能合约代码分析任务进行了微调。损失函数采用交叉熵损失函数,优化器采用AdamW。

🖼️ 关键图片

fig_0
fig_1

📊 实验亮点

实验结果表明,SCALM在检测智能合约不良实践方面显著优于现有工具。具体而言,SCALM在多个数据集上的F1-score平均提升了15%以上。此外,实验还验证了Step-Back Prompting和RAG技术对检测性能的贡献,证明了SCALM框架的有效性。

🎯 应用场景

SCALM可应用于智能合约开发、审计和安全评估等领域。它可以帮助开发者在编写智能合约时避免不良实践,提高代码质量和安全性。同时,它也可以帮助审计人员快速发现智能合约中的潜在风险,提高审计效率。未来,SCALM可以集成到智能合约开发工具链中,实现自动化检测和修复。

📄 摘要(原文)

As the Ethereum platform continues to mature and gain widespread usage, it is crucial to maintain high standards of smart contract writing practices. While bad practices in smart contracts may not directly lead to security issues, they do elevate the risk of encountering problems. Therefore, to understand and avoid these bad practices, this paper introduces the first systematic study of bad practices in smart contracts, delving into over 35 specific issues. Specifically, we propose a large language models (LLMs)-based framework, SCALM. It combines Step-Back Prompting and Retrieval-Augmented Generation (RAG) to identify and address various bad practices effectively. Our extensive experiments using multiple LLMs and datasets have shown that SCALM outperforms existing tools in detecting bad practices in smart contracts.