Перейти к основному содержимому

Мобильная архитектура

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 в приложении.

Основной навигационный хаб

Приложение использует навигационный паттерн «хаб и спицы»:

ИндексЭкранОписание
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 (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