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
### 🚀 [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**
- **Installation de Docker et dépendances**
- **Configuration SSH et GitLab**
- **Configuration initiale des services**
- **Installation de Rust et dépendances**
- **Configuration WASM et compilation**
- **Tests post-installation**
- **Dépannage et monitoring**
### 📖 [Guide d'Utilisation](USAGE.md)
Guide complet pour utiliser l'infrastructure 4NK Node au quotidien.
- **Démarrage quotidien des services**
- **Opérations de surveillance et monitoring**
- **Utilisation du réseau de relais**
- **Connexion aux services (Bitcoin Core, Blindbit, sdk_relay)**
Guide complet pour utiliser le SDK client au quotidien.
- **Compilation et build**
- **Intégration dans les projets**
- **Utilisation des Silent Payments**
- **Tests et validation**
- **Configuration et maintenance**
- **Gestion des nœuds externes**
- **Optimisations de performance**
### ⚙️ [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 Bitcoin Core (base et avancée)**
- **Configuration Blindbit (base et avancée)**
- **Configuration des relais (base et avancée)**
- **Configuration des nœuds externes**
- **Configuration Tor**
- **Configuration Docker Compose**
- **Configuration SSL/TLS**
- **Configuration de monitoring et sauvegarde**
- **Configuration Rust et Cargo**
- **Configuration WASM et wasm-pack**
- **Configuration des features**
- **Configuration de build**
- **Configuration de tests**
- **Configuration de sécurité**
## 🔧 Guides Techniques
### 🏗️ [Architecture Technique](ARCHITECTURE.md)
Documentation technique détaillée de l'architecture.
- **Architecture générale du système**
- **Composants principaux (Bitcoin Core, Blindbit, SDK Relay)**
- **Architecture de synchronisation mesh**
- **Flux de données entre services**
- **Configuration multi-relais**
- **Architecture générale du SDK**
- **Composants principaux (Rust, WASM, JavaScript)**
- **Architecture des Silent Payments**
- **Flux de données et types**
- **Intégration avec sdk_common**
- **Sécurité et isolation**
- **Performance et optimisations**
- **Monitoring et observabilité**
### 📡 [API Reference](API.md)
Documentation complète des APIs disponibles.
- **API Bitcoin Core RPC** : Interface JSON-RPC pour Bitcoin
- **API Blindbit HTTP** : API REST pour les paiements silencieux
- **API SDK Relay WebSocket** : Interface temps réel pour les clients
- **API SDK Relay HTTP** : API REST pour les opérations de gestion
- **Format des messages et payloads**
- **API Rust** : Interface Rust native
- **API WASM** : Interface WebAssembly
- **API JavaScript** : Interface JavaScript/TypeScript
- **Types et structures de données**
- **Gestion des erreurs**
- **Exemples d'utilisation**
- **Limites et quotas**
@ -63,7 +58,7 @@ Documentation complète des APIs disponibles.
Guide de sécurité et bonnes pratiques.
- **Authentification et autorisation**
- **Chiffrement et certificats**
- **Isolation réseau**
- **Sécurité WASM et mémoire**
- **Audit et monitoring de sécurité**
- **Bonnes pratiques**
@ -98,215 +93,189 @@ Roadmap de développement détaillée.
- **Fonctionnalités planifiées**
- **Évolution de l'architecture**
- **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
### 🧪 [Guide de Tests](TESTING.md)
Guide complet des tests de l'infrastructure 4NK Node.
- **Tests unitaires** : Tests individuels des composants
- **Tests d'intégration** : Tests d'interaction entre services
- **Tests de connectivité** : Tests réseau et WebSocket
- **Tests externes** : Tests avec des nœuds externes
- **Tests de performance** : Tests de charge et performance (à venir)
- **Organisation et exécution des tests**
- **Interprétation des résultats**
- **Dépannage et maintenance**
### 🧪 [Guide des Tests](TESTING.md)
Guide complet pour les tests du SDK.
- **Tests unitaires Rust**
- **Tests d'intégration WASM**
- **Tests de performance**
- **Tests de sécurité**
- **Tests de compatibilité**
- **Tests de régression**
### 🔄 [Tests de Synchronisation](SYNC_TESTING.md)
Guide des tests de synchronisation entre relais.
- **Tests de synchronisation mesh**
- **Tests de découverte de relais**
- **Tests de cache de déduplication**
- **Tests de métriques de synchronisation**
- **Troubleshooting de la synchronisation**
### 🔍 [Audit de Sécurité](SECURITY_AUDIT.md)
Audit de sécurité détaillé.
- **Vulnérabilités connues**
- **Tests de pénétration**
- **Audit de code**
- **Recommandations de sécurité**
- **Plan de remédiation**
### 📊 [Tests de Performance](PERFORMANCE_TESTING.md)
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 de Développement
## 🌐 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)
Guide de configuration du réseau mesh de relais.
- **Architecture mesh**
- **Configuration des relais locaux**
- **Synchronisation entre relais**
- **Découverte automatique**
- **Gestion des connexions**
### 📋 [Référence Rapide](QUICK_REFERENCE.md)
Référence rapide pour les développeurs.
- **Commandes essentielles**
- **Structure du projet**
- **APIs principales**
- **Configuration rapide**
- **Dépannage rapide**
### 🌍 [Nœuds Externes](EXTERNAL_NODES.md)
Guide d'ajout et de gestion de nœuds externes.
- **Configuration des nœuds externes**
- **Script d'administration**
- **Validation et sécurité**
- **Tests de connectivité**
- **Gestion multi-sites**
### 🔄 [Guide de Migration](MIGRATION.md)
Guide pour les migrations et mises à jour.
- **Migration des versions**
- **Breaking changes**
- **Mise à jour des dépendances**
- **Migration des données**
- **Tests de migration**
### 🔄 [Synchronisation](SYNCHRONIZATION.md)
Guide du protocole de synchronisation.
- **Protocole de synchronisation**
- **Types de messages**
- **Cache de déduplication**
- **Métriques de synchronisation**
- **Troubleshooting**
## 🌐 Guides d'Intégration
## 📋 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)
Référence rapide des commandes essentielles.
- **Commandes de démarrage**
- **Commandes de monitoring**
- **Commandes de test**
- **Commandes de dépannage**
- **Commandes de maintenance**
### 🔑 [Configuration SSH](SSH_SETUP.md)
Guide de configuration SSH pour le développement.
- **Génération des clés SSH**
- **Configuration Git**
- **Intégration avec Gitea**
- **Automatisation des déploiements**
### 📋 [Troubleshooting](TROUBLESHOOTING.md)
Guide de résolution des problèmes courants.
- **Problèmes de démarrage**
- **Problèmes de connectivité**
- **Problèmes de synchronisation**
- **Problèmes de performance**
- **Logs et diagnostics**
### 🤖 [Push SSH Automatisé](AUTO_SSH_PUSH.md)
Guide pour l'automatisation des pushes SSH.
- **Configuration des scripts**
- **Intégration CI/CD**
- **Gestion des clés**
- **Sécurité et bonnes pratiques**
### 📋 [FAQ](FAQ.md)
Questions fréquemment posées.
- **Questions d'installation**
- **Questions de configuration**
- **Questions d'utilisation**
- **Questions de performance**
- **Questions de sécurité**
## 📊 État et Monitoring
## 📁 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**
```
4NK_node/
├── README.md # Documentation principale
├── docs/ # Documentation organisée
│ ├── INDEX.md # Cet index
│ ├── INSTALLATION.md # Guide d'installation
│ ├── 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
```
### 📋 [Résumé Final](RESUME_FINAL.md)
Résumé complet de l'état final du projet.
- **Succès accomplis**
- **Prêt pour la production**
- **Documentation complète**
- **Support et maintenance**
## 🎯 Parcours d'Apprentissage
## 🔧 Guides d'Open Source
### 🚀 **Débutant**
1. [Guide d'Installation](INSTALLATION.md) - Installer l'infrastructure
2. [Guide d'Utilisation](USAGE.md) - Utiliser les services de base
3. [Tests de Base](TESTING.md) - Vérifier le fonctionnement
4. [FAQ](FAQ.md) - Réponses aux questions courantes
### ✅ [Checklist Open Source](OPEN_SOURCE_CHECKLIST.md)
Checklist complète pour l'ouverture en open source.
- **Préparation du code**
- **Documentation**
- **Licences et légal**
- **Infrastructure**
- **Communication**
### 🔧 **Intermédiaire**
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
## 📞 Support et Contact
### 🏗️ **Avancé**
1. [Architecture Technique](ARCHITECTURE.md) - Comprendre l'architecture
2. [API Reference](API.md) - Utiliser les APIs
3. [Sécurité](SECURITY.md) - Sécuriser l'infrastructure
4. [Performance](PERFORMANCE.md) - Optimiser les performances
5. [Tests de Performance](PERFORMANCE_TESTING.md) - Tests avancés
### 🛠️ **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
### 📞 [Support](SUPPORT.md)
Guide de support et contact.
- **Comment obtenir de l'aide**
- **Création d'issues**
- **Canal de communication**
- **FAQ**
- **Ressources additionnelles**
---
## 🎯 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
### Système
- **OS** : Linux (Ubuntu 20.04+, Debian 11+, CentOS 8+)
- **Architecture** : x86_64
- **RAM** : 4 Go minimum, 8 Go recommandés
- **Stockage** : 20 Go minimum, 50 Go recommandés
- **OS** : Linux (Ubuntu 20.04+, Debian 11+, CentOS 8+), macOS 10.15+, Windows 10+
- **Architecture** : x86_64, ARM64 (Apple Silicon)
- **RAM** : 2 Go minimum, 4 Go recommandés
- **Stockage** : 5 Go minimum, 10 Go recommandés
- **Réseau** : Connexion Internet stable
### Logiciels
- **Docker** : Version 20.10+
- **Docker Compose** : Version 2.0+
- **Rust** : Version 1.70+ (obligatoire)
- **Cargo** : Inclus avec Rust
- **wasm-pack** : Version 0.12+ (pour compilation WASM)
- **Git** : Version 2.25+
- **Bash** : Version 4.0+
- **Node.js** : Version 18.0+ (optionnel, pour tests)
## 🚀 Installation
### 1. Installation de Docker
### 1. Installation de Rust
#### Ubuntu/Debian
#### Linux/macOS
```bash
# Mettre à jour les paquets
sudo apt update
# Installer Rust via rustup
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# Installer les dépendances
sudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release
# Recharger l'environnement
source ~/.cargo/env
# Ajouter la clé GPG Docker
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 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
# Vérifier l'installation
rustc --version
cargo --version
```
#### CentOS/RHEL
#### Windows
```bash
# Installer les dépendances
sudo yum install -y yum-utils
# 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
# Télécharger et installer rustup depuis
# https://rustup.rs/
```
### 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
# 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
ssh-add ~/.ssh/id_ed25519_4nk
ssh-add ~/.ssh/id_ed25519_sdk
# 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
cat ~/.ssh/id_ed25519_4nk.pub
# Afficher la clé publique pour Gitea
cat ~/.ssh/id_ed25519_sdk.pub
```
**Ajouter la clé publique à GitLab :**
1. Aller sur GitLab > Settings > SSH Keys
**Ajouter la clé publique à Gitea :**
1. Aller sur Gitea > Settings > SSH Keys
2. Coller la clé publique
3. Cliquer sur "Add key"
### 3. Clonage du Repository
### 4. Clonage du Repository
```bash
# Cloner avec SSH (recommandé)
git clone git@git.4nkweb.com:4nk/4NK_node.git
cd 4NK_node
git clone git@git.4nkweb.com:4nk/sdk_client.git
cd sdk_client
# Ou avec HTTPS (si SSH non configuré)
# git clone https://git.4nkweb.com/4nk/4NK_node.git
# cd 4NK_node
# Ou cloner avec HTTPS
git clone https://git.4nkweb.com/4nk/sdk_client.git
cd sdk_client
```
### 4. Vérification de l'Installation
## 🔧 Configuration
### Variables d'Environnement
Créer un fichier `.env` à la racine du projet :
```bash
# Vérifier Docker
docker --version
docker-compose --version
# Configuration Rust
RUST_LOG=info
RUST_BACKTRACE=1
CARGO_INCREMENTAL=1
# Vérifier la connectivité GitLab
ssh -T git@git.4nkweb.com
# Configuration WASM
WASM_PACK_TARGET=web
WASM_PACK_PROFILE=release
# Vérifier les permissions
ls -la
# Configuration de développement
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
# Créer le fichier d'environnement
cat > .env << EOF
# Configuration 4NK Node
PROJECT_NAME=4NK Node
NETWORK_NAME=4nk_node_btcnet
# Configuration wasm-pack
wasm-pack build --target web --out-dir pkg
# Logs
RUST_LOG=debug,bitcoincore_rpc=trace
# 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
# Ou pour Node.js
wasm-pack build --target nodejs --out-dir pkg
```
## 🧪 Tests Post-Installation
### 1. Tests de Connectivité
### 1. Test de Compilation Rust
```bash
# Test de base
./test_final_sync.sh
# Test de compilation
cargo build
# Test de synchronisation
./test_sync_logs.sh
# Vérifier le build
cargo build --release
# Test des messages WebSocket
python3 test_websocket_messages.py
# Vérifier les dépendances
cargo check
```
### 2. Tests de Performance
### 2. Test de Compilation WASM
```bash
# Vérifier l'utilisation des ressources
docker stats
# Compilation WASM
wasm-pack build --target web
# Test de charge
python3 test_websocket_messages.py --load-test
# Monitoring de la synchronisation
./monitor_sync.sh
# Vérifier les fichiers générés
ls -la pkg/
```
### 3. Tests de Sécurité
### 3. Test des Tests
```bash
# Vérifier les ports exposés
netstat -tlnp | grep -E "(18443|8000|9050|8090)"
# Tests unitaires
cargo test
# Vérifier les permissions
ls -la sdk_relay/.conf*
ls -la bitcoin/bitcoin.conf
ls -la blindbit/blindbit.toml
# Tests d'intégration
cargo test --test integration
# Tests WASM
wasm-pack test --headless --firefox
```
## 🔧 Configuration Avancée
### 1. Configuration Réseau
### 4. Test de Linting
```bash
# Créer un réseau Docker personnalisé
docker network create 4nk-network --subnet=172.20.0.0/16
# Clippy (linter Rust)
cargo clippy -- -D warnings
# Modifier docker-compose.yml
sed -i 's/4nk_default/4nk-network/g' docker-compose.yml
```
### 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
# Formatage
cargo fmt -- --check
```
## 🚨 Dépannage
### Problèmes Courants
#### 1. Docker Non Installé
#### Rust non trouvé
```bash
# Vérifier l'installation Docker
docker --version
# Vérifier l'installation
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
# Vérifier les permissions
docker ps
# Vérifier l'installation
which wasm-pack
wasm-pack --version
# Si erreur de permission
sudo usermod -aG docker $USER
newgrp docker
# Réinstaller si nécessaire
cargo install wasm-pack
```
#### 3. Ports Déjà Utilisés
#### Erreurs de compilation
```bash
# Vérifier les ports utilisés
sudo netstat -tlnp | grep -E "(18443|8000|9050|8090)"
# Nettoyer et recompiler
cargo clean
cargo build
# Arrêter les services conflictuels
sudo docker-compose down
# Vérifier les dépendances
cargo update
cargo check
```
#### 4. Problèmes de Synchronisation Bitcoin
#### Erreurs WASM
```bash
# Vérifier les logs Bitcoin
docker logs bitcoin-signet
# Nettoyer et recompiler WASM
rm -rf pkg/
wasm-pack build --target web
# Vérifier l'espace disque
df -h
# Redémarrer Bitcoin Core
docker restart bitcoin-signet
# Vérifier les dépendances WASM
cargo tree
```
### Logs Utiles
### Logs Détaillés
```bash
# Logs de tous les services
docker-compose logs -f
# Logs de compilation Rust
RUST_LOG=debug cargo build
# Logs d'un service spécifique
docker logs bitcoin-signet
docker logs blindbit-oracle
docker logs sdk_relay_1
# Logs de compilation WASM
wasm-pack build --target web --verbose
# Logs avec timestamps
docker-compose logs -t
# Logs depuis une date
docker-compose logs --since="2024-01-01T00:00:00"
# Logs de tests
RUST_LOG=debug cargo test
```
## 🔒 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
### 1. Monitoring de Base
### Métriques d'Installation
```bash
# Statut des conteneurs
docker ps
# Taille du projet
du -sh .
# Utilisation des ressources
docker stats
# Nombre de fichiers
find . -type f | wc -l
# Espace disque
docker system df
# Dépendances Rust
cargo tree | wc -l
# Taille du binaire
ls -lh target/release/sdk_client.wasm
```
### 2. Monitoring Avancé
### Vérification de l'Installation
```bash
# Surveillance de la synchronisation
./monitor_sync.sh
# Script de vérification
./scripts/verify-installation.sh
# Monitoring en continu
while true; do
echo "=== $(date) ==="
docker stats --no-stream | grep -E "(sdk_relay|bitcoin)"
sleep 30
done
# Tests automatisés
cargo test --all
```
### 3. Alertes
## 🎯 Prochaines Étapes
```bash
# 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
Après l'installation réussie :
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
# Sauvegarder la configuration
cp -r . ../4NK_node_backup_$(date +%Y%m%d)
# 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)
1. Consulter la [documentation](INDEX.md)
2. Vérifier les [issues existantes](https://git.4nkweb.com/4nk/sdk_client/issues)
3. Créer une nouvelle issue avec les détails du problème
4. Inclure les logs et la configuration utilisée
---
**🚀 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
# Démarrer tous les services
./restart_4nk_node.sh
# Build de développement
cargo build
# Vérifier le statut
docker ps
# Build avec optimisations
cargo build --release
# Vérifier le build
cargo check
```
### 2. Démarrage Séquentiel
### 2. Compilation WASM
```bash
# Démarrer Tor
./restart_4nk_node.sh -t
# Compilation WASM pour le web
wasm-pack build --target web
# Démarrer Bitcoin Core
./restart_4nk_node.sh -b
# Compilation WASM pour Node.js
wasm-pack build --target nodejs
# Attendre la synchronisation Bitcoin
echo "Attendre la synchronisation Bitcoin (10-30 minutes)..."
docker logs bitcoin-signet | grep "progress"
# Démarrer Blindbit
./restart_4nk_node.sh -l
# Démarrer les relais
./restart_4nk_node.sh -r
# Compilation WASM avec optimisations
wasm-pack build --target web --release
```
### 3. Vérification du Démarrage
### 3. Vérification du Build
```bash
# Vérifier tous les services
docker ps
# Vérifier les fichiers générés
ls -la pkg/
# Vérifier les logs
docker-compose logs --tail=50
# Vérifier la taille du WASM
ls -lh pkg/sdk_client_bg.wasm
# Vérifier la connectivité
./test_final_sync.sh
# Vérifier les types TypeScript
cat pkg/sdk_client.d.ts
```
## 🔧 Opérations Quotidiennes
## 🔧 Intégration dans les Projets
### 1. Surveillance des Services
### 1. Intégration JavaScript/TypeScript
```bash
# Statut des services
docker ps
```javascript
// Import du module WASM
import init, { generate_sp_wallet, lock_freezed_utxos } from './pkg/sdk_client.js';
# Logs en temps réel
docker-compose logs -f
// Initialisation
await init();
# Utilisation des ressources
docker stats
# Espace disque
docker system df
// Utilisation des fonctions
const wallet = generate_sp_wallet();
const success = lock_freezed_utxos(wallet, utxos);
```
### 2. Monitoring de la Synchronisation
### 2. Intégration Rust
```bash
# Surveillance de la synchronisation
./monitor_sync.sh
```rust
use sdk_client::{generate_sp_wallet, lock_freezed_utxos};
# Test de synchronisation
./test_sync_logs.sh
# Test des messages WebSocket
python3 test_websocket_messages.py
// Utilisation directe
let wallet = generate_sp_wallet();
let success = lock_freezed_utxos(&wallet, &utxos);
```
### 3. Gestion des Logs
### 3. Intégration Web
```bash
# Logs de tous les services
docker-compose logs -f
```html
<!DOCTYPE html>
<html>
<head>
<script type="module">
import init, { generate_sp_wallet } from './pkg/sdk_client.js';
# Logs d'un service spécifique
docker logs bitcoin-signet
docker logs blindbit-oracle
docker logs sdk_relay_1
async function main() {
await init();
const wallet = generate_sp_wallet();
console.log('Wallet généré:', wallet);
}
# Logs avec timestamps
docker-compose logs -t
# Logs depuis une date
docker-compose logs --since="2024-01-01T00:00:00"
# Logs des 100 dernières lignes
docker-compose logs --tail=100
main();
</script>
</head>
<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 |
|-------|----------------|-----------|---------------|
| **Relay 1** | 8090 | 8091 | `sdk_relay/.conf.docker.relay1` |
| **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
// Propriétés du wallet
println!("Address: {}", wallet.address);
println!("Public Key: {}", wallet.public_key);
```
### 3. Surveillance de la Synchronisation
### 2. Verrouillage d'UTXOs
```bash
# Surveillance en temps réel
./monitor_sync.sh
```rust
// Liste des UTXOs à verrouiller
let utxos = vec![
UTXO {
txid: "abc123...",
vout: 0,
amount: 100000,
script_pubkey: "script...",
}
];
# Test de synchronisation forcé
./test_sync_logs.sh force
# Test de synchronisation en continu
./test_sync_logs.sh continuous
// Verrouillage des UTXOs
let success = lock_freezed_utxos(&wallet, &utxos);
if success {
println!("UTXOs verrouillés avec succès");
}
```
## 🔗 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
# Connexion via curl
curl -u bitcoin:your_password --data-binary '{"jsonrpc": "1.0", "id": "curltest", "method": "getblockchaininfo", "params": []}' -H 'content-type: text/plain;' http://localhost:18443/
# 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
for result in results {
println!("Transaction trouvée: {}", result.txid);
println!("Montant: {} sats", result.amount);
}
```
## 🧪 Tests et Validation
### 1. Tests de Base
### 1. Tests Unitaires
```bash
# Test de connectivité complet
./test_final_sync.sh
# Exécuter tous les tests
cargo test
# Test de synchronisation
./test_sync_logs.sh
# Tests avec output détaillé
cargo test -- --nocapture
# Test des messages
./test_messages.sh
# Test des 3 relais
./test_3_relays.sh
# Tests spécifiques
cargo test test_wallet_generation
```
### 2. Tests de Performance
### 2. Tests d'Intégration
```bash
# Test de charge WebSocket
for i in {1..10}; do
python3 test_websocket_messages.py &
done
wait
# Tests d'intégration
cargo test --test integration
# Test de connectivité multiple
netstat -tlnp | grep -E "(8090|8092|8094)"
# Test de performance
docker stats --no-stream
# Tests de performance
cargo test --test performance
```
### 3. Tests de Sécurité
### 3. Tests WASM
```bash
# Vérifier les ports exposés
netstat -tuln | grep -E "(8090|8092|8094)"
# Tests WASM avec Firefox
wasm-pack test --headless --firefox
# Vérifier les logs d'accès
docker logs sdk_relay_1 | grep -E "(ERROR|WARN)" | tail -20
# Tests WASM avec Chrome
wasm-pack test --headless --chrome
# Vérifier l'utilisation des ressources
docker stats --no-stream | grep sdk_relay
# Tests WASM avec Node.js
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
### 1. Modification de Configuration
### 1. Configuration des Features
```bash
# Modifier la configuration Bitcoin Core
sudo docker-compose down
nano bitcoin/bitcoin.conf
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
```toml
# Cargo.toml
[dependencies]
sdk_client = { git = "https://git.4nkweb.com/4nk/sdk_client.git", features = ["wasm", "web"] }
```
### 2. Redémarrage des Services
### 2. Configuration de Build
```bash
# Redémarrage complet
./restart_4nk_node.sh
```toml
# Cargo.toml
[profile.release]
opt-level = 3
lto = true
codegen-units = 1
panic = "abort"
# Redémarrage d'un service spécifique
docker-compose restart bitcoin
docker-compose restart blindbit
docker-compose restart sdk_relay_1
# Redémarrage avec reconstruction
docker-compose down
docker-compose build --no-cache
docker-compose up -d
[profile.dev]
opt-level = 0
debug = true
```
### 3. Sauvegarde et Restauration
### 3. Configuration WASM
```bash
# Sauvegarde des données
docker exec bitcoin-signet tar czf /tmp/bitcoin-backup.tar.gz /home/bitcoin/.bitcoin
docker cp bitcoin-signet:/tmp/bitcoin-backup.tar.gz ./backup/
# 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 /
# Variables d'environnement pour WASM
export WASM_PACK_TARGET=web
export WASM_PACK_PROFILE=release
export CARGO_PROFILE_RELEASE_OPT_LEVEL=3
```
## 🌐 Gestion des Nœuds Externes
## 📊 Optimisations de Performance
### 1. Ajout de Nœuds Externes
### 1. Optimisations Rust
```bash
# Ajouter un nœud externe
./add_external_node.sh add external-relay-1 external-relay-1.example.com:8090
```rust
// Utilisation de types optimisés
use std::collections::HashMap;
# Lister les nœuds configurés
./add_external_node.sh list
// Pool de connexions
use tokio::sync::Semaphore;
# Tester la connectivité
./add_external_node.sh test external-relay-1
# Supprimer un nœud
./add_external_node.sh remove external-relay-1
// Cache en mémoire
use lru::LruCache;
```
### 2. Configuration Multi-Sites
### 2. Optimisations WASM
```bash
# Site principal
./add_external_node.sh add site-paris-1 paris-relay-1.4nk.net:8090
./add_external_node.sh add site-paris-2 paris-relay-2.4nk.net:8090
# Build optimisé
wasm-pack build --target web --release
# Site secondaire
./add_external_node.sh add site-lyon-1 lyon-relay-1.4nk.net:8090
./add_external_node.sh add site-lyon-2 lyon-relay-2.4nk.net:8090
# Optimisation de la taille
wasm-opt -O4 pkg/sdk_client_bg.wasm -o pkg/sdk_client_bg_opt.wasm
# Site de backup
./add_external_node.sh add backup-1 backup-relay-1.4nk.net:8090
# Compression gzip
gzip -9 pkg/sdk_client_bg_opt.wasm
```
### 3. Test d'Intégration
### 3. Optimisations JavaScript
```bash
# Test d'intégration complet
./test_integration_dev3.sh
```javascript
// Chargement lazy du WASM
const loadWASM = async () => {
if (!wasmModule) {
wasmModule = await import('./pkg/sdk_client.js');
await wasmModule.default();
}
return wasmModule;
};
# Test de connectivité dev3
python3 test_dev3_simple.py
# Test de connectivité avancé
python3 test_dev3_connectivity.py
```
## 📊 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 -
// Cache des résultats
const cache = new Map();
const getCachedResult = (key, computeFn) => {
if (!cache.has(key)) {
cache.set(key, computeFn());
}
return cache.get(key);
};
```
## 🔒 Sécurité
### 1. Vérification de Sécurité
### 1. Validation des Entrées
```bash
# Vérifier les ports exposés
netstat -tuln | grep -E "(8090|8092|8094)"
# Vérifier les permissions
ls -la sdk_relay/.conf*
ls -la bitcoin/bitcoin.conf
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
```rust
// Validation des adresses
pub fn validate_address(address: &str) -> Result<(), Error> {
if address.len() != 62 || !address.starts_with("sp1") {
return Err(Error::InvalidAddress);
}
EOF
Ok(())
}
// 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
### 1. Problèmes Courants
#### Service Ne Démarre Pas
### 1. Problèmes de Compilation
```bash
# Vérifier les logs
docker logs <service_name>
# Nettoyer et recompiler
cargo clean
cargo build
# Vérifier la configuration
docker exec <service_name> cat /path/to/config
# Vérifier les dépendances
cargo update
cargo check
# Redémarrer le service
docker restart <service_name>
# Vérifier les features
cargo build --features wasm
```
#### Problèmes de Connectivité
### 2. Problèmes WASM
```bash
# Tester la connectivité réseau
docker exec <service_name> ping <target>
# Nettoyer WASM
rm -rf pkg/
wasm-pack build --target web
# Vérifier la résolution DNS
docker exec <service_name> nslookup <target>
# Vérifier la compatibilité
wasm-pack test --headless --firefox
# Tester les ports
docker exec <service_name> nc -z <target> <port>
# Debug WASM
RUST_LOG=debug wasm-pack build --target web
```
#### Problèmes de Synchronisation
### 3. Problèmes de Performance
```bash
# Vérifier les logs de synchronisation
docker logs sdk_relay_1 | grep -E "(Sync|Relay|Mesh)"
# Profiling Rust
cargo build --release
perf record ./target/release/sdk_client
perf report
# Forcer la synchronisation
docker restart sdk_relay_1 sdk_relay_2 sdk_relay_3
# Vérifier la connectivité entre relais
./test_sync_logs.sh force
# Profiling WASM
wasm-pack build --target web --profiling
```
### 2. Logs de Debug
### 4. Logs et Debugging
```bash
# Logs détaillés
docker-compose logs -f --tail=100
RUST_LOG=debug cargo test
# Logs d'un service spécifique
docker logs <service_name> -f
# Logs spécifiques
RUST_LOG=sdk_client::wallet=debug cargo test
# Logs avec timestamps
docker-compose logs -t
# Logs depuis une date
docker-compose logs --since="2024-01-01T00:00:00"
# Backtrace
RUST_BACKTRACE=1 cargo test
```
### 3. Outils de Debug
## 📈 Monitoring
```bash
# Debug du container sdk_relay
./sdk_relay/debug_container.sh
### 1. Métriques de Performance
# Test du healthcheck
./sdk_relay/test_healthcheck.sh
```rust
// Métriques de compilation
use std::time::Instant;
# Test de connectivité
./sdk_relay/test_connectivity.sh
# Test simple
./sdk_relay/test_simple.sh
let start = Instant::now();
let wallet = generate_sp_wallet();
let duration = start.elapsed();
println!("Génération wallet: {:?}", duration);
```
## 📈 Performance
### 2. Métriques d'Utilisation
### 1. Optimisation
```rust
// Compteurs d'utilisation
static mut WALLET_COUNT: AtomicU64 = AtomicU64::new(0);
```bash
# Limiter l'utilisation CPU
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
unsafe {
WALLET_COUNT.fetch_add(1, Ordering::Relaxed);
}
```
### 2. Monitoring de Performance
### 3. Monitoring en Production
```bash
# Surveillance des ressources
docker stats
```javascript
// Métriques JavaScript
const metrics = {
walletGenerationTime: 0,
utxoLockTime: 0,
scanTime: 0,
errorCount: 0
};
# Surveillance des connexions
netstat -an | grep :8090 | wc -l
# Surveillance de l'espace disque
df -h
// Envoi des métriques
fetch('/metrics', {
method: 'POST',
body: JSON.stringify(metrics)
});
```
### 3. Tests de Charge
## 🔄 Mise à Jour
### 1. Mise à Jour des Dépendances
```bash
# Test de charge simple
for i in {1..50}; do
python3 test_websocket_messages.py &
sleep 0.1
done
wait
# Mettre à jour les dépendances
cargo update
# Test de charge avancé
python3 test_websocket_messages.py --load-test --duration=300
# Vérifier les vulnérabilités
cargo audit
# Mettre à jour wasm-pack
cargo install wasm-pack --force
```
## 🔄 Maintenance
### 1. Sauvegarde Régulière
### 2. Mise à Jour du Code
```bash
# Script de sauvegarde automatique
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
# Pull des dernières modifications
git pull origin main
./restart_4nk_node.sh
# Mise à jour des images
docker-compose build --no-cache
docker-compose up -d
# Recompiler
cargo build --release
wasm-pack build --target web --release
# Tester
cargo test --all
```
### 3. Nettoyage
### 3. Migration des Données
```bash
# Nettoyer les conteneurs arrêtés
docker container prune -f
# Nettoyer les images non utilisées
docker image prune -f
# Nettoyer les volumes non utilisés
docker volume prune -f
# 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
```rust
// Migration des wallets
pub fn migrate_wallet_v1_to_v2(wallet_v1: WalletV1) -> WalletV2 {
WalletV2 {
address: wallet_v1.address,
public_key: wallet_v1.public_key,
// Nouveaux champs
version: 2,
created_at: SystemTime::now(),
}
}
```
---
**✨ Infrastructure 4NK Node - Utilisation optimale !**
**🎯 SDK client - Prêt pour une utilisation en production !** ✨