- Intégration mempool.space pour vérification transactions Bitcoin : - Service MempoolSpaceService avec API mempool.space - Vérification sorties et montants pour sponsoring - Vérification confirmations - Attente confirmation avec polling - Récupération adresses Lightning depuis profils Nostr : - Service LightningAddressService - Support lud16 et lud06 (NIP-19) - Cache avec TTL 1 heure - Intégré dans paymentPolling et reviewReward - Mise à jour événements Nostr pour avis rémunérés : - Publication événement avec tags rewarded et reward_amount - Parsing tags dans parseReviewFromEvent - Vérification doublons - Tracking sponsoring sur Nostr : - Service SponsoringTrackingService - Événements avec commissions et confirmations - Intégration vérification mempool.space Toutes les fonctionnalités de split sont maintenant opérationnelles. Seuls les transferts Lightning réels nécessitent un nœud Lightning.
5.7 KiB
Tâches restantes - Système de commissions
Date : Décembre 2024 Auteur : Équipe 4NK
État actuel
✅ Implémenté :
- Configuration centralisée des commissions
- Validation des montants à chaque étape
- Tracking des commissions sur Nostr
- Services de split (articles, avis, sponsoring)
- Services de transfert automatique (structure)
⏳ À compléter :
- Intégration mempool.space pour vérification transactions Bitcoin
- Récupération adresses Lightning depuis profils Nostr
- Mise à jour événements Nostr pour avis rémunérés
- Tracking sponsoring sur Nostr
- Transferts Lightning réels (nécessite nœud Lightning)
Tâches détaillées
1. Intégration mempool.space ✅ IMPLÉMENTÉ
Objectif : Vérifier que les transactions Bitcoin de sponsoring contiennent les deux sorties correctes.
API mempool.space :
- Endpoint :
https://mempool.space/api/tx/{txid} - Documentation : https://mempool.space/api
Implémenté :
- ✅ Service
MempoolSpaceServicepour récupérer une transaction depuis mempool.space - ✅ Vérification que la transaction a deux sorties :
- Sortie 1 :
split.authorSatsversauthorMainnetAddress - Sortie 2 :
split.platformSatsversPLATFORM_BITCOIN_ADDRESS
- Sortie 1 :
- ✅ Vérification du nombre de confirmations
- ✅ Gestion des erreurs et retry
- ✅ Intégré dans
sponsoringPayment.ts
Fichier : lib/mempoolSpace.ts ✅
2. Récupération adresses Lightning ✅ IMPLÉMENTÉ
Objectif : Récupérer les adresses Lightning des auteurs/reviewers depuis leurs profils Nostr.
Standards Nostr :
- NIP-19 : Lightning addresses dans les métadonnées de profil
- Format :
lud16oulud06dans le profil JSON - Exemple :
{"lud16": "user@domain.com"}
Implémenté :
- ✅ Service
LightningAddressServicepour parser les métadonnées de profil - ✅ Extraction de
lud16oulud06depuis les profils - ✅ Cache des adresses récupérées
- ✅ Fallback si pas d'adresse disponible
- ✅ Intégré dans
paymentPolling.tsetreviewReward.ts
Fichiers :
lib/lightningAddress.ts✅types/nostr.ts✅ (ajout delud16etlud06)
3. Mise à jour événements Nostr pour avis ✅ IMPLÉMENTÉ
Objectif : Mettre à jour l'événement Nostr d'un avis avec les tags rewarded: true et reward_amount: 70.
Implémenté :
- ✅ Récupération de l'événement original de l'avis
- ✅ Ajout des tags
rewardedetreward_amount - ✅ Publication de l'événement mis à jour
- ✅ Gestion des erreurs si l'événement n'existe plus
- ✅ Vérification que l'avis n'est pas déjà rémunéré
- ✅ Parsing des tags dans
parseReviewFromEvent
Fichiers :
lib/reviewReward.ts✅ (méthodeupdateReviewWithRewardimplémentée)lib/nostrEventParsing.ts✅ (parsing des tagsrewardedetreward_amount)
4. Tracking sponsoring sur Nostr ✅ IMPLÉMENTÉ
Objectif : Publier des événements de tracking pour les paiements de sponsoring.
Implémenté :
- ✅ Service
SponsoringTrackingServicepour publier les événements - ✅ Tags similaires aux articles :
author_amount,platform_commission - ✅ Vérification de transaction via mempool.space avant tracking
- ✅ Informations de confirmation et nombre de confirmations
- ✅ Intégré dans
sponsoringPayment.ts
Fichiers :
lib/sponsoringTracking.ts✅ (nouveau service)lib/sponsoringPayment.ts✅ (méthodetrackSponsoringPaymentimplémentée)
5. Transferts Lightning réels (PRIORITÉ BASSE - nécessite infrastructure)
Objectif : Effectuer réellement les transferts Lightning vers les auteurs/reviewers.
Prérequis :
- Nœud Lightning de la plateforme
- API pour créer et payer des invoices
- Gestion des erreurs et retry
À implémenter :
- Intégration avec l'API du nœud Lightning
- Création d'invoices pour les transferts
- Paiement automatique des invoices
- Queue de transferts en attente
- Retry en cas d'échec
Fichier : lib/automaticTransfer.ts (modifier les méthodes de transfert)
Plan d'implémentation
Phase 1 : Vérification transactions ✅ TERMINÉ
- ✅ Créer
lib/mempoolSpace.ts - ✅ Implémenter récupération transaction
- ✅ Implémenter vérification sorties
- ✅ Intégrer dans
sponsoringPayment.ts
Phase 2 : Adresses Lightning ✅ TERMINÉ
- ✅ Créer
lib/lightningAddress.ts - ✅ Parser profils Nostr pour
lud16/lud06 - ✅ Intégrer dans
paymentPolling.tsetreviewReward.ts
Phase 3 : Mise à jour avis ✅ TERMINÉ
- ✅ Implémenter
updateReviewWithRewarddansreviewReward.ts - ✅ Parser tags
rewardedetreward_amountdansparseReviewFromEvent
Phase 4 : Tracking sponsoring ✅ TERMINÉ
- ✅ Créer
lib/sponsoringTracking.ts - ✅ Implémenter tracking dans
sponsoringPayment.ts - ⏳ Mise à jour
total_sponsoringsur présentation (structure préparée)
Phase 5 : Transferts réels (long terme - nécessite infrastructure)
- ⏳ Configurer nœud Lightning
- ⏳ Implémenter API d'intégration
- ⏳ Créer queue de transferts
- ⏳ Monitoring et alertes
Notes techniques
mempool.space API
Récupérer une transaction :
GET https://mempool.space/api/tx/{txid}
Réponse :
{
"txid": "...",
"vout": [
{
"value": 4200000,
"scriptpubkey_address": "bc1q..."
},
{
"value": 400000,
"scriptpubkey_address": "bc1q..."
}
],
"status": {
"confirmed": true,
"block_height": 123456,
"block_hash": "..."
}
}
Lightning addresses dans Nostr
Format profil :
{
"name": "Author",
"lud16": "author@getalby.com",
"lud06": "lnurl..."
}
NIP-19 : Les adresses Lightning peuvent être dans les métadonnées de profil (kind 0).