From ef8910a11a0b388c60b5146c2051e0ef87e2a208 Mon Sep 17 00:00:00 2001 From: Jaeseung Choi Date: Sat, 30 Oct 2021 22:01:23 +0900 Subject: [PATCH] Add README --- README.md | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..f9b1239 --- /dev/null +++ b/README.md @@ -0,0 +1,70 @@ +Smartian +======== + +Smartian is a grey-box fuzzer for Ethereum smart contracts. Smartian leverages +static and dynamic data-flow analyses to enhance the effectiveness of fuzzing. +The technical details of Smartian can be found in our paper "Smartian: Enhancing +Smart Contract Fuzzing with Static and Dynamic Data-Flow Analyses" published in +ASE 2021. + +# Installation + +Smartian is written in F#, so you have to install .NET to run Smartian. +Installation step differs for each Linux distribution, so please refer to this +[link](https://docs.microsoft.com/en-us/dotnet/core/install/) and install +net5.0. Then, you can simply clone and build Smartian as follow. + +``` +$ git clone https://github.com/SoftSec-KAIST/Smartian +$ cd Smartian +$ git submodule update --init --recursive +$ make +``` + +# Usage + +You can fuzz a smart contract with Smartian by providing its EVM bytecode and +ABI specification as follow. Here, `-t` option specifies the time limitation in +seconds. The output test cases and bug-triggering inputs will be stored in the +directory specified by `-o` option. + +``` +$ dotnet build/Smartian.dll fuzz -p -a -t