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集成, 前端仪表盘, 区块链, 去中心化应用, 合约交互, 安全扫描, 安全插件, 时序注入, 智能合约, 智能合约安全, 自动化攻击