- 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.
183 lines
5.7 KiB
Markdown
183 lines
5.7 KiB
Markdown
# 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** :
|
|
1. Intégration mempool.space pour vérification transactions Bitcoin
|
|
2. Récupération adresses Lightning depuis profils Nostr
|
|
3. Mise à jour événements Nostr pour avis rémunérés
|
|
4. Tracking sponsoring sur Nostr
|
|
5. 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 `MempoolSpaceService` pour récupérer une transaction depuis mempool.space
|
|
- ✅ Vérification que la transaction a deux sorties :
|
|
- Sortie 1 : `split.authorSats` vers `authorMainnetAddress`
|
|
- Sortie 2 : `split.platformSats` vers `PLATFORM_BITCOIN_ADDRESS`
|
|
- ✅ 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 : `lud16` ou `lud06` dans le profil JSON
|
|
- Exemple : `{"lud16": "user@domain.com"}`
|
|
|
|
**Implémenté** :
|
|
- ✅ Service `LightningAddressService` pour parser les métadonnées de profil
|
|
- ✅ Extraction de `lud16` ou `lud06` depuis les profils
|
|
- ✅ Cache des adresses récupérées
|
|
- ✅ Fallback si pas d'adresse disponible
|
|
- ✅ Intégré dans `paymentPolling.ts` et `reviewReward.ts`
|
|
|
|
**Fichiers** :
|
|
- `lib/lightningAddress.ts` ✅
|
|
- `types/nostr.ts` ✅ (ajout de `lud16` et `lud06`)
|
|
|
|
### 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 `rewarded` et `reward_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éthode `updateReviewWithReward` implémentée)
|
|
- `lib/nostrEventParsing.ts` ✅ (parsing des tags `rewarded` et `reward_amount`)
|
|
|
|
### 4. Tracking sponsoring sur Nostr ✅ IMPLÉMENTÉ
|
|
|
|
**Objectif** : Publier des événements de tracking pour les paiements de sponsoring.
|
|
|
|
**Implémenté** :
|
|
- ✅ Service `SponsoringTrackingService` pour 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éthode `trackSponsoringPayment` implé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É
|
|
1. ✅ Créer `lib/mempoolSpace.ts`
|
|
2. ✅ Implémenter récupération transaction
|
|
3. ✅ Implémenter vérification sorties
|
|
4. ✅ Intégrer dans `sponsoringPayment.ts`
|
|
|
|
### Phase 2 : Adresses Lightning ✅ TERMINÉ
|
|
1. ✅ Créer `lib/lightningAddress.ts`
|
|
2. ✅ Parser profils Nostr pour `lud16`/`lud06`
|
|
3. ✅ Intégrer dans `paymentPolling.ts` et `reviewReward.ts`
|
|
|
|
### Phase 3 : Mise à jour avis ✅ TERMINÉ
|
|
1. ✅ Implémenter `updateReviewWithReward` dans `reviewReward.ts`
|
|
2. ✅ Parser tags `rewarded` et `reward_amount` dans `parseReviewFromEvent`
|
|
|
|
### Phase 4 : Tracking sponsoring ✅ TERMINÉ
|
|
1. ✅ Créer `lib/sponsoringTracking.ts`
|
|
2. ✅ Implémenter tracking dans `sponsoringPayment.ts`
|
|
3. ⏳ Mise à jour `total_sponsoring` sur présentation (structure préparée)
|
|
|
|
### Phase 5 : Transferts réels (long terme - nécessite infrastructure)
|
|
1. ⏳ Configurer nœud Lightning
|
|
2. ⏳ Implémenter API d'intégration
|
|
3. ⏳ Créer queue de transferts
|
|
4. ⏳ Monitoring et alertes
|
|
|
|
## Notes techniques
|
|
|
|
### mempool.space API
|
|
|
|
**Récupérer une transaction** :
|
|
```
|
|
GET https://mempool.space/api/tx/{txid}
|
|
```
|
|
|
|
**Réponse** :
|
|
```json
|
|
{
|
|
"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** :
|
|
```json
|
|
{
|
|
"name": "Author",
|
|
"lud16": "author@getalby.com",
|
|
"lud06": "lnurl..."
|
|
}
|
|
```
|
|
|
|
**NIP-19** : Les adresses Lightning peuvent être dans les métadonnées de profil (kind 0).
|