4NK_node/specs/spec-technical.md
Nicolas Cantu 72682290c1 feat: Ajout du support des relais externes et intégration dev3.4nkweb.com
- 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
2025-08-22 17:00:31 +02:00

114 lines
3.8 KiB
Markdown

# 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