**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
76 lines
1.9 KiB
Markdown
76 lines
1.9 KiB
Markdown
# 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
|
||
|
||
```bash
|
||
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
|
||
|
||
```bash
|
||
npm run dev
|
||
```
|
||
|
||
## Build
|
||
|
||
```bash
|
||
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 à 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.
|