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:
parent
be97f95f4f
commit
01c85b360d
415
docs/INDEX.md
415
docs/INDEX.md
@ -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** 🚀
|
||||
|
@ -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é.** ✨
|
||||
|
826
docs/USAGE.md
826
docs/USAGE.md
@ -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
|
||||
|
||||
# Logs d'un service spécifique
|
||||
docker logs bitcoin-signet
|
||||
docker logs blindbit-oracle
|
||||
docker logs sdk_relay_1
|
||||
|
||||
# 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
|
||||
```html
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<script type="module">
|
||||
import init, { generate_sp_wallet } from './pkg/sdk_client.js';
|
||||
|
||||
async function main() {
|
||||
await init();
|
||||
const wallet = generate_sp_wallet();
|
||||
console.log('Wallet généré:', wallet);
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
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
|
||||
|
||||
### 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 !** ✨
|
||||
|
Loading…
x
Reference in New Issue
Block a user