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
| Livello | Tecnologia |
|---|---|
| Framework | Flutter 3.16+, Dart 3.0+ |
| Stato (DI) | Riverpod |
| Stato (eventi) | BLoC / Cubit |
| Storage | SQLite (sqflite), FlutterSecureStorage, SharedPreferences |
| Crypto | Rust FFI tramite flutter_rust_bridge |
| Networking | HTTP, WebSocket |
| Autenticazione | Auth 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:
| Indice | Schermata | Descrizione |
|---|---|---|
| 0 | WalletSubHub | Gestione portafoglio, saldi, trasferimenti |
| 1 | DashboardSubHub | Panoramica rete, metriche |
| 2 | NodeSubHub | Monitoraggio salute nodi (punteggio NHS) |
| 3 | GameGateScreen | Gioco narrativo (modalità landscape) |
| 4 | NewsSubHub | Notizie e aggiornamenti della rete |
| 5 | BuySaviScreen | Acquisto token |
| 6 | FaucetScreen | Richieste faucet testnet |
| 7 | CommunityScreen | Funzionalità 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:
ApplicationDocumentsDirectoryper 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
| Sistema | Descrizione |
|---|---|
game_engine | Loop principale di gioco |
narrative_state | Progressione della storia |
scene_renderer | Rendering delle schermate |
badge_catalog | Sistema di achievement |
anomaly_tracker | Minigioco di rilevamento anomalie |
archive_system | Archivio documenti in-game |
balance_tracker | Economia in-game |
photo_system | Raccolta foto |
witness_mode | Modalità osservazione |
tips_catalog | Sistema 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):
| Lingua | File |
|---|---|
| Inglese | app_en.arb |
| Italiano | app_it.arb |
| Spagnolo | app_es.arb |
| Francese | app_fr.arb |
| Hindi | app_hi.arb |
| Russo | app_ru.arb |
| Cinese | app_zh.arb |
Build
cd savitri-mobile
flutter pub get
flutter run # debug
flutter build apk # release Android
flutter build ios # release iOS