PrinceTitiya/AI-smart-contract-analyzer
GitHub: PrinceTitiya/AI-smart-contract-analyzer
一个结合静态分析与RAG的AI智能合约审计系统,用于检测、解释并评分Solidity合约中的安全漏洞。
Stars: 0 | Forks: 0
# AI 智能合约安全分析器
一个**由 AI 驱动的智能合约审计系统**,结合了**静态分析(Slither)**、**检索增强生成(RAG)** 以及**本地大语言模型(通过 Ollama 运行的 Llama3)**,用于检测、分析和解释 Solidity 合同中的漏洞。
# 概述
本项目旨在模拟**现实世界中的智能合约审计师**的工作方式:
- **静态工具**检测已知漏洞
- **AI 检索相似的攻击模式**
- **大语言模型以专家级别解释问题**
# 系统架构
```
┌──────────────┐
│ Contract │
└──────┬───────┘
↓
┌──────────────────────────┐
│Static Analysis (Slither) │
└──────────┬───────────────┘
↓
Vulnerabilities (facts)
↓
Scoring Engine
+
┌──────────────────────────┐
│ Embedding Model │
└──────────┬───────────────┘
↓
Vector Database (ChromaDB)
↓
Similar Contracts Retrieved
↓
Metadata (context)
↓
┌──────────────────────────┐
│ LLM (Llama3 via Ollama) │
└──────────┬───────────────┘
↓
Final Security Report
```
# 技术栈
### 静态分析
- **Slither** → 漏洞检测
### AI / RAG
- **SentenceTransformers (MiniLM)** → 嵌入向量
- **ChromaDB** → 向量数据库
### 大语言模型
- **Ollama + Llama3 / Mistral** → 解释引擎
### 编程语言
- Python
# 📁 项目结构
```
ai-smart-contract-analyzer/
├── analyzer/
│ ├── loader.py # Load contract
│ ├── slither_runner.py # Run Slither
│ ├── parser.py # Extract vulnerabilities
│ ├── embedder.py # Generate embeddings
│ ├── vector_store.py # ChromaDB interface
│ ├── rag_engine.py # Similarity search
│ ├── data_loader.py # Load dataset into DB
│ ├── llm_engine.py # LLM explanation
│
├── data/
│ ├── vulnerable_contracts/
│ ├── metadata.json
│
├── analyze.py # Main CLI entry point
└── README.md
```
# 系统流程(逐步说明)
## 1. 输入层
用户提供:
```
.sol file
```
处理方式:
```
loader.py
```
输出:原始 Solidity 代码(字符串)
## 2. 静态分析(Slither)
```
slither_runner.py
```
执行:
```
slither contract.sol --json result.json
```
👉 输出:
```
{
"check": "reentrancy-eth",
"impact": "High",
"description": "..."
}
```
## 3. 解析层
```
parser.py
```
提取结构化的漏洞信息:
```
[
{
"check": "reentrancy-eth",
"impact": "High"
}
]
```
## 4. 评分引擎
```
analyze.py
```
采用加权评分:
| 影响等级 | 惩罚分 |
| -------- | ------ |
| 高 | -25 |
| 中 | -15 |
| 低 | -10 |
| 信息性 | -5 |
示例:
```
Score = 100 - penalties
```
## 5. 嵌入层(AI)
```
embedder.py
```
将合约转换为向量:
```
Solidity Code → 384-dim vector
```
表示**代码的语义含义**
## 6. 向量数据库(记忆)
```
vector_store.py
```
存储:
```
[id, contract_code, embedding, metadata]
```
## 7. 数据集(知识库)
### 为何需要?
AI 需要**示例进行比较**
### 📄 metadata.json
```
{
"vulnerability": "reentrancy",
"description": "External call before state update..."
}
```
为原始代码**添加语义信息**
### 关键洞见
```
Code alone = syntax
Code + metadata = knowledge
```
## 8. RAG 引擎(相似度搜索)
```
rag_engine.py
```
处理流程:
```
Input contract → embedding → compare with DB → retrieve closest matches
```
### 相似度度量
- 使用**向量距离**
- 距离越小 → 越相似
```
0.0 → identical
0.1 → very similar
0.3+ → less similar
```
## 9. 大语言模型解释引擎
```
llm_engine.py
```
使用:
- 合约代码
- Slither 输出
- RAG 检索结果
### 提示词结构
```
Contract
+
Detected Issues
+
Similar Patterns
↓
LLM Explanation
```
### 输出
```
- Explanation
- Exploitation scenario
- Fix suggestions
```
# 核心设计哲学
## 1. 混合智能
```
Slither → factual correctness
RAG → contextual similarity
LLM → human explanation
```
## 2. grounded AI(基于事实的 AI)
LLM 不允许随意猜测。
```
AI is grounded on:
✔ Slither results
✔ RAG context
```
## 3. 模块化架构
各组件相互独立:
- 可升级嵌入模型
- 可替换大语言模型
- 可改进数据集
# 🧪 示例输出
```
===== SECURITY REPORT =====
Score: 65/100
===== AI SECURITY ANALYSIS =====
1. Reentrancy Vulnerability:
Explanation: External call before state update...
Attack: Recursive withdraw exploit...
Fix: Use Checks-Effects-Interactions pattern
2. Solidity Version Issue:
...
3. Low-Level Call Risk:
...
```
# 当前限制
- 大语言模型在本地运行 → 在 CPU 上较慢
- 数据集较小 → 情报有限
- 仅提供 CLI,无 UI/API
- 无 AST 级分析
# 关键经验
本项目展示了:
- 智能合约安全基础
- 静态分析集成
- RAG 系统设计
- 大语言模型 grounding 技术
- 端到端 AI 系统架构
# 最终洞见
本系统**不是**:
```
AI replacing auditors
```
而是:
```
AI assisting auditors
```
标签:AI安全, AI风险缓解, Chat Copilot, ChromaDB, Llama3, LLM, LLM评估, MiniLM, Ollama, RAG, SentenceTransformers, SEO: AI安全, SEO: Solidity漏洞检测, SEO: 智能合约审计, Slither, Solidity, Unmanaged PE, 云安全监控, 人工智能审计, 代码分析, 凭证管理, 区块链安全, 合约漏洞, 向量数据库, 安全报告, 嵌入模型, 智能合约安全, 智能合约审计, 检索增强生成, 漏洞解释, 评分引擎, 逆向工具, 静态分析