Passa al contenuto principale

Architettura Mobile

savitri-mobile è un'applicazione Flutter per iOS e Android che fornisce gestione del portafoglio, monitoraggio dei nodi, partecipazione alla governance e un gioco narrativo integrato.

Stack Tecnologico

LivelloTecnologia
FrameworkFlutter 3.16+, Dart 3.0+
Stato (DI)Riverpod
Stato (eventi)BLoC / Cubit
StorageSQLite (sqflite), FlutterSecureStorage, SharedPreferences
CryptoRust FFI tramite flutter_rust_bridge
NetworkingHTTP, WebSocket
AutenticazioneAuth locale (biometrica), FlutterSecureStorage

Pattern Architetturale

Clean Architecture con tre livelli:

presentation/     (schermate, widget, bloc)

domain/ (entità, repository, casi d'uso)

data/ (datasource, modelli, implementazioni repository)

676 file Dart nell'applicazione.

Hub di Navigazione Principale

L'app utilizza un pattern di navigazione hub-and-spoke:

IndiceSchermataDescrizione
0WalletSubHubGestione portafoglio, saldi, trasferimenti
1DashboardSubHubPanoramica rete, metriche
2NodeSubHubMonitoraggio salute nodi (punteggio NHS)
3GameGateScreenGioco narrativo (modalità landscape)
4NewsSubHubNotizie e aggiornamenti della rete
5BuySaviScreenAcquisto token
6FaucetScreenRichieste faucet testnet
7CommunityScreenFunzionalità community

Portafoglio

Derivazione delle Chiavi

  • BIP-39: Generazione frase mnemonica (12/24 parole)
  • BIP-44: Percorso di derivazione m/44'/1337'/0'/0/0
  • Ed25519: Generazione chiavi tramite Rust FFI per le prestazioni

Sicurezza

  • Chiavi private conservate in FlutterSecureStorage (Keychain su iOS, EncryptedSharedPreferences su Android)
  • Autenticazione biometrica per le operazioni sensibili
  • WalletConnect v2 per le connessioni dApp

Database

Schema SQLite

  • Database: savitri_mobile.db
  • Versione: 15 (15 passi di migrazione)
  • Cifratura: AES-256-GCM a livello di colonna tramite singleton DbEncryption
  • Pattern: Singleton DatabaseHelper.instance

Supporto Piattaforme

  • Nativo: ApplicationDocumentsDirectory per il percorso DB
  • Web: Non supportato (lancia UnsupportedError)

Monitoraggio dei Nodi

L'app monitora i nodi connessi tramite JSON-RPC:

  • Punteggio NHS (Node Health Score): Metrica composita visualizzata nel dashboard
  • Produzione blocchi: Altezza blocco in tempo reale e stato di finalizzazione
  • Conteggio peer: Monitoraggio dei peer connessi
  • Punteggio PoU: Punteggio di partecipazione al consenso del validatore

Gioco Narrativo

Un gioco narrativo integrato nell'app:

  • 10 capitoli con più livelli per capitolo
  • Engine di gioco: Engine Dart personalizzato con gestione stato BLoC
  • Schermate: 50+ tipi di schermata di gioco (dialogo cinematografico, revisione codice, albero decisionale, ecc.)
  • Libreria widget: Widget personalizzati (terminale, timeline archivio, bilancio, ecc.)
  • Asset: Contenuti video, dati JSON di gioco per capitolo
  • Modalità landscape: Il gioco gira in orientamento orizzontale

Sistemi di Gioco

SistemaDescrizione
game_engineLoop principale di gioco
narrative_stateProgressione della storia
scene_rendererRendering delle schermate
badge_catalogSistema di achievement
anomaly_trackerMinigioco di rilevamento anomalie
archive_systemArchivio documenti in-game
balance_trackerEconomia in-game
photo_systemRaccolta foto
witness_modeModalità osservazione
tips_catalogSistema di suggerimenti

Integrazione IoT

L'app include la gestione dei sensori IoT:

  • Registrazione e monitoraggio dispositivi
  • Visualizzazione dati sensore
  • Integrazione servizio energia IoT
  • Raccolta dati in background tramite workmanager

Bridge Rust FFI

Le operazioni crittografiche critiche per le prestazioni usano Rust tramite flutter_rust_bridge:

// Lato Dart
final signature = await rustBridge.signMessage(privateKey, message);
final isValid = await rustBridge.verifySignature(publicKey, message, signature);

Operazioni delegate a Rust:

  • Generazione chiavi Ed25519
  • Derivazione chiavi BIP-39/44
  • Firma delle transazioni
  • Calcolo hash

Sistema Anti-Cheat

Il gioco TAP include misure anti-cheat:

  • Analisi dei pattern: Rileva i tap automatizzati
  • Punteggio di fiducia: Punteggio di fiducia per utente basato sul comportamento
  • Formula AURA: Algoritmo di punteggio anti-cheat

Localizzazione

Lingue supportate (file ARB):

LinguaFile
Ingleseapp_en.arb
Italianoapp_it.arb
Spagnoloapp_es.arb
Franceseapp_fr.arb
Hindiapp_hi.arb
Russoapp_ru.arb
Cineseapp_zh.arb

Build

cd savitri-mobile
flutter pub get
flutter run # debug
flutter build apk # release Android
flutter build ios # release iOS