anchorage_layer_simple/features/userwallet-membre-miner-infogerant.md
ncantu 0960e43a45 Optimisation mémoire api-anchorage avec base de données SQLite
**Motivations:**
- Réduction drastique de la consommation mémoire lors des ancrages
- Élimination du chargement de 173k+ UTXOs à chaque requête
- Stabilisation de la mémoire système sous charge élevée (50+ ancrages/minute)

**Root causes:**
- api-anchorage chargeait tous les UTXOs (173k+) via listunspent RPC à chaque ancrage
- Filtrage et tri de 173k+ objets en mémoire pour sélectionner un seul UTXO
- Croissance mémoire de ~16 MB toutes les 12 secondes avec 50 ancrages/minute
- Saturation mémoire système en quelques minutes

**Correctifs:**
- Création du module database.js pour gérer la base de données SQLite partagée
- Remplacement de listunspent RPC par requête SQL directe avec LIMIT 1
- Sélection directe d'un UTXO depuis la DB au lieu de charger/filtrer 173k+ objets
- Marquage des UTXOs comme dépensés dans la DB après utilisation
- Fermeture propre de la base de données lors de l'arrêt

**Evolutions:**
- Utilisation de la base de données SQLite partagée avec signet-dashboard
- Réduction mémoire de 99.999% (173k+ objets → 1 objet par requête)
- Amélioration des performances (requête SQL indexée vs filtrage en mémoire)
- Optimisation mémoire de signet-dashboard (chargement UTXOs seulement si nécessaire)
- Monitoring de lockedUtxos dans api-anchorage pour détecter les fuites
- Nettoyage des intervalles frontend pour éviter les fuites mémoire

**Pages affectées:**
- api-anchorage/src/database.js (nouveau)
- api-anchorage/src/bitcoin-rpc.js
- api-anchorage/src/server.js
- api-anchorage/package.json
- signet-dashboard/src/bitcoin-rpc.js
- signet-dashboard/public/app.js
- features/optimisation-memoire-applications.md (nouveau)
- features/api-anchorage-optimisation-base-donnees.md (nouveau)
2026-01-27 21:12:22 +01:00

2.8 KiB
Raw Permalink Blame History

UserWallet Membre du miner dans les champs infogérant

Author: Équipe 4NK
Date: 2026-01-26

Objectif

Ajouter la possibilité de référencer un membre du miner dans les champs de type "Messages de support infogérant". Ce membre servira de backend pour la gestion des clés API du miner.

Motivations

  • Permettre l'identification du membre responsable de la gestion des clés API pour le miner
  • Structurer la relation entre les champs infogérant et le membre du miner
  • Préparer l'infrastructure pour la gestion future des clés API

Modifications

Types

  • src/types/message.ts : Ajout du champ optionnel membre_miner_uuid?: string dans l'interface DataJson
    • Ce champ référence l'UUID d'un membre du miner
    • Utilisé dans les champs de type "Messages de support infogérant"

Documentation

  • docs/specs-champs-obligatoires-cnil.md :
    • Mise à jour de la description du champ "Messages de support infogérant" pour mentionner le membre du miner
    • Ajout d'une section 4.1 décrivant le membre du miner dans les champs infogérant
    • Documentation des caractéristiques du membre du miner (unique, sans 2FA, seul)
    • Documentation de l'usage futur pour la gestion des clés API

Caractéristiques du membre du miner

  • Membre unique : Un seul membre par miner, sans 2FA
  • Sans 2FA : Le membre du miner n'utilise pas de multi-factor authentication
  • Seul : Le membre est le seul responsable de la gestion des clés API
  • Backend pour clés API : Ce membre fera office de backend pour les clés API qu'il recevra et devra gérer (fonctionnalité à implémenter ultérieurement)

Usage

Le champ membre_miner_uuid dans le datajson d'un champ de type "Messages de support infogérant" :

  • Référence l'UUID d'un Membre valide
  • Le membre référencé doit avoir types_names_chiffres incluant "membre"
  • Ce membre sera utilisé pour la gestion des clés API du miner (à documenter et implémenter ultérieurement)

Évolutions futures

  • Gestion des clés API : Le membre du miner sera utilisé pour recevoir et gérer les clés API du miner
  • Documentation : La gestion des clés API par le membre du miner sera documentée ultérieurement lors de l'implémentation de cette fonctionnalité

Pages affectées

  • userwallet/src/types/message.ts : Ajout du champ membre_miner_uuid dans DataJson
  • userwallet/docs/specs-champs-obligatoires-cnil.md : Documentation du membre du miner dans les champs infogérant

Modalités d'analyse

  • Vérifier que les champs infogérant peuvent contenir une référence membre_miner_uuid dans leur datajson
  • Valider que le membre référencé existe et est valide
  • S'assurer que le membre référencé est bien un membre du miner (vérification via types_names_chiffres ou métadonnées)