ncantu 0db7a76044 Fix: double déclaration const now, scripts .mjs, /api/utxo/count accepte ancrages
**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
2026-01-26 02:06:10 +01:00
..

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 temporelle
  • POST /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 message
  • POST /signatures - Publier une signature

Clés

  • GET /keys/:hash - Récupérer les clés de déchiffrement pour un message
  • POST /keys - Publier une clé de déchiffrement

Architecture

Le relais respecte la séparation stricte :

  1. Messages publiés sans signatures ni clés
  2. Signatures publiées séparément
  3. 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 à larrêt (SIGINT/SIGTERM) et périodiquement si SAVE_INTERVAL_SECONDS > 0. En production, une base de données (SQLite, PostgreSQL, etc.) est recommandée.