Slither: A static analysis framework for smart contracts

Josselin Feist, Gustavo Grieco, Alex Groce

Research output: Chapter in Book/Report/Conference proceedingConference contribution

475 Scopus citations

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.

Original languageEnglish (US)
Title of host publicationProceedings - 2019 IEEE/ACM 2nd International Workshop on Emerging Trends in Software Engineering for Blockchain, WETSEB 2019
PublisherInstitute of Electrical and Electronics Engineers Inc.
Pages8-15
Number of pages8
ISBN (Electronic)9781728122571
DOIs
StatePublished - May 2019
Event2nd IEEE/ACM International Workshop on Emerging Trends in Software Engineering for Blockchain, WETSEB 2019 - Montreal, Canada
Duration: May 27 2019 → …

Publication series

NameProceedings - 2019 IEEE/ACM 2nd International Workshop on Emerging Trends in Software Engineering for Blockchain, WETSEB 2019

Conference

Conference2nd IEEE/ACM International Workshop on Emerging Trends in Software Engineering for Blockchain, WETSEB 2019
Country/TerritoryCanada
CityMontreal
Period5/27/19 → …

Keywords

  • Blockchain
  • Smart Contract
  • Solidity
  • Static Analysis
  • Vulnerability Detection

ASJC Scopus subject areas

  • Software
  • Information Systems and Management
  • Safety, Risk, Reliability and Quality

Fingerprint

Dive into the research topics of 'Slither: A static analysis framework for smart contracts'. Together they form a unique fingerprint.

Cite this