UPassport est un système complet d'identité numérique et de gestion de fichiers intégré à Astroport.ONE. Il fournit une API sécurisée (port 54321) pour gérer les identités numériques, uploader des fichiers vers IPFS et interagir avec le réseau NOSTR.
npub : Clé publique NOSTR pour authentification (requis)
Réponse :
2. Upload depuis Drive IPFS
Body :
Réponse :
3. Suppression de Fichier
Body :
Réponse :
4. Test d'Authentification NOSTR
Body :
Réponse :
API Économie UPlanet ẐEN
1. Vérification de Solde Ğ1
Paramètres :
g1pub : Clé publique Ğ1 (requis)
html : Si présent, retourne une page HTML au lieu de JSON (optionnel)
Réponse JSON :
Formule de conversion : ẐEN = (Ğ1 - 1) × 10
2. Historique Capital Social (SOCIETY)
Description : Récupère l'historique des parts sociales distribuées depuis le portefeuille SOCIETY. La clé publique est automatiquement récupérée depuis l'environnement ($UPLANETNAME_SOCIETY).
Paramètres :
html : Si présent, retourne une page HTML stylisée (optionnel)
Réponse JSON :
Types de parts sociales :
constellation : Parts sociales constellation (540€/3ans avec IA) 🌟
satellite : Parts sociales satellite (50€/an sans IA) 🛰️
parts : Parts sociales legacy (ancien format) 📦
other : Autres types de transactions
Format des références blockchain :
Traçabilité : Chaque transaction inclut l'identifiant IPFS du nœud (ipfs_node) pour identifier la machine à l'origine de la transaction.
Page HTML : Accessible via ?html=1, fournit une interface web stylisée avec :
Résumé du capital social total distribué
Tableau détaillé des parts sociales par sociétaire
Type de part avec icône
Lien vers le nœud IPFS d'origine
Historique complet des transactions
3. Chiffre d'Affaires (REVENUE)
Description : Récupère l'historique du Chiffre d'Affaires depuis les transactions ZENCOIN. Calcule les revenus totaux depuis le portefeuille UPLANETNAME (hub de distribution des services).
Paramètres :
html : Si présent, retourne une page HTML stylisée (optionnel)
year : Filtre par année (ex: "2024", "2025"). Par défaut: "all" (toutes les années)
Réponse JSON :
Filtrage par année :
GET /check_revenue : Toutes les années (avec résumé annuel)
GET /check_revenue?year=2025 : Uniquement l'année 2025
GET /check_revenue?year=2024 : Uniquement l'année 2024
Format des références blockchain :
Calcul du CA : Le Chiffre d'Affaires est calculé depuis les transactions INCOMING (entrantes) vers UPLANETG1PUB qui :
Proviennent de UPLANETNAME_G1 (réserve)
Contiennent "ZENCOIN" dans la référence (ventes de services)
Page HTML : Accessible via ?html=1, fournit une interface web stylisée avec :
Résumé du CA total (ẐEN, Ğ1, nombre de transactions)
Tableau récapitulatif annuel (mode "all")
Boutons pour filtrer par année
Historique détaillé des ventes ZENCOIN avec identification client
Architecture économique :
🔐 Authentification NOSTR
Principe NIP-42
UPassport utilise l'authentification NOSTR (NIP-42) pour sécuriser les opérations privilégiées :
Événement d'Authentification : L'utilisateur signe un événement kind: 22242
Vérification Serveur : UPassport vérifie l'événement sur le relay NOSTR local
Autorisation : Si l'événement est valide et récent (< 24h), l'opération est autorisée
Workflow d'Authentification
Exemple d'Authentification (JavaScript)
📁 Gestion de Fichiers
Structure de Stockage
uDRIVE organise automatiquement les fichiers dans une structure hiérarchique :
Types de Fichiers Supportés
Type
Extensions
Description
Images
jpg, jpeg, png, gif, bmp, svg
Images et graphiques
Music
mp3, wav, ogg, flac, m4a
Fichiers audio
Videos
mp4, avi, mov, mkv, webm
Fichiers vidéo
Documents
pdf, txt, doc, docx, odt
Documents texte
Sécurité Twin-Key
Chaque fichier est lié à l'identité NOSTR de l'utilisateur :
Vérification de Propriété : Seul le propriétaire peut modifier ses fichiers
Drive Personnel : Chaque utilisateur a son propre drive IPFS
Synchronisation : Possibilité de sync depuis d'autres drives publics
🌐 Intégration NOSTR
Événements NOSTR
Gestion d'événements NOSTR :
Kind 0 : Mise à jour de profil
Kind 1 : Messages texte
Kind 3 : Contacts et suivi
Kind 22242 : Authentification (NIP-42)
🛡️ Sécurité & Rate Limiting
Protection contre les Abus
UPassport implémente plusieurs niveaux de protection :
1. Rate Limiting
2. Gestion des IP de Confiance
3. Validation des Fichiers
Chiffrement et Sécurité
Chiffrement en Transit : HTTPS/TLS pour toutes les communications
Chiffrement au Repos : Fichiers chiffrés sur IPFS
Authentification Forte : NOSTR NIP-42 pour toutes les opérations
Isolation des Données : Chaque utilisateur a son propre espace
💡 Exemples d'Utilisation
1. Upload de Fichier avec Authentification
2. Synchronisation depuis IPFS
3. Suppression de Fichier
4. Interface Web
🔧 Dépannage
Problèmes Courants
1. Service UPassport ne démarre pas
2. Erreur d'authentification NOSTR
3. Problème d'upload IPFS
Logs et Debugging
🏗️ Architecture Technique
Composants Principaux
Dépendances Python
Configuration Système
🔗 Intégration avec Astroport.ONE
Ports et Services
Port
Service
Description
54321
UPassport API
API d'identité numérique
7777
NOSTR Relay
Relay pour authentification
8080
IPFS Gateway
Accès aux fichiers IPFS
Flux d'Intégration
📊 Métriques et Monitoring
Indicateurs de Performance
Temps de Réponse : < 500ms pour les requêtes simples
UPLANETNAME_G1 (Réserve)
↓ ÉMISSION (CA enregistré)
UPLANETNAME (UPLANETG1PUB) ← Hub de distribution
↓ DISTRIBUTION
MULTIPASS / ZEN Card (Services utilisateurs)
// Génération de clés NOSTR
const privateKey = NostrTools.generatePrivateKey();
const publicKey = NostrTools.getPublicKey(privateKey);
// Création de l'événement d'authentification
const authEvent = {
kind: 22242,
created_at: Math.floor(Date.now() / 1000),
tags: [
['relay', 'ws://127.0.0.1:7777'],
['challenge', 'astroport-auth-' + Date.now()]
],
content: 'Authentification pour UPassport API'
};
// Signature de l'événement
const signedEvent = NostrTools.finishEvent(authEvent, privateKey);
// Publication sur le relay
const relay = NostrTools.relayInit('ws://127.0.0.1:7777');
await relay.connect();
await relay.publish(signedEvent);
# Test d'authentification
curl -X POST http://localhost:54321/api/test-nostr \
-F "npub=npub1..."
# Upload de fichier
curl -F "file=@photo.jpg" \
-F "npub=npub1..." \
http://localhost:54321/api/upload
# Sync d'un fichier depuis IPFS
curl -X POST http://localhost:54321/api/upload_from_drive \
-H "Content-Type: application/json" \
-d '{
"ipfs_link": "QmHash/photo.jpg",
"npub": "npub1..."
}'
# Suppression de fichier
curl -X POST http://localhost:54321/api/delete \
-H "Content-Type: application/json" \
-d '{
"file_path": "Images/photo.jpg",
"npub": "npub1..."
}'
# Accès à l'interface web
open http://localhost:54321
# Interface Geo Messaging NOSTR
open http://localhost:54321/nostr
# Interface MULTIPASS Ğ1
open http://localhost:54321/g1
# Vérifier les logs
journalctl -fu upassport
# Vérifier la configuration
cat ~/.zen/UPassport/.env
# Redémarrer le service
sudo systemctl restart upassport
# Vérifier le relay NOSTR
curl -I http://localhost:7777
# Tester l'authentification
curl -X POST http://localhost:54321/api/test-nostr \
-F "npub=npub1..."