PROXiFY is a tool designed to detect and classify Ethereum smart contract proxies using bytecode analysis. It distinguishes between forward proxies (with fixed implementation addresses) and upgradeable proxies (which allow updates). PROXiFY is ideal for researchers, developers, and auditors working on Ethereum-based decentralized applications (DApps).
This project is based on the paper:
"PROXiFY: Detecting and Classifying Upgradeable Proxy Contracts in Ethereum Bytecode"
Submitted to ASE 2025
- Bytecode Decompilation: Uses SEVM to decompile Ethereum bytecode.
- Proxy Detection: Identifies proxy contracts using
delegatecalland classifies them as forward or upgradeable. - Report Generation: Generates downloadable reports with classification results and decompiled bytecode.
To run PROXiFY, you will need:
- Python 3.7 or later
- Streamlit: For running the web interface.
Install Streamlit using pip:
pip install streamlitPROXiFY uses SEVM for decompiling Ethereum bytecode. Install SEVM globally via npm:
npm install --global sevmNote: We are using SEVM from GitHub, an EVM decompiler that is lightweight and reliable.
Clone this repository:
git clone https://github.com/IlhamQasse/PROXiFY.git
cd proxifyRun the application using Streamlit:
streamlit run app.py --server.enableXsrfProtection falseThe application will open in your browser at http://localhost:8501.
- Upload Bytecode: Users can upload
.txtfiles containing the bytecode of a deployed contract. - Paste Bytecode: Users can paste the bytecode directly into the provided text area.
- Analyze Bytecode: After uploading or pasting bytecode, click "Analyze" to classify the contract.
- View Results: The tool will display the classification and explanation.
- Download Report: A detailed report can be downloaded, which includes the decompiled bytecode and classification result.
|-- app.py # Main Streamlit app file
|-- proxify_logo.png # Project logo
|-- README.md # This fileIf you use PROXiFY in your research, please cite the paper submitted to ASE 2025:
PROXiFY: Detecting and Classifying Upgradeable Proxy Contracts in Ethereum Bytecode
This project is licensed under the MIT License. See the LICENSE file for more details.
- Make sure SEVM is installed globally and accessible in your
PATH. - Ensure that Streamlit is installed as per the requirements.
- For updates or issues with SEVM, please refer to SEVM's GitHub repository.