Skip to content
This repository has been archived by the owner on Aug 12, 2021. It is now read-only.
/ PASS-Project Public archive

Mirror of the project repository for Program Analysis for System Security and Reliability at ETH Zürich for FS2021

Notifications You must be signed in to change notification settings

rharish101/PASS-Project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

PASS 2021 Course Project

Repository Structure

  • The peck directory contains a parser that transforms a Solidity contract into an intermediate representation (IR), and derives Datalog facts that encode the contract’s IR. You must not edit any files in this folder..
  • The project directory contains the code template for your project. Technical details on the IR and its representation in Datalog can be found in project/README-IR.md. The project/test_contracts directory contains example test contracts with annotated ground truth in comments. The project/analyze.dl and project/analyze.py are the main source files for the analysis.

Setup Instructions

The project requires python 3.7, solc 0.5.7 and souffle 1.5.1. On the evaluation machine, we will use python 3.7.9. You will need the following software and library:

Make sure you have the required executables and versions in your system’s PATH. For Solidity and Souffle, you can find specific versions under the Github release page.

$ python --version
Python 3.7.9
$ solc --version
solc, the solidity compiler commandline interface
Version: 0.5.7
$ souffle --version
Souffle: 1.5.1

Then create a python virtual environment and install python dependencies.

$ python -m venv venv
$ source venv/bin/activate
$ pip install --upgrade pip
$ pip install -e .

Example Usage

Try it out:

$ cd project
$ python analyze.py test_contracts/0.sol
Tainted

You can also inspect the contract’s control flow graph / Datalog representation:

$ python analyze.py --visualize test_contracts/0.sol
$ ls test_contract_out 
facts.pdf  graph.pdf

About

Mirror of the project repository for Program Analysis for System Security and Reliability at ETH Zürich for FS2021

Topics

Resources

Stars

Watchers

Forks