Saltar al contenido principal

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

CapaTecnología
FrameworkFlutter 3.16+, Dart 3.0+
Estado (DI)Riverpod
Estado (eventos)BLoC / Cubit
AlmacenamientoSQLite (sqflite), FlutterSecureStorage, SharedPreferences
CriptografíaRust FFI vía flutter_rust_bridge
RedHTTP, WebSocket
AutenticaciónAutenticació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:

ÍndicePantallaDescripción
0WalletSubHubGestión de billetera, saldos, transferencias
1DashboardSubHubResumen de red, métricas
2NodeSubHubMonitoreo de salud del nodo (puntuación NHS)
3GameGateScreenJuego narrativo (modo horizontal)
4NewsSubHubNoticias y actualizaciones de la red
5BuySaviScreenCompra de tokens
6FaucetScreenReclamaciones del faucet de testnet
7CommunityScreenFunciones 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: ApplicationDocumentsDirectory para 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

SistemaDescripción
game_engineBucle central del juego
narrative_stateProgresión de la historia
scene_rendererRenderizado de pantallas
badge_catalogSistema de logros
anomaly_trackerMinijuego de detección de anomalías
archive_systemArchivo de documentos del juego
balance_trackerEconomía del juego
photo_systemColección de fotos
witness_modeModo de observación
tips_catalogSistema 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):

IdiomaArchivo
Inglésapp_en.arb
Italianoapp_it.arb
Españolapp_es.arb
Francésapp_fr.arb
Hindiapp_hi.arb
Rusoapp_ru.arb
Chinoapp_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