SolBench
收藏arXiv2025-03-03 更新2025-03-06 收录
下载链接:
http://arxiv.org/abs/2503.01098v1
下载链接
链接失效反馈官方服务:
资源简介:
SolBench是一个用于评估智能合约代码完成功能正确性的数据集和基准,包含来自1155个智能合约的4178个函数。数据集的构建包括智能合约数据的收集、活跃且唯一的智能合约的选择、适用于测试的智能合约的识别以及功能正确性的验证。该数据集用于评估大型语言模型在Solidity代码完成方面的性能。
SolBench is a dataset and benchmark for evaluating the functional correctness of smart contract code completion. It comprises 4,178 functions sourced from 1,155 smart contracts. The construction of this dataset entails four key steps: collection of smart contract data, selection of active and unique smart contracts, identification of smart contracts eligible for testing, and verification of their functional correctness. This dataset is utilized to assess the performance of large language models (LLMs) in Solidity code completion tasks.
提供机构:
香港理工大学, 中山大学
创建时间:
2025-03-03
搜集汇总
数据集介绍

构建方式
SolBench数据集的构建始于对以太坊区块链上部署的智能合约的收集,通过对Etherscan平台上收集到的合约地址进行爬取,获取合约源代码。在数据清洗过程中,利用MD5算法对重复的合约代码进行去重,并筛选出活跃且具有相关注释的合约,以确保每个合约的独特性和实用性。接着,通过检查合约是否需要链上存储,进一步筛选出适合测试的合约。最后,通过添加验证语句和进行差异测试,确保所选函数的功能正确性。SolBench数据集最终包含来自1155个合约的4178个函数,覆盖了广泛的Solidity编程功能。
特点
SolBench数据集的主要特点在于其专注于评估智能合约生成模型的功能正确性。与传统的基于词法相似度的评估指标(如BLEU)不同,SolBench使用差异模糊测试来验证生成代码的功能正确性,克服了现有评估方法的局限性。此外,SolBench数据集包含丰富的上下文信息,平均每个函数的上下文行数达到1529行,这对于评估模型在处理复杂逻辑和外部接口时的能力至关重要。数据集的构建还考虑了合约的活跃度和唯一性,确保了数据的质量和实用性。
使用方法
使用SolBench数据集进行评估时,首先需要完成一个函数,然后使用Diffusc工具生成差异合约,并通过Echidna工具进行模糊测试,以验证函数的功能正确性。为了提高代码完成的准确性和效率,SolBench数据集还支持代码修复和检索增强生成技术。代码修复方法包括Self Edit、Self Debug、Self Refine和Self Repair,它们利用执行器返回的错误信息来指导模型进行代码修复。检索增强生成技术则通过从函数的整个上下文中检索相关信息,来增强代码修复的效果。这些技术可以帮助模型在没有足够上下文的情况下,也能生成功能正确的代码。
背景与挑战
背景概述
SolBench数据集的研究背景主要围绕智能合约的功能正确性评估。智能合约是区块链上的关键程序,其部署后的不可变性使得功能正确性变得至关重要。尽管代码补全模型取得了进展,但针对Solidity(主要的智能合约语言)的功能正确性评估基准却相对缺乏。现有的评估指标如BLEU等无法充分评估生成的智能合约的功能正确性。为了填补这一空白,SolBench数据集被引入,用于评估由代码补全模型生成的Solidity智能合约的功能正确性。该数据集包括来自1,155个已部署在以太坊上的合约中的4,178个函数。测试高级模型时发现,在缺乏上下文的情况下生成正确代码是一个挑战,因为Solidity函数依赖于上下文定义的变量和接口。为了解决这个问题,研究人员提出了一种检索增强的代码修复框架。在该框架中,执行器验证功能正确性,并在必要时,通过执行器跟踪信息检索代码片段,LLM修复代码。研究人员对各种闭源和开源LLM进行了全面评估,以评估它们在不同模型大小和系列中的性能,结果表明,代码修复和检索技术有效地提高了智能合约补全的正确性,同时降低了计算成本。
当前挑战
SolBench数据集所面临的挑战主要涉及两个方面:1)所解决的领域问题,即评估Solidity代码补全模型的功能正确性;2)构建过程中所遇到的挑战。在缺乏上下文的情况下生成正确代码是一个挑战,因为Solidity函数依赖于上下文定义的变量和接口。此外,将整个合约作为模型输入会导致计算成本显著增加,并且对硬件要求很高。为了解决这个问题,研究人员测试了各种代码修复方法,如Self Edit和Self Debug等,旨在以较低的计算成本实现更高的通过率。然而,这些方法的提升效果有限。为了进一步解决上下文不足的问题,研究人员提出了一种检索增强的代码修复框架(RACR),通过从更广泛的合约上下文中检索相关信息来增强函数补全。实验结果表明,RACR方法可以显著提高模型在智能合约补全方面的性能,并降低计算成本。
常用场景
经典使用场景
SolBench数据集被广泛用于评估Solidity代码补全和修复模型的性能,尤其是在智能合约开发领域。它包含了来自1,155个以太坊部署合约的4,178个函数,通过功能正确性的测试来评估模型的准确性。SolBench使用差异模糊技术来验证完成的Solidity函数的功能正确性,克服了当前评估方法的局限性。
解决学术问题
SolBench数据集解决了智能合约开发中功能正确性的评估问题。现有的评估方法主要依赖于BLEU和CrystalBLEU等词汇相似度指标,或者主观的手工评分,这些方法并不能充分评估智能合约的功能正确性。SolBench通过自动化的功能正确性评估,更有效地评估了模型的Solidity代码生成能力,填补了这一研究空白。
衍生相关工作
SolBench数据集的提出引发了智能合约开发领域的研究热潮。在此基础上,研究者们提出了各种代码修复和检索方法,如Self Edit、Self Debug、Self Refine和Self Repair等,以进一步提高智能合约的开发效率和正确性。这些方法在实际应用中取得了显著的成果,为智能合约的开发提供了有力的支持。
以上内容由遇见数据集搜集并总结生成



