anchorage_layer_simple/fixKnowledge/mempool-websocket-offline-fix.md
ncantu c3c11f0ef0 Update userwallet components, services and documentation
**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
2026-01-26 14:00:32 +01:00

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 local
  • mempool/fix-mempool-websocket.sh : Script de diagnostic et correction distant
  • mempool/nginx-mempool.conf : Configuration nginx pour le WebSocket (amélioration des headers)

Modalités de déploiement

  1. Diagnostic local :

    cd mempool
    ./diagnose-mempool.sh
    
  2. Redémarrage du backend si nécessaire :

    docker-compose -f docker-compose.signet.yml restart api
    
  3. 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
    
  4. 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/ws vers http://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, curl non disponible dans le conteneur)
  • Les erreurs ECONNRESET avec Bitcoin RPC peuvent être temporaires et se résoudre avec un redémarrage