vedant-4747/ethereum-anomaly-detection
GitHub: vedant-4747/ethereum-anomaly-detection
ETHWatch 是一个以太坊链上异常交易实时检测系统,通过机器学习模型对交易行为进行评分并在 Streamlit 仪表板上可视化展示。
Stars: 0 | Forks: 0
# ETHWatch — Ethereum 链上异常检测
[](https://eth-anomaly-dashboard.onrender.com)
一个用于实时监控 Ethereum 区块链、检测异常交易并在 Streamlit 仪表板上进行可视化的生产级 pipeline。

## 概述
该项目由两个主要组件组成:
### 检测到的异常
- **高额转账**:转移异常大量 ETH 的交易。
- **高 Gas 价格**:支付极高 Gas 价格的交易(MEV 机器人或优先费飙升)。
- **可疑合约交互**:带有巨大 Gas 限制的零值转账(闪电贷或漏洞利用)。
## 项目结构
```
├── app.py # Streamlit Dashboard UI
├── database.py # PostgreSQL Database connection and schema
├── detector.py # Anomaly detection logic
├── monitor.py # Block scanner that feeds the database
├── requirements.txt # Python dependencies
├── render.yaml # Render.com Blueprint for deployment
├── .env.example # Example environment configuration
└── docker-compose.yml # (Legacy) Local Docker setup
```
## 设置与运行
### 1. 环境变量
将 `.env.example` 复制到 `.env` 并填入你的值:
```
cp .env.example .env
```
| 变量 | 描述 |
|---|---|
| `ETH_RPC_URL` | Ethereum RPC URL(推荐使用 Alchemy/Infura) |
| `DATABASE_URL` | PostgreSQL 连接字符串(参见下方的 Supabase) |
| `HIGH_VALUE_THRESHOLD` | 超过该 ETH 值的交易将被标记(默认:10) |
| `HIGH_GAS_PRICE_THRESHOLD` | 超过该 Gas 价格(Gwei)的交易将被标记(默认:100) |
### 2. 设置数据库(Supabase — 免费)
1. 访问 [https://supabase.com](https://supabase.com) 并创建一个免费账户。
2. 创建一个新项目。
3. 转到 **Settings → Database → Connection String → URI**。
4. 复制连接字符串并将其作为 `DATABASE_URL` 粘贴到你的 `.env` 文件中。
### 3. 本地运行
```
pip install -r requirements.txt
# Terminal 1 — 启动 monitor
python monitor.py
# Terminal 2 — 启动 dashboard
streamlit run app.py
```
### 云端部署(生产环境)
部署仪表板与监控 → Render
1. 访问 https://render.com 并登录你的账户。
2. 点击 New → Web Service 来部署 Streamlit Dashboard (app.py),或者如果你要使用 render.yaml 文件同时部署仪表板和后台 worker,请使用 New → Blueprint。
3. 连接你的 GitHub 仓库。
4. 在 Render 仪表板的服务设置下添加以下环境变量:
ETH_RPC_URL — 你的 Alchemy 或 Infura 端点
DATABASE_URL — 你的 Supabase PostgreSQL 连接字符串
5. 点击 Deploy。
架构:Render Web 服务(仪表板)和监控脚本都连接到同一个 Supabase PostgreSQL 数据库。监控发现的异常会实时显示在实时仪表板上。
### 部署监控 → Render Background Worker
1. 访问 [https://render.com](https://render.com) 并创建一个账户。
2. 点击 **New → Blueprint** 并连接你的 GitHub 仓库。
3. Render 将自动检测 `render.yaml` 文件并配置后台 worker。
4. 在 Render 仪表板中添加以下环境变量:
- `ETH_RPC_URL` — 你的 Alchemy 或 Infura 端点
- `DATABASE_URL` — 你的 Supabase 连接字符串
5. 点击 **Deploy** — 监控现在将 24/7 运行,并写入共享的 PostgreSQL 数据库。
## 自定义检测规则
修改 `detector.py` 以添加新的异常类型:
1. 添加一个新的返回 `{"type", "severity", "description"}` 的 `_assess_...` 函数。
2. 从 `analyze_transaction` 方法中调用它。
标签:Apex, Kubernetes, Web3, 以太坊, 区块链, 异常检测, 机器学习, 测试用例, 请求拦截, 逆向工具