**Motivations:** - Corriger erreur syntaxe double déclaration const now dans bitcoin-rpc.js - Scripts batch en .mjs (ES modules) sans dépendance dotenv - /api/utxo/count doit accepter catégorie ancrages (pluriel) du fichier **Root causes:** - const now déclaré deux fois dans même portée (lignes 294 et 299) - Scripts utilisent dotenv non installé globalement - /api/utxo/count cherchait seulement 'anchor' mais fichier utilise 'ancrages' **Correctifs:** - Supprimer deuxième déclaration const now (ligne 299) - Scripts .mjs : parser .env manuellement sans dotenv - /api/utxo/count : accepter 'anchor' OU 'ancrages' **Evolutions:** - Aucune **Pages affectées:** - signet-dashboard/src/bitcoin-rpc.js - signet-dashboard/src/server.js - scripts/complete-utxo-list-blocktime.mjs - scripts/diagnose-bloc-rewards.mjs
1.9 KiB
1.9 KiB
UserWallet API Relay
Serveur de relais pour le système de login décentralisé UserWallet.
Fonctionnalités
- Stockage des messages chiffrés (sans signatures ni clés)
- Stockage séparé des signatures
- Stockage séparé des clés de déchiffrement
- Relais entre pairs (inter-relay)
- Déduplication par hash
- Endpoints REST pour GET/POST
Installation
npm install
Configuration
Variables d'environnement :
PORT: Port d'écoute (défaut: 3019)HOST: Adresse d'écoute (défaut: 0.0.0.0)STORAGE_PATH: Chemin de stockage (défaut: ./data)PEER_RELAYS: Liste de relais pairs séparés par virgule (ex: http://relay1:3019,http://relay2:3019)
Développement
npm run dev
Build
npm run build
npm start
Endpoints
Health
GET /health- Vérification de santé
Messages
GET /messages?start=<timestamp>&end=<timestamp>&service=<uuid>- Récupérer les messages dans une fenêtre temporellePOST /messages- Publier un message chiffréGET /messages/:hash- Récupérer un message par hash
Signatures
GET /signatures/:hash- Récupérer les signatures pour un messagePOST /signatures- Publier une signature
Clés
GET /keys/:hash- Récupérer les clés de déchiffrement pour un messagePOST /keys- Publier une clé de déchiffrement
Architecture
Le relais respecte la séparation stricte :
- Messages publiés sans signatures ni clés
- Signatures publiées séparément
- Clés publiées séparément
La déduplication par hash évite de relayer deux fois le même message.
Stockage
Stockage en mémoire avec persistance sur disque ({STORAGE_PATH}/messages.json). Sont persistés : messages, seenHashes, signatures, clés. Sauvegarde à l’arrêt (SIGINT/SIGTERM) et périodiquement si SAVE_INTERVAL_SECONDS > 0. En production, une base de données (SQLite, PostgreSQL, etc.) est recommandée.