Josh9281/defi-sentinel

GitHub: Josh9281/defi-sentinel

一款基于链上数据与 AI Agent 的 DeFi 合约 rug-pull 和漏洞利用风险自动分析工具,输入合约地址即可在 60 秒内生成带引用来源的风险报告。

Stars: 0 | Forks: 0

# DeFi Sentinel 利用链上数据和 AI 自动化进行 rug-pull 风险分析。 输入一个合约地址。60 秒内获取附带引用来源的风险报告。 ## 架构 ``` POST /api/investigate └─► Django creates Case record (UUID) └─► Temporal workflow starts ├─ Activity 1: Etherscan V2 (deployer, source verification, holders, recent txs) ├─ Activity 2: Rekt News RSS (exploit history matching) ├─ Activity 3: DeFiHackLabs + Slowmist (audit / hack records) ├─ Activity 4: OpenAI Agents SDK (gpt-4o, structured output → cited disposition) └─ Activity 5: Persist disposition + evidence to PostgreSQL GET /api/case/{id} └─► Returns disposition + evidence with source citations ``` ## 技术栈 | 层级 | 技术 | | ---------------- | -------------------------------------------- | | 后端 | Django 4.2 + DRF | | 编排 | Temporal(持久化工作流执行) | | AI Agent | OpenAI Agents SDK(gpt-4o,结构化输出)| | 数据库 | PostgreSQL 15 | | 链上数据 | Etherscan V2 API(Ethereum 主网) | ## 快速开始 ``` # 1. 启动 Temporal + Postgres docker-compose up -d # 2. Python 环境 (3.11+,已在 3.13 上测试) python3 -m venv venv source venv/bin/activate pip install -r requirements.txt # 3. 配置 secrets cp .env.example .env # 编辑 .env:设置 ETHERSCAN_API_KEY 和 OPENAI_API_KEY # 4. 迁移数据库 python manage.py migrate # 5. 启动 Temporal worker (终端 1) python workflows/worker.py # 6. 启动 Django (终端 2) python manage.py runserver ``` 打开 访问 UI。 打开 访问 Temporal Web UI。 ## 冒烟测试 ``` curl -X POST http://localhost:8000/api/investigate \ -H "Content-Type: application/json" \ -d '{"contract_address":"0x1F98431c8aD98523631AE4a59f267346ea31F984","protocol_name":"Uniswap V3 Factory"}' # → {"case_id": "...", "status": "running", "poll_url": "/api/case/..."} curl http://localhost:8000/api/case/ # 轮询直到 status == "complete" ``` ## 验证 ``` python scripts/backtest.py ``` 针对 3 个已知的 Ethereum 主网攻击受害者和 3 个已知的合法协议运行完整 pipeline。 | 协议 | 真实状态 | 预测结果 | 分数 | 是否匹配 | | ------------------ | ---------- | ---------- | ----- | ----- | | BeanstalkFarms | COMPROMISED | CRITICAL | 90 | ✓ | | EulerFinance | COMPROMISED | CRITICAL | 90 | ✓ | | Nomad Bridge | COMPROMISED | CRITICAL | 90 | ✓ | | Uniswap V3 Factory | LEGITIMATE | LOW | 20 | ✓ | | Aave V3 Pool | LEGITIMATE | LOW | 20 | ✓ | | Compound V3 USDC | LEGITIMATE | LOW | 20 | ✓ | **准确率:6/6 (100%)** — 确认受到攻击的项目通过 DeFiHackLabs 匹配被标记为 CRITICAL;合法协议则基于验证和良好的 30 天活动记录被标记为 LOW。 注意:最初的 PRD 主要针对 rug-pull 合约(AnubisDAO, Frosties),但 PRD 中列出的这两个地址从未在 Ethereum 主网上部署过——它们要么是错误的地址,要么是 BSC 合约。回测使用了 DeFiHackLabs 实际追踪的三个真实的 ETH 主网攻击受害者,这测试了相同的信号路径(`hack_references` → CRITICAL)。 ## 局限性 - 仅支持 Ethereum 主网 — BSC、Polygon、Arbitrum 需要不同的区块链浏览器 API。 - 风险评分是启发式的,不构成财务建议。 - Etherscan 的 `tokenholderlist` endpoint 属于付费层级;在使用免费 key 时,持币者分布证据将被报告为“不可用”,Agent 将在没有该项数据的情况下进行推理。 - Rekt News RSS 有时会不可用(rekt.news 宕机);发生这种情况时,工作流会优雅降级。 - 前端仅支持桌面端。 ## License MIT
标签:DeFi, Django, 区块链安全, 智能合约审计, 请求拦截, 逆向工具