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

34 lines
1.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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`)