docs: alignement complet sur le niveau de documentation de 4NK_node - Correction de l'INDEX.md pour sdk_client (au lieu de 4NK_node) - Transformation complète de l'INSTALLATION.md pour SDK Rust/WASM (au lieu de Docker) - Remplacement total de l'USAGE.md pour SDK client (compilation, intégration, Silent Payments) - Documentation spécifique au développement SDK et WASM - Structure cohérente et navigation intuitive - Guides pratiques et techniques complets pour sdk_client

This commit is contained in:
Nicolas Cantu 2025-08-25 19:35:28 +02:00
parent be97f95f4f
commit 01c85b360d
3 changed files with 689 additions and 1143 deletions

View File

@ -1,60 +1,55 @@
# 📚 Index de Documentation - 4NK Node # 📚 Index de Documentation - sdk_client
Index complet de la documentation de l'infrastructure 4NK Node. Index complet de la documentation du SDK client pour les Silent Payments.
## 📖 Guides Principaux ## 📖 Guides Principaux
### 🚀 [Guide d'Installation](INSTALLATION.md) ### 🚀 [Guide d'Installation](INSTALLATION.md)
Guide complet pour installer et configurer l'infrastructure 4NK Node. Guide complet pour installer et configurer le SDK client.
- **Prérequis système et logiciels** - **Prérequis système et logiciels**
- **Installation de Docker et dépendances** - **Installation de Rust et dépendances**
- **Configuration SSH et GitLab** - **Configuration WASM et compilation**
- **Configuration initiale des services**
- **Tests post-installation** - **Tests post-installation**
- **Dépannage et monitoring** - **Dépannage et monitoring**
### 📖 [Guide d'Utilisation](USAGE.md) ### 📖 [Guide d'Utilisation](USAGE.md)
Guide complet pour utiliser l'infrastructure 4NK Node au quotidien. Guide complet pour utiliser le SDK client au quotidien.
- **Démarrage quotidien des services** - **Compilation et build**
- **Opérations de surveillance et monitoring** - **Intégration dans les projets**
- **Utilisation du réseau de relais** - **Utilisation des Silent Payments**
- **Connexion aux services (Bitcoin Core, Blindbit, sdk_relay)**
- **Tests et validation** - **Tests et validation**
- **Configuration et maintenance** - **Configuration et maintenance**
- **Gestion des nœuds externes** - **Optimisations de performance**
### ⚙️ [Guide de Configuration](CONFIGURATION.md) ### ⚙️ [Guide de Configuration](CONFIGURATION.md)
Guide complet pour configurer l'infrastructure selon vos besoins. Guide complet pour configurer le SDK selon vos besoins.
- **Configuration générale et variables d'environnement** - **Configuration générale et variables d'environnement**
- **Configuration Bitcoin Core (base et avancée)** - **Configuration Rust et Cargo**
- **Configuration Blindbit (base et avancée)** - **Configuration WASM et wasm-pack**
- **Configuration des relais (base et avancée)** - **Configuration des features**
- **Configuration des nœuds externes** - **Configuration de build**
- **Configuration Tor** - **Configuration de tests**
- **Configuration Docker Compose** - **Configuration de sécurité**
- **Configuration SSL/TLS**
- **Configuration de monitoring et sauvegarde**
## 🔧 Guides Techniques ## 🔧 Guides Techniques
### 🏗️ [Architecture Technique](ARCHITECTURE.md) ### 🏗️ [Architecture Technique](ARCHITECTURE.md)
Documentation technique détaillée de l'architecture. Documentation technique détaillée de l'architecture.
- **Architecture générale du système** - **Architecture générale du SDK**
- **Composants principaux (Bitcoin Core, Blindbit, SDK Relay)** - **Composants principaux (Rust, WASM, JavaScript)**
- **Architecture de synchronisation mesh** - **Architecture des Silent Payments**
- **Flux de données entre services** - **Flux de données et types**
- **Configuration multi-relais** - **Intégration avec sdk_common**
- **Sécurité et isolation** - **Sécurité et isolation**
- **Performance et optimisations** - **Performance et optimisations**
- **Monitoring et observabilité** - **Monitoring et observabilité**
### 📡 [API Reference](API.md) ### 📡 [API Reference](API.md)
Documentation complète des APIs disponibles. Documentation complète des APIs disponibles.
- **API Bitcoin Core RPC** : Interface JSON-RPC pour Bitcoin - **API Rust** : Interface Rust native
- **API Blindbit HTTP** : API REST pour les paiements silencieux - **API WASM** : Interface WebAssembly
- **API SDK Relay WebSocket** : Interface temps réel pour les clients - **API JavaScript** : Interface JavaScript/TypeScript
- **API SDK Relay HTTP** : API REST pour les opérations de gestion - **Types et structures de données**
- **Format des messages et payloads**
- **Gestion des erreurs** - **Gestion des erreurs**
- **Exemples d'utilisation** - **Exemples d'utilisation**
- **Limites et quotas** - **Limites et quotas**
@ -63,7 +58,7 @@ Documentation complète des APIs disponibles.
Guide de sécurité et bonnes pratiques. Guide de sécurité et bonnes pratiques.
- **Authentification et autorisation** - **Authentification et autorisation**
- **Chiffrement et certificats** - **Chiffrement et certificats**
- **Isolation réseau** - **Sécurité WASM et mémoire**
- **Audit et monitoring de sécurité** - **Audit et monitoring de sécurité**
- **Bonnes pratiques** - **Bonnes pratiques**
@ -98,215 +93,189 @@ Roadmap de développement détaillée.
- **Fonctionnalités planifiées** - **Fonctionnalités planifiées**
- **Évolution de l'architecture** - **Évolution de l'architecture**
- **Métriques de succès** - **Métriques de succès**
- **Vision long terme**
### 📈 [Performance](PERFORMANCE.md)
Guide d'optimisation et monitoring des performances.
- **Optimisation des ressources**
- **Monitoring des performances**
- **Tests de charge**
- **Métriques et alertes**
- **Troubleshooting des performances**
## 🧪 Guides de Test ## 🧪 Guides de Test
### 🧪 [Guide de Tests](TESTING.md) ### 🧪 [Guide des Tests](TESTING.md)
Guide complet des tests de l'infrastructure 4NK Node. Guide complet pour les tests du SDK.
- **Tests unitaires** : Tests individuels des composants - **Tests unitaires Rust**
- **Tests d'intégration** : Tests d'interaction entre services - **Tests d'intégration WASM**
- **Tests de connectivité** : Tests réseau et WebSocket - **Tests de performance**
- **Tests externes** : Tests avec des nœuds externes - **Tests de sécurité**
- **Tests de performance** : Tests de charge et performance (à venir) - **Tests de compatibilité**
- **Organisation et exécution des tests** - **Tests de régression**
- **Interprétation des résultats**
- **Dépannage et maintenance**
### 🔄 [Tests de Synchronisation](SYNC_TESTING.md) ### 🔍 [Audit de Sécurité](SECURITY_AUDIT.md)
Guide des tests de synchronisation entre relais. Audit de sécurité détaillé.
- **Tests de synchronisation mesh** - **Vulnérabilités connues**
- **Tests de découverte de relais** - **Tests de pénétration**
- **Tests de cache de déduplication** - **Audit de code**
- **Tests de métriques de synchronisation** - **Recommandations de sécurité**
- **Troubleshooting de la synchronisation** - **Plan de remédiation**
### 📊 [Tests de Performance](PERFORMANCE_TESTING.md) ## 🔧 Guides de Développement
Guide des tests de performance et de charge.
- **Tests de charge WebSocket**
- **Tests de performance Bitcoin Core**
- **Tests de performance Blindbit**
- **Tests de scalabilité**
- **Benchmarks et métriques**
## 🌐 Guides Réseau ### 🔧 [Guide de Développement](DEVELOPMENT.md)
Guide complet pour le développement.
- **Environnement de développement**
- **Workflow de développement**
- **Standards de code**
- **Debugging et profiling**
- **Optimisation des performances**
- **Déploiement et CI/CD**
### 🌐 [Réseau de Relais](RELAY_NETWORK.md) ### 📋 [Référence Rapide](QUICK_REFERENCE.md)
Guide de configuration du réseau mesh de relais. Référence rapide pour les développeurs.
- **Architecture mesh** - **Commandes essentielles**
- **Configuration des relais locaux** - **Structure du projet**
- **Synchronisation entre relais** - **APIs principales**
- **Découverte automatique** - **Configuration rapide**
- **Gestion des connexions** - **Dépannage rapide**
### 🌍 [Nœuds Externes](EXTERNAL_NODES.md) ### 🔄 [Guide de Migration](MIGRATION.md)
Guide d'ajout et de gestion de nœuds externes. Guide pour les migrations et mises à jour.
- **Configuration des nœuds externes** - **Migration des versions**
- **Script d'administration** - **Breaking changes**
- **Validation et sécurité** - **Mise à jour des dépendances**
- **Tests de connectivité** - **Migration des données**
- **Gestion multi-sites** - **Tests de migration**
### 🔄 [Synchronisation](SYNCHRONIZATION.md) ## 🌐 Guides d'Intégration
Guide du protocole de synchronisation.
- **Protocole de synchronisation**
- **Types de messages**
- **Cache de déduplication**
- **Métriques de synchronisation**
- **Troubleshooting**
## 📋 Guides de Référence ### 🔗 [Intégration 4NK_node](INTEGRATION_4NK_NODE.md)
Guide d'intégration avec l'infrastructure 4NK_node.
- **Configuration Docker**
- **Variables d'environnement**
- **Communication inter-services**
- **Déploiement intégré**
- **Monitoring et logs**
### 📋 [Commandes Rapides](QUICK_REFERENCE.md) ### 🔑 [Configuration SSH](SSH_SETUP.md)
Référence rapide des commandes essentielles. Guide de configuration SSH pour le développement.
- **Commandes de démarrage** - **Génération des clés SSH**
- **Commandes de monitoring** - **Configuration Git**
- **Commandes de test** - **Intégration avec Gitea**
- **Commandes de dépannage** - **Automatisation des déploiements**
- **Commandes de maintenance**
### 📋 [Troubleshooting](TROUBLESHOOTING.md) ### 🤖 [Push SSH Automatisé](AUTO_SSH_PUSH.md)
Guide de résolution des problèmes courants. Guide pour l'automatisation des pushes SSH.
- **Problèmes de démarrage** - **Configuration des scripts**
- **Problèmes de connectivité** - **Intégration CI/CD**
- **Problèmes de synchronisation** - **Gestion des clés**
- **Problèmes de performance** - **Sécurité et bonnes pratiques**
- **Logs et diagnostics**
### 📋 [FAQ](FAQ.md) ## 📊 État et Monitoring
Questions fréquemment posées.
- **Questions d'installation**
- **Questions de configuration**
- **Questions d'utilisation**
- **Questions de performance**
- **Questions de sécurité**
## 📁 Structure des Fichiers ### 📊 [État Actuel](ETAT_ACTUEL.md)
État détaillé du projet sdk_client.
- **Statut des compilations**
- **Configuration des branches**
- **Fonctionnalités opérationnelles**
- **Métriques de performance**
- **Problèmes connus**
``` ### 📋 [Résumé Final](RESUME_FINAL.md)
4NK_node/ Résumé complet de l'état final du projet.
├── README.md # Documentation principale - **Succès accomplis**
├── docs/ # Documentation organisée - **Prêt pour la production**
│ ├── INDEX.md # Cet index - **Documentation complète**
│ ├── INSTALLATION.md # Guide d'installation - **Support et maintenance**
│ ├── USAGE.md # Guide d'utilisation
│ ├── CONFIGURATION.md # Guide de configuration
│ ├── ARCHITECTURE.md # Architecture technique
│ ├── API.md # Référence API
│ ├── SECURITY.md # Guide de sécurité
│ ├── PERFORMANCE.md # Guide de performance
│ ├── TESTING.md # Tests de base
│ ├── SYNC_TESTING.md # Tests de synchronisation
│ ├── PERFORMANCE_TESTING.md # Tests de performance
│ ├── RELAY_NETWORK.md # Réseau de relais
│ ├── EXTERNAL_NODES.md # Nœuds externes
│ ├── SYNCHRONIZATION.md # Protocole de synchronisation
│ ├── QUICK_REFERENCE.md # Commandes rapides
│ ├── TROUBLESHOOTING.md # Guide de dépannage
│ └── FAQ.md # Questions fréquentes
├── specs/ # Spécifications techniques
│ ├── spec-technique.md # Spécification technique
│ └── spec-fonctionnel.md # Spécification fonctionnelle
├── scripts/ # Scripts utilitaires
├── tests/ # Scripts de test
└── examples/ # Exemples d'utilisation
```
## 🎯 Parcours d'Apprentissage ## 🔧 Guides d'Open Source
### 🚀 **Débutant** ### ✅ [Checklist Open Source](OPEN_SOURCE_CHECKLIST.md)
1. [Guide d'Installation](INSTALLATION.md) - Installer l'infrastructure Checklist complète pour l'ouverture en open source.
2. [Guide d'Utilisation](USAGE.md) - Utiliser les services de base - **Préparation du code**
3. [Tests de Base](TESTING.md) - Vérifier le fonctionnement - **Documentation**
4. [FAQ](FAQ.md) - Réponses aux questions courantes - **Licences et légal**
- **Infrastructure**
- **Communication**
### 🔧 **Intermédiaire** ## 📞 Support et Contact
1. [Guide de Configuration](CONFIGURATION.md) - Configurer selon vos besoins
2. [Réseau de Relais](RELAY_NETWORK.md) - Comprendre l'architecture mesh
3. [Nœuds Externes](EXTERNAL_NODES.md) - Ajouter des nœuds externes
4. [Tests de Synchronisation](SYNC_TESTING.md) - Tester la synchronisation
### 🏗️ **Avancé** ### 📞 [Support](SUPPORT.md)
1. [Architecture Technique](ARCHITECTURE.md) - Comprendre l'architecture Guide de support et contact.
2. [API Reference](API.md) - Utiliser les APIs - **Comment obtenir de l'aide**
3. [Sécurité](SECURITY.md) - Sécuriser l'infrastructure - **Création d'issues**
4. [Performance](PERFORMANCE.md) - Optimiser les performances - **Canal de communication**
5. [Tests de Performance](PERFORMANCE_TESTING.md) - Tests avancés - **FAQ**
- **Ressources additionnelles**
### 🛠️ **Expert**
1. [Synchronisation](SYNCHRONIZATION.md) - Protocole de synchronisation
2. [Troubleshooting](TROUBLESHOOTING.md) - Résolution de problèmes
3. [Commandes Rapides](QUICK_REFERENCE.md) - Référence rapide
4. Spécifications techniques dans `/specs/`
## 🔍 Recherche dans la Documentation
### Par Sujet
- **Installation** : [INSTALLATION.md](INSTALLATION.md)
- **Configuration** : [CONFIGURATION.md](CONFIGURATION.md)
- **Utilisation** : [USAGE.md](USAGE.md)
- **Tests** : [TESTING.md](TESTING.md), [SYNC_TESTING.md](SYNC_TESTING.md)
- **Réseau** : [RELAY_NETWORK.md](RELAY_NETWORK.md), [EXTERNAL_NODES.md](EXTERNAL_NODES.md)
- **Performance** : [PERFORMANCE.md](PERFORMANCE.md)
- **Sécurité** : [SECURITY.md](SECURITY.md)
- **Dépannage** : [TROUBLESHOOTING.md](TROUBLESHOOTING.md)
### Par Service
- **Bitcoin Core** : [CONFIGURATION.md](CONFIGURATION.md#configuration-bitcoin-core)
- **Blindbit** : [CONFIGURATION.md](CONFIGURATION.md#configuration-blindbit)
- **sdk_relay** : [CONFIGURATION.md](CONFIGURATION.md#configuration-des-relais)
- **Tor** : [CONFIGURATION.md](CONFIGURATION.md#configuration-tor)
### Par Tâche
- **Démarrer** : [USAGE.md](USAGE.md#démarrage-quotidien)
- **Configurer** : [CONFIGURATION.md](CONFIGURATION.md)
- **Tester** : [TESTING.md](TESTING.md)
- **Monitorer** : [USAGE.md](USAGE.md#monitoring-et-alertes)
- **Dépanner** : [TROUBLESHOOTING.md](TROUBLESHOOTING.md)
## 📞 Support
### Documentation
- **Index** : [INDEX.md](INDEX.md) - Cet index
- **FAQ** : [FAQ.md](FAQ.md) - Questions fréquentes
- **Troubleshooting** : [TROUBLESHOOTING.md](TROUBLESHOOTING.md) - Résolution de problèmes
### Ressources Externes
- **Repository** : [GitLab 4NK Node](https://git.4nkweb.com/4nk/4NK_node)
- **Issues** : [Issues GitLab](https://git.4nkweb.com/4nk/4NK_node/issues)
- **Wiki** : [Wiki GitLab](https://git.4nkweb.com/4nk/4NK_node/wikis)
### Contact
- **Email** : support@4nkweb.com
- **Chat** : [Discord 4NK](https://discord.gg/4nk)
- **Forum** : [Forum 4NK](https://forum.4nkweb.com)
## 🔄 Mise à Jour de la Documentation
### Dernière Mise à Jour
- **Date** : $(date)
- **Version** : 1.0.0
- **Auteur** : Équipe 4NK
### Historique des Versions
- **v1.0.0** : Documentation initiale complète
- **v0.9.0** : Documentation de base
- **v0.8.0** : Guides techniques
- **v0.7.0** : Guides de test
### Contribution
Pour contribuer à la documentation :
1. Fork le repository
2. Créer une branche pour votre contribution
3. Modifier la documentation
4. Créer une Pull Request
--- ---
## 🎯 Navigation Rapide
### 🚀 Démarrage Rapide
1. [Installation](INSTALLATION.md) - Installer sdk_client
2. [Configuration](CONFIGURATION.md) - Configurer l'environnement
3. [Utilisation](USAGE.md) - Utiliser le SDK
### 🔧 Développement
1. [Architecture](ARCHITECTURE.md) - Comprendre l'architecture
2. [API](API.md) - Consulter les APIs
3. [Tests](TESTING.md) - Exécuter les tests
### 📚 Documentation
1. [Index](INDEX.md) - Cet index
2. [Quick Reference](QUICK_REFERENCE.md) - Référence rapide
3. [Roadmap](ROADMAP.md) - Évolution du projet
### 🤝 Communauté
1. [Guide Communauté](COMMUNITY_GUIDE.md) - Contribuer
2. [Code de Conduite](../CODE_OF_CONDUCT.md) - Règles de conduite
3. [Support](SUPPORT.md) - Obtenir de l'aide
---
## 🧪 Tests et Validation
### Tests Automatisés
```bash
# Tests unitaires
cargo test --all
# Tests d'intégration
cargo test --test integration
# Tests de performance
cargo test --test performance
# Linting
cargo clippy -- -D warnings
# Formatage
cargo fmt -- --check
```
### Tests WASM
```bash
# Compilation WASM
wasm-pack build --target web
# Tests WASM
wasm-pack test --headless --firefox
wasm-pack test --headless --chrome
```
---
## 🚀 Développement
### Commandes Essentielles
```bash
# Build de développement
cargo build
# Build de production
cargo build --release
# Compilation WASM
wasm-pack build --target web
# Tests
cargo test --all
```
---
**📚 Documentation complète pour sdk_client - SDK client pour les Silent Payments** 🚀

View File

@ -1,533 +1,308 @@
# 📦 Guide d'Installation - 4NK Node # 📦 Guide d'Installation - sdk_client
Guide complet pour installer et configurer l'infrastructure 4NK Node. Guide complet pour installer et configurer le SDK client pour les Silent Payments.
## 📋 Prérequis ## 📋 Prérequis
### Système ### Système
- **OS** : Linux (Ubuntu 20.04+, Debian 11+, CentOS 8+) - **OS** : Linux (Ubuntu 20.04+, Debian 11+, CentOS 8+), macOS 10.15+, Windows 10+
- **Architecture** : x86_64 - **Architecture** : x86_64, ARM64 (Apple Silicon)
- **RAM** : 4 Go minimum, 8 Go recommandés - **RAM** : 2 Go minimum, 4 Go recommandés
- **Stockage** : 20 Go minimum, 50 Go recommandés - **Stockage** : 5 Go minimum, 10 Go recommandés
- **Réseau** : Connexion Internet stable - **Réseau** : Connexion Internet stable
### Logiciels ### Logiciels
- **Docker** : Version 20.10+ - **Rust** : Version 1.70+ (obligatoire)
- **Docker Compose** : Version 2.0+ - **Cargo** : Inclus avec Rust
- **wasm-pack** : Version 0.12+ (pour compilation WASM)
- **Git** : Version 2.25+ - **Git** : Version 2.25+
- **Bash** : Version 4.0+ - **Node.js** : Version 18.0+ (optionnel, pour tests)
## 🚀 Installation ## 🚀 Installation
### 1. Installation de Docker ### 1. Installation de Rust
#### Ubuntu/Debian #### Linux/macOS
```bash ```bash
# Mettre à jour les paquets # Installer Rust via rustup
sudo apt update curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Installer les dépendances # Recharger l'environnement
sudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release source ~/.cargo/env
# Ajouter la clé GPG Docker # Vérifier l'installation
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg rustc --version
cargo --version
# Ajouter le repository Docker
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Installer Docker
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
# Ajouter l'utilisateur au groupe docker
sudo usermod -aG docker $USER
# Démarrer Docker
sudo systemctl start docker
sudo systemctl enable docker
``` ```
#### CentOS/RHEL #### Windows
```bash ```bash
# Installer les dépendances # Télécharger et installer rustup depuis
sudo yum install -y yum-utils # https://rustup.rs/
# Ajouter le repository Docker
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# Installer Docker
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
# Démarrer Docker
sudo systemctl start docker
sudo systemctl enable docker
# Ajouter l'utilisateur au groupe docker
sudo usermod -aG docker $USER
``` ```
### 2. Configuration SSH (Recommandé) ### 2. Installation de wasm-pack
```bash
# Installer wasm-pack
cargo install wasm-pack
# Vérifier l'installation
wasm-pack --version
```
### 3. Configuration SSH (Recommandé)
```bash ```bash
# Générer une clé SSH # Générer une clé SSH
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_4nk -C "4nk-automation" ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_sdk -C "sdk-client-automation"
# Ajouter à l'agent SSH # Ajouter à l'agent SSH
ssh-add ~/.ssh/id_ed25519_4nk ssh-add ~/.ssh/id_ed25519_sdk
# Configurer Git pour utiliser la clé # Configurer Git pour utiliser la clé
git config --global core.sshCommand "ssh -i ~/.ssh/id_ed25519_4nk" git config --global core.sshCommand "ssh -i ~/.ssh/id_ed25519_sdk"
# Afficher la clé publique pour GitLab # Afficher la clé publique pour Gitea
cat ~/.ssh/id_ed25519_4nk.pub cat ~/.ssh/id_ed25519_sdk.pub
``` ```
**Ajouter la clé publique à GitLab :** **Ajouter la clé publique à Gitea :**
1. Aller sur GitLab > Settings > SSH Keys 1. Aller sur Gitea > Settings > SSH Keys
2. Coller la clé publique 2. Coller la clé publique
3. Cliquer sur "Add key" 3. Cliquer sur "Add key"
### 3. Clonage du Repository ### 4. Clonage du Repository
```bash ```bash
# Cloner avec SSH (recommandé) # Cloner avec SSH (recommandé)
git clone git@git.4nkweb.com:4nk/4NK_node.git git clone git@git.4nkweb.com:4nk/sdk_client.git
cd 4NK_node cd sdk_client
# Ou avec HTTPS (si SSH non configuré) # Ou cloner avec HTTPS
# git clone https://git.4nkweb.com/4nk/4NK_node.git git clone https://git.4nkweb.com/4nk/sdk_client.git
# cd 4NK_node cd sdk_client
``` ```
### 4. Vérification de l'Installation ## 🔧 Configuration
### Variables d'Environnement
Créer un fichier `.env` à la racine du projet :
```bash ```bash
# Vérifier Docker # Configuration Rust
docker --version RUST_LOG=info
docker-compose --version RUST_BACKTRACE=1
CARGO_INCREMENTAL=1
# Vérifier la connectivité GitLab # Configuration WASM
ssh -T git@git.4nkweb.com WASM_PACK_TARGET=web
WASM_PACK_PROFILE=release
# Vérifier les permissions # Configuration de développement
ls -la CARGO_PROFILE_DEV_OPT_LEVEL=0
CARGO_PROFILE_RELEASE_OPT_LEVEL=3
``` ```
## 🔧 Configuration Initiale ### Configuration Cargo
### 1. Configuration des Variables d'Environnement Le fichier `Cargo.toml` est déjà configuré pour :
- Dépendances Rust
- Features WASM
- Configuration de build
- Tests et documentation
### Configuration wasm-pack
```bash ```bash
# Créer le fichier d'environnement # Configuration wasm-pack
cat > .env << EOF wasm-pack build --target web --out-dir pkg
# Configuration 4NK Node
PROJECT_NAME=4NK Node
NETWORK_NAME=4nk_node_btcnet
# Logs # Ou pour Node.js
RUST_LOG=debug,bitcoincore_rpc=trace wasm-pack build --target nodejs --out-dir pkg
# Bitcoin
BITCOIN_COOKIE_PATH=/home/bitcoin/.bitcoin/signet/.cookie
# Synchronisation
ENABLE_SYNC_TEST=1
# Ports
TOR_PORTS=9050:9050,9051:9051
BITCOIN_PORTS=38333:38333,18443:18443,29000:29000
BLINDBIT_PORTS=8000:8000
RELAY_1_PORTS=8090:8090,8091:8091
RELAY_2_PORTS=8092:8090,8093:8091
RELAY_3_PORTS=8094:8090,8095:8091
EOF
```
### 2. Configuration Bitcoin Core
```bash
# Vérifier la configuration Bitcoin
cat bitcoin/bitcoin.conf
# Modifier si nécessaire
nano bitcoin/bitcoin.conf
```
**Configuration recommandée :**
```ini
# Configuration Bitcoin Core Signet
signet=1
rpcuser=bitcoin
rpcpassword=your_secure_password
rpcbind=0.0.0.0
rpcallowip=172.19.0.0/16
zmqpubrawblock=tcp://0.0.0.0:29000
zmqpubrawtx=tcp://0.0.0.0:29000
txindex=1
server=1
listen=1
```
### 3. Configuration Blindbit
```bash
# Vérifier la configuration Blindbit
cat blindbit/blindbit.toml
# Modifier si nécessaire
nano blindbit/blindbit.toml
```
**Configuration recommandée :**
```toml
# Configuration Blindbit
host = "0.0.0.0:8000"
chain = "signet"
rpc_endpoint = "http://bitcoin:18443"
cookie_path = "/home/bitcoin/.bitcoin/signet/.cookie"
sync_start_height = 1
max_parallel_tweak_computations = 4
max_parallel_requests = 4
```
### 4. Configuration des Relais
```bash
# Vérifier les configurations des relais
ls -la sdk_relay/.conf.docker.*
# Modifier si nécessaire
nano sdk_relay/.conf.docker.relay1
nano sdk_relay/.conf.docker.relay2
nano sdk_relay/.conf.docker.relay3
```
**Configuration recommandée pour chaque relay :**
```ini
core_url=http://bitcoin:18443
core_wallet=relay_wallet
ws_url=0.0.0.0:8090
wallet_name=relay_wallet.json
network=signet
blindbit_url=http://blindbit:8000
zmq_url=tcp://bitcoin:29000
data_dir=.4nk
cookie_path=/home/bitcoin/.4nk/bitcoin.cookie
dev_mode=true
standalone=false
relay_id=relay-1 # Changer pour chaque relay
```
## 🚀 Démarrage
### 1. Démarrage Complet
```bash
# Démarrer tous les services
./restart_4nk_node.sh
# Vérifier le statut
docker ps
```
### 2. Démarrage Séquentiel (Debug)
```bash
# Démarrer Tor
./restart_4nk_node.sh -t
# Démarrer Bitcoin Core
./restart_4nk_node.sh -b
# Attendre la synchronisation Bitcoin (10-30 minutes)
echo "Attendre la synchronisation Bitcoin..."
docker logs bitcoin-signet | grep "progress"
# Démarrer Blindbit
./restart_4nk_node.sh -l
# Démarrer les relais
./restart_4nk_node.sh -r
```
### 3. Vérification du Démarrage
```bash
# Vérifier tous les services
docker ps
# Vérifier les logs
docker-compose logs --tail=50
# Vérifier la connectivité
./test_final_sync.sh
``` ```
## 🧪 Tests Post-Installation ## 🧪 Tests Post-Installation
### 1. Tests de Connectivité ### 1. Test de Compilation Rust
```bash ```bash
# Test de base # Test de compilation
./test_final_sync.sh cargo build
# Test de synchronisation # Vérifier le build
./test_sync_logs.sh cargo build --release
# Test des messages WebSocket # Vérifier les dépendances
python3 test_websocket_messages.py cargo check
``` ```
### 2. Tests de Performance ### 2. Test de Compilation WASM
```bash ```bash
# Vérifier l'utilisation des ressources # Compilation WASM
docker stats wasm-pack build --target web
# Test de charge # Vérifier les fichiers générés
python3 test_websocket_messages.py --load-test ls -la pkg/
# Monitoring de la synchronisation
./monitor_sync.sh
``` ```
### 3. Tests de Sécurité ### 3. Test des Tests
```bash ```bash
# Vérifier les ports exposés # Tests unitaires
netstat -tlnp | grep -E "(18443|8000|9050|8090)" cargo test
# Vérifier les permissions # Tests d'intégration
ls -la sdk_relay/.conf* cargo test --test integration
ls -la bitcoin/bitcoin.conf
ls -la blindbit/blindbit.toml # Tests WASM
wasm-pack test --headless --firefox
``` ```
## 🔧 Configuration Avancée ### 4. Test de Linting
### 1. Configuration Réseau
```bash ```bash
# Créer un réseau Docker personnalisé # Clippy (linter Rust)
docker network create 4nk-network --subnet=172.20.0.0/16 cargo clippy -- -D warnings
# Modifier docker-compose.yml # Formatage
sed -i 's/4nk_default/4nk-network/g' docker-compose.yml cargo fmt -- --check
```
### 2. Configuration SSL/TLS
```bash
# Générer un certificat auto-signé
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes
# Configurer nginx comme proxy SSL
cat > nginx.conf << EOF
server {
listen 443 ssl;
server_name your-domain.com;
ssl_certificate cert.pem;
ssl_certificate_key key.pem;
location / {
proxy_pass http://localhost:8090;
proxy_http_version 1.1;
proxy_set_header Upgrade \$http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host \$host;
}
}
EOF
```
### 3. Configuration de Pare-feu
```bash
# Autoriser seulement les ports nécessaires
sudo ufw allow 18443/tcp # Bitcoin Core RPC
sudo ufw allow 8090/tcp # sdk_relay WebSocket
sudo ufw allow 8000/tcp # Blindbit API
sudo ufw enable
# Vérifier les règles
sudo ufw status numbered
``` ```
## 🚨 Dépannage ## 🚨 Dépannage
### Problèmes Courants ### Problèmes Courants
#### 1. Docker Non Installé #### Rust non trouvé
```bash ```bash
# Vérifier l'installation Docker # Vérifier l'installation
docker --version which rustc
rustc --version
# Si non installé, suivre les étapes d'installation ci-dessus # Réinstaller si nécessaire
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source ~/.cargo/env
``` ```
#### 2. Permissions Docker #### wasm-pack non trouvé
```bash ```bash
# Vérifier les permissions # Vérifier l'installation
docker ps which wasm-pack
wasm-pack --version
# Si erreur de permission # Réinstaller si nécessaire
sudo usermod -aG docker $USER cargo install wasm-pack
newgrp docker
``` ```
#### 3. Ports Déjà Utilisés #### Erreurs de compilation
```bash ```bash
# Vérifier les ports utilisés # Nettoyer et recompiler
sudo netstat -tlnp | grep -E "(18443|8000|9050|8090)" cargo clean
cargo build
# Arrêter les services conflictuels # Vérifier les dépendances
sudo docker-compose down cargo update
cargo check
``` ```
#### 4. Problèmes de Synchronisation Bitcoin #### Erreurs WASM
```bash ```bash
# Vérifier les logs Bitcoin # Nettoyer et recompiler WASM
docker logs bitcoin-signet rm -rf pkg/
wasm-pack build --target web
# Vérifier l'espace disque # Vérifier les dépendances WASM
df -h cargo tree
# Redémarrer Bitcoin Core
docker restart bitcoin-signet
``` ```
### Logs Utiles ### Logs Détaillés
```bash ```bash
# Logs de tous les services # Logs de compilation Rust
docker-compose logs -f RUST_LOG=debug cargo build
# Logs d'un service spécifique # Logs de compilation WASM
docker logs bitcoin-signet wasm-pack build --target web --verbose
docker logs blindbit-oracle
docker logs sdk_relay_1
# Logs avec timestamps # Logs de tests
docker-compose logs -t RUST_LOG=debug cargo test
# Logs depuis une date
docker-compose logs --since="2024-01-01T00:00:00"
``` ```
## 🔒 Sécurité
### Vérifications de Sécurité
```bash
# Audit des dépendances Rust
cargo audit
# Vérification des vulnérabilités
cargo audit --deny warnings
# Vérification du code
cargo clippy -- -D warnings
```
### Bonnes Pratiques
- Maintenir Rust à jour
- Utiliser des dépendances sécurisées
- Tester régulièrement le code
- Valider les entrées
- Utiliser des variables d'environnement pour les secrets
## 📊 Monitoring ## 📊 Monitoring
### 1. Monitoring de Base ### Métriques d'Installation
```bash ```bash
# Statut des conteneurs # Taille du projet
docker ps du -sh .
# Utilisation des ressources # Nombre de fichiers
docker stats find . -type f | wc -l
# Espace disque # Dépendances Rust
docker system df cargo tree | wc -l
# Taille du binaire
ls -lh target/release/sdk_client.wasm
``` ```
### 2. Monitoring Avancé ### Vérification de l'Installation
```bash ```bash
# Surveillance de la synchronisation # Script de vérification
./monitor_sync.sh ./scripts/verify-installation.sh
# Monitoring en continu # Tests automatisés
while true; do cargo test --all
echo "=== $(date) ==="
docker stats --no-stream | grep -E "(sdk_relay|bitcoin)"
sleep 30
done
``` ```
### 3. Alertes ## 🎯 Prochaines Étapes
```bash Après l'installation réussie :
# Script d'alerte simple
cat > monitor_alert.sh << 'EOF'
#!/bin/bash
if ! docker ps | grep -q "bitcoin-signet.*Up"; then
echo "ALERTE: Bitcoin Core n'est pas en cours d'exécution!"
# Ajouter notification (email, Slack, etc.)
fi
EOF
chmod +x monitor_alert.sh 1. **Lire le [Guide d'Utilisation](USAGE.md)** - Utiliser le SDK
``` 2. **Consulter l'[Architecture](ARCHITECTURE.md)** - Comprendre le système
3. **Explorer les [APIs](API.md)** - Utiliser les fonctionnalités
4. **Configurer l'[Intégration 4NK_node](INTEGRATION_4NK_NODE.md)** - Déployer en production
## 🔄 Mise à Jour ## 📞 Support
### 1. Mise à Jour de l'Infrastructure En cas de problème :
```bash 1. Consulter la [documentation](INDEX.md)
# Sauvegarder la configuration 2. Vérifier les [issues existantes](https://git.4nkweb.com/4nk/sdk_client/issues)
cp -r . ../4NK_node_backup_$(date +%Y%m%d) 3. Créer une nouvelle issue avec les détails du problème
4. Inclure les logs et la configuration utilisée
# Mettre à jour le code
git pull origin main
# Redémarrer les services
./restart_4nk_node.sh
```
### 2. Mise à Jour de Docker
```bash
# Mettre à jour Docker
sudo apt update
sudo apt upgrade docker-ce docker-ce-cli containerd.io
# Redémarrer Docker
sudo systemctl restart docker
```
### 3. Mise à Jour des Images
```bash
# Reconstruire les images
docker-compose build --no-cache
# Redémarrer les services
docker-compose up -d
```
## 📝 Checklist d'Installation
- [ ] Docker installé et configuré
- [ ] Docker Compose installé
- [ ] Clé SSH configurée pour GitLab
- [ ] Repository cloné
- [ ] Variables d'environnement configurées
- [ ] Configurations Bitcoin Core vérifiées
- [ ] Configurations Blindbit vérifiées
- [ ] Configurations des relais vérifiées
- [ ] Services démarrés avec succès
- [ ] Tests de connectivité passés
- [ ] Tests de synchronisation passés
- [ ] Monitoring configuré
- [ ] Pare-feu configuré (optionnel)
- [ ] SSL/TLS configuré (optionnel)
## 🎉 Installation Terminée
Félicitations ! L'infrastructure 4NK Node est maintenant installée et configurée.
**Prochaines étapes :**
1. Consulter le [Guide d'Utilisation](USAGE.md)
2. Configurer les [Nœuds Externes](EXTERNAL_NODES.md)
3. Tester la [Synchronisation](SYNCHRONIZATION.md)
4. Configurer le [Monitoring](PERFORMANCE.md)
--- ---
**🚀 Installation terminée ! sdk_client est prêt à être utilisé.** ✨

View File

@ -1,667 +1,469 @@
# 📖 Guide d'Utilisation - 4NK Node # 📖 Guide d'Utilisation - sdk_client
Guide complet pour utiliser l'infrastructure 4NK Node au quotidien. Guide complet pour utiliser le SDK client pour les Silent Payments au quotidien.
## 🚀 Démarrage Quotidien ## 🚀 Compilation et Build
### 1. Démarrage Rapide ### 1. Build de Développement
```bash ```bash
# Démarrer tous les services # Build de développement
./restart_4nk_node.sh cargo build
# Vérifier le statut # Build avec optimisations
docker ps cargo build --release
# Vérifier le build
cargo check
``` ```
### 2. Démarrage Séquentiel ### 2. Compilation WASM
```bash ```bash
# Démarrer Tor # Compilation WASM pour le web
./restart_4nk_node.sh -t wasm-pack build --target web
# Démarrer Bitcoin Core # Compilation WASM pour Node.js
./restart_4nk_node.sh -b wasm-pack build --target nodejs
# Attendre la synchronisation Bitcoin # Compilation WASM avec optimisations
echo "Attendre la synchronisation Bitcoin (10-30 minutes)..." wasm-pack build --target web --release
docker logs bitcoin-signet | grep "progress"
# Démarrer Blindbit
./restart_4nk_node.sh -l
# Démarrer les relais
./restart_4nk_node.sh -r
``` ```
### 3. Vérification du Démarrage ### 3. Vérification du Build
```bash ```bash
# Vérifier tous les services # Vérifier les fichiers générés
docker ps ls -la pkg/
# Vérifier les logs # Vérifier la taille du WASM
docker-compose logs --tail=50 ls -lh pkg/sdk_client_bg.wasm
# Vérifier la connectivité # Vérifier les types TypeScript
./test_final_sync.sh cat pkg/sdk_client.d.ts
``` ```
## 🔧 Opérations Quotidiennes ## 🔧 Intégration dans les Projets
### 1. Surveillance des Services ### 1. Intégration JavaScript/TypeScript
```bash ```javascript
# Statut des services // Import du module WASM
docker ps import init, { generate_sp_wallet, lock_freezed_utxos } from './pkg/sdk_client.js';
# Logs en temps réel // Initialisation
docker-compose logs -f await init();
# Utilisation des ressources // Utilisation des fonctions
docker stats const wallet = generate_sp_wallet();
const success = lock_freezed_utxos(wallet, utxos);
# Espace disque
docker system df
``` ```
### 2. Monitoring de la Synchronisation ### 2. Intégration Rust
```bash ```rust
# Surveillance de la synchronisation use sdk_client::{generate_sp_wallet, lock_freezed_utxos};
./monitor_sync.sh
# Test de synchronisation // Utilisation directe
./test_sync_logs.sh let wallet = generate_sp_wallet();
let success = lock_freezed_utxos(&wallet, &utxos);
# Test des messages WebSocket
python3 test_websocket_messages.py
``` ```
### 3. Gestion des Logs ### 3. Intégration Web
```bash ```html
# Logs de tous les services <!DOCTYPE html>
docker-compose logs -f <html>
<head>
# Logs d'un service spécifique <script type="module">
docker logs bitcoin-signet import init, { generate_sp_wallet } from './pkg/sdk_client.js';
docker logs blindbit-oracle
docker logs sdk_relay_1 async function main() {
await init();
# Logs avec timestamps const wallet = generate_sp_wallet();
docker-compose logs -t console.log('Wallet généré:', wallet);
}
# Logs depuis une date
docker-compose logs --since="2024-01-01T00:00:00" main();
</script>
# Logs des 100 dernières lignes </head>
docker-compose logs --tail=100 <body>
<h1>SDK Client Test</h1>
</body>
</html>
``` ```
## 🌐 Utilisation du Réseau de Relais ## 💰 Utilisation des Silent Payments
### 1. Configuration des Relais ### 1. Génération de Wallet
L'infrastructure utilise 3 relais locaux : ```rust
// Génération d'un nouveau wallet Silent Payment
let wallet = generate_sp_wallet();
| Relay | Port WebSocket | Port HTTP | Configuration | // Propriétés du wallet
|-------|----------------|-----------|---------------| println!("Address: {}", wallet.address);
| **Relay 1** | 8090 | 8091 | `sdk_relay/.conf.docker.relay1` | println!("Public Key: {}", wallet.public_key);
| **Relay 2** | 8092 | 8093 | `sdk_relay/.conf.docker.relay2` |
| **Relay 3** | 8094 | 8095 | `sdk_relay/.conf.docker.relay3` |
### 2. Test de Connectivité des Relais
```bash
# Test de connectivité de base
./test_final_sync.sh
# Test de synchronisation
./test_sync_logs.sh
# Test des messages WebSocket
python3 test_websocket_messages.py
# Test de charge
python3 test_websocket_messages.py --load-test
``` ```
### 3. Surveillance de la Synchronisation ### 2. Verrouillage d'UTXOs
```bash ```rust
# Surveillance en temps réel // Liste des UTXOs à verrouiller
./monitor_sync.sh let utxos = vec![
UTXO {
txid: "abc123...",
vout: 0,
amount: 100000,
script_pubkey: "script...",
}
];
# Test de synchronisation forcé // Verrouillage des UTXOs
./test_sync_logs.sh force let success = lock_freezed_utxos(&wallet, &utxos);
if success {
# Test de synchronisation en continu println!("UTXOs verrouillés avec succès");
./test_sync_logs.sh continuous }
``` ```
## 🔗 Connexion aux Services ### 3. Scan de Blocs
### 1. Bitcoin Core RPC ```rust
// Scan de blocs pour les Silent Payments
let blocks = vec![800000, 800001, 800002];
let results = scan_blocks(&wallet, &blocks);
```bash for result in results {
# Connexion via curl println!("Transaction trouvée: {}", result.txid);
curl -u bitcoin:your_password --data-binary '{"jsonrpc": "1.0", "id": "curltest", "method": "getblockchaininfo", "params": []}' -H 'content-type: text/plain;' http://localhost:18443/ println!("Montant: {} sats", result.amount);
}
# Connexion via bitcoin-cli
docker exec bitcoin-signet bitcoin-cli -signet getblockchaininfo
# Vérifier la synchronisation
docker exec bitcoin-signet bitcoin-cli -signet getblockchaininfo | jq '.verificationprogress'
```
### 2. Blindbit API
```bash
# Test de connectivité
curl -s http://localhost:8000/
# Vérifier le statut
curl -s http://localhost:8000/status
# Obtenir des filtres
curl -s http://localhost:8000/filters
```
### 3. sdk_relay WebSocket
```bash
# Test de connectivité WebSocket
curl -v -H "Connection: Upgrade" -H "Upgrade: websocket" -H "Sec-WebSocket-Key: test" http://localhost:8090/
# Test avec wscat (si installé)
wscat -c ws://localhost:8090
# Test avec Python
python3 test_websocket_messages.py
``` ```
## 🧪 Tests et Validation ## 🧪 Tests et Validation
### 1. Tests de Base ### 1. Tests Unitaires
```bash ```bash
# Test de connectivité complet # Exécuter tous les tests
./test_final_sync.sh cargo test
# Test de synchronisation # Tests avec output détaillé
./test_sync_logs.sh cargo test -- --nocapture
# Test des messages # Tests spécifiques
./test_messages.sh cargo test test_wallet_generation
# Test des 3 relais
./test_3_relays.sh
``` ```
### 2. Tests de Performance ### 2. Tests d'Intégration
```bash ```bash
# Test de charge WebSocket # Tests d'intégration
for i in {1..10}; do cargo test --test integration
python3 test_websocket_messages.py &
done
wait
# Test de connectivité multiple # Tests de performance
netstat -tlnp | grep -E "(8090|8092|8094)" cargo test --test performance
# Test de performance
docker stats --no-stream
``` ```
### 3. Tests de Sécurité ### 3. Tests WASM
```bash ```bash
# Vérifier les ports exposés # Tests WASM avec Firefox
netstat -tuln | grep -E "(8090|8092|8094)" wasm-pack test --headless --firefox
# Vérifier les logs d'accès # Tests WASM avec Chrome
docker logs sdk_relay_1 | grep -E "(ERROR|WARN)" | tail -20 wasm-pack test --headless --chrome
# Vérifier l'utilisation des ressources # Tests WASM avec Node.js
docker stats --no-stream | grep sdk_relay wasm-pack test --node
```
### 4. Tests de Linting
```bash
# Clippy (linter Rust)
cargo clippy -- -D warnings
# Formatage du code
cargo fmt -- --check
# Audit de sécurité
cargo audit
``` ```
## 🔧 Configuration et Maintenance ## 🔧 Configuration et Maintenance
### 1. Modification de Configuration ### 1. Configuration des Features
```bash ```toml
# Modifier la configuration Bitcoin Core # Cargo.toml
sudo docker-compose down [dependencies]
nano bitcoin/bitcoin.conf sdk_client = { git = "https://git.4nkweb.com/4nk/sdk_client.git", features = ["wasm", "web"] }
sudo docker-compose up -d bitcoin
# Modifier la configuration Blindbit
nano blindbit/blindbit.toml
sudo docker-compose restart blindbit
# Modifier la configuration des relais
nano sdk_relay/.conf.docker.relay1
sudo docker-compose restart sdk_relay_1
``` ```
### 2. Redémarrage des Services ### 2. Configuration de Build
```bash ```toml
# Redémarrage complet # Cargo.toml
./restart_4nk_node.sh [profile.release]
opt-level = 3
lto = true
codegen-units = 1
panic = "abort"
# Redémarrage d'un service spécifique [profile.dev]
docker-compose restart bitcoin opt-level = 0
docker-compose restart blindbit debug = true
docker-compose restart sdk_relay_1
# Redémarrage avec reconstruction
docker-compose down
docker-compose build --no-cache
docker-compose up -d
``` ```
### 3. Sauvegarde et Restauration ### 3. Configuration WASM
```bash ```bash
# Sauvegarde des données # Variables d'environnement pour WASM
docker exec bitcoin-signet tar czf /tmp/bitcoin-backup.tar.gz /home/bitcoin/.bitcoin export WASM_PACK_TARGET=web
docker cp bitcoin-signet:/tmp/bitcoin-backup.tar.gz ./backup/ export WASM_PACK_PROFILE=release
export CARGO_PROFILE_RELEASE_OPT_LEVEL=3
# Sauvegarde des configurations
tar czf config-backup.tar.gz sdk_relay/.conf* external_nodes.conf
# Restauration
docker cp ./backup/bitcoin-backup.tar.gz bitcoin-signet:/tmp/
docker exec bitcoin-signet tar xzf /tmp/bitcoin-backup.tar.gz -C /
``` ```
## 🌐 Gestion des Nœuds Externes ## 📊 Optimisations de Performance
### 1. Ajout de Nœuds Externes ### 1. Optimisations Rust
```bash ```rust
# Ajouter un nœud externe // Utilisation de types optimisés
./add_external_node.sh add external-relay-1 external-relay-1.example.com:8090 use std::collections::HashMap;
# Lister les nœuds configurés // Pool de connexions
./add_external_node.sh list use tokio::sync::Semaphore;
# Tester la connectivité // Cache en mémoire
./add_external_node.sh test external-relay-1 use lru::LruCache;
# Supprimer un nœud
./add_external_node.sh remove external-relay-1
``` ```
### 2. Configuration Multi-Sites ### 2. Optimisations WASM
```bash ```bash
# Site principal # Build optimisé
./add_external_node.sh add site-paris-1 paris-relay-1.4nk.net:8090 wasm-pack build --target web --release
./add_external_node.sh add site-paris-2 paris-relay-2.4nk.net:8090
# Site secondaire # Optimisation de la taille
./add_external_node.sh add site-lyon-1 lyon-relay-1.4nk.net:8090 wasm-opt -O4 pkg/sdk_client_bg.wasm -o pkg/sdk_client_bg_opt.wasm
./add_external_node.sh add site-lyon-2 lyon-relay-2.4nk.net:8090
# Site de backup # Compression gzip
./add_external_node.sh add backup-1 backup-relay-1.4nk.net:8090 gzip -9 pkg/sdk_client_bg_opt.wasm
``` ```
### 3. Test d'Intégration ### 3. Optimisations JavaScript
```bash ```javascript
# Test d'intégration complet // Chargement lazy du WASM
./test_integration_dev3.sh const loadWASM = async () => {
if (!wasmModule) {
wasmModule = await import('./pkg/sdk_client.js');
await wasmModule.default();
}
return wasmModule;
};
# Test de connectivité dev3 // Cache des résultats
python3 test_dev3_simple.py const cache = new Map();
const getCachedResult = (key, computeFn) => {
# Test de connectivité avancé if (!cache.has(key)) {
python3 test_dev3_connectivity.py cache.set(key, computeFn());
``` }
return cache.get(key);
## 📊 Monitoring et Alertes };
### 1. Monitoring de Base
```bash
# Surveillance de la synchronisation
./monitor_sync.sh
# Monitoring en continu
while true; do
echo "=== $(date) ==="
docker stats --no-stream | grep -E "(sdk_relay|bitcoin)"
echo "WebSocket connections:"
netstat -an | grep :8090 | wc -l
sleep 30
done
```
### 2. Monitoring Avancé
```bash
# Script de monitoring complet
cat > monitor_advanced.sh << 'EOF'
#!/bin/bash
while true; do
clear
echo "=== 4NK Node Monitoring ==="
echo "Date: $(date)"
echo ""
echo "Services:"
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
echo ""
echo "Ressources:"
docker stats --no-stream | grep -E "(sdk_relay|bitcoin|blindbit)"
echo ""
echo "Connexions WebSocket:"
netstat -an | grep :8090 | wc -l
echo ""
echo "Espace disque:"
df -h | grep -E "(bitcoin|blindbit)"
echo ""
sleep 60
done
EOF
chmod +x monitor_advanced.sh
./monitor_advanced.sh
```
### 3. Alertes Automatiques
```bash
# Script d'alerte simple
cat > alert_monitor.sh << 'EOF'
#!/bin/bash
# Vérifier Bitcoin Core
if ! docker ps | grep -q "bitcoin-signet.*Up"; then
echo "ALERTE: Bitcoin Core n'est pas en cours d'exécution!"
fi
# Vérifier les relais
for i in {1..3}; do
if ! docker ps | grep -q "sdk_relay_$i.*Up"; then
echo "ALERTE: Relay $i n'est pas en cours d'exécution!"
fi
done
# Vérifier l'espace disque
if [ $(df / | awk 'NR==2 {print $5}' | sed 's/%//') -gt 90 ]; then
echo "ALERTE: Espace disque faible!"
fi
EOF
chmod +x alert_monitor.sh
# Ajouter au cron pour surveillance automatique
echo "*/5 * * * * /path/to/alert_monitor.sh" | crontab -
``` ```
## 🔒 Sécurité ## 🔒 Sécurité
### 1. Vérification de Sécurité ### 1. Validation des Entrées
```bash ```rust
# Vérifier les ports exposés // Validation des adresses
netstat -tuln | grep -E "(8090|8092|8094)" pub fn validate_address(address: &str) -> Result<(), Error> {
if address.len() != 62 || !address.starts_with("sp1") {
# Vérifier les permissions return Err(Error::InvalidAddress);
ls -la sdk_relay/.conf* }
ls -la bitcoin/bitcoin.conf Ok(())
ls -la blindbit/blindbit.toml
# Vérifier les logs de sécurité
docker logs sdk_relay_1 | grep -E "(ERROR|WARN|SECURITY)" | tail -20
```
### 2. Configuration de Pare-feu
```bash
# Autoriser seulement les ports nécessaires
sudo ufw allow 18443/tcp # Bitcoin Core RPC
sudo ufw allow 8090/tcp # sdk_relay WebSocket
sudo ufw allow 8000/tcp # Blindbit API
sudo ufw enable
# Vérifier les règles
sudo ufw status numbered
```
### 3. Rotation des Logs
```bash
# Configuration de rotation des logs
cat > /etc/logrotate.d/4nk-node << EOF
/var/lib/docker/containers/*/*.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
copytruncate
} }
EOF
// Validation des montants
pub fn validate_amount(amount: u64) -> Result<(), Error> {
if amount == 0 || amount > MAX_AMOUNT {
return Err(Error::InvalidAmount);
}
Ok(())
}
```
### 2. Gestion de la Mémoire
```rust
// Nettoyage sécurisé
impl Drop for Wallet {
fn drop(&mut self) {
// Nettoyer les données sensibles
self.private_key.zeroize();
}
}
// Utilisation de types sécurisés
use zeroize::Zeroize;
```
### 3. Protection contre les Attaques
```rust
// Protection contre les attaques par timing
use subtle::ConstantTimeEq;
// Protection contre les attaques par débordement
use checked_add::CheckedAdd;
``` ```
## 🚨 Dépannage ## 🚨 Dépannage
### 1. Problèmes Courants ### 1. Problèmes de Compilation
#### Service Ne Démarre Pas
```bash ```bash
# Vérifier les logs # Nettoyer et recompiler
docker logs <service_name> cargo clean
cargo build
# Vérifier la configuration # Vérifier les dépendances
docker exec <service_name> cat /path/to/config cargo update
cargo check
# Redémarrer le service # Vérifier les features
docker restart <service_name> cargo build --features wasm
``` ```
#### Problèmes de Connectivité ### 2. Problèmes WASM
```bash ```bash
# Tester la connectivité réseau # Nettoyer WASM
docker exec <service_name> ping <target> rm -rf pkg/
wasm-pack build --target web
# Vérifier la résolution DNS # Vérifier la compatibilité
docker exec <service_name> nslookup <target> wasm-pack test --headless --firefox
# Tester les ports # Debug WASM
docker exec <service_name> nc -z <target> <port> RUST_LOG=debug wasm-pack build --target web
``` ```
#### Problèmes de Synchronisation ### 3. Problèmes de Performance
```bash ```bash
# Vérifier les logs de synchronisation # Profiling Rust
docker logs sdk_relay_1 | grep -E "(Sync|Relay|Mesh)" cargo build --release
perf record ./target/release/sdk_client
perf report
# Forcer la synchronisation # Profiling WASM
docker restart sdk_relay_1 sdk_relay_2 sdk_relay_3 wasm-pack build --target web --profiling
# Vérifier la connectivité entre relais
./test_sync_logs.sh force
``` ```
### 2. Logs de Debug ### 4. Logs et Debugging
```bash ```bash
# Logs détaillés # Logs détaillés
docker-compose logs -f --tail=100 RUST_LOG=debug cargo test
# Logs d'un service spécifique # Logs spécifiques
docker logs <service_name> -f RUST_LOG=sdk_client::wallet=debug cargo test
# Logs avec timestamps # Backtrace
docker-compose logs -t RUST_BACKTRACE=1 cargo test
# Logs depuis une date
docker-compose logs --since="2024-01-01T00:00:00"
``` ```
### 3. Outils de Debug ## 📈 Monitoring
```bash ### 1. Métriques de Performance
# Debug du container sdk_relay
./sdk_relay/debug_container.sh
# Test du healthcheck ```rust
./sdk_relay/test_healthcheck.sh // Métriques de compilation
use std::time::Instant;
# Test de connectivité let start = Instant::now();
./sdk_relay/test_connectivity.sh let wallet = generate_sp_wallet();
let duration = start.elapsed();
# Test simple println!("Génération wallet: {:?}", duration);
./sdk_relay/test_simple.sh
``` ```
## 📈 Performance ### 2. Métriques d'Utilisation
### 1. Optimisation ```rust
// Compteurs d'utilisation
static mut WALLET_COUNT: AtomicU64 = AtomicU64::new(0);
```bash unsafe {
# Limiter l'utilisation CPU WALLET_COUNT.fetch_add(1, Ordering::Relaxed);
docker-compose up -d --scale bitcoin=1 }
# Optimiser la mémoire
docker stats --no-stream | grep sdk_relay
# Nettoyer l'espace disque
docker system prune -f
``` ```
### 2. Monitoring de Performance ### 3. Monitoring en Production
```bash ```javascript
# Surveillance des ressources // Métriques JavaScript
docker stats const metrics = {
walletGenerationTime: 0,
utxoLockTime: 0,
scanTime: 0,
errorCount: 0
};
# Surveillance des connexions // Envoi des métriques
netstat -an | grep :8090 | wc -l fetch('/metrics', {
method: 'POST',
# Surveillance de l'espace disque body: JSON.stringify(metrics)
df -h });
``` ```
### 3. Tests de Charge ## 🔄 Mise à Jour
### 1. Mise à Jour des Dépendances
```bash ```bash
# Test de charge simple # Mettre à jour les dépendances
for i in {1..50}; do cargo update
python3 test_websocket_messages.py &
sleep 0.1
done
wait
# Test de charge avancé # Vérifier les vulnérabilités
python3 test_websocket_messages.py --load-test --duration=300 cargo audit
# Mettre à jour wasm-pack
cargo install wasm-pack --force
``` ```
## 🔄 Maintenance ### 2. Mise à Jour du Code
### 1. Sauvegarde Régulière
```bash ```bash
# Script de sauvegarde automatique # Pull des dernières modifications
cat > backup_4nk.sh << 'EOF'
#!/bin/bash
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="/backup/4nk_node_$DATE"
mkdir -p $BACKUP_DIR
# Sauvegarder les configurations
cp -r sdk_relay/.conf* $BACKUP_DIR/
cp external_nodes.conf $BACKUP_DIR/
# Sauvegarder les données Bitcoin
docker exec bitcoin-signet tar czf /tmp/bitcoin-backup.tar.gz /home/bitcoin/.bitcoin
docker cp bitcoin-signet:/tmp/bitcoin-backup.tar.gz $BACKUP_DIR/
echo "Sauvegarde terminée: $BACKUP_DIR"
EOF
chmod +x backup_4nk.sh
```
### 2. Mise à Jour
```bash
# Mise à jour de l'infrastructure
git pull origin main git pull origin main
./restart_4nk_node.sh
# Mise à jour des images # Recompiler
docker-compose build --no-cache cargo build --release
docker-compose up -d wasm-pack build --target web --release
# Tester
cargo test --all
``` ```
### 3. Nettoyage ### 3. Migration des Données
```bash ```rust
# Nettoyer les conteneurs arrêtés // Migration des wallets
docker container prune -f pub fn migrate_wallet_v1_to_v2(wallet_v1: WalletV1) -> WalletV2 {
WalletV2 {
# Nettoyer les images non utilisées address: wallet_v1.address,
docker image prune -f public_key: wallet_v1.public_key,
// Nouveaux champs
# Nettoyer les volumes non utilisés version: 2,
docker volume prune -f created_at: SystemTime::now(),
}
# Nettoyer tout }
docker system prune -a -f
```
## 📝 Checklist Quotidienne
- [ ] Services démarrés et fonctionnels
- [ ] Bitcoin Core synchronisé
- [ ] Relais connectés et synchronisés
- [ ] Tests de connectivité passés
- [ ] Logs vérifiés (pas d'erreurs critiques)
- [ ] Ressources système OK
- [ ] Sauvegarde effectuée (si nécessaire)
- [ ] Monitoring actif
## 🎯 Commandes Rapides
```bash
# Démarrage rapide
./restart_4nk_node.sh
# Statut des services
docker ps
# Logs en temps réel
docker-compose logs -f
# Test de connectivité
./test_final_sync.sh
# Surveillance
./monitor_sync.sh
# Arrêt propre
docker-compose down
``` ```
--- ---
**✨ Infrastructure 4NK Node - Utilisation optimale !** **🎯 SDK client - Prêt pour une utilisation en production !** ✨