- 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.
2.2 KiB
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
- Lecteur clique sur "Unlock for 800 sats"
- Création d'invoice Lightning (via Alby/WebLN)
- Publication de zap request sur Nostr
- Lecteur paie l'invoice
- Polling pour vérifier le zap receipt
- Envoi automatique du contenu privé (message chiffré NIP-04)
- Tracking de la livraison avec commissions
Flux de sponsoring
- Utilisateur demande sponsoring (0.046 BTC)
- Service calcule split (0.042/0.004 BTC)
- Retourne deux adresses Bitcoin
- Utilisateur crée transaction avec deux sorties
- Vérification via mempool.space
- 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