4NK_node/specs/spec-fonctionnel.md

216 lines
6.2 KiB
Markdown

# 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