# Spécification Technique - 4NK_node ## Vue d'ensemble Ce document décrit les modifications techniques apportées au projet 4NK_node pour résoudre les problèmes de déploiement Docker. ## Problèmes identifiés ### 1. Résolution DNS dans Docker - **Problème** : Le service `sdk_relay` ne pouvait pas résoudre les noms d'hôtes `bitcoin` et `blindbit` - **Cause** : Configuration réseau Docker incorrecte - **Solution** : Amélioration de la gestion des erreurs et ajout de retry logic ### 2. Dépendances Git - **Problème** : Les dépendances pointaient vers des repositories distants - **Cause** : Cargo.toml utilisait des URLs Git au lieu de chemins locaux - **Solution** : Modification des dépendances pour utiliser des chemins locaux ### 3. Configuration du cookie Bitcoin - **Problème** : Le chemin du cookie Bitcoin était codé en dur - **Cause** : Utilisation de `env::var("HOME")` dans un contexte Docker - **Solution** : Ajout d'une option de configuration personnalisée pour le chemin du cookie ## Modifications apportées ### sdk_relay - **Branche** : `docker-fixes` - **Modifications** : - Ajout de la méthode `get_cookie_path()` dans `Config` - Modification de la signature de `rpc_connect()` pour accepter un chemin de cookie personnalisé - Ajout de logique de retry pour la connexion au daemon Bitcoin - Amélioration de la gestion des erreurs de résolution DNS ### sdk_common - **Branche** : `docker-fixes` - **Modifications** : - Modification de la dépendance `sp_client` pour utiliser un chemin local - Correction de la feature `blindbit-backend` vers `blindbit-native` ### sdk_client - **Branche** : `docker-fixes` - **Modifications** : - Modification de la dépendance `sdk_common` pour utiliser un chemin local ### 4NK_node - **Modifications** : - Mise à jour du Dockerfile pour cloner les branches `docker-fixes` - Amélioration de la configuration Docker avec healthchecks - Ajout de la gestion des erreurs et retry logic ## Architecture Docker ### Services 1. **bitcoin** : Nœud Bitcoin Core en mode signet 2. **blindbit** : Service Blindbit 3. **sdk_relay** : Service de relais SDK (modifié) 4. **tor** : Service Tor pour l'anonymat ### Réseau - **btcnet** : Réseau privé pour la communication entre services ### Volumes - **bitcoin_data** : Données Bitcoin Core - **sdk_relay_data** : Données du relais SDK ## Problèmes restants ### 1. Compilation sdk_relay - **Erreur** : Signatures de traits incompatibles - **Cause** : Différences entre les versions des traits `SpScanner` et `ChainBackend` - **Impact** : Le service ne peut pas être compilé actuellement ### 2. Collision de noms de fichiers - **Erreur** : `libsp_client.rlib` en collision - **Cause** : Plusieurs packages avec le même nom - **Impact** : Compilation échoue ## Recommandations ### Court terme 1. Corriger les signatures de traits dans sdk_relay 2. Résoudre les collisions de noms de fichiers 3. Tester la compilation complète ### Moyen terme 1. Implémenter les méthodes manquantes dans `DummyBackend` 2. Ajouter des tests unitaires pour les nouvelles fonctionnalités 3. Documenter l'API des nouvelles méthodes ### Long terme 1. Migrer vers une architecture plus modulaire 2. Implémenter une gestion d'état centralisée 3. Ajouter des métriques et monitoring ## Fichiers modifiés ### sdk_relay - `src/config.rs` : Ajout de `get_cookie_path()` - `src/daemon.rs` : Modification de `rpc_connect()` - `src/main.rs` : Ajout de retry logic - `src/scan.rs` : Corrections des traits ### sdk_common - `Cargo.toml` : Modification des dépendances ### sdk_client - `Cargo.toml` : Modification des dépendances ### 4NK_node - `sdk_relay/Dockerfile` : Mise à jour des branches - `docker-compose.yml` : Amélioration de la configuration - `sdk_relay/.conf.docker` : Ajout du chemin du cookie