跳到主要内容

移动端架构

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 文件

主导航中枢

应用采用中枢辐射式导航模式:

索引页面描述
0WalletSubHub钱包管理、余额、转账
1DashboardSubHub网络概览、指标
2NodeSubHub节点健康监控(NHS 分数)
3GameGateScreen叙事游戏(横屏模式)
4NewsSubHub网络新闻与动态
5BuySaviScreen代币购买
6FaucetScreen测试网水龙头领取
7CommunityScreen社区功能

钱包

密钥派生

  • 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 发布版本