**Motivations:** - Add new features and fixes for userwallet application - Update documentation for pairing, login state machine, and sync - Add new utilities for bloom filters, nonce store, and contract versioning - Fix mempool websocket offline issues **Root causes:** - N/A (feature additions and improvements) **Correctifs:** - Fix mempool websocket offline handling - Update ESLint configuration **Evolutions:** - Add login state machine service and hook - Add sync loop service - Add bloom filter utilities for anti-replay and state visibility - Add nonce store and contract version utilities - Update pairing confirmation and graph resolver services - Add new documentation for features and fixes - Update userwallet components (LoginScreen, SyncScreen) - Update types for contract, identity, and messages **Pages affectées:** - userwallet/src/components/LoginScreen.tsx - userwallet/src/components/SyncScreen.tsx - userwallet/src/hooks/useChannel.ts - userwallet/src/hooks/useLoginStateMachine.ts (new) - userwallet/src/services/graphResolver.ts - userwallet/src/services/pairingConfirm.ts - userwallet/src/services/syncService.ts - userwallet/src/services/syncLoop.ts (new) - userwallet/src/services/loginStateMachine.ts (new) - userwallet/src/types/contract.ts - userwallet/src/types/identity.ts - userwallet/src/types/message.ts - userwallet/src/utils/canonical.ts - userwallet/src/utils/identity.ts - userwallet/src/utils/indexedDbStorage.ts - userwallet/src/utils/relay.ts - userwallet/src/utils/verification.ts - userwallet/src/utils/bloom.ts (new) - userwallet/src/utils/contractVersion.ts (new) - userwallet/src/utils/nonceStore.ts (new) - userwallet/eslint.config.mjs - userwallet/package.json - userwallet/package-lock.json - userwallet/docs/synthese.md - userwallet/docs/specs-champs-obligatoires-cnil.md (new) - api-relay/README.md - features/userwallet-pairing-words-only-finalise.md - features/userwallet-anti-rejeu-etats-visibles-bloom.md (new) - features/userwallet-bloom-usage-sync.md (new) - features/userwallet-contrat-login-reste-a-faire.md (new) - features/userwallet-ecrans-login-a-valider.md (new) - features/userwallet-eslint-fix.md (new) - features/userwallet-login-state-machine.md (new) - features/userwallet-validation-conformite.md (new) - fixKnowledge/mempool-websocket-offline-fix.md (new) - mempool (submodule) - hash_list.txt - hash_list_cache.txt
3.6 KiB
3.6 KiB
Correction: Mempool affiche "hors connexion"
Date: 2026-01-26 Auteur: Équipe 4NK
Motivations
- Le mempool affichait le site mais indiquait "hors connexion"
- Le WebSocket ne pouvait pas se connecter au backend
- L'utilisateur ne pouvait pas utiliser l'explorateur blockchain
Root causes
- Le backend mempool était en état "unhealthy" mais fonctionnait partiellement
- Le backend avait des problèmes de connexion avec Bitcoin RPC (erreurs
ECONNRESET) - Le processus de mise à jour des blocs était bloqué (
$updateBlocks stalled) - Le backend nécessitait un redémarrage pour se resynchroniser correctement
Correctifs
- Redémarrage du backend mempool pour résoudre les problèmes de connexion
- Vérification de la configuration nginx du frontend (proxy WebSocket vers
http://api:8999/) - Vérification de la connectivité entre le frontend et le backend via le réseau Docker
- Restauration de la configuration nginx après des modifications incorrectes
Evolutions
- Création d'un script de diagnostic (
mempool/diagnose-mempool.sh) pour vérifier l'état des services localement - Création d'un script de diagnostic et correction (
mempool/fix-mempool-websocket.sh) pour diagnostiquer et corriger les problèmes sur le serveur services - Amélioration de la configuration nginx pour le WebSocket (ajout des headers nécessaires dans
mempool/nginx-mempool.conf)
Pages affectées
mempool/diagnose-mempool.sh: Script de diagnostic localmempool/fix-mempool-websocket.sh: Script de diagnostic et correction distantmempool/nginx-mempool.conf: Configuration nginx pour le WebSocket (amélioration des headers)
Modalités de déploiement
-
Diagnostic local :
cd mempool ./diagnose-mempool.sh -
Redémarrage du backend si nécessaire :
docker-compose -f docker-compose.signet.yml restart api -
Vérification de la connectivité :
docker-compose -f docker-compose.signet.yml exec -T web curl -f -s http://api:8999/api/v1/backend-info -
Redémarrage du frontend si la configuration nginx a été modifiée :
docker-compose -f docker-compose.signet.yml restart web
Modalités d'analyse
Vérifier l'état des services
docker-compose -f docker-compose.signet.yml ps
Vérifier les logs du backend
docker-compose -f docker-compose.signet.yml logs --tail=50 api | grep -E "(ERROR|ERR|WARN|failed|error)"
Tester la connectivité backend
# Depuis le conteneur frontend
docker-compose -f docker-compose.signet.yml exec -T web curl -f -s http://api:8999/api/v1/backend-info
# Depuis l'extérieur
curl -s http://localhost:3015/api/v1/backend-info
Vérifier la configuration nginx WebSocket
docker-compose -f docker-compose.signet.yml exec -T web cat /etc/nginx/conf.d/nginx-mempool.conf | grep -A 5 "api/v1/ws"
La configuration doit être :
location /api/v1/ws {
proxy_pass http://api:8999/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
}
Notes
- Le backend mempool écoute sur toutes les routes pour les WebSockets (WebSocket.Server créé directement sur le serveur HTTP)
- Le nginx du frontend proxyfie
/api/v1/wsvershttp://api:8999/(racine du backend) - Le backend peut être en état "unhealthy" mais fonctionner quand même si le healthcheck échoue pour une raison technique (par exemple,
curlnon disponible dans le conteneur) - Les erreurs
ECONNRESETavec Bitcoin RPC peuvent être temporaires et se résoudre avec un redémarrage