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

62 lines
2.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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)