Мобильная архитектура
savitri-mobile — это Flutter-приложение для iOS и Android, обеспечивающее управление кошельком, мониторинг нод, участие в управлении и интегрированную нарративную игру.
Технологический стек
| Уровень | Технология |
|---|---|
| Фреймворк | Flutter 3.16+, Dart 3.0+ |
| Состояние (DI) | Riverpod |
| Состояние (события) | BLoC / Cubit |
| Хранилище | SQLite (sqflite), FlutterSecureStorage, SharedPreferences |
| Криптография | Rust FFI через flutter_rust_bridge |
| Сеть | HTTP, WebSocket |
| Аутентификация | Локальная аутентификация (биометрия), FlutterSecureStorage |
Архитектурный паттерн
Чистая архитектура с тремя слоями:
presentation/ (экраны, виджеты, blocs)
│
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(Keychain на iOS, EncryptedSharedPreferences на Android) - Биометрическая аутентификация для чувствительных операций
- WalletConnect v2 для подключения к dApp
База данных
Схема SQLite
- База данных:
savitri_mobile.db - Версия: 15 (15 шагов миграции)
- Шифрование: На уровне столбца AES-256-GCM через синглтон
DbEncryption - Паттерн: Синглтон
DatabaseHelper.instance
Поддержка платформ
- Нативная:
ApplicationDocumentsDirectoryдля пути к БД - Веб: не поддерживается (выбрасывает
UnsupportedError)
Мониторинг нод
Приложение мониторит подключённые ноды через JSON-RPC:
- Оценка NHS (Node Health Score): составная метрика, отображаемая в дашборде
- Производство блоков: реальная высота блоков и статус финализации
- Количество узлов: мониторинг подключённых одноранговых узлов
- Оценка 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
Критически важные для производительности криптографические операции используют Rust через flutter_rust_bridge:
// Сторона 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