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, 事件流处理, 区块链安全, 去中心化, 可视化界面, 威胁情报, 威胁评分, 实时仪表盘, 开发者工具, 异步编程, 态势感知, 智能合约, 测试用例, 游戏安全, 网络安全, 网络流量审计, 自动拦截, 请求拦截, 通知系统, 链上分析, 链上监控, 隐私保护, 黑客松项目