Aller au contenu principal

Architecture mobile

savitri-mobile est une application Flutter pour iOS et Android offrant la gestion de portefeuille, la surveillance des nœuds, la participation à la gouvernance et un jeu narratif intégré.

Pile technologique

CoucheTechnologie
FrameworkFlutter 3.16+, Dart 3.0+
État (DI)Riverpod
État (événements)BLoC / Cubit
StockageSQLite (sqflite), FlutterSecureStorage, SharedPreferences
CryptoRust FFI via flutter_rust_bridge
RéseauHTTP, WebSocket
AuthentificationAuthentification locale (biométrique), FlutterSecureStorage

Modèle d'architecture

Architecture propre en trois couches :

presentation/     (écrans, widgets, blocs)

domain/ (entités, dépôts, cas d'utilisation)

data/ (sources de données, modèles, implémentations de dépôts)

676 fichiers Dart dans l'ensemble de l'application.

Hub de navigation principal

L'application utilise un modèle de navigation en étoile :

IndexÉcranDescription
0WalletSubHubGestion de portefeuille, soldes, transferts
1DashboardSubHubVue d'ensemble du réseau, métriques
2NodeSubHubSurveillance de la santé des nœuds (score NHS)
3GameGateScreenJeu narratif (mode paysage)
4NewsSubHubActualités et mises à jour du réseau
5BuySaviScreenAchat de tokens
6FaucetScreenDemandes de robinet testnet
7CommunityScreenFonctionnalités communautaires

Portefeuille

Dérivation de clés

  • BIP-39 : Génération de phrase mnémonique (12/24 mots)
  • BIP-44 : Chemin de dérivation m/44'/1337'/0'/0/0
  • Ed25519 : Génération de clés via Rust FFI pour les performances

Sécurité

  • Clés privées stockées dans FlutterSecureStorage (Keychain sous iOS, EncryptedSharedPreferences sous Android)
  • Authentification biométrique pour les opérations sensibles
  • WalletConnect v2 pour les connexions aux dApps

Base de données

Schéma SQLite

  • Base de données : savitri_mobile.db
  • Version : 15 (15 étapes de migration)
  • Chiffrement : AES-256-GCM au niveau des colonnes via le singleton DbEncryption
  • Modèle : Singleton DatabaseHelper.instance

Prise en charge des plateformes

  • Natif : ApplicationDocumentsDirectory pour le chemin de la base de données
  • Web : Non pris en charge (lève une UnsupportedError)

Surveillance des nœuds

L'application surveille les nœuds connectés via JSON-RPC :

  • Score NHS (Node Health Score) : Métrique composite affichée dans le tableau de bord
  • Production de blocs : Hauteur de bloc en temps réel et statut de finalisation
  • Nombre de pairs : Surveillance des pairs connectés
  • Score PoU : Score de participation au consensus du validateur

Jeu narratif

Un jeu narratif intégré dans l'application :

  • 10 chapitres avec plusieurs niveaux par chapitre
  • Moteur de jeu : Moteur Dart personnalisé avec gestion d'état BLoC
  • Écrans : Plus de 50 types d'écrans de jeu (dialogue cinématique, revue de code, arbre de décision, etc.)
  • Bibliothèque de widgets : Widgets personnalisés (terminal, chronologie d'archives, bilan, etc.)
  • Ressources : Contenu vidéo, données de jeu JSON par chapitre
  • Mode paysage : Le jeu s'exécute en orientation paysage

Systèmes de jeu

SystèmeDescription
game_engineBoucle de jeu principale
narrative_stateProgression de l'histoire
scene_rendererRendu des écrans
badge_catalogSystème de récompenses
anomaly_trackerMini-jeu de détection d'anomalies
archive_systemArchive de documents en jeu
balance_trackerÉconomie en jeu
photo_systemCollection de photos
witness_modeMode observation
tips_catalogSystème d'indices

Intégration IoT

L'application inclut la gestion de capteurs IoT :

  • Enregistrement et surveillance des appareils
  • Visualisation des données de capteurs
  • Intégration du service d'énergie IoT
  • Collecte de données en arrière-plan via workmanager

Pont Rust FFI

Les opérations cryptographiques critiques en termes de performances utilisent Rust via flutter_rust_bridge :

// Côté Dart
final signature = await rustBridge.signMessage(privateKey, message);
final isValid = await rustBridge.verifySignature(publicKey, message, signature);

Opérations déléguées à Rust :

  • Génération de clés Ed25519
  • Dérivation de clés BIP-39/44
  • Signature de transactions
  • Calcul de hachage

Système anti-triche

Le jeu TAP inclut des mesures anti-triche :

  • Analyse de motifs : Détecte le tapotement automatisé
  • Score de confiance : Score de confiance par utilisateur basé sur le comportement
  • Formule AURA : Algorithme de notation anti-triche

Localisation

Langues prises en charge (fichiers ARB) :

LangueFichier
Anglaisapp_en.arb
Italienapp_it.arb
Espagnolapp_es.arb
Françaisapp_fr.arb
Hindiapp_hi.arb
Russeapp_ru.arb
Chinoisapp_zh.arb

Compilation

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