- Ajout du script add_external_node.sh pour gérer les nœuds externes - Configuration external_nodes.conf avec dev3-relay - Scripts de test pour dev3.4nkweb.com (connectivité WSS) - Documentation complète (CONFIGURATION_DEV3.md, RESUME_AJOUT_DEV3.md) - Scripts de test de synchronisation et monitoring - Configuration multi-relais avec 3 instances - Mise à jour de la documentation technique et fonctionnelle - Scripts de démarrage et monitoring pour les 3 relais
217 lines
6.2 KiB
Markdown
217 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
|
|
|
|
|