mattwilkinsonn/sentinel

GitHub: mattwilkinsonn/sentinel

基于 Sui 区块链的去中心化威胁情报网络,为链游 EVE Frontier 提供实时玩家威胁评分和智能门禁拦截能力。

Stars: 1 | Forks: 0

# SENTINEL 去中心化威胁情报网络,服务于 [Sui](https://sui.io) 上的 [EVE Frontier](https://evefrontier.com)。 流式处理链上事件,计算威胁评分,将 结果发布到链上注册表,并提供实时 仪表板。Smart Gates 可基于 SENTINEL 评分 自主拦截高威胁飞行员。 为 EVE Frontier x Sui Hackathon 2026 构建。 ## 架构 ``` Sui Blockchain (gRPC checkpoint stream) | v +------------------+ +------------------+ | Rust Backend |----->| Postgres | | (Axum + Tokio) | | (Neon / Docker) | +------------------+ +------------------+ | REST + SSE v +------------------+ | Solid.js | | Dashboard | +------------------+ ``` **链上:** 用于威胁注册表和赏金榜的 Move 智能合约。 **后端:** Rust/Tokio 服务,具备真正的多线程并发。 生成并行任务用于 gRPC 检查点流式传输、 历史数据加载、链上发布、名称/系统解析和 DB 持久化 —— 所有任务 跨多个 CPU 核心同时运行。SSE 在处理完检查点后 立即将事件推送到前端。 **前端:** Solid.js 仪表板,具有细粒度响应性 (无虚拟 DOM diffing)。实时威胁排行榜、 事件订阅流、击杀统计、系统情报和 earned titles。 ### 并发模型 后端并行运行多个 Tokio 任务: - **gRPC stream** — 实时摄取 Sui 检查点 - **Historical loader** — 启动时从 GraphQL 加载配置文件作为种子数据 - **On-chain publisher** — 每 30 秒将威胁评分批量提交到 ThreatRegistry 合约 - **Metadata resolver** — 通过 World REST API 解析系统名称和部落 归属 - **DB sync loop** — 每 5 秒将变更的配置文件和事件刷新到 Postgres - **Demo event loop** — 生成逼真的模拟事件 - **HTTP server** — 并发提供 REST API + SSE 服务 与单线程异步运行时不同,Tokio 将 任务分配到所有可用的 CPU 核心。gRPC 流可以 在一个核心上处理检查点,而 API 在另一个核心上处理 请求 —— 真正的并行,而非协作式多任务处理。 共享状态使用具有严格短锁原则的 `Arc>`: - **读操作永不阻塞读操作。** 多个 API 请求 可以零竞争地同时读取威胁数据。 - **写操作持锁仅数微秒。** gRPC 处理程序 锁定、更新一个配置文件的统计数据、解锁 —— 然后移动 到下一个检查点。绝不会在网络调用、 磁盘写入或 `.await` 点期间持有锁。 - **昂贵的 I/O 发生在锁之外。** DB 同步循环 在短暂的写锁下快照变更的配置文件,然后 在不持有锁的情况下执行所有 Postgres upsert。Historical loader 在获取状态锁插入数据之前通过 GraphQL 解析门名称(网络 I/O)。 - **后台任务相互独立。** gRPC 流、 发布器、元数据解析器和 DB 同步循环各自 独立获取锁 —— 即使元数据解析器中的 World API 响应缓慢, 也永远不会阻塞 gRPC 流处理下一个检查点。 历史数据在后台加载,因此 API 在启动时 立即响应。 ## 技术栈 | 层级 | 技术 | | --------------- | ------------------------------------------ | | 智能合约 | Move (Sui) | | 后端 | Rust, Axum, Tokio, SQLx, tonic (gRPC) | | 数据库 | PostgreSQL 16 (Neon prod, Docker dev) | | 前端 | Solid.js, TailwindCSS 4, Vite | | 基础设施 | AWS ECS Fargate, CloudFront, SST | | CI/CD | GitHub Actions | | 代码检查 | Biome (TS), rustfmt (Rust), Prettier (Move)| ## 快速开始 ### 前置条件 - [Rust](https://rustup.rs/) - [Bun](https://bun.sh/) - [Docker](https://docs.docker.com/get-docker/) - [Just](https://github.com/casey/just) - [Sui CLI](https://docs.sui.io/guides/developer/getting-started/sui-install) - [pre-commit](https://pre-commit.com/) ### 设置 ``` # 安装依赖 just install # 安装 git hooks pre-commit install # 复制并填写环境变量 cp .env.example .env ``` ### 开发 ``` # 启动 Postgres + backend + frontend just dev # Backend: http://localhost:3001 # Frontend: http://localhost:5173 ``` 或单独运行组件: ``` just db # Start Postgres just backend-run # Start backend (needs DATABASE_URL) just frontend-dev # Start frontend dev server ``` ### 测试 ``` just backend-test # Rust unit tests just backend-test-integration # Postgres integration tests just frontend-test # Frontend tests just contracts-test # Move contract tests ``` ### 代码质量 ``` just fmt # Format everything just lint # Lint TypeScript (Biome) just check # Verify all formatting + linting ``` ## 项目结构 ``` sentinel/ move-contracts/ sentinel/ # Threat registry + smart gate bounty_board/ # Bounty board contract sentinel-backend/ # Rust backend service src/ api.rs # REST API + SSE endpoints grpc.rs # Checkpoint streaming + handlers threat_engine.rs # Threat scoring algorithm db.rs # Postgres persistence demo.rs # Demo mode (fake data) publisher.rs # On-chain publisher (WIP) migrations/ # SQL schema tests/ # Integration tests frontend/ # Solid.js dashboard src/ SentinelDashboard.tsx # Main dashboard BountyBoard.tsx # Bounty board UI views/ # Sub-views ts-scripts/ # Admin scripts infrastructure/ # SST deployment config .github/workflows/ # CI/CD pipeline ``` ## API 端点 | 端点 | 方法 | 描述 | | -------------------- | ------ | ------------------------------- | | `/api/data` | GET | 组合的演示 + 实时数据 | | `/api/events/stream` | SSE | 实时事件流 | | `/api/health` | GET | 健康检查 + 配置文件计数 | ## 威胁评分 分数范围从 0-100.00(内部存储为 0-10,000 个 基点,显示时除以 100),涵盖五个因素: | 因素 | 最大值 | 公式 | | ---------------- | ------ | -------------------- | | 新近度 (24h) | 3,500 | recent_kills * 600 | | 击杀数 | 2,000 | log2(kills+1) * 600 | | K/D 比率 | 1,500 | kd * 400 | | 赏金 | 1,500 | bounty_count * 500 | | 移动 | 500 | systems_visited * 100| 威胁等级:LOW (0-25), MODERATE (25.01-50), HIGH (50.01-75), CRITICAL (75.01+)。 ## 部署 ### 本地 (Docker Compose) ``` docker compose up --build ``` ### AWS (SST) ``` just deploy-dev # Deploy to dev stage just deploy # Deploy to production ``` 需要配置 AWS 凭证和 GitHub secrets。 有关资源定义,请参见 `infrastructure/sst.config.ts`。
标签:Axum, EVE Frontier, GitHub, gRPC, HTTP/HTTPS抓包, Move语言, PostgreSQL, Python工具, Rust, SSE, Sui, Tokio, Web3, 事件流处理, 区块链安全, 去中心化, 可视化界面, 威胁情报, 威胁评分, 实时仪表盘, 开发者工具, 异步编程, 态势感知, 智能合约, 测试用例, 游戏安全, 网络安全, 网络流量审计, 自动拦截, 请求拦截, 通知系统, 链上分析, 链上监控, 隐私保护, 黑客松项目