{"id":20275610,"url":"https://github.com/softsec-kaist/smartian","last_synced_at":"2025-04-05T06:07:20.476Z","repository":{"id":41328519,"uuid":"402054789","full_name":"SoftSec-KAIST/Smartian","owner":"SoftSec-KAIST","description":"Smartian: Enhancing Smart Contract Fuzzing with Static and Dynamic Data-Flow Analyses (ASE '21)","archived":false,"fork":false,"pushed_at":"2025-01-25T09:21:12.000Z","size":4660,"stargazers_count":150,"open_issues_count":6,"forks_count":23,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-03-29T05:07:21.125Z","etag":null,"topics":["fsharp","fuzzer","fuzzing","smart-contract-testing","static-analyzer"],"latest_commit_sha":null,"homepage":"","language":"F#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SoftSec-KAIST.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-09-01T12:36:05.000Z","updated_at":"2025-02-25T02:34:33.000Z","dependencies_parsed_at":"2025-02-28T00:12:30.291Z","dependency_job_id":"8e5086e6-03a3-414d-b16c-183dba23643c","html_url":"https://github.com/SoftSec-KAIST/Smartian","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SoftSec-KAIST%2FSmartian","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SoftSec-KAIST%2FSmartian/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SoftSec-KAIST%2FSmartian/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SoftSec-KAIST%2FSmartian/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SoftSec-KAIST","download_url":"https://codeload.github.com/SoftSec-KAIST/Smartian/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247294537,"owners_count":20915340,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["fsharp","fuzzer","fuzzing","smart-contract-testing","static-analyzer"],"created_at":"2024-11-14T13:10:06.844Z","updated_at":"2025-04-05T06:07:20.459Z","avatar_url":"https://github.com/SoftSec-KAIST.png","language":"F#","funding_links":[],"categories":[],"sub_categories":[],"readme":"Smartian\n========\n\nSmartian is a grey-box fuzzer for Ethereum smart contracts. Smartian leverages\nstatic and dynamic data-flow analyses to enhance the effectiveness of fuzzing.\nThe technical details of Smartian can be found in our paper \"Smartian: Enhancing\nSmart Contract Fuzzing with Static and Dynamic Data-Flow Analyses\" published in\nASE 2021.\n\n# Installation\n\nSmartian is written in F#, so you have to install .NET to run Smartian.\nInstallation step differs for each Linux distribution, so please refer to this\n[link](https://docs.microsoft.com/en-us/dotnet/core/install/) and install\nnet5.0. Then, you can simply clone and build Smartian as follow.\n\n```\n$ git clone https://github.com/SoftSec-KAIST/Smartian\n$ cd Smartian\n$ git submodule update --init --recursive\n$ make\n```\n\n# Usage\n\nYou can fuzz a smart contract with Smartian by providing its EVM bytecode and\nABI specification as follow. Here, `-t` option specifies the time limitation in\nseconds. The output test cases and bug-triggering inputs will be stored in the\ndirectory specified by `-o` option.\n\n```\n$ dotnet build/Smartian.dll fuzz -p \u003cbytecode file\u003e -a \u003cabi file\u003e -t \u003ctime limit\u003e -o \u003coutput dir\u003e\n```\n\nThe output directory will have two subdirectories. First, `testcase` directory\nwill contain inputs that increased edge coverage during fuzzing. You can use\nthese inputs to measure code coverage achievement. Second, `bug` directory will\ncontain inputs that triggered bug. The file names of bug-triggering inputs will\nbe tagged with abbreviated bug class name (e.g., 'RE' for reentrancy bug).  For\nthe list of used abbreviations, please refer to our paper.\n\nNote that the generated test inputs are in JSON format, and they contain\nnecessary information required to reproduce the transactions. You can replay\nthese files against the target contract with the following command.\n\n```\n$ dotnet build/Smartian.dll replay -p \u003cbytecode file\u003e -i \u003ctest case directory\u003e\n```\nYou may also check other command-line options of Smartian by running `dotnet\nbuild/Smartian.dll fuzz --help` and `dotnet build/Smartian.dll replay --help`.\n\n# Artifact\n\nWe also publicize the artifacts to reproduce the experiments in our paper.\nPlease check our\n[Smartian-Artifact](https://github.com/SoftSec-KAIST/Smartian-Artifact)\nrepository.\n\n# Citation\n\nYou can site our paper with the following bibtex entry. The page field will be\nupdated later.\n```bibtex\n@INPROCEEDINGS{choi:ase:2021,\n  author = {Jaeseung Choi and Doyeon Kim and Soomin Kim and Gustavo Grieco and Alex Groce and Sang Kil Cha},\n  title = {{Smartian}: Enhancing Smart Contract Fuzzing with Static and Dynamic Data-Flow Analyses},\n  booktitle = {Proceedings of the International Conference on Automated Software Engineering},\n  year = 2021\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoftsec-kaist%2Fsmartian","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsoftsec-kaist%2Fsmartian","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoftsec-kaist%2Fsmartian/lists"}