JuniorZikali/chainguard
GitHub: JuniorZikali/chainguard
基于大语言模型的智能合约自动化审计平台,覆盖漏洞扫描、不变式发现、Foundry 测试生成与风险评分的全流程。
Stars: 0 | Forks: 0
# ChainGuard — AI 驱动的智能合约审计器 (v2)
## 🚀 快速部署 (15 分钟)
### 步骤 1 — 设置 Supabase
1. 访问 [supabase.com](https://supabase.com) → **New Project**
2. 进入 **SQL Editor** → 粘贴 `supabase/schema.sql` 的全部内容 → **Run**
3. 进入 **Project Settings → API** 并复制:
- `Project URL` → `NEXT_PUBLIC_SUPABASE_URL`
- `anon / public` 密钥 → `NEXT_PUBLIC_SUPABASE_ANON_KEY`
- `service_role` 密钥 → `SUPABASE_SERVICE_ROLE_KEY`
### 步骤 2 — 获取 Groq API 密钥 (免费)
1. 访问 [console.groq.com](https://console.groq.com) → 注册 (免费,无需信用卡)
2. 点击 **API Keys** → **Create Key** → 复制密钥 → `GROQ_API_KEY`
### 步骤 3 — 部署到 Vercel
```
git add .
git commit -m "chainguard v2 - groq + supabase"
git push
```
1. 访问 [vercel.com](https://vercel.com) → **Add New Project** → 导入代码库
2. 添加环境变量:
NEXT_PUBLIC_SUPABASE_URL=...
NEXT_PUBLIC_SUPABASE_ANON_KEY=...
SUPABASE_SERVICE_ROLE_KEY=...
GROQ_API_KEY=...
3. 点击 **Deploy**
### 步骤 4 — 本地运行
```
cp .env.example .env.local
# 在 .env.local 中填入你的 keys
npm install
npm run dev
# 打开 http://localhost:3000
```
## 🏗️ 架构
```
┌─────────────────────────────────────────────────────────┐
│ CLIENT BROWSER │
│ Next.js (React + TypeScript) │
└──────────────────────┬──────────────────────────────────┘
│ HTTPS
┌──────────────────────▼──────────────────────────────────┐
│ VERCEL SERVERLESS │
│ /api/contracts → Upload .sol source code │
│ /api/analyses → Trigger AI analysis pipeline │
│ /api/analyses/[id] → Poll for results │
│ /api/dashboard → List all audits │
└──────────┬─────────────────────────────────┬────────────┘
│ │
┌──────────▼──────────┐ ┌────────────▼────────────┐
│ SUPABASE DB │ │ GROQ API │
│ PostgreSQL │ │ llama-3.3-70b │
│ │ │ │
│ contracts │ │ • Invariant discovery │
│ analyses │ │ • Vulnerability scan │
│ properties │ │ • Foundry test gen │
│ findings │ │ • Risk scoring │
│ audit_logs │ │ │
└─────────────────────┘ └─────────────────────────┘
```
### 流水线 (单次审计)
```
.sol upload → Supabase(contracts) → Groq LLM analysis →
Invariants → Supabase(properties)
Findings → Supabase(findings)
Summary → analyses.summary
Risk score → analyses.risk_score
Foundry tests → analyses.foundry_test_code
Audit log → Supabase(audit_logs) [SHA-256 chain]
```
## 📁 项目结构
```
chainguard/
├── pages/
│ ├── _app.tsx # Next.js app wrapper
│ ├── index.tsx # Dashboard page
│ └── api/
│ ├── contracts.ts # POST /api/contracts
│ ├── analyses.ts # POST /api/analyses
│ ├── analyses/[id].ts # GET /api/analyses/:id
│ └── dashboard.ts # GET /api/dashboard
├── components/
│ ├── Layout.tsx # Nav + background
│ ├── ContractUpload.tsx # Dropzone + upload form
│ ├── AnalysisResult.tsx # Findings, invariants, Foundry code, log
│ └── RecentAudits.tsx # Sidebar with audit history
├── lib/
│ ├── supabase.ts # Supabase client
│ ├── llm.ts # Groq AI client + prompts
│ └── types.ts # Shared TypeScript types
├── styles/
│ └── globals.css
├── supabase/
│ └── schema.sql # ← Run this first in Supabase
└── .env.example
```
## 🔧 本地运行 Foundry 测试
从 UI 下载生成的模糊测试文件并在本地运行:
```
# 安装 Foundry (Linux/WSL2)
curl -L https://foundry.paradigm.xyz | bash
foundryup
forge init audit-workspace
cd audit-workspace
cp YourContract.sol src/
cp YourContractFuzzTest.t.sol test/
forge test --match-contract Fuzz -vvv
```
## 📊 数据库结构
| 数据表 | 用途 |
|-------|---------|
| `contracts` | 上传的 Solidity 源代码 |
| `analyses` | 带有状态、风险评分、摘要的审计任务 |
| `properties` | 发现的不变式 (来自 LLM) |
| `findings` | 带有严重级别和修复建议的漏洞 |
| `audit_logs` | 不可变的 SHA-256 链式审计轨迹 |
*由 [Your Name] (H2XXXXXXQ) 构建 · ISA 系 · HIT · 2025*
标签:AI代码分析, CISA项目, DApp安全, DLL 劫持, OSV, React, Serverless, Solidity, Supabase, Syscalls, Sysdig, TypeScript, Vercel, Web3安全, Web3开发, 人工智能, 区块链安全, 去中心化应用, 大语言模型, 安全插件, 对称加密, 智能合约安全, 智能合约审计, 测试用例, 用户模式Hook绕过, 自动化审计, 自动化攻击