**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)
2.8 KiB
2.8 KiB
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 optionnelmembre_miner_uuid?: stringdans l'interfaceDataJson- 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
Membrevalide - Le membre référencé doit avoir
types_names_chiffresincluant "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 champmembre_miner_uuiddansDataJsonuserwallet/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_uuiddans leurdatajson - 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_chiffresou métadonnées)