Outil Web3 / sécurité d’analyse statique de tokens ERC-20 (Ethereum / BSC / Polygon). Il récupère le code via Etherscan v2 (chainid), suit les proxys → Implementation, applique des règles heuristiques, puis produit un score 0–10 et un verdict (SAFE / MEDIUM / HIGH) avec un résumé lisible.
Objectif : aider au screening rapide d’un token avant interaction (achat, LP, approval), en complément d’une vérification manuelle.
-
Récupération du code source via Etherscan v2 (multi-chain)
-
Détection Proxy → Implementation + flag
proxy_pattern -
Règles heuristiques (flags) :
modifiable_fee,blacklist_whitelist,uniswap_restrictionminting,pause_trading,transfer_limits,dynamic_fees_publictransfer_trap,max_limits_strict,proxy_pattern,unverified_code
-
Scoring 0–10 + verdict + résumé (rapport JSON)
- Input adresse + réseau → appel API
- Loader, affichage rapport, historique local (5 derniers), copier adresse, lien explorer
- Tests des règles & du scoring (pytest)
- Backend : Python, FastAPI, Uvicorn, Requests, Pytest
- Frontend : React 18, Vite, TypeScript, Tailwind, Axios
.
├─ .github/workflows/
│ ├─ backend.yml
│ └─ frontend.yml
├─ backend/
│ ├─ __init__.py
│ ├─ analyzer.py
│ ├─ main.py
│ ├─ report.py
│ ├─ requirements.txt
│ └─ rules.py
├─ frontend/
│ ├─ index.html
│ ├─ package.json
│ ├─ vite.config.ts
│ ├─ postcss.config.cjs
│ ├─ tailwind.config.cjs
│ └─ src/...
├─ example_reports/
│ ├─ SafeToken.json
│ └─ ScamToken.json
├─ tests/
│ └─ test_analyzer.py
├─ cli.py
├─ LICENSE
└─ README.mdcd backend
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtLe backend utilise Etherscan v2.
export ETHERSCAN_API_KEY="xxxxx" # recommandé (couvre multi-chain en v2)
export BSCSCAN_API_KEY="xxxxx" # optionnel
export POLYGONSCAN_API_KEY="xxxxx" # optionnelcd ~/projets/honeypot_detector
source .venv/bin/activate
uvicorn main:app --reloadAccès : http://127.0.0.1:8000
cd frontend
npm install
npm run devAccès : http://localhost:5173
POST /analyze
Body :
{ "address": "0x...", "chain": "ethereum|bsc|polygon" }Réponse : rapport JSON incluant score, verdict et flags déclenchés.
Analyse directe depuis le backend :
cd backend
python main.py 0xA0b8... --chain ethereumLe score n’est pas une preuve de scam : il représente un niveau de risque (contrôle, restrictions, comportements suspects).
Exemple : un stablecoin peut sortir HIGH (centralisation : pause / blacklist / owner).
Rappel des poids (simplifié, voir backend/report.py) :
- Fort : blacklist/whitelist, dynamic fees + setters, transfer limits, transfer trap
- Moyen : proxy_pattern, minting, pause trading
- Faible : max_limits_strict
unverified_codesi aucun code source récupérable
pytest -v --maxfail=1 --disable-warningsLe dossier example_reports/ contient des rapports JSON prêts à consulter :
SafeToken.jsonScamToken.json
- Analyse statique uniquement : ne remplace pas une vérification on-chain, la lecture du code ou une simulation.
- Dépendance aux explorers (quotas, indisponibilités, code non vérifié).
- Certains tokens "légitimes" peuvent être classés à risque élevé.
Outil d’analyse statique à but éducatif. Vérifiez toujours on-chain / explorer.