anchorage_layer_simple/features/userwallet-bloom-usage-sync.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

1.5 KiB
Raw Permalink Blame History

UserWallet Usage Bloom dans le sync (3.6)

Author: Équipe 4NK
Date: 2026-01-26

Objectif

Utiliser optionnellement GET /bloom du relais dans le sync pour éviter des fetches de clés inutiles quand un relais na pas vu un hash (pas de faux négatifs).

Impacts

  • Sync : au début de chaque sync, fetch du Bloom par relais activé ; stockage dans bloomByRelay.
  • fetchKeys : avant getKeys(relay, hash), si on a un Bloom pour ce relais et !bloom.has(hash), on ignore ce relais pour ce hash (le relais ne la pas vu).

Modifications

  • utils/bloom.ts : fetchAndLoadBloom(relay) → fetch getBloom(relay), BloomFilter.fromJSON, retourne le filtre ou null si erreur (relais sans /bloom, etc.).
  • services/syncService.ts : fetchBlooms() remplit bloomByRelay ; sync() appelle fetchBlooms() avant runSyncLoop ; fetchKeys(hash) saute getKeys pour un relais dont le Bloom indique labsence du hash.
  • Dépendance : bloom-filters (userwallet).

Modalités de déploiement

Déploiement classique du front userwallet. Les relais sans GET /bloom sont ignorés pour le Bloom (pas de filtre, pas de skip).

Modalités danalyse

  • Relais avec /bloom : sync fetch les Bloom, puis pour chaque hash on peut skip getKeys sur un relais qui ne la pas vu.
  • Relais sans /bloom ou erreur : fetchAndLoadBloom retourne null, on ne skip jamais pour ce relais.

Références

  • features/userwallet-contrat-login-reste-a-faire.md (§ 3.6)
  • utils/relay.ts (getBloom)