**Motivations:** - Ajouter dates manquantes dans hash_list.txt et compléter historique - Compléter blockTime manquants dans utxo_list.txt et compléter historique - Récupérer frais depuis transactions d'ancrage (OP_RETURN) et les stocker - Bouton UI pour déclencher récupération frais - Diagnostic Bloc Rewards (pourquoi ~4700 BTC au lieu de 50 BTC) **Root causes:** - hash_list.txt sans date (format ancien) - utxo_list.txt blockTime souvent vide - Frais absents du fichier (métadonnées OP_RETURN non stockées) - Pas de moyen de récupérer/compléter frais depuis UI **Correctifs:** - hash_list.txt : format étendu avec date (rétrocompatible) - utxo_list.txt : blockTime complété automatiquement lors écritures - fees_list.txt : nouveau fichier pour stocker frais - updateFeesFromAnchors() : récupère frais depuis OP_RETURN ancrages - Endpoint /api/utxo/fees/update pour déclencher récupération - Bouton "Récupérer les frais depuis les ancrages" dans section Frais (spinner) - Scripts batch : complete-hash-list-dates.js, complete-utxo-list-blocktime.js - Script diagnostic : diagnose-bloc-rewards.js (subsidy, coinbase, listunspent) **Evolutions:** - Frais chargés depuis fees_list.txt dans getUtxoList - Complétion automatique dates/blockTime lors écritures futures **Pages affectées:** - signet-dashboard/src/bitcoin-rpc.js - signet-dashboard/src/server.js - signet-dashboard/public/utxo-list.html - scripts/complete-hash-list-dates.js - scripts/complete-utxo-list-blocktime.js - scripts/diagnose-bloc-rewards.js - features/utxo-list-fees-update-and-historical-completion.md
77 lines
1.8 KiB
Markdown
77 lines
1.8 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
|
|
|
|
Par défaut, le stockage est en mémoire avec sauvegarde optionnelle sur disque.
|
|
En production, utiliser une base de données (SQLite, PostgreSQL, etc.).
|