Truffle tests for free -- Replaying Ethereum smart contracts for transparency
以太坊区块链本质上是一个全球复制的公共数据库。被称为智能合约的程序可以访问这个数据库。超过1000万个智能合约已部署在以太坊区块链上。执行智能合约的方法会生成一个交易,该交易也存储在区块链上。迄今为止,以太坊交易超过10亿笔。功能透明的智能合约比不透明的合约更成功。因此,我们开发了一个工具(ContractVis)来探索智能合约的透明度。该工具为智能合约的历史交易生成重放脚本。该脚本使用与区块链上记录的相同参数执行交易,但在最小的测试环境中。运行重播脚本可以深入了解合约,以及用于检索合约及其历史的区块链浏览器。我们为Etherscan等区块链探索者提供了五项具体建议,以提高智能合约的透明度。
2019-07-22 cs.SE
A Survey of Smart Contract Formal Specification and Verification
智能合约是一种计算机程序,允许用户在区块链平台上自动执行操作。鉴于智能合约在支持包括供应链、金融、法律和医疗服务在内的各行业重要活动方面的重要性,对验证和确认技术的需求非常强烈。然而,绝大多数智能合约缺乏任何形式的规范,这对于确定其正确性至关重要。在本次调查中,我们调查了文献中提出的智能合约的正式模型和规范,并提出了一个系统的概述,以了解共同的趋势。我们还讨论了目前使用的方法,在验证这些属性的规格,并确定差距,希望认识到有前途的方向,为未来的工作。
2021-04-19 cs.SE
Bringing Runtime Verification Home -- A Case Study on the Hierarchical Monitoring of Smart Homes using Decentralized Specifications
我们使用运行时验证(RV)来检查智能公寓中的各种规格。规范可以分为三种类型:公寓传感器的行为正确性,特定用户活动(称为日常生活活动)的检测,以及先前类型规范的组成。智能公寓的背景为我们提供了一个复杂的系统,其中包含大量组件,这些组件具有两个不同的层次结构来对规范和传感器进行分组:地理上位于同一房间,楼层或公寓中的全球范围内,并且逻辑上遵循不同类型的规范。我们利用最近的方法来分散RV的分散规范,其中监视器有自己的规范,并一起通信以验证更一般的规范。我们利用去中心化规范提供的层次结构、模块化和重用来:(1)超越现有的集中式RV技术,(2)大大降低计算和通信成本。
2019-09-10 cs.SE
Metamorphic Testing for Smart Contract Vulnerabilities Detection
尽管智能合约快速增长,但由于缺乏可靠的开发和测试,它们正遭受许多安全漏洞。在本文中,我们应用变形测试技术来检测智能合约漏洞。基于我们在易受攻击的智能合约中观察到的异常,我们定义了五种变形关系来检测目标智能合约的异常气体消耗和账户交互不一致性。通过动态执行交易并检查变形关系的最终违反,我们确定智能合约是否易受攻击。我们在67个手动注释的智能合约的基准上评估了我们的方法。实验结果表明,我们的方法实现了更高的检测率(TPR,真阳性率)与更低的误报率(FDR,错误发现率)比其他三个国家的最先进的工具。这些结果进一步表明,变形测试是检测智能合约漏洞的一种很有前途的方法。
2023-03-06 cs.SE
How Effective are Smart Contract Analysis Tools? Evaluating Smart Contract Static Analysis Tools Using Bug Injection
针对智能合约的安全攻击一直在上升,这导致了财务损失和信任的侵蚀。因此,让开发人员在部署之前发现智能合约中的安全漏洞非常重要。已经开发了许多静态分析工具来查找智能合约中的安全漏洞。然而,尽管有许多错误发现工具,但没有系统的方法来评估所提出的工具并衡量其有效性。本文提出了SolidiFI,这是一种用于评估智能合约静态分析工具的自动化和系统化方法。SolidiFI基于注入错误(即,代码缺陷)到智能合约中的所有潜在位置,以引入有针对性的安全漏洞。然后,SolidiFI使用静态分析工具检查生成的错误合约,并识别工具无法检测到的错误(假阴性)以及报告为假阳性的错误。SolidiFI被用来评估六个广泛使用的静态分析工具,即Oyente,Securify,Mythril,SmartCheck,Manticore和Slither,使用一组由9369个不同的错误注入的50个合同。它发现了几个被评估的工具没有检测到的bug实例,尽管它们声称能够检测到这样的bug,并且所有的工具都报告了许多误报
2020-05-23 cs.SE
A Framework and DataSet for Bugs in Ethereum Smart Contracts
以太坊是支持智能合约的最大区块链平台。用户通过将智能合约的字节码发布到区块链来部署智能合约。由于区块链中的数据无法修改,即使这些合约包含错误,也无法使用代码更新来修补已部署的智能合约。此外,目前既没有针对以太坊智能合约bug的全面分类框架,也没有检测智能合约bug的详细标准,这使得开发人员难以充分了解bug的负面影响并设计新的方法来检测bug。在本文中,为了填补这一空白,我们首先从多个来源收集尽可能多的智能合约错误,并通过扩展IEEE软件异常标准分类将这些错误分为9类。然后,我们设计了检测每种bug的标准,并构建了一个涵盖所有bug的智能合约数据集。通过我们的框架和数据集,开发人员可以学习智能合约的错误,并开发新的工具来检测和定位智能合约中的错误。此外,我们使用我们的数据集评估了最先进的智能合约分析工具,并获得了一些有趣的发现:1)Mythril,Slither和Remix是最有价值的分析工具组合。2)还有10种bug是任何分析工具都无法检测到的。
2020-09-04 cs.SE
Smart Contract Upgradeability on the Ethereum Blockchain Platform: An Exploratory Study
本文通过收集以太坊已部署智能合约的元数据与源代码,识别并刻画可升级合约的升级模式及其普遍性,分析开发者升级合约的原因,并基于交易数量和版本存续时间评估升级对合约采用与生命周期的影响。
2023-04-13 cs.SE
Safety Verification of Declarative Smart Contracts
本文提出自动化安全验证工具DCV,针对DeCon语言编写的声明式智能合约,通过数学归纳法证明安全属性并自动推断归纳不变量,在20个基准合约上验证有效且速度优于基线工具。
2023-08-02 cs.SE
Declarative Smart Contracts
本文介绍了DeCon,一种用于实现智能合约和指定合约级属性的声明式程序设计语言。在观察到智能合约操作和合约级属性可以自然地表示为关系约束的驱动下,DeCon将每个智能合约建模为一组存储交易记录的关系表。智能合约的这种关系表示可以方便地指定合约属性,便于对潜在的属性违规进行运行时监控,并通过数据来源为合约调试带来清晰度。具体来说,DeCon程序由一组关系表示上的声明性规则和违规查询规则组成,分别描述智能合约实现和合约级属性。我们已经开发了一个工具,可以编译DeCon程序到可执行的Solidity程序,与仪器运行时的属性监控。我们的案例研究表明,DeCon可以实现现实的智能合约,如ERC20和ERC721数字代币。我们的评估结果显示,与开源参考实现相比,DeCon的边际开销为14%,执行时的平均气体开销为14%,运行时验证的平均气体开销为16%。
2022-07-27 cs.SE
Defining Smart Contract Defects on Ethereum
智能合约是在区块链上运行的程序。它们是不可改变的,因此一旦部署就不能修补错误。因此,在部署之前确保它们没有错误并且设计良好至关重要。合约缺陷是智能合约中的错误、缺陷或故障,导致其产生不正确或意外的结果,或以非预期的方式表现。检测合同缺陷是避免潜在错误并改进现有代码设计的一种方法。因为智能合约包含许多独特的功能,例如气体系统。去中心化,重要的是要找到智能合约指定的缺陷。为了填补这一空白,我们从以太坊StackExchange收集了与智能合约相关的帖子,以及现实世界的智能合约。我们手动分析了这些帖子和合同;使用它们来定义20种合同缺陷。我们将它们分为潜在的安全性、可用性、性能、可维护性和可重用性问题。为了验证从业者是否认为这些合同是有害的,我们创建了一个在线调查,并收到了来自32个不同国家的138份回复。反馈显示,这些合约缺陷是有害的,消除它们将提高智能合约的质量和健壮性。我们在587个真实世界的智能合约中手动识别了我们定义的合约缺陷,并公开发布了我们的数据集。最后,总结了合同瑕疵可能造成的五种影响。这些帮助开发人员更好地了解缺陷的症状和删除优先级。
2020-04-17 cs.SE
DEFECTCHECKER: Automated Smart Contract Defect Detection by Analyzing EVM Bytecode
智能合约是在区块链上运行的图灵完备程序。它们是不可变的,即使检测到bug也不能修改。因此,在将智能合约部署到区块链之前,确保智能合约没有错误并且设计良好非常重要。合约缺陷是智能合约中的错误、缺陷或故障,导致其产生不正确或意外的结果,或以非预期的方式表现。检测和删除合约缺陷可以避免潜在的错误,使程序更健壮。我们之前的工作为智能合约定义了20个合约缺陷,并将其分为五个影响级别。根据我们的分类,严重性级别在1-3之间的合同缺陷可能导致不必要的行为,例如,一份由攻击者控制的合同在本文中,我们提出了一种基于符号执行的方法和工具,用于检测八种可能导致以太坊区块链平台上智能合约出现不必要行为的合约缺陷。DefectMind可以从智能合约字节码中检测合约缺陷。我们使用开源数据集将Defectoral与以前的主要作品进行比较,包括Oyente,Mythril和Securify。我们的实验结果表明,在速度和准确性方面,Defectomy比这些工具表现得更好。我们还在以太坊平台上的165,621个不同的智能合约中应用了Defectrance。我们发现,这些智能合约中有25,815个包含至少一个属于影响级别1-3的合约缺陷,包括一些现实世界的攻击。
2021-03-23 cs.SE
iContractBot: A Chatbot for Smart Contracts' Specification and Code Generation
最近,由于智能合约的发展,区块链技术的采用已经扩展到许多应用领域。然而,由于缺乏该领域的工具和专业知识,开发智能合约并非易事,而且具有挑战性。解决这个问题的一个有希望的解决方案是使用模型驱动工程(MDE),但是,使用模型仍然涉及学习曲线,可能不适合非技术用户。为了应对这一挑战,可以使用聊天机器人或会话界面来评估非技术用户,以渐进和交互的方式指定智能合约。在本文中,我们提出了iContractBot,一个用于建模和开发智能合约的聊天机器人。此外,我们研究了如何将iContractBot与iContractML(一种用于开发智能合约的特定领域建模语言)集成,并从聊天机器人实例化意图模型。iContractBot框架提供了一种基于用户意图的领域特定语言(DSL),并执行模型到文本的转换以生成智能合约代码。一个智能合约用例展示了如何利用iContractBot创建模型,并基于简单的对话生成智能合约的部署工件。
2021-03-16 cs.SE
Smart Contract Security: a Practitioners' Perspective
智能合约一直受到安全事件的困扰,导致了巨大的财务损失。鉴于在解决智能合约安全问题方面的大量研究工作,我们想知道软件从业者如何在实践中将安全性构建到智能合约中。我们对来自六大洲35个国家的13名受访者和156名调查受访者进行了定性和定量研究,以了解从业者对智能合约安全的看法和做法。我们的研究揭示了从业者对智能合约安全的动机和阻碍,以及安全工作和策略如何适应开发生命周期。我们还发现,区块链平台对从业者的安全认知和智能合约开发实践具有统计学显著影响。根据我们的研究结果,我们强调了未来的研究方向,并为从业者提供建议。
2021-03-27 cs.SE
WANA: Symbolic Execution of Wasm Bytecode for Cross-Platform Smart Contract Vulnerability Detection
许多流行的区块链平台都支持智能合约来构建分散的应用程序。然而,智能合约中的漏洞给最终用户带来了严重的经济损失。对于EOSIO区块链平台,有效的漏洞检测器仍然有限。此外,现有的漏洞检测工具只能支持一个区块链平台。在这项工作中,我们提出了WANA,一个基于WebAssembly字节码符号执行的跨平台智能合约漏洞检测工具。此外,WANA提出了一组测试预言机,以检测基于WebAssembly字节码分析的EOSIO和以太坊智能合约中的漏洞。我们的实验分析表明,WANA可以高效地检测EOSIO和以太坊智能合约中的漏洞。
2020-08-05 cs.SE
Smart Contract Design Meets State Machine Synthesis: Case Studies
现代区块链系统支持创建智能合约-在区块链上托管和执行的有状态程序。智能合约持有和转移大量数字货币,这使它们成为安全攻击的诱人目标。事实证明,部署到公共账本的许多合同都存在安全漏洞。此外,区块链系统的设计不允许智能合约的代码在部署到系统后进行更改。因此,在部署之前确保智能合约的正确性非常重要。形式化验证被广泛用于检查智能合约相对于给定规范的正确性。在这项工作中,我们考虑程序合成技术,其中的规范是用来生成正确的建设计划。我们专注于一个特殊的情况下,程序合成程序建模与有限状态机(FSM)。我们展示了如何将FSM合成应用于自动智能合约生成的问题。概述了智能合约的几个案例研究:众筹平台,盲拍卖和许可证合同。对于每个案例研究,我们使用线性时序逻辑(LTL)中的一组公式指定相应的智能合约,并使用此规范和测试场景来合成该合约的FSM模型。这些模型随后用于生成可直接用于区块链系统的可执行Solidity代码。
2019-06-07 cs.SE
sFuzz: An Efficient Adaptive Fuzzer for Solidity Smart Contracts
智能合约是在区块链基础设施上执行的图灵完备程序,通常管理有价值的数字资产。Solidity是在以太坊平台上编写智能合约的最流行的程序设计语言之一。与传统程序一样,智能合约也可能存在漏洞。与传统程序不同,智能合约一旦部署就无法轻松修补。因此,在部署之前对智能合约进行彻底测试非常重要。在这项工作中,我们在以太坊平台上为智能合约提供了一个自适应模糊器,称为sFuzz。与现有的Solidity模糊器相比,sFuzz结合了AFL模糊器中的策略和针对那些难以覆盖的分支的高效轻量级多目标自适应策略。sFuzz已经应用于超过4000个智能合约,实验结果表明:(1)sFuzz是高效的,例如,比最先进的工具快两个数量级;(2)sFuzz在实现高代码覆盖率和发现漏洞方面是有效的;(3)sFuzz中的不同模糊策略相互补充。
2020-04-18 cs.SE
CONTRACTFIX: A Framework for Automatically Fixing Vulnerabilities in Smart Contracts
针对智能合约漏洞修复人工成本高的问题,提出通用框架ContractFix,通过多工具集成识别漏洞、模板化生成补丁并验证,可修复94%的已检测漏洞且保留合约预期行为。
2023-07-22 cs.SE
Complete contracts through specification drivers
现有的契约式设计技术在许多情况下不允许软件开发人员指定完整的契约。不完整的契约为恶意实现留下了空间。本文使用一种简单而强大的技术来补充契约式设计,该技术可以在不添加语法机制的情况下消除问题。所提出的技术不仅可以得到完整的合同,而且还可以严格检查和改进现有合同的完整性,而无需对它们进行仪表化。
2016-02-12 cs.SE
Metamorphic Testing for Smart Contract Validation:A Case Study of Ethereum-Based Crowdfunding Contracts
针对智能合约测试中的预言机难题,本研究将蜕变测试应用于以太坊众筹智能合约验证,设计专属蜕变关系并生成用例,经Vertigo工具突变测试验证其可有效检测合约故障,保障区块链智能合约的可靠性与质量。
2025-01-17 cs.SE
Mutation Testing for Ethereum Smart Contract
智能合约是一种管理区块链上数字资产的特殊程序。如果用户通过有缺陷的智能合约进行交易,很难挽回损失,而这些智能合约无法直接修复。因此,在部署智能合约之前确保其正确性非常重要。本文提出了一个系统的框架,用于在以太坊上进行智能合约的突变测试,以太坊是目前最流行的部署和运行智能合约的开放区块链。在关键字、全局变量/函数、变量单位和错误处理方面,为以太坊智能合约(ESC)设计了15个新的突变算子。对四个以太坊DApp中的26个智能合约进行了实证研究,以评估突变测试的有效性。实验结果表明,我们的方法可以优于基于覆盖率的方法上的缺陷检测率(96.01%比55.68%)。ESC突变算子能够有效地揭示真实缺陷,我们发现729个真实缺陷报告中有117个与我们的算子相关。这些结果显示了突变检测在ESC质量保证中的巨大潜力。
2019-08-10 cs.SE
A Comparative Gas Cost Analysis of Proxy and Diamond Patterns in EVM Blockchains for Trusted Smart Contract Engineering
本研究针对EVM区块链中可升级智能合约模式的Gas成本对比空白,对比分析Proxy、diamond模式与传统不可升级合约的部署及执行Gas成本,提出整合的区块链模式与决策模型,助力可信智能合约工程实践。
2024-05-15 cs.SE
Checking Smart Contracts with Structural Code Embedding
智能合约越来越多地与区块链一起使用,以自动化金融和商业交易。然而,在许多合同中发现了许多错误和漏洞,这引起了人们对智能合同安全性的严重担忧,更不用说构建智能合同的区块链系统可能存在错误。因此,需要更好地维护智能合约代码并确保其高可靠性。在本文中,我们提出了一种自动化的方法来学习Solidity中智能合约的特征,这对于智能合约的克隆检测,错误检测和合约验证非常有用。我们的新方法是基于词嵌入和向量空间比较。我们将智能合约代码解析为具有代码结构信息的字流,转换代码元素(例如,语句、函数)转换为数字向量,这些数字向量应该对代码语法和语义进行编码,并比较编码代码的向量与已知错误之间的相似性,以识别潜在的问题。我们已经实现了一个原型,名为SmartEmbed的方法。实验结果表明,该工具可以有效地识别出Solidity代码中的大量重复实例,其中克隆率约为90%.代码克隆,如类型III甚至类型IV语义克隆也可以被准确地检测到。我们的工具可以识别超过1000个克隆相关的错误的基础上,我们的错误数据库有效和准确。我们的工具还可以帮助有效地验证任何给定的智能合约是否存在已知的错误,这有助于提高用户对合约可靠性的信心。匿名复制软件包可从以下网址访问:https://drive.google.com/file/d/1kauLT3y2IiHPkUlVx4FSTda-dVAyL4za/view? usp=sha…
2020-01-20 cs.SE
SmartEmbed: A Tool for Clone and Bug Detection in Smart Contracts through Structural Code Embedding
以太坊已经成为一个广泛使用的平台,可以实现安全的、基于区块链的金融和商业交易。然而,以太坊的一个主要问题是其智能合约的安全性。智能合约中发现的许多错误和漏洞不仅给区块链的维护带来了挑战,而且还导致了严重的财务损失。有一个显着的需要,以更好地帮助开发人员检查智能合约,并确保其可靠性。在本文中,我们提出了一个Web服务工具,名为SmartEmbed,它可以帮助Solidity开发人员找到重复的合同代码和克隆相关的智能合约中的错误。我们的工具是基于代码嵌入和相似性检查技术。通过比较以太坊区块链中现有solidity代码的代码嵌入向量与已知bug之间的相似性,我们能够有效地识别用户给出的任何solidity代码的代码克隆和克隆相关bug,这有助于提高用户对其代码可靠性的信心。除了个人开发者的使用外,SmartEmbed还可以应用于大规模的智能合约研究。当应用于从以太坊区块链收集的超过22K个solidity合约时,我们发现solidity代码的克隆率接近90%,远高于传统软件,并且基于我们的小bug数据库可以高效准确地识别出194个克隆相关的bug,精度为96%。SmartEmbed可通过\url{http://www.smartembed.net}访问。SmartEmbed的演示视频位于\url{https://youtu.be/o9ylyOpYFq8}
2019-08-22 cs.SE
When Deep Learning Meets Smart Contracts
以太坊已经成为一个广泛使用的平台,可以实现安全的、基于区块链的金融和商业交易。然而,智能合约中的许多已识别的错误和漏洞导致了严重的财务损失,这引发了对智能合约安全性的严重担忧。因此,需要更好地维护智能合约代码并确保其高可靠性。在这项研究中:(1)首先,我们提出了一种基于自动化深度学习的方法来学习Solidity中智能合约的结构化代码嵌入,这对于智能合约的克隆检测,错误检测和合约验证非常有用。我们将我们的方法应用于从以太坊区块链收集的超过22K个solidity合约,结果显示solidity代码的克隆率约为90%,远高于传统软件。我们收集了属于10种常见漏洞的52个已知漏洞智能合约作为我们的漏洞数据库。我们的方法可以识别超过1000克隆相关的错误,我们的错误数据库的基础上,有效和准确。(2)其次,根据开发人员的反馈,我们已经实现了一个基于Web的工具,名为SmartEmbed的方法,以方便Solidity开发人员使用我们的方法。我们的工具可以帮助Solidity开发人员有效地识别现有以太坊区块链中的重复智能合约,并检查他们的合约是否存在已知的错误,这有助于提高用户对合约可靠性的信心。我们优化了SmartEmbed的实现,这足以支持开发人员在实际使用中的实时性。以太坊生态系统以及个人Solidity开发人员都可以从我们的研究中受益。
2020-08-07 cs.SE
Finding Ethereum Smart Contracts Security Issues by Comparing History Versions
智能合约是在区块链上运行的图灵完备程序。即使检测到错误,也不能修改它们。自毁功能是销毁区块链系统上的合约并转移合约余额上所有以太币的唯一方法。因此,许多开发人员使用此函数来销毁合约,并在检测到错误时重新部署新合约。在本文中,我们提出了一种基于深度学习的方法,通过查找已销毁合约的更新版本来发现以太坊智能合约的安全问题。在找到更新的版本后,我们使用开放卡排序来查找安全问题。
2020-10-03 cs.SE
Specification Mining for Smart Contracts with Trace Slicing and Predicate Abstraction
提出基于 trace slicing 和 predicate abstraction 的 specification mining 方法并实现工具 SMCON,从交易历史推断智能合约规范,实验证明其能提升符号分析的代码覆盖率与速度,并辅助开发者维护文档和测试套件。
2025-04-29 cs.SE
Formally Verifying a Real World Smart Contract
本文探索了能够形式化验证用较新版本 Solidity 编写的真实世界智能合约的工具,以应对智能合约部署后难以修改且错误代价高昂的问题。
2023-07-05 cs.SE
Under-Optimized Smart Contracts Devour Your Money
智能合约是在区块链上运行的成熟程序(例如,以太坊,最受欢迎的区块链之一)。在以太坊中,gas(以太币,一种类似比特币的加密货币)是执行费用,用于补偿矿工运行智能合约的计算资源。然而,我们发现,优化不足的智能合约的成本超过了必要的天然气,因此创建者或用户将被过度收费。在这项工作中,我们进行了第一次调查的Solidity,推荐的编译器,并揭示它未能优化气体昂贵的编程模式。特别是,我们确定了7个天然气昂贵的模式,并将它们分为2类。然后,我们提出并开发了GASPER,这是一种通过分析智能合约的字节码来自动定位天然气成本模式的新工具。从4,240份真实智能合约中发现3种代表性模式的初步结果显示,93.5%、90.1%和80%的合约分别受到这3种模式的影响。
2020-11-04 cs.SE
Literature Review: Smart Contract Semantics
本文介绍和评估各种形式主义的目的建模的语义金融衍生工具合同。在最初的评论中,李提出的形式主义被选为最佳候选者。对这种形式主义进行了进一步的检验和评价。
2018-12-22 cs.SE
SolidityCheck : Quickly Detecting Smart Contract Problems Through Regular Expressions
作为近年来蓬勃发展的区块链平台,以太坊与比特币不同的是,以太坊将智能合约引入区块链,Solidity是目前最成熟、应用最广泛的智能合约程序设计语言之一,用于编写智能合约并部署在区块链上。但是,区块链中的数据一旦写入,就无法修改。以太坊智能合约存储在区块链中,这使得智能合约无法再修复重入漏洞或整数溢出问题等代码问题。目前,仍然缺乏一个高效和有效的方法来检测这些问题的Solidity。本文首先对Solidity中可能存在的问题进行了分类,然后提出了一种针对Solidity的智能合约问题检测方法,即SolidityCheck。该方法使用正则表达式来定义有问题语句的特征,并使用正则匹配和程序插装来防止或检测问题。最后,大量的实验表明,SolidityCheck优于现有的方法。
2019-11-22 cs.SE
A Web-Based Environment for the Specification and Generation of Smart Legal Contracts
本文提出一个基于Web的环境,支持对Symboleo规约进行用户辅助细化并自动生成部署于Hyperledger Fabric的监控智能合约,填补了自然语言合约与智能合约实现间的鸿沟。
2025-09-14 cs.SE
Maintaining Smart Contracts on Ethereum: Issues, Techniques, and Future Challenges
软件开发是一个非常广泛的活动,涵盖了软件的整个生存周期,包括设计,编程,维护等。在这项研究中,我们专注于智能合约部署后的维护相关问题。智能合约是在区块链上运行的自我执行程序。它们一旦部署就无法修改,因此与传统软件相比,它们带来了独特的维护挑战。根据ISO/IEC 14764的定义,软件维护有四种类型,即,纠正性、适应性、完善性和预防性维护。本研究旨在回答(i)智能合约开发人员在部署到以太坊后,在纠正性、自适应性、完善性和预防性维护方面会遇到什么样的问题?(ii)目前智能合约使用的维护相关方法有哪些?为了获得这些研究问题的答案,我们首先进行了系统的文献综述,分析了2014年至2020年发表的131篇智能合约相关研究论文。由于以太坊生态系统正在快速发展,以前出版物中的一些结果可能已经过时,学术界和工业界之间可能存在差距。为了解决这个问题,我们在Github上对智能合约开发人员进行了在线调查,以验证我们的发现,并收到了165个有用的回复。基于调查反馈和文献回顾,我们提出了第一个关于智能合约维护相关问题的实证研究。我们的研究可以帮助智能合约开发人员更好地维护他们基于智能合约的项目,我们强调了一些关键的未来研究方向,以改善以太坊生态系统。
2021-08-17 cs.SE
ContractTrace: Retracing Smart Contract Versions for Security Analyses
针对区块链智能合约版本历史碎片化导致漏洞追踪困难的问题,提出基于设计科学研究的自动化工具ContractTrace,通过追溯合约谱系构建lineageSet数据集,支持漏洞演化分析并验证了其有效性。
2025-07-08 cs.SE
SmartState: Detecting State-Reverting Vulnerabilities in Smart Contracts via Fine-Grained State-Dependency Analysis
针对智能合约状态回退漏洞检测难题,提出基于细粒度状态依赖分析的SmartState框架,结合字节码与交易数据提取依赖、建模漏洞模式,在实测中取得较高准确率与召回率,还发现大量新漏洞及对应资产风险。
2024-06-23 cs.SE
Automated Invariant Generation for Solidity Smart Contracts
针对智能合约规范缺失导致正确性验证困难的问题,提出基于动态推断与静态验证的不变式生成框架INVCON+,能自动生成经过验证的高质量不变式规范以保护智能合约免受常见漏洞影响。
2024-01-01 cs.SE
Automating Comment Generation for Smart Contract from Bytecode
针对多数以太坊智能合约无源代码导致现有注释生成工具受限的问题,本文提出SmartBT方法,通过将字节码转控制流图、引入信息检索补语义,结合带复制与覆盖机制的注意力序列到序列模型,实现从字节码直接生成高质量智能合约注释,性能显著优于基线。
2025-03-19 cs.SE
Do Automated Fixes Truly Mitigate Smart Contract Exploits?
该研究针对智能合约自动化程序修复工具的实际攻击缓解效果不明的问题,提出系统性评估框架,通过20款工具、143个漏洞合约及91个攻击程序的测试,首次定义并测得攻击缓解率为29%-74%,指出功能保留不一致等待解决的系统性局限。
2025-05-23 cs.SE
Automated Vulnerability Injection in Solidity Smart Contracts: A Mutation-Based Approach for Benchmark Development
本研究提出基于突变注入的MuSe工具,自动向Solidity智能合约注入六种漏洞以生成基准,并用Slither验证,发现注入率因漏洞而异且静态分析工具检测不全,凸显了改进检测评估的需求。
2025-04-22 cs.SE
Implementation of Smart Contracts Using Hybrid Architectures with On- and Off-Blockchain Components
最近,出现了去中心化(区块链上)平台,以补充集中化(区块链外)平台,用于实施自动化,数字化(智能)合同。然而,这两种替代方案都不能单独满足一大类应用的要求。区块链平台受到可扩展性、性能、交易成本和其他限制。区块链外平台由于依赖于单一的可信第三方而受到缺陷的困扰。我们认为,在几个应用领域,由区块链上和区块链外平台的集成组成的混合平台更能够支持智能合约,提供所需的服务质量(QoS)。混合架构在很大程度上是未开发的。为了帮助弥补这一差距,在本文中,我们讨论了智能合约在混合架构上的实现。作为概念证明,我们展示了智能合约如何部分在区块链外合约合规检查器上拆分和执行,部分在Rinkeby以太坊网络上拆分和执行。为了测试解决方案,我们将其暴露给由合约验证工具机械生成的合约操作序列。
2018-07-31 cs.SE
Mutation testing of smart contracts at scale
由于智能合约的不可变性,因此对其进行彻底测试至关重要。即使是智能合约中的小错误也可能导致巨大的金钱损失。然而,测试是不够的;确保测试的质量和完整性也很重要。已经有几种方法通过突变测试来应对这一挑战,但它们的有效性值得怀疑,因为它们只考虑了小的合同样本。因此,我们评估了大规模智能合约突变测试的质量。我们选择了现有的(智能合约特定的)突变算子中最有前途的,分析了它们在可重复性方面的有效性,并强调了可以注入突变的严重漏洞。此外,我们通过引入能够检测气体消耗中的偏差的新的杀死条件来改进现有的变异方法,即,执行交易所需的货币价值。本文在https://github.com/pieterhartel/Mutation-at-scale上有一个复制包
2020-01-22 cs.SE
An Overview on Smart Contracts: Challenges, Advances and Platforms
智能合约技术正在重塑传统的行业和业务流程。智能合约嵌入在区块链中,使协议的合同条款能够在没有可信第三方干预的情况下自动执行。因此,智能合约可以减少管理和节省服务成本,提高业务流程的效率并降低风险。虽然智能合约有望推动业务流程的新一轮创新,但仍有许多挑战需要解决。本文介绍了智能合约的调查。我们首先介绍区块链和智能合约。然后,我们提出了智能合约的挑战以及最近的技术进步。我们还比较了典型的智能合约平台,并给出了智能合约应用程序的分类以及一些代表性的例子。
2019-12-22 cs.DC cs.SE
ContractFuzzer: Fuzzing Smart Contracts for Vulnerability Detection
去中心化的加密货币的特点是使用区块链在没有中央机构的网络上的同行之间转移价值。智能合约是在区块链共识协议之上运行的程序,使人们能够在最小化信任的同时达成协议。数以百万计的智能合约已经部署在各种分散的应用程序中。这些智能合约中的安全漏洞对其应用程序构成了重大威胁。事实上,以太坊平台上智能合约中的许多关键安全漏洞已经给用户造成了巨大的经济损失。在这项工作中,我们提出了ContractFuzzer,一种新颖的模糊器,用于测试以太坊智能合约的安全漏洞。ContractFuzzer基于智能合约的ABI规范生成模糊输入,定义测试预言机来检测安全漏洞,仪表EVM记录智能合约运行时行为,并分析这些日志以报告安全漏洞。我们对6991份智能合约进行了模糊处理,高精度地标记了超过459个漏洞。特别是,我们的fuzzing工具成功地检测到了导致6000万美元损失的DAO合约漏洞,以及导致3000万美元损失和价值1.5亿美元的以太币冻结的Parity Wallet漏洞。
2018-08-03 cs.CR cs.SE
SmartShift: A Secure and Efficient Approach to Smart Contract Migration
针对智能合约跨链与链内迁移中的数据完整性和运行中断问题,提出 SmartShift 框架,利用智能状态分区与渐进式函数激活实现安全、低停机迁移。
2025-05-15 cs.CR cs.SE
Characterizing Transaction-Reverting Statements in Ethereum Smart Contracts
智能合约是在区块链上运行以执行交易的程序。当输入约束或安全属性在运行时被违反时,智能合约执行的交易需要恢复,以避免不良后果。在支持智能合约的最受欢迎的区块链以太坊上,开发人员可以在三种交易恢复语句中进行选择(即,要求,如果...恢复原状如果处理异常交易。虽然这些交易恢复语句对于防止智能合约表现出异常行为或遭受恶意攻击至关重要,但人们对它们在实践中如何使用的理解有限。在这项工作中,我们进行了第一次实证研究,以描述以太坊智能合约中的交易恢复语句。我们测量了这些语句在流行的dapps中的3,866个已验证智能合约中的流行程度,并通过手动分析557个事务恢复语句建立了它们的目的分类。我们还比较了模板契约及其相应的自定义契约,以了解开发人员如何自定义事务恢复语句的使用。最后,我们分析了交易恢复语句的安全影响,将它们从智能合约中删除,并将突变合约与原始合约进行比较。我们的研究得出了重要的发现,这些发现可以为智能合约质量保证这一广泛领域的进一步研究提供指导,并为智能合约开发人员提供适当使用交易恢复语句的实用指导。
2021-09-01 cs.CR cs.SE
Specification Mining for Smart Contracts with Automatic Abstraction Tuning
智能合约是根据特定协议管理数字资产的程序,例如表示拍卖规则。理解智能合约的可能行为是困难的,这使得开发、审计和攻击的事后分析变得复杂。本文介绍了智能合约的第一个规范挖掘技术。我们的技术从区块链上记录的合约执行中提取智能合约的可能行为,并将其表示为有限自动机。一种新的依赖分析允许我们将独立的交互与合同分开。例如,我们的技术根据可配置的指标自动调整自动机构造的抽象,以最大限度地提高可读性或精度。我们为以太坊区块链实现了我们的技术,并在几个现实世界的合同上评估了它的可用性。
2018-07-20 cs.PL cs.SE
HFContractFuzzer: Fuzzing Hyperledger Fabric Smart Contracts for Vulnerability Detection
区块链技术凭借其去中心化、不可变性等独特优势,近年来在各个领域得到广泛应用。运行在区块链上的智能合约也在去中心化应用场景中发挥着越来越重要的作用。因此,智能合约安全漏洞的自动检测成为区块链技术应用中亟待解决的问题。Hyperledger Fabric是一个基于企业级许可分布式账本技术的智能合约平台。然而,Hyperledger Fabric智能合约的漏洞检测技术研究仍处于起步阶段。在本文中,我们提出了HFContractFuzzer,这是一种基于Fuzzing技术来检测Hyperledger Fabric智能合约的方法,它结合了一个名为go-fuzz的golang Fuzzing工具和golang编写的智能合约。我们使用HFContractFuzzer从典型的来源中检测出五个合同中的漏洞,发现其中四个存在安全漏洞,证明了所提出的方法的有效性。
2021-06-21 cs.CR cs.SE
sGUARD: Towards Fixing Vulnerable Smart Contracts Automatically
智能合约是在区块链网络上执行的分布式、自我执行的程序。它们有可能彻底改变许多行业,如金融机构和供应链。然而,智能合约存在基于代码的漏洞,这给其应用蒙上了阴影。由于智能合约是不可修补的(由于区块链的不变性),因此必须保证智能合约没有漏洞。不幸的是,像Solidity这样的智能合约语言是图灵完备的,这意味着静态验证它们是不可行的。因此,必须制定替代办法来提供保障。在这项工作中,我们开发了一种自动转换智能合约的方法,使它们可以证明没有4种常见的漏洞。关键思想是以一种高效且可证明正确的方式应用运行时验证。5000个智能合约的实验结果表明,我们的方法在时间方面产生了较小的运行时开销(即,14.79%)和气体(即,0.79%)。
2021-01-06 cs.CR cs.SE
SmartIntentNN: Towards Smart Contract Intent Detection
针对智能合约恶意意图评估的研究空白,提出深度学习工具SmartIntentNN,结合Universal Sentence Encoder、K-means聚类和双向LSTM多标签分类网络检测十类不安全意图,在10,000个合约上F1达0.8633。
2024-10-17 cs.CR cs.SE
Smart Contracts for SMEs and Large Companies
本文提出一种从BPMN模型自动生成智能合约的方法,支持多步交易及合约修复升级,使缺乏区块链知识的建模者也能为中小企业到大型公司生成智能合约,推动技术普及。
2025-05-28 cs.CR cs.DC cs.SE
Inheritance software metrics on smart contracts
区块链系统最近获得了巨大的吸引力,部分原因是分散的不可变的经济活动调解的潜力。以太坊是一个突出的例子,它提供了执行被称为智能合约的有状态计算脚本。这些智能合约类似于传统程序,但不变性是核心区别因素。考虑到它们的不变性和潜在的高货币价值,开发高质量的智能合约势在必行。软件度量传统上是确定编程质量的重要工具。考虑到智能合约(用Solidity for Ethereum编写)和面向对象(OO)编程之间的相似性,OO指标似乎是适用的。在本文中,我们实证评估了应用于智能合约的基于继承的指标。我们之所以关注这一点,是因为传统上,继承与更复杂的代码库相关联,而我们认为基于Solidity的智能合约并非如此。在这项工作中,我们评估了一个假设,即由于智能合约和OO程序的背景不同,使用相同的基于继承的指标进行评估可能是不合适的。
2020-07-16 cs.PL cs.SE
SmartBugs: A Framework to Analyze Solidity Smart Contracts
在过去的几年里,人们对以太坊智能合约的自动化分析、测试和调试进行了大量的研究。然而,比较和复制这项研究并非易事。为了解决这个问题,我们提出了SmartBugs,这是一个可扩展且易于使用的执行框架,它简化了在以太坊中使用的主要语言Solidity编写的智能合约上执行分析工具。SmartBugs目前支持10个工具和两个Solidity合约数据集。第一个数据集可用于评估分析工具的精度,因为它包含143个带注释的易受攻击合同,其中有208个标记的漏洞。第二个数据集包含通过Etherscan收集的47,518个唯一合约。我们将讨论SmartBugs如何在工具数量和执行时间方面支持迄今为止最大的实验设置。此外,我们还展示了它如何通过对SmartCheck工具进行新的扩展来轻松集成和比较分析工具,该扩展大大提高了对与DASP 10类别不良随机性,时间操纵和访问控制相关的漏洞的检测(识别的漏洞从11%增加到24%)。
2020-07-10 cs.CR cs.SE
STAN: Towards Describing Bytecodes of Smart Contract
超过800万个智能合约已经部署到以太坊中,这是支持智能合约的最受欢迎的区块链。然而,只有不到1%的智能合约是开源的,用户很难理解这些闭源合约的功能和内部机制。尽管最近提出了一些智能合约的反编译器,但用户仍然不容易掌握合约的语义信息,更不用说由于反编译错误而可能产生的误导。在本文中,我们提出了第一个名为STAN的系统来生成智能合约字节码的描述,以帮助用户理解它们。特别是,对于智能合约中的每个接口,STAN可以通过利用符号执行和NLP(自然语言处理)技术生成四类描述,包括功能描述、使用描述、行为描述和支付描述。大量的实验表明,STAN能够对合同的字节码进行充分、准确、可读的描述,对用户具有实用价值。
2020-07-19 cs.CR cs.SE
SmartOracle: Generating Smart Contract Oracle via Fine-Grained Invariant Detection
本文提出 SmartOracle,从历史交易中自动挖掘多层细粒度不变量作为漏洞检测预言机,并在 ERC20 不变量和真实漏洞合约交易上验证了高精确率与有效性。
2024-06-14 cs.CR cs.SE
Bug Searching in Smart Contract
随着以太坊平台上智能合约的疯狂发展,其市值也节节攀升。2016年,人们对DAO重入攻击造成的近5000万美元的加密货币损失感到震惊。由于智能合约中流动的大量资金,其安全性引起了研究人员的广泛关注。在本文中,我们研究了几个常见的智能合约漏洞,并分析了它们可能的场景以及它们可能被利用的方式。此外,我们还调查了近年来以太坊平台的智能合约漏洞检测工具。我们发现这些工具在软件漏洞检测技术上有相似的原型。此外,针对以太坊等公共分发系统的特点,提出了这些软件漏洞检测技术面临的新挑战。
2019-05-02 cs.CR cs.SE