prayingperceptions/bloodhound
GitHub: prayingperceptions/bloodhound
一款面向EVM的智能合约安全推理引擎,利用LLM驱动的假设链式验证解决深度审计问题。
Stars: 2 | Forks: 0
# 🐺 BloodHound
**自主智能合约安全审计引擎。**
粘贴 GitHub 仓库 URL,选择你的 AI 模型和报告格式,即可获得一份 Code4rena 或 Immunefi 格式的漏洞报告——包括概念验证(PoC)漏洞利用——这一切由 Claude AI 驱动。
## BloodHound 功能
- **自主审计流水线** —— 获取多达 50 个 Solidity 文件,运行 8 项静态启发式检查,然后将所有内容发送给 Claude 进行深度分析
- **三种 Claude 模型** —— Haiku 4.5(快速/便宜)、Sonnet 4(平衡,默认选项)、Opus 4(最深度分析)
- **两种报告格式** —— Code4rena 竞赛审计格式或 Immunefi 漏洞赏金格式
- **实时进度** —— 在每个审计阶段完成时提供实时流式更新(SSE)
- **概念验证(PoC)** —— 每个发现都包含 PoC(针对严重/高危级别提供 Foundry 风格的 PoC,针对较低严重级别提供逐步说明)
- **下载报告** —— 随时导出完整的 `.md` 审计报告
- **严重性分级** —— 发现的问题被划分为严重、高危、中危、低危、信息性或 Gas 优化
- **基于捐赠的访问机制** —— 每天免费进行 1 次扫描;通过捐赠 ETH 解锁更多次数(通过链上验证)
## 技术栈
- **Runtime**: Node.js 24, TypeScript 5.9, pnpm workspaces
- **API**: Express 5(esbuild CJS bundle)
- **前端**: React + Vite + Tailwind + shadcn/ui + wouter
- **数据库**: PostgreSQL + Drizzle ORM
- **AI**: Anthropic Claude 通过 OpenRouter 访问(`openai` SDK,模型 `anthropic/claude-sonnet-4`)
- **验证**: Zod (v4), drizzle-zod
- **API 契约**: OpenAPI 3.1 → Orval(React Query hooks + Zod schemas)
## 在本地运行
### 前置条件
- Node.js 24+
- pnpm 9+
- PostgreSQL 数据库
### 环境变量
| 变量 | 必需 | 描述 |
|----------|----------|-------------|
| `DATABASE_URL` | 是 | PostgreSQL 连接字符串 |
| `SESSION_SECRET` | 是 | Session 签名密钥 |
| `OPENROUTER_API_KEY` | 是 | 用于访问 Claude 的 OpenRouter 密钥 |
| `GITHUB_TOKEN` | 推荐 | GitHub PAT(将速率限制提升至 5,000 次请求/小时) |
### 设置
```
# 安装依赖
pnpm install
# Push DB schema
pnpm --filter @workspace/db run push
# 启动 API server (port 来自 $PORT env,proxied 在 /api)
pnpm --filter @workspace/api-server run dev
# 启动 frontend (proxied 在 /)
pnpm --filter @workspace/bloodhound-ui run dev
```
### 代码生成(在 OpenAPI 规范更改后)
```
pnpm --filter @workspace/api-spec run codegen
```
## 架构
### 审计流水线
```
GitHub API → Solidity parser → 8 heuristic checks → Claude AI → findings + markdown report → DB
```
1. **GitHub 获取器**(`lib/github.ts`)—— 使用 `GITHUB_TOKEN` 进行身份验证,列出 Solidity 文件,执行 300 文件的仓库大小限制检查,并最多获取 50 个文件
2. **启发式检查**(`lib/heuristics.ts`)—— 8 项静态正则表达式/AST 检查(重入攻击、未检查的调用、访问控制、溢出等)
3. **AI 分析器**(`lib/ai-analyzer.ts`)—— 将合约及启发式检查命中的结果通过 OpenRouter 发送给 Claude;采用 4 重策略的 JSON 提取回退机制以确保可靠性
4. **扫描引擎**(`lib/hunt-engine.ts`)—— 编排整个流水线,并在每个阶段发出 SSE 进度事件
### 实时进度(SSE)
扫描任务通过 Server-Sent Events 在 `GET /api/hunts/:id/progress` 发出进度事件。前端使用原生的 `EventSource`。内存中的 `Map` 负责分发事件——不支持集群,在服务器重启时会重置。
在服务器重启时,任何仍标记为 `running` 的扫描任务都会自动标记为 `failed`(启动恢复机制)。
### 契约优先的 API
位于 `lib/api-spec/openapi.yaml` 的 OpenAPI 规范是唯一的真实数据源。Orval 会生成:
- React Query hooks + TypeScript 类型 → `lib/api-client-react/src/generated/`
- 用于 Express 的 Zod 验证 schemas → `lib/api-zod/src/generated/`
在编辑规范后,请务必运行代码生成。
## 项目结构
```
├── artifacts/
│ ├── api-server/ # Express API (esbuild CJS)
│ │ └── src/
│ │ ├── routes/ # hunts + donations routes
│ │ └── lib/ # hunt-engine, ai-analyzer, github, heuristics
│ └── bloodhound-ui/ # React + Vite frontend
│ └── src/
│ ├── pages/ # home (dashboard), hunt-results
│ └── components/ # donation-modal, shadcn/ui components
├── lib/
│ ├── api-spec/ # openapi.yaml (source of truth)
│ ├── api-zod/ # generated Zod schemas (do not edit)
│ ├── api-client-react/ # generated React Query hooks (do not edit)
│ └── db/ # Drizzle schema + client
└── scripts/ # utility scripts
```
## 速率限制
- **全局**:每个 IP 每分钟 120 次请求
- **扫描创建**:由捐赠等级系统强制执行(免费每天 1 次;付费等级每周期 30 次)
- **GitHub API**:使用 `GITHUB_TOKEN` 时每小时 5,000 次请求;不使用时每小时 60 次请求
## 许可证
MIT
标签:GNU通用公共许可证, LLM应用, Node.js, Solidity, Web3安全, 智能合约审计, 漏洞扫描