A vulnerable Ethereum smart contract labeling framework.
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 (
AtLeastOneandMajority) and one power-based voting method. - 📊 Plotter: Plots evaluation results in different formats.
- The components of the MultiTagging framework can be utilized for any analysis tool except for the Tagger.
- Currently Tagger supports 6 tools: MAIAN, Mythril, Semgrep, Slither, Solhint, and VeriSmart.
- Python >= 3.11.7
Recommended version: 3.12.2 - You can run the MultiTagging framework using:
Clone the MultiTagging repository:
git clone https://github.com/MultiTagging/MultiTagging.gitcd MultiTaggingAdd your study files to the following directories:
To retrieve study files from other folders, update the Scripts/config.json file accordingly.
There are three options:
- Run Main.py to open the wizard program:
python3 Main.py- 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
..................................................
- Check the Results directory for the generated output.
In a code cell, run Main.py:
run -i 'Main.py'You can call MultiTagging framework functions directly from your Python code.
For examples, see the MultiTagging Demo.
The MultiTagging framework demo is available here:
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}
}The MultiTagging framework is archived on Zenodo:
- MultiTagging Framework: https://doi.org/10.5281/zenodo.19563271
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.