Arquitectura Móvil
savitri-mobile es una aplicación Flutter para iOS y Android que ofrece gestión de billetera, monitoreo de nodos, participación en gobernanza y un juego narrativo integrado.
Pila Tecnológica
| Capa | Tecnología |
|---|---|
| Framework | Flutter 3.16+, Dart 3.0+ |
| Estado (DI) | Riverpod |
| Estado (eventos) | BLoC / Cubit |
| Almacenamiento | SQLite (sqflite), FlutterSecureStorage, SharedPreferences |
| Criptografía | Rust FFI vía flutter_rust_bridge |
| Red | HTTP, WebSocket |
| Autenticación | Autenticación local (biométrica), FlutterSecureStorage |
Patrón de Arquitectura
Arquitectura Limpia con tres capas:
presentation/ (pantallas, widgets, blocs)
│
domain/ (entidades, repositorios, casos de uso)
│
data/ (fuentes de datos, modelos, implementaciones de repositorios)
676 archivos Dart en toda la aplicación.
Centro de Navegación Principal
La aplicación utiliza un patrón de navegación de hub central con radios:
| Índice | Pantalla | Descripción |
|---|---|---|
| 0 | WalletSubHub | Gestión de billetera, saldos, transferencias |
| 1 | DashboardSubHub | Resumen de red, métricas |
| 2 | NodeSubHub | Monitoreo de salud del nodo (puntuación NHS) |
| 3 | GameGateScreen | Juego narrativo (modo horizontal) |
| 4 | NewsSubHub | Noticias y actualizaciones de la red |
| 5 | BuySaviScreen | Compra de tokens |
| 6 | FaucetScreen | Reclamaciones del faucet de testnet |
| 7 | CommunityScreen | Funciones comunitarias |
Billetera
Derivación de Claves
- BIP-39: Generación de frase mnemónica (12/24 palabras)
- BIP-44: Ruta de derivación
m/44'/1337'/0'/0/0 - Ed25519: Generación de claves vía Rust FFI para mayor rendimiento
Seguridad
- Claves privadas almacenadas en
FlutterSecureStorage(Keychain en iOS, EncryptedSharedPreferences en Android) - Autenticación biométrica para operaciones sensibles
- WalletConnect v2 para conexiones con dApps
Base de Datos
Esquema SQLite
- Base de datos:
savitri_mobile.db - Versión: 15 (15 pasos de migración)
- Cifrado: A nivel de columna AES-256-GCM vía singleton
DbEncryption - Patrón: Singleton
DatabaseHelper.instance
Soporte de Plataformas
- Nativo:
ApplicationDocumentsDirectorypara la ruta de la base de datos - Web: No compatible (lanza
UnsupportedError)
Monitoreo de Nodos
La aplicación monitorea los nodos conectados vía JSON-RPC:
- Puntuación NHS (Node Health Score): Métrica compuesta mostrada en el panel de control
- Producción de bloques: Altura de bloque y estado de finalización en tiempo real
- Conteo de pares: Monitoreo de pares conectados
- Puntuación PoU: Puntuación de participación en consenso del validador
Juego Narrativo
Un juego narrativo integrado en la aplicación:
- 10 capítulos con múltiples niveles por capítulo
- Motor de juego: Motor Dart personalizado con gestión de estado BLoC
- Pantallas: Más de 50 tipos de pantalla de juego (diálogo cinematográfico, revisión de código, árbol de decisiones, etc.)
- Biblioteca de widgets: Widgets personalizados (terminal, línea de tiempo de archivo, balance sheet, etc.)
- Recursos: Contenido de vídeo, datos de juego JSON por capítulo
- Modo horizontal: El juego se ejecuta en orientación horizontal
Sistemas de Juego
| Sistema | Descripción |
|---|---|
game_engine | Bucle central del juego |
narrative_state | Progresión de la historia |
scene_renderer | Renderizado de pantallas |
badge_catalog | Sistema de logros |
anomaly_tracker | Minijuego de detección de anomalías |
archive_system | Archivo de documentos del juego |
balance_tracker | Economía del juego |
photo_system | Colección de fotos |
witness_mode | Modo de observación |
tips_catalog | Sistema de pistas |
Integración IoT
La aplicación incluye gestión de sensores IoT:
- Registro y monitoreo de dispositivos
- Visualización de datos de sensores
- Integración del servicio de energía IoT
- Recopilación de datos en segundo plano vía
workmanager
Puente Rust FFI
Las operaciones criptográficas críticas para el rendimiento usan Rust vía flutter_rust_bridge:
// Lado Dart
final signature = await rustBridge.signMessage(privateKey, message);
final isValid = await rustBridge.verifySignature(publicKey, message, signature);
Operaciones delegadas a Rust:
- Generación de claves Ed25519
- Derivación de claves BIP-39/44
- Firma de transacciones
- Cómputo de hash
Sistema Antitrampas
El juego TAP incluye medidas antitrampas:
- Análisis de patrones: Detecta pulsaciones automatizadas
- Puntuación de confianza: Puntuación de confianza por usuario basada en el comportamiento
- Fórmula AURA: Algoritmo de puntuación antitrampas
Localización
Idiomas soportados (archivos ARB):
| Idioma | Archivo |
|---|---|
| Inglés | app_en.arb |
| Italiano | app_it.arb |
| Español | app_es.arb |
| Francés | app_fr.arb |
| Hindi | app_hi.arb |
| Ruso | app_ru.arb |
| Chino | app_zh.arb |
Compilación
cd savitri-mobile
flutter pub get
flutter run # depuración
flutter build apk # versión Android
flutter build ios # versión iOS