vedant-4747/ethereum-anomaly-detection

GitHub: vedant-4747/ethereum-anomaly-detection

ETHWatch 是一个以太坊链上异常交易实时检测系统,通过机器学习模型对交易行为进行评分并在 Streamlit 仪表板上可视化展示。

Stars: 0 | Forks: 0

# ETHWatch — Ethereum 链上异常检测 [![实时演示](https://img.shields.io/badge/Live-Dashboard-blue)](https://eth-anomaly-dashboard.onrender.com) 一个用于实时监控 Ethereum 区块链、检测异常交易并在 Streamlit 仪表板上进行可视化的生产级 pipeline。 ![ETHWatch 仪表板截图](https://static.pigsec.cn/wp-content/uploads/repos/cas/8e/8e28ae3ef7c14cedab63a17e67d11d9da1a038efa79ca828040e093acac1b1ef.png) ## 概述 该项目由两个主要组件组成: ### 检测到的异常 - **高额转账**:转移异常大量 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, 以太坊, 区块链, 异常检测, 机器学习, 测试用例, 请求拦截, 逆向工具