Sitelet https://github.com/MultiTagging/MultiTagging
Skip to content

About

A vulnerable Ethereum smart contract labeling framework

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Repository files navigation

Paper DOI GitHub release License: CC BY-NC 4.0 GitHub Downloads Visitors GitHub stars GitHub forks

🏷️ MultiTagging

A vulnerable Ethereum smart contract labeling framework.


✨ Features

The MultiTagging framework provides several functions through the following components:

  • 🏷️ Tagger: Parses analysis tool reports to extract vulnerability tags and map them to common vulnerability labels, i.e., SWC codes and DASP Ranks.
  • 📏 Evaluator: Measures tool performance using different evaluation metrics.
  • 🗳️ Elector: Elects the sample label based on votes from a number of tools. It supports two threshold-based voting methods (AtLeastOne and Majority) and one power-based voting method.
  • 📊 Plotter: Plots evaluation results in different formats.

🛠️ Supported Tools


📦 Requirements


🚀 Usage

1. 📥 Clone the Repository

Clone the MultiTagging repository:

git clone https://github.com/MultiTagging/MultiTagging.git

2. 📂 Go to the MultiTagging Directory

cd MultiTagging

3. 🗂️ Add Your Study Files

Add your study files to the following directories:

To retrieve study files from other folders, update the Scripts/config.json file accordingly.

4. ▶️ Run the MultiTagging Framework

There are three options:

💻 Option 1: Terminal

  1. Run Main.py to open the wizard program:
python3 Main.py
  1. Select the required function and enter the requested input:
MultiTagging Framework
..................................................

Enter the number of the selected function:
 1: Get the labeled data for the tool reports.
 2: Get vote-based labeled data.
 3: Get the evaluation report.
 4: Get the evaluation chart.
 5: Get tools overlap degree.
 6: Get tool efficiency scores.
 7: Exit
..................................................
  1. Check the Results directory for the generated output.

📓 Option 2: Jupyter Notebook

In a code cell, run Main.py:

run -i 'Main.py'

🐍 Option 3: Within Your Python Code

You can call MultiTagging framework functions directly from your Python code.

For examples, see the MultiTagging Demo.


🎬 Demo

The MultiTagging framework demo is available here:


📚 Publication

The MultiTagging framework is described in the following publication:

Alsunaidi, S. J., Aljamaan, H., & Hammoudeh, M. (2024).
MultiTagging: A Vulnerable Smart Contract Labeling and Evaluation Framework.
Electronics, 13(23), 4616.
https://doi.org/10.3390/electronics13234616

If you use the MultiTagging framework in your research, please cite:

@article{alsunaidi2024multitagging,
  title     = {MultiTagging: A Vulnerable Smart Contract Labeling and Evaluation Framework},
  author    = {Alsunaidi, Shikah J. and Aljamaan, Hamoud and Hammoudeh, Mohammad},
  journal   = {Electronics},
  volume    = {13},
  number    = {23},
  pages     = {4616},
  year      = {2024},
  publisher = {MDPI},
  doi       = {10.3390/electronics13234616},
  url       = {https://doi.org/10.3390/electronics13234616}
}

📦 Archived Resource

The MultiTagging framework is archived on Zenodo:


📄 License

This project is licensed under the Creative Commons Attribution-NonCommercial 4.0 International License (CC BY-NC 4.0).

You may share and adapt the material for non-commercial purposes, provided appropriate credit is given.

For more details, see the LICENSE.md file.

About

A vulnerable Ethereum smart contract labeling framework

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages