{"id":20275611,"url":"https://github.com/softsec-kaist/smartian-artifact","last_synced_at":"2025-04-11T05:24:02.362Z","repository":{"id":89248946,"uuid":"410736639","full_name":"SoftSec-KAIST/Smartian-Artifact","owner":"SoftSec-KAIST","description":"Artifacts for Smartian, a grey-box fuzzer for Ethereum smart contracts.","archived":false,"fork":false,"pushed_at":"2025-01-27T04:30:48.000Z","size":6212,"stargazers_count":13,"open_issues_count":1,"forks_count":9,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-03-25T03:27:29.917Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Solidity","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-27T04:03:48.000Z","updated_at":"2024-09-19T14:13:15.000Z","dependencies_parsed_at":"2024-07-24T09:04:56.224Z","dependency_job_id":"34759a83-8b3d-4727-a2e2-bffb58ba65a8","html_url":"https://github.com/SoftSec-KAIST/Smartian-Artifact","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-Artifact","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SoftSec-KAIST%2FSmartian-Artifact/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SoftSec-KAIST%2FSmartian-Artifact/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SoftSec-KAIST%2FSmartian-Artifact/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SoftSec-KAIST","download_url":"https://codeload.github.com/SoftSec-KAIST/Smartian-Artifact/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248346556,"owners_count":21088475,"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":[],"created_at":"2024-11-14T13:10:07.035Z","updated_at":"2025-04-11T05:24:02.335Z","avatar_url":"https://github.com/SoftSec-KAIST.png","language":"Solidity","funding_links":[],"categories":[],"sub_categories":[],"readme":"Smartian Artifact\n========\n\n[Smartian](https://github.com/SoftSec-KAIST/Smartian) is a grey-box fuzzer for\nEthereum smart contracts. This repository contains artifacts for the\nexperiments in our paper in ASE 2021, \"Smartian: Enhancing Smart Contract\nFuzzing with Static and Dynamic Data-Flow Analyses\".\n\n# Changes\n\nThe original version of artifact at the time publication is tagged with\n[v1.0](https://github.com/SoftSec-KAIST/Smartian-Artifact/releases/tag/v1.0).\nThe latest commit uses Ubuntu 20.04 to use net8.0 for Smartian. As a result, we\nhad to stop the support of ILF and Manticore in this repository. FYI, the last\nversion that uses Ubuntu 18.04 is commit\n[a2d9ba](https://github.com/SoftSec-KAIST/Smartian-Artifact/commits/a2d9ba).\n\n# Structure\n\nWe run all our experiments in a dockerized environment. In\n[docker-setup](./docker-setup), we provide various files required to build the\ndocker image. The [benchmarks](./benchmarks) directory contains benchmarks we\nused for the experiments. In [scripts](./scripts), you can find scripts to run\nthe experiments and analyze their results.\n\n# Setup\n\nWe assume that your system has Docker installed. Also, you should be able to run\nthe `docker` command without `sudo`. The following command will build the\ndocker image name 'smartian-artifact', using our [Dockerfile](./Dockerfile).\n\n```\n$ ./build.sh\n```\n\nNext, check the `MAX_INSTANCE_NUM` configurations parameter in\n[scripts/run\\_experiment.py](./scripts/run_experiment.py) script.\nWe ran the experiments in a server machine with 88 cores, so this parameter is\ncurrently set to 72. Make sure that this parameter value is lower than the\nnumber of cores in your machine.\n\n# Evaluation of the impact of data-flow-analyses\n\nTo reproduce the experiment in Section V.B of our paper, you can run the\nfollowing script.  This script internally executes `run_experiment.py` to run\nSmartian with four different modes explained in the paper. Here, the script\nargument specifies the number of repetition for the experiment.\n\n```\n$ ./scripts/test_dfa_impact.sh 5\n```\n\nAfter the above command finishes, you will obtain the `output/result-dfa-impact`\ndirectory that contains the raw data. For instance, `dfa` subdirectory contains\nthe result of running Smartian with both static and dynamic analyses enabled\n(which is the default mode).\n\n```\n$ ls output/result-dfa-impact/\ndfa  dynamic  nodfa  static\n$ ls output/result-dfa-impact/dfa/\nB1-smartian-1  B1-smartian-2  B1-smartian-3  B1-smartian-4  B1-smartian-5\n```\n\nNow, you can parse the experiment results as below. You may also take a look at\n`plot_cov.py`, `count_b1_alarm.py`, and `measure_overhead.py` scripts to get\nmore statistics.\n```\n$ python scripts/plot_b1_cve.py output/result-dfa-impact/dfa/*\n```\n\n# Comparison between Smartian and other tools\n\nSimilarly, you can use the following scripts to reproduce the experiment in\nSection V.C of our paper, which compares Smartian against other testing tools.\n\n```\n$ ./scripts/test_B1_compare.sh 5\n$ ./scripts/test_B2_compare.sh 5\n```\n\nThen, you will get the raw data under `output/result-B1-compare` and\n`output/result-B2-compare`.\n\n```\n$ ls output/result-B1-compare/\nmythril  sFuzz  smartian\n$ ls output/result-B2-compare/\nmythril  sFuzz  smartian\n```\n\nTo obtain the results in our paper, you may refer to the following commands.\n```\n$ python scripts/plot_b1_cve.py output/result-B1-compare/smartian/*\n$ python scripts/plot_b2_bug.py output/result-B2-compare/smartian/*\n$ python scripts/count_b2_alarm.py output/result-B2-compare/smartian/*\n```\n\n# Large-scale experiment with Smartian\n\nLastly, we also provide the script for the large-scale experiment in Section\nV.D of the paper.\n\n```\n$ ./scripts/test_large_scale.sh 1\n$ python scripts/count_b3_alarm.py output/result-large-scale/B3-smartian-1/\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoftsec-kaist%2Fsmartian-artifact","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsoftsec-kaist%2Fsmartian-artifact","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsoftsec-kaist%2Fsmartian-artifact/lists"}