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

3.8 KiB

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
  • 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