# Spécification Fonctionnelle - 4NK_node ## Vue d'ensemble Ce document décrit les fonctionnalités et les cas d'usage du projet 4NK_node. ## Fonctionnalités principales ### 1. Nœud Bitcoin Core - **Description** : Nœud Bitcoin Core configuré en mode signet - **Fonctionnalités** : - Validation des transactions - Stockage de la blockchain - Interface RPC pour les interactions - Support des wallets - **Configuration** : - Port RPC : 18443 - Port ZMQ : 29000 - Réseau : Signet - Données persistantes via volume Docker ### 2. Service Blindbit - **Description** : Service pour les paiements silencieux - **Fonctionnalités** : - Génération d'adresses de paiement silencieux - Validation des transactions - Interface HTTP pour les interactions - **Configuration** : - Port : 8000 - Interface : HTTP REST API ### 3. Service SDK Relay - **Description** : Relais pour les interactions SDK - **Fonctionnalités** : - Connexion au nœud Bitcoin Core - Gestion des wallets - Interface WebSocket - Scan des blocs pour les paiements silencieux - **Configuration** : - Port WebSocket : 8090 - Port HTTP : 8091 - Retry automatique en cas d'échec de connexion ### 4. Service Tor - **Description** : Service Tor pour l'anonymat - **Fonctionnalités** : - Routage anonyme - Protection de la vie privée - Interface SOCKS - **Configuration** : - Port SOCKS : 9050 - Port de contrôle : 9051 ## Cas d'usage ### 1. Démarrage du système 1. Lancer `docker-compose up -d` 2. Attendre que tous les services soient healthy 3. Vérifier les logs pour s'assurer du bon fonctionnement 4. Le système est prêt à recevoir des transactions ### 2. Connexion au nœud Bitcoin 1. Utiliser l'interface RPC sur le port 18443 2. Authentification via cookie ou credentials 3. Envoyer des commandes JSON-RPC 4. Recevoir les réponses ### 3. Utilisation des paiements silencieux 1. Générer une adresse de paiement silencieux via Blindbit 2. Envoyer des fonds à cette adresse 3. Le SDK Relay scanne automatiquement les blocs 4. Détection et traitement des paiements reçus ### 4. Surveillance du système 1. Consulter les logs des services 2. Vérifier l'état des healthchecks 3. Surveiller l'utilisation des ressources 4. Détecter et résoudre les problèmes ## Interfaces utilisateur ### 1. Interface RPC Bitcoin - **Protocole** : JSON-RPC - **Port** : 18443 - **Authentification** : Cookie ou credentials - **Endpoints** : Standard Bitcoin Core RPC ### 2. Interface HTTP Blindbit - **Protocole** : HTTP REST - **Port** : 8000 - **Authentification** : À définir - **Endpoints** : API Blindbit ### 3. Interface WebSocket SDK Relay - **Protocole** : WebSocket - **Port** : 8090 - **Authentification** : À définir - **Messages** : Événements et commandes SDK ### 4. Interface HTTP SDK Relay - **Protocole** : HTTP REST - **Port** : 8091 - **Authentification** : À définir - **Endpoints** : API SDK Relay ## Gestion des erreurs ### 1. Erreurs de connexion - **Détection** : Timeout ou erreur de résolution DNS - **Action** : Retry automatique avec backoff exponentiel - **Limite** : 5 tentatives maximum - **Log** : Erreurs détaillées dans les logs ### 2. Erreurs de configuration - **Détection** : Fichiers de configuration manquants ou invalides - **Action** : Utilisation de valeurs par défaut - **Log** : Avertissements dans les logs ### 3. Erreurs de service - **Détection** : Healthcheck en échec - **Action** : Redémarrage automatique du service - **Limite** : 3 redémarrages maximum - **Log** : Erreurs critiques dans les logs ## Sécurité ### 1. Authentification - **Bitcoin Core** : Cookie d'authentification - **Blindbit** : À définir - **SDK Relay** : À définir - **Tor** : Pas d'authentification requise ### 2. Chiffrement - **RPC Bitcoin** : HTTP (non chiffré) - **HTTP Blindbit** : HTTP (non chiffré) - **WebSocket SDK Relay** : WSS (chiffré) - **Tor** : Chiffrement intégré ### 3. Isolation réseau - **Réseau privé** : btcnet pour la communication inter-services - **Ports exposés** : Seulement les ports nécessaires - **Volumes** : Données persistantes isolées ## Performance ### 1. Ressources requises - **CPU** : Minimum 2 cœurs - **RAM** : Minimum 4 GB - **Stockage** : Minimum 50 GB pour la blockchain - **Réseau** : Connexion stable à Internet ### 2. Optimisations - **Cache** : Mise en cache des données fréquemment utilisées - **Compression** : Compression des données de blockchain - **Parallélisation** : Traitement parallèle des blocs - **Monitoring** : Métriques de performance ## Maintenance ### 1. Sauvegarde - **Fréquence** : Quotidienne - **Contenu** : Volumes Docker et configurations - **Rétention** : 30 jours - **Restauration** : Procédure documentée ### 2. Mise à jour - **Fréquence** : Mensuelle - **Processus** : Test en environnement de développement - **Rollback** : Possibilité de revenir à la version précédente - **Documentation** : Changelog détaillé ### 3. Monitoring - **Métriques** : CPU, RAM, disque, réseau - **Logs** : Centralisation et rotation - **Alertes** : Notification en cas de problème - **Dashboard** : Interface de visualisation ## Tests ### 1. Tests unitaires - **Couverture** : Minimum 80% - **Exécution** : À chaque commit - **Rapport** : Génération automatique ### 2. Tests d'intégration - **Environnement** : Docker Compose - **Scénarios** : Cas d'usage principaux - **Exécution** : Avant chaque déploiement - **Rapport** : Résultats détaillés ### 3. Tests de charge - **Outils** : JMeter ou équivalent - **Scénarios** : Charge normale et pic - **Métriques** : Temps de réponse et débit - **Seuils** : Définis selon les exigences ## Documentation ### 1. Documentation technique - **API** : Documentation OpenAPI/Swagger - **Architecture** : Diagrammes et schémas - **Déploiement** : Guide étape par étape - **Troubleshooting** : Guide de résolution des problèmes ### 2. Documentation utilisateur - **Installation** : Guide d'installation - **Configuration** : Guide de configuration - **Utilisation** : Guide d'utilisation - **FAQ** : Questions fréquentes ### 3. Documentation de maintenance - **Procédures** : Procédures de maintenance - **Checklists** : Checklists de vérification - **Contacts** : Contacts d'urgence - **Escalade** : Procédure d'escalade