Slither: A Static Analysis Framework for Smart Contracts

Josselin Feist, Gustavo Grieco, Alex Groce
{"title":"Slither: A Static Analysis Framework for Smart Contracts","authors":"Josselin Feist, Gustavo Grieco, Alex Groce","doi":"10.1109/WETSEB.2019.00008","DOIUrl":null,"url":null,"abstract":"This paper describes Slither, a static analysis framework designed to provide rich information about Ethereum smart contracts. It works by converting Solidity smart contracts into an intermediate representation called SlithIR. SlithIR uses Static Single Assignment (SSA) form and a reduced instruction set to ease implementation of analyses while preserving semantic information that would be lost in transforming Solidity to bytecode. Slither allows for the application of commonly used program analysis techniques like dataflow and taint tracking. Our framework has four main use cases: (1) automated detection of vulnerabilities, (2) automated detection of code optimization opportunities, (3) improvement of the user's understanding of the contracts, and (4) assistance with code review. In this paper, we present an overview of Slither, detail the design of its intermediate representation, and evaluate its capabilities on real-world contracts. We show that Slither's bug detection is fast, accurate, and outperforms other static analysis tools at finding issues in Ethereum smart contracts in terms of speed, robustness, and balance of detection and false positives. We compared tools using a large dataset of smart contracts and manually reviewed results for 1000 of the most used contracts.","PeriodicalId":174769,"journal":{"name":"2019 IEEE/ACM 2nd International Workshop on Emerging Trends in Software Engineering for Blockchain (WETSEB)","volume":"1 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2019-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"325","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"2019 IEEE/ACM 2nd International Workshop on Emerging Trends in Software Engineering for Blockchain (WETSEB)","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1109/WETSEB.2019.00008","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 325

Abstract

This paper describes Slither, a static analysis framework designed to provide rich information about Ethereum smart contracts. It works by converting Solidity smart contracts into an intermediate representation called SlithIR. SlithIR uses Static Single Assignment (SSA) form and a reduced instruction set to ease implementation of analyses while preserving semantic information that would be lost in transforming Solidity to bytecode. Slither allows for the application of commonly used program analysis techniques like dataflow and taint tracking. Our framework has four main use cases: (1) automated detection of vulnerabilities, (2) automated detection of code optimization opportunities, (3) improvement of the user's understanding of the contracts, and (4) assistance with code review. In this paper, we present an overview of Slither, detail the design of its intermediate representation, and evaluate its capabilities on real-world contracts. We show that Slither's bug detection is fast, accurate, and outperforms other static analysis tools at finding issues in Ethereum smart contracts in terms of speed, robustness, and balance of detection and false positives. We compared tools using a large dataset of smart contracts and manually reviewed results for 1000 of the most used contracts.
查看原文
分享 分享
微信好友 朋友圈 QQ好友 复制链接
本刊更多论文
Slither:智能合约的静态分析框架
本文描述了Slither,一个静态分析框架,旨在提供有关以太坊智能合约的丰富信息。它通过将Solidity智能合约转换为称为SlithIR的中间表示来工作。SlithIR使用静态单赋值(SSA)形式和简化的指令集来简化分析的实现,同时保留在将Solidity转换为字节码时丢失的语义信息。Slither允许应用常用的程序分析技术,如数据流和污染跟踪。我们的框架有四个主要用例:(1)自动检测漏洞,(2)自动检测代码优化机会,(3)提高用户对合同的理解,以及(4)协助代码审查。在本文中,我们概述了Slither,详细介绍了其中间表示的设计,并评估了其在现实世界契约中的能力。我们证明Slither的bug检测快速,准确,并且在速度,鲁棒性以及检测和误报的平衡方面优于其他静态分析工具,可以发现以太坊智能合约中的问题。我们使用大型智能合约数据集对工具进行了比较,并手动审查了1000个最常用合约的结果。
本文章由计算机程序翻译,如有差异,请以英文原文为准。
求助全文
约1分钟内获得全文 去求助
来源期刊
自引率
0.00%
发文量
0
期刊最新文献
CAG: Compliance Adherence and Governance in Software Delivery Using Blockchain The Influence Factors on Ethereum Transaction Fees Blockchain and Sustainability: A Systematic Mapping Study Ensure Traceability in European Food Supply Chain by Using a Blockchain System Investigating Quality Requirements for Blockchain-Based Healthcare Systems
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
现在去查看 取消
×
提示
确定
0
微信
客服QQ
Book学术公众号 扫码关注我们
反馈
×
意见反馈
请填写您的意见或建议
请填写您的手机或邮箱
已复制链接
已复制链接
快去分享给好友吧!
我知道了
×
扫码分享
扫码分享
Book学术官方微信
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术
文献互助 智能选刊 最新文献 互助须知 联系我们:info@booksci.cn
Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。
Copyright © 2023 Book学术 All rights reserved.
ghs 京公网安备 11010802042870号 京ICP备2023020795号-1