story-research-zapwall/docs/architecture.md
Nicolas Cantu f7bd7faa73 fix: Correction erreurs TypeScript, nettoyage et réorganisation documentation
- Correction toutes erreurs TypeScript :
  - Variables non utilisées supprimées
  - Types optionnels corrigés (exactOptionalPropertyTypes)
  - Imports corrigés (PLATFORM_BITCOIN_ADDRESS depuis platformConfig)
  - Gestion correcte des propriétés optionnelles

- Suppression fichiers obsolètes :
  - code-cleanup-summary.md (redondant)
  - todo-implementation*.md (todos obsolètes)
  - corrections-completed.md, fallbacks-found.md (corrections faites)
  - implementation-summary.md (redondant)
  - documentation-plan.md (plan, pas documentation)

- Suppression scripts temporaires :
  - add-ssh-key.sh
  - add-ssh-key-plink.sh

- Réorganisation documentation dans docs/ :
  - architecture.md (nouveau)
  - commissions.md (nouveau)
  - implementation-summary.md
  - remaining-tasks.md
  - split-and-transfer.md
  - commission-system.md
  - commission-implementation.md
  - content-delivery-verification.md

Toutes erreurs TypeScript corrigées, documentation centralisée.
2025-12-27 21:25:19 +01:00

2.2 KiB

Architecture technique

Auteur : Équipe 4NK

Vue d'ensemble

Zapwall est une plateforme décentralisée basée sur le protocole Nostr pour la publication et la monétisation de contenu. Le système utilise Lightning Network pour les paiements et Bitcoin mainnet pour le sponsoring.

Services principaux

Nostr (lib/nostr.ts)

  • Gestion du pool de connexions aux relays
  • Publication et récupération d'événements
  • Gestion des profils utilisateurs
  • Création de zap requests

Paiements (lib/payment.ts, lib/paymentPolling.ts)

  • Création d'invoices Lightning via Alby/WebLN
  • Vérification des paiements via zap receipts (NIP-57)
  • Polling pour confirmation des paiements
  • Envoi automatique du contenu privé après paiement

Commissions (lib/platformCommissions.ts)

  • Configuration centralisée des commissions
  • Calcul des splits (auteur/plateforme)
  • Validation des montants

Tracking (lib/platformTracking.ts, lib/sponsoringTracking.ts)

  • Publication d'événements de tracking sur Nostr
  • Suivi des livraisons de contenu
  • Suivi des paiements de sponsoring

Intégrations externes

  • mempool.space (lib/mempoolSpace.ts) : Vérification des transactions Bitcoin
  • Lightning addresses (lib/lightningAddress.ts) : Récupération depuis profils Nostr

Flux de paiement article

  1. Lecteur clique sur "Unlock for 800 sats"
  2. Création d'invoice Lightning (via Alby/WebLN)
  3. Publication de zap request sur Nostr
  4. Lecteur paie l'invoice
  5. Polling pour vérifier le zap receipt
  6. Envoi automatique du contenu privé (message chiffré NIP-04)
  7. Tracking de la livraison avec commissions

Flux de sponsoring

  1. Utilisateur demande sponsoring (0.046 BTC)
  2. Service calcule split (0.042/0.004 BTC)
  3. Retourne deux adresses Bitcoin
  4. Utilisateur crée transaction avec deux sorties
  5. Vérification via mempool.space
  6. Tracking sur Nostr

Stockage

  • IndexedDB : Contenu privé chiffré (AES-GCM)
  • localStorage : Métadonnées d'articles, invoices
  • Nostr : Tous les contenus publics et événements de tracking

Sécurité

  • Chiffrement end-to-end pour contenu privé (NIP-04)
  • Validation stricte des montants
  • Tracking complet sur Nostr pour audit
  • Pas de fallback implicite