移动端架构
savitri-mobile 是一款面向 iOS 和 Android 的 Flutter 应用,提供钱包管理、节点监控、治理参与以及集成叙事游戏等功能。
技术栈
| 层级 | 技术 |
|---|---|
| 框架 | Flutter 3.16+,Dart 3.0+ |
| 状态管理(依赖注入) | Riverpod |
| 状态管理(事件) | BLoC / Cubit |
| 存储 | SQLite(sqflite)、FlutterSecureStorage、SharedPreferences |
| 密码学 | 通过 flutter_rust_bridge 调用 Rust FFI |
| 网络 | HTTP、WebSocket |
| 身份验证 | 本地认证(生物识别)、FlutterSecureStorage |
架构模式
采用三层清洁架构(Clean Architecture):
presentation/ (屏幕、组件、bloc)
│
domain/ (实体、仓储、用例)
│
data/ (数据源、模型、仓储实现)
应用包含 676 个 Dart 文件。
主导航中枢
应用采用中枢辐射式导航模式:
| 索引 | 页面 | 描述 |
|---|---|---|
| 0 | WalletSubHub | 钱包管理、余额、转账 |
| 1 | DashboardSubHub | 网络概览、指标 |
| 2 | NodeSubHub | 节点健康监控(NHS 分数) |
| 3 | GameGateScreen | 叙事游戏(横屏模式) |
| 4 | NewsSubHub | 网络新闻与动态 |
| 5 | BuySaviScreen | 代币购买 |
| 6 | FaucetScreen | 测试网水龙头领取 |
| 7 | CommunityScreen | 社区功能 |
钱包
密钥派生
- BIP-39:助记词生成(12/24 个单词)
- BIP-44:派生路径
m/44'/1337'/0'/0/0 - Ed25519:通过 Rust FFI 进行密钥生成,性能更优
安全性
- 私钥存储于
FlutterSecureStorage(iOS 使用 Keychain,Android 使用 EncryptedSharedPreferences) - 敏感操作需生物识别验证
- 通过 WalletConnect v2 连接 dApp
数据库
SQLite 模式
- 数据库:
savitri_mobile.db - 版本:15(15 个迁移步骤)
- 加密:通过
DbEncryption单例实现列级 AES-256-GCM 加密 - 模式:单例
DatabaseHelper.instance
平台支持
- 原生:数据库路径使用
ApplicationDocumentsDirectory - Web:不支持(抛出
UnsupportedError)
节点监控
应用通过 JSON-RPC 监控已连接节点:
- NHS 分数(节点健康分数):在仪表盘中显示的综合指标
- 区块生产:实时区块高度和最终确定状态
- 节点数量:已连接节点监控
- PoU 分数:验证者共识参与分数
叙事游戏
集成于应用中的叙事游戏:
- 10 个章节,每章含多个关卡
- 游戏引擎:自定义 Dart 引擎,使用 BLoC 状态管理
- 屏幕类型:50+ 种游戏屏幕(过场对话、代码审查、决策树等)
- 组件库:自定义组件(终端、档案时间线、资产负债表等)
- 资源:视频内容、每章 JSON 游戏数据
- 横屏模式:游戏以横屏方向运行
游戏系统
| 系统 | 描述 |
|---|---|
game_engine | 核心游戏循环 |
narrative_state | 故事进度 |
scene_renderer | 场景渲染 |
badge_catalog | 成就系统 |
anomaly_tracker | 异常检测小游戏 |
archive_system | 游戏内文档档案 |
balance_tracker | 游戏内经济系统 |
photo_system | 照片收集 |
witness_mode | 观察模式 |
tips_catalog | 提示系统 |
IoT 集成
应用包含 IoT 传感器管理功能:
- 设备注册与监控
- 传感器数据可视化
- IoT 能源服务集成
- 通过
workmanager进行后台数据采集
Rust FFI 桥接
性能敏感的密码学操作通过 flutter_rust_bridge 调用 Rust:
// Dart 侧
final signature = await rustBridge.signMessage(privateKey, message);
final isValid = await rustBridge.verifySignature(publicKey, message, signature);
委托给 Rust 的操作:
- Ed25519 密钥生成
- BIP-39/44 密钥派生
- 交易签名
- 哈希计算
反作弊系统
TAP 游戏包含反作弊措施:
- 行为分析:检测自动点击
- 信任评分:基于行为的用户信任分数
- AURA 公式:反作弊评分算法
本地化
支持的语言(ARB 文件):
| 语言 | 文件 |
|---|---|
| 英语 | app_en.arb |
| 意大利语 | app_it.arb |
| 西班牙语 | app_es.arb |
| 法语 | app_fr.arb |
| 印地语 | app_hi.arb |
| 俄语 | app_ru.arb |
| 中文 | app_zh.arb |
构建
cd savitri-mobile
flutter pub get
flutter run # 调试模式
flutter build apk # Android 发布版本
flutter build ios # iOS 发布版本