Veritas-Vaults-Network/Soroban-Guard-web
GitHub: Veritas-Vaults-Network/Soroban-Guard-web
这是一个用于扫描 Stellar 区块链上 Soroban 智能合约并可视化安全发现结果的 Web 仪表板。
Stars: 0 | Forks: 0
# Soroban Guard Web
**Soroban Guard** 的前端仪表板——用于 **Stellar 区块链**上 [Soroban](https://soroban.stellar.org/) 智能合约的自动化安全扫描器。
使用 Next.js 14、TypeScript 和 Tailwind CSS 构建。属于 [Veritas Vaults Network](https://github.com/Veritas-Vaults-Network) 生态系统的一部分。
## Stellar 区块链集成
Soroban Guard 专为 **Stellar / Soroban** 生态系统构建。以下是其前端与区块链的集成方式:
### Freighter 钱包
[Freighter](https://freighter.app) 是官方的 Stellar 浏览器扩展钱包。仪表板通过 `window.freighter` 与其集成:
- 直接从页眉连接您的 Stellar 账户(G-address)
- 自动检测活跃网络(Mainnet / Testnet / Futurenet)
- 显示实时的网络徽章,让您始终知道自己所在的链
- 钱包状态用于预填充已连接账户的上下文,以便支持未来的链上功能(例如作为 Soroban 合约调用提交扫描结果)
```
// lib/wallet.ts
import { connectFreighter, getFreighterNetwork } from '@/lib/wallet'
const publicKey = await connectFreighter() // G-address
const network = await getFreighterNetwork() // { name, networkPassphrase, horizonUrl, sorobanRpcUrl }
```
### Soroban 合约 ID 扫描
除了粘贴源代码或 GitHub URL,用户还可以直接通过 Soroban 合约 ID(C-address)扫描**已部署的合约**:
1. 在扫描输入的“Contract ID”标签页中输入 C-address
2. 核心 API(`soroban-guard-core`)通过 Soroban RPC 解析 WASM 字节码
3. 对 WASM 进行反编译并分析漏洞
4. 返回发现结果并在结果仪表板中显示
```
CAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD2KM
```
### Horizon 与 Soroban RPC
`lib/stellar.ts` 为直接查询区块链提供了类型化辅助函数:
| 函数 | 描述 |
|---|---|
| `fetchContractInfo(contractId, network)` | 从 Horizon REST API 获取合约元数据 |
| `fetchContractWasm(contractId, network)` | 通过 `getContractWasm` RPC 获取 WASM 字节码 |
| `fetchContractCode(wasmHash, network)` | 通过 `getLedgerEntries` RPC 获取账本条目 |
| `checkNetworkHealth(network)` | Ping Horizon 以验证连通性 |
| `isValidContractId(id)` | 验证 C-address 格式 |
| `isValidPublicKey(key)` | 验证 G-address 格式 |
### 支持的网络
| 网络 | Horizon | Soroban RPC |
|---|---|---|
| Mainnet | `horizon.stellar.org` | `mainnet.stellar.validationcloud.io` |
| Testnet | `horizon-testnet.stellar.org` | `soroban-testnet.stellar.org` |
| Futurenet | `horizon-futurenet.stellar.org` | `rpc-futurenet.stellar.org` |
网络配置位于 `types/stellar.ts`,并自动与已连接的 Freighter 钱包同步。
## 功能
- 粘贴合约源代码、输入 GitHub 仓库 URL,或通过 Soroban 合约 ID 扫描
- 连接 Freighter 钱包——实时网络检测(Mainnet / Testnet / Futurenet)
- 通过 Soroban Guard Core REST API 进行实时扫描
- 带有严重性徽章(High / Medium / Low)的发现结果表
- 可展开的行,包含完整的发现详情(函数、文件、行号)
- 汇总栏,显示各严重性级别的计数
- 发现结果按 High → Medium → Low 排序
- 针对干净合约的空状态
- 默认为深色模式,完全响应式,支持键盘访问
## 技术栈
| 层级 | 技术 |
|---|---|
| 框架 | Next.js 14 (App Router) |
| 语言 | TypeScript (strict) |
| 样式 | Tailwind CSS |
| 钱包 | Freighter (Stellar browser extension) |
| 区块链 | Stellar Horizon REST API + Soroban RPC |
| API | Axum REST (soroban-guard-core) |
## 快速开始
```
# 安装 dependencies
npm install
# 设置 API URL(默认为 http://localhost:3001)
echo "NEXT_PUBLIC_API_URL=http://localhost:3001" > .env.local
# 运行 dev server
npm run dev
```
打开 [http://localhost:3000](http://localhost:3000)。
在浏览器中安装 [Freighter](https://freighter.app) 以启用钱包功能。
## 环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
| `NEXT_PUBLIC_API_URL` | `http://localhost:3001` | soroban-guard-core 的基础 URL |
## API 契约
应用调用核心 API 的 `POST /scan` 端点:
**请求**
```
{ "source": "" }
```
**响应**
```
{
"findings": [
{
"check_name": "unchecked-auth",
"severity": "High",
"file_path": "src/lib.rs",
"line": 42,
"function_name": "transfer",
"description": "Authorization is not verified before executing privileged operation."
}
]
}
```
## 项目结构
```
app/
page.tsx # Landing page — scan input + wallet connect
results/
page.tsx # Results page — findings table + summary
layout.tsx # Root layout + metadata
loading.tsx # Global loading spinner
not-found.tsx # 404 page
components/
ScanInput.tsx # Code / GitHub URL / Contract ID tabs + scan button
FindingsTable.tsx # Expandable findings table
FindingCard.tsx # Expanded finding detail card
SeverityBadge.tsx # High / Medium / Low colored pill
EmptyState.tsx # Clean contract illustration
WalletConnect.tsx # Freighter wallet connect button
NetworkBadge.tsx # Stellar network indicator pill
lib/
api.ts # fetch wrapper for soroban-guard-core
stellar.ts # Horizon REST + Soroban RPC helpers
wallet.ts # Freighter wallet integration
types/
findings.ts # Finding type matching core Rust struct
stellar.ts # Stellar network + wallet types
```
## 相关仓库
- [soroban-guard-core](https://github.com/Veritas-Vaults-Network/Soroban-Guard-Core) — Rust/Axum 分析引擎
- [soroban-guard-contracts](https://github.com/Veritas-Vaults-Network/soroban-guard-contracts) — 用于测试的示例合约
## 许可证
MIT
标签:DApp, Freighter钱包, RPC调用, Soroban, Stellar, Tailwind CSS, TypeScript, WASM, Web3集成, 前端仪表盘, 区块链, 去中心化应用, 合约交互, 安全扫描, 安全插件, 时序注入, 智能合约, 智能合约安全, 自动化攻击