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
|
## 📖 Guides Principaux
|
||||||
|
|
||||||
### 🚀 [Guide d'Installation](INSTALLATION.md)
|
### 🚀 [Guide d'Installation](INSTALLATION.md)
|
||||||
Guide complet pour installer et configurer l'infrastructure 4NK Node.
|
Guide complet pour installer et configurer le SDK client.
|
||||||
- **Prérequis système et logiciels**
|
- **Prérequis système et logiciels**
|
||||||
- **Installation de Docker et dépendances**
|
- **Installation de Rust et dépendances**
|
||||||
- **Configuration SSH et GitLab**
|
- **Configuration WASM et compilation**
|
||||||
- **Configuration initiale des services**
|
|
||||||
- **Tests post-installation**
|
- **Tests post-installation**
|
||||||
- **Dépannage et monitoring**
|
- **Dépannage et monitoring**
|
||||||
|
|
||||||
### 📖 [Guide d'Utilisation](USAGE.md)
|
### 📖 [Guide d'Utilisation](USAGE.md)
|
||||||
Guide complet pour utiliser l'infrastructure 4NK Node au quotidien.
|
Guide complet pour utiliser le SDK client au quotidien.
|
||||||
- **Démarrage quotidien des services**
|
- **Compilation et build**
|
||||||
- **Opérations de surveillance et monitoring**
|
- **Intégration dans les projets**
|
||||||
- **Utilisation du réseau de relais**
|
- **Utilisation des Silent Payments**
|
||||||
- **Connexion aux services (Bitcoin Core, Blindbit, sdk_relay)**
|
|
||||||
- **Tests et validation**
|
- **Tests et validation**
|
||||||
- **Configuration et maintenance**
|
- **Configuration et maintenance**
|
||||||
- **Gestion des nœuds externes**
|
- **Optimisations de performance**
|
||||||
|
|
||||||
### ⚙️ [Guide de Configuration](CONFIGURATION.md)
|
### ⚙️ [Guide de Configuration](CONFIGURATION.md)
|
||||||
Guide complet pour configurer l'infrastructure selon vos besoins.
|
Guide complet pour configurer le SDK selon vos besoins.
|
||||||
- **Configuration générale et variables d'environnement**
|
- **Configuration générale et variables d'environnement**
|
||||||
- **Configuration Bitcoin Core (base et avancée)**
|
- **Configuration Rust et Cargo**
|
||||||
- **Configuration Blindbit (base et avancée)**
|
- **Configuration WASM et wasm-pack**
|
||||||
- **Configuration des relais (base et avancée)**
|
- **Configuration des features**
|
||||||
- **Configuration des nœuds externes**
|
- **Configuration de build**
|
||||||
- **Configuration Tor**
|
- **Configuration de tests**
|
||||||
- **Configuration Docker Compose**
|
- **Configuration de sécurité**
|
||||||
- **Configuration SSL/TLS**
|
|
||||||
- **Configuration de monitoring et sauvegarde**
|
|
||||||
|
|
||||||
## 🔧 Guides Techniques
|
## 🔧 Guides Techniques
|
||||||
|
|
||||||
### 🏗️ [Architecture Technique](ARCHITECTURE.md)
|
### 🏗️ [Architecture Technique](ARCHITECTURE.md)
|
||||||
Documentation technique détaillée de l'architecture.
|
Documentation technique détaillée de l'architecture.
|
||||||
- **Architecture générale du système**
|
- **Architecture générale du SDK**
|
||||||
- **Composants principaux (Bitcoin Core, Blindbit, SDK Relay)**
|
- **Composants principaux (Rust, WASM, JavaScript)**
|
||||||
- **Architecture de synchronisation mesh**
|
- **Architecture des Silent Payments**
|
||||||
- **Flux de données entre services**
|
- **Flux de données et types**
|
||||||
- **Configuration multi-relais**
|
- **Intégration avec sdk_common**
|
||||||
- **Sécurité et isolation**
|
- **Sécurité et isolation**
|
||||||
- **Performance et optimisations**
|
- **Performance et optimisations**
|
||||||
- **Monitoring et observabilité**
|
- **Monitoring et observabilité**
|
||||||
|
|
||||||
### 📡 [API Reference](API.md)
|
### 📡 [API Reference](API.md)
|
||||||
Documentation complète des APIs disponibles.
|
Documentation complète des APIs disponibles.
|
||||||
- **API Bitcoin Core RPC** : Interface JSON-RPC pour Bitcoin
|
- **API Rust** : Interface Rust native
|
||||||
- **API Blindbit HTTP** : API REST pour les paiements silencieux
|
- **API WASM** : Interface WebAssembly
|
||||||
- **API SDK Relay WebSocket** : Interface temps réel pour les clients
|
- **API JavaScript** : Interface JavaScript/TypeScript
|
||||||
- **API SDK Relay HTTP** : API REST pour les opérations de gestion
|
- **Types et structures de données**
|
||||||
- **Format des messages et payloads**
|
|
||||||
- **Gestion des erreurs**
|
- **Gestion des erreurs**
|
||||||
- **Exemples d'utilisation**
|
- **Exemples d'utilisation**
|
||||||
- **Limites et quotas**
|
- **Limites et quotas**
|
||||||
@ -63,7 +58,7 @@ Documentation complète des APIs disponibles.
|
|||||||
Guide de sécurité et bonnes pratiques.
|
Guide de sécurité et bonnes pratiques.
|
||||||
- **Authentification et autorisation**
|
- **Authentification et autorisation**
|
||||||
- **Chiffrement et certificats**
|
- **Chiffrement et certificats**
|
||||||
- **Isolation réseau**
|
- **Sécurité WASM et mémoire**
|
||||||
- **Audit et monitoring de sécurité**
|
- **Audit et monitoring de sécurité**
|
||||||
- **Bonnes pratiques**
|
- **Bonnes pratiques**
|
||||||
|
|
||||||
@ -98,215 +93,189 @@ Roadmap de développement détaillée.
|
|||||||
- **Fonctionnalités planifiées**
|
- **Fonctionnalités planifiées**
|
||||||
- **Évolution de l'architecture**
|
- **Évolution de l'architecture**
|
||||||
- **Métriques de succès**
|
- **Métriques de succès**
|
||||||
- **Vision long terme**
|
|
||||||
|
|
||||||
### 📈 [Performance](PERFORMANCE.md)
|
|
||||||
Guide d'optimisation et monitoring des performances.
|
|
||||||
- **Optimisation des ressources**
|
|
||||||
- **Monitoring des performances**
|
|
||||||
- **Tests de charge**
|
|
||||||
- **Métriques et alertes**
|
|
||||||
- **Troubleshooting des performances**
|
|
||||||
|
|
||||||
## 🧪 Guides de Test
|
## 🧪 Guides de Test
|
||||||
|
|
||||||
### 🧪 [Guide de Tests](TESTING.md)
|
### 🧪 [Guide des Tests](TESTING.md)
|
||||||
Guide complet des tests de l'infrastructure 4NK Node.
|
Guide complet pour les tests du SDK.
|
||||||
- **Tests unitaires** : Tests individuels des composants
|
- **Tests unitaires Rust**
|
||||||
- **Tests d'intégration** : Tests d'interaction entre services
|
- **Tests d'intégration WASM**
|
||||||
- **Tests de connectivité** : Tests réseau et WebSocket
|
- **Tests de performance**
|
||||||
- **Tests externes** : Tests avec des nœuds externes
|
- **Tests de sécurité**
|
||||||
- **Tests de performance** : Tests de charge et performance (à venir)
|
- **Tests de compatibilité**
|
||||||
- **Organisation et exécution des tests**
|
- **Tests de régression**
|
||||||
- **Interprétation des résultats**
|
|
||||||
- **Dépannage et maintenance**
|
|
||||||
|
|
||||||
### 🔄 [Tests de Synchronisation](SYNC_TESTING.md)
|
### 🔍 [Audit de Sécurité](SECURITY_AUDIT.md)
|
||||||
Guide des tests de synchronisation entre relais.
|
Audit de sécurité détaillé.
|
||||||
- **Tests de synchronisation mesh**
|
- **Vulnérabilités connues**
|
||||||
- **Tests de découverte de relais**
|
- **Tests de pénétration**
|
||||||
- **Tests de cache de déduplication**
|
- **Audit de code**
|
||||||
- **Tests de métriques de synchronisation**
|
- **Recommandations de sécurité**
|
||||||
- **Troubleshooting de la synchronisation**
|
- **Plan de remédiation**
|
||||||
|
|
||||||
### 📊 [Tests de Performance](PERFORMANCE_TESTING.md)
|
## 🔧 Guides de Développement
|
||||||
Guide des tests de performance et de charge.
|
|
||||||
- **Tests de charge WebSocket**
|
|
||||||
- **Tests de performance Bitcoin Core**
|
|
||||||
- **Tests de performance Blindbit**
|
|
||||||
- **Tests de scalabilité**
|
|
||||||
- **Benchmarks et métriques**
|
|
||||||
|
|
||||||
## 🌐 Guides Réseau
|
### 🔧 [Guide de Développement](DEVELOPMENT.md)
|
||||||
|
Guide complet pour le développement.
|
||||||
|
- **Environnement de développement**
|
||||||
|
- **Workflow de développement**
|
||||||
|
- **Standards de code**
|
||||||
|
- **Debugging et profiling**
|
||||||
|
- **Optimisation des performances**
|
||||||
|
- **Déploiement et CI/CD**
|
||||||
|
|
||||||
### 🌐 [Réseau de Relais](RELAY_NETWORK.md)
|
### 📋 [Référence Rapide](QUICK_REFERENCE.md)
|
||||||
Guide de configuration du réseau mesh de relais.
|
Référence rapide pour les développeurs.
|
||||||
- **Architecture mesh**
|
- **Commandes essentielles**
|
||||||
- **Configuration des relais locaux**
|
- **Structure du projet**
|
||||||
- **Synchronisation entre relais**
|
- **APIs principales**
|
||||||
- **Découverte automatique**
|
- **Configuration rapide**
|
||||||
- **Gestion des connexions**
|
- **Dépannage rapide**
|
||||||
|
|
||||||
### 🌍 [Nœuds Externes](EXTERNAL_NODES.md)
|
### 🔄 [Guide de Migration](MIGRATION.md)
|
||||||
Guide d'ajout et de gestion de nœuds externes.
|
Guide pour les migrations et mises à jour.
|
||||||
- **Configuration des nœuds externes**
|
- **Migration des versions**
|
||||||
- **Script d'administration**
|
- **Breaking changes**
|
||||||
- **Validation et sécurité**
|
- **Mise à jour des dépendances**
|
||||||
- **Tests de connectivité**
|
- **Migration des données**
|
||||||
- **Gestion multi-sites**
|
- **Tests de migration**
|
||||||
|
|
||||||
### 🔄 [Synchronisation](SYNCHRONIZATION.md)
|
## 🌐 Guides d'Intégration
|
||||||
Guide du protocole de synchronisation.
|
|
||||||
- **Protocole de synchronisation**
|
|
||||||
- **Types de messages**
|
|
||||||
- **Cache de déduplication**
|
|
||||||
- **Métriques de synchronisation**
|
|
||||||
- **Troubleshooting**
|
|
||||||
|
|
||||||
## 📋 Guides de Référence
|
### 🔗 [Intégration 4NK_node](INTEGRATION_4NK_NODE.md)
|
||||||
|
Guide d'intégration avec l'infrastructure 4NK_node.
|
||||||
|
- **Configuration Docker**
|
||||||
|
- **Variables d'environnement**
|
||||||
|
- **Communication inter-services**
|
||||||
|
- **Déploiement intégré**
|
||||||
|
- **Monitoring et logs**
|
||||||
|
|
||||||
### 📋 [Commandes Rapides](QUICK_REFERENCE.md)
|
### 🔑 [Configuration SSH](SSH_SETUP.md)
|
||||||
Référence rapide des commandes essentielles.
|
Guide de configuration SSH pour le développement.
|
||||||
- **Commandes de démarrage**
|
- **Génération des clés SSH**
|
||||||
- **Commandes de monitoring**
|
- **Configuration Git**
|
||||||
- **Commandes de test**
|
- **Intégration avec Gitea**
|
||||||
- **Commandes de dépannage**
|
- **Automatisation des déploiements**
|
||||||
- **Commandes de maintenance**
|
|
||||||
|
|
||||||
### 📋 [Troubleshooting](TROUBLESHOOTING.md)
|
### 🤖 [Push SSH Automatisé](AUTO_SSH_PUSH.md)
|
||||||
Guide de résolution des problèmes courants.
|
Guide pour l'automatisation des pushes SSH.
|
||||||
- **Problèmes de démarrage**
|
- **Configuration des scripts**
|
||||||
- **Problèmes de connectivité**
|
- **Intégration CI/CD**
|
||||||
- **Problèmes de synchronisation**
|
- **Gestion des clés**
|
||||||
- **Problèmes de performance**
|
- **Sécurité et bonnes pratiques**
|
||||||
- **Logs et diagnostics**
|
|
||||||
|
|
||||||
### 📋 [FAQ](FAQ.md)
|
## 📊 État et Monitoring
|
||||||
Questions fréquemment posées.
|
|
||||||
- **Questions d'installation**
|
|
||||||
- **Questions de configuration**
|
|
||||||
- **Questions d'utilisation**
|
|
||||||
- **Questions de performance**
|
|
||||||
- **Questions de sécurité**
|
|
||||||
|
|
||||||
## 📁 Structure des Fichiers
|
### 📊 [État Actuel](ETAT_ACTUEL.md)
|
||||||
|
État détaillé du projet sdk_client.
|
||||||
|
- **Statut des compilations**
|
||||||
|
- **Configuration des branches**
|
||||||
|
- **Fonctionnalités opérationnelles**
|
||||||
|
- **Métriques de performance**
|
||||||
|
- **Problèmes connus**
|
||||||
|
|
||||||
```
|
### 📋 [Résumé Final](RESUME_FINAL.md)
|
||||||
4NK_node/
|
Résumé complet de l'état final du projet.
|
||||||
├── README.md # Documentation principale
|
- **Succès accomplis**
|
||||||
├── docs/ # Documentation organisée
|
- **Prêt pour la production**
|
||||||
│ ├── INDEX.md # Cet index
|
- **Documentation complète**
|
||||||
│ ├── INSTALLATION.md # Guide d'installation
|
- **Support et maintenance**
|
||||||
│ ├── USAGE.md # Guide d'utilisation
|
|
||||||
│ ├── CONFIGURATION.md # Guide de configuration
|
|
||||||
│ ├── ARCHITECTURE.md # Architecture technique
|
|
||||||
│ ├── API.md # Référence API
|
|
||||||
│ ├── SECURITY.md # Guide de sécurité
|
|
||||||
│ ├── PERFORMANCE.md # Guide de performance
|
|
||||||
│ ├── TESTING.md # Tests de base
|
|
||||||
│ ├── SYNC_TESTING.md # Tests de synchronisation
|
|
||||||
│ ├── PERFORMANCE_TESTING.md # Tests de performance
|
|
||||||
│ ├── RELAY_NETWORK.md # Réseau de relais
|
|
||||||
│ ├── EXTERNAL_NODES.md # Nœuds externes
|
|
||||||
│ ├── SYNCHRONIZATION.md # Protocole de synchronisation
|
|
||||||
│ ├── QUICK_REFERENCE.md # Commandes rapides
|
|
||||||
│ ├── TROUBLESHOOTING.md # Guide de dépannage
|
|
||||||
│ └── FAQ.md # Questions fréquentes
|
|
||||||
├── specs/ # Spécifications techniques
|
|
||||||
│ ├── spec-technique.md # Spécification technique
|
|
||||||
│ └── spec-fonctionnel.md # Spécification fonctionnelle
|
|
||||||
├── scripts/ # Scripts utilitaires
|
|
||||||
├── tests/ # Scripts de test
|
|
||||||
└── examples/ # Exemples d'utilisation
|
|
||||||
```
|
|
||||||
|
|
||||||
## 🎯 Parcours d'Apprentissage
|
## 🔧 Guides d'Open Source
|
||||||
|
|
||||||
### 🚀 **Débutant**
|
### ✅ [Checklist Open Source](OPEN_SOURCE_CHECKLIST.md)
|
||||||
1. [Guide d'Installation](INSTALLATION.md) - Installer l'infrastructure
|
Checklist complète pour l'ouverture en open source.
|
||||||
2. [Guide d'Utilisation](USAGE.md) - Utiliser les services de base
|
- **Préparation du code**
|
||||||
3. [Tests de Base](TESTING.md) - Vérifier le fonctionnement
|
- **Documentation**
|
||||||
4. [FAQ](FAQ.md) - Réponses aux questions courantes
|
- **Licences et légal**
|
||||||
|
- **Infrastructure**
|
||||||
|
- **Communication**
|
||||||
|
|
||||||
### 🔧 **Intermédiaire**
|
## 📞 Support et Contact
|
||||||
1. [Guide de Configuration](CONFIGURATION.md) - Configurer selon vos besoins
|
|
||||||
2. [Réseau de Relais](RELAY_NETWORK.md) - Comprendre l'architecture mesh
|
|
||||||
3. [Nœuds Externes](EXTERNAL_NODES.md) - Ajouter des nœuds externes
|
|
||||||
4. [Tests de Synchronisation](SYNC_TESTING.md) - Tester la synchronisation
|
|
||||||
|
|
||||||
### 🏗️ **Avancé**
|
### 📞 [Support](SUPPORT.md)
|
||||||
1. [Architecture Technique](ARCHITECTURE.md) - Comprendre l'architecture
|
Guide de support et contact.
|
||||||
2. [API Reference](API.md) - Utiliser les APIs
|
- **Comment obtenir de l'aide**
|
||||||
3. [Sécurité](SECURITY.md) - Sécuriser l'infrastructure
|
- **Création d'issues**
|
||||||
4. [Performance](PERFORMANCE.md) - Optimiser les performances
|
- **Canal de communication**
|
||||||
5. [Tests de Performance](PERFORMANCE_TESTING.md) - Tests avancés
|
- **FAQ**
|
||||||
|
- **Ressources additionnelles**
|
||||||
### 🛠️ **Expert**
|
|
||||||
1. [Synchronisation](SYNCHRONIZATION.md) - Protocole de synchronisation
|
|
||||||
2. [Troubleshooting](TROUBLESHOOTING.md) - Résolution de problèmes
|
|
||||||
3. [Commandes Rapides](QUICK_REFERENCE.md) - Référence rapide
|
|
||||||
4. Spécifications techniques dans `/specs/`
|
|
||||||
|
|
||||||
## 🔍 Recherche dans la Documentation
|
|
||||||
|
|
||||||
### Par Sujet
|
|
||||||
- **Installation** : [INSTALLATION.md](INSTALLATION.md)
|
|
||||||
- **Configuration** : [CONFIGURATION.md](CONFIGURATION.md)
|
|
||||||
- **Utilisation** : [USAGE.md](USAGE.md)
|
|
||||||
- **Tests** : [TESTING.md](TESTING.md), [SYNC_TESTING.md](SYNC_TESTING.md)
|
|
||||||
- **Réseau** : [RELAY_NETWORK.md](RELAY_NETWORK.md), [EXTERNAL_NODES.md](EXTERNAL_NODES.md)
|
|
||||||
- **Performance** : [PERFORMANCE.md](PERFORMANCE.md)
|
|
||||||
- **Sécurité** : [SECURITY.md](SECURITY.md)
|
|
||||||
- **Dépannage** : [TROUBLESHOOTING.md](TROUBLESHOOTING.md)
|
|
||||||
|
|
||||||
### Par Service
|
|
||||||
- **Bitcoin Core** : [CONFIGURATION.md](CONFIGURATION.md#configuration-bitcoin-core)
|
|
||||||
- **Blindbit** : [CONFIGURATION.md](CONFIGURATION.md#configuration-blindbit)
|
|
||||||
- **sdk_relay** : [CONFIGURATION.md](CONFIGURATION.md#configuration-des-relais)
|
|
||||||
- **Tor** : [CONFIGURATION.md](CONFIGURATION.md#configuration-tor)
|
|
||||||
|
|
||||||
### Par Tâche
|
|
||||||
- **Démarrer** : [USAGE.md](USAGE.md#démarrage-quotidien)
|
|
||||||
- **Configurer** : [CONFIGURATION.md](CONFIGURATION.md)
|
|
||||||
- **Tester** : [TESTING.md](TESTING.md)
|
|
||||||
- **Monitorer** : [USAGE.md](USAGE.md#monitoring-et-alertes)
|
|
||||||
- **Dépanner** : [TROUBLESHOOTING.md](TROUBLESHOOTING.md)
|
|
||||||
|
|
||||||
## 📞 Support
|
|
||||||
|
|
||||||
### Documentation
|
|
||||||
- **Index** : [INDEX.md](INDEX.md) - Cet index
|
|
||||||
- **FAQ** : [FAQ.md](FAQ.md) - Questions fréquentes
|
|
||||||
- **Troubleshooting** : [TROUBLESHOOTING.md](TROUBLESHOOTING.md) - Résolution de problèmes
|
|
||||||
|
|
||||||
### Ressources Externes
|
|
||||||
- **Repository** : [GitLab 4NK Node](https://git.4nkweb.com/4nk/4NK_node)
|
|
||||||
- **Issues** : [Issues GitLab](https://git.4nkweb.com/4nk/4NK_node/issues)
|
|
||||||
- **Wiki** : [Wiki GitLab](https://git.4nkweb.com/4nk/4NK_node/wikis)
|
|
||||||
|
|
||||||
### Contact
|
|
||||||
- **Email** : support@4nkweb.com
|
|
||||||
- **Chat** : [Discord 4NK](https://discord.gg/4nk)
|
|
||||||
- **Forum** : [Forum 4NK](https://forum.4nkweb.com)
|
|
||||||
|
|
||||||
## 🔄 Mise à Jour de la Documentation
|
|
||||||
|
|
||||||
### Dernière Mise à Jour
|
|
||||||
- **Date** : $(date)
|
|
||||||
- **Version** : 1.0.0
|
|
||||||
- **Auteur** : Équipe 4NK
|
|
||||||
|
|
||||||
### Historique des Versions
|
|
||||||
- **v1.0.0** : Documentation initiale complète
|
|
||||||
- **v0.9.0** : Documentation de base
|
|
||||||
- **v0.8.0** : Guides techniques
|
|
||||||
- **v0.7.0** : Guides de test
|
|
||||||
|
|
||||||
### Contribution
|
|
||||||
Pour contribuer à la documentation :
|
|
||||||
1. Fork le repository
|
|
||||||
2. Créer une branche pour votre contribution
|
|
||||||
3. Modifier la documentation
|
|
||||||
4. Créer une Pull Request
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## 🎯 Navigation Rapide
|
||||||
|
|
||||||
|
### 🚀 Démarrage Rapide
|
||||||
|
1. [Installation](INSTALLATION.md) - Installer sdk_client
|
||||||
|
2. [Configuration](CONFIGURATION.md) - Configurer l'environnement
|
||||||
|
3. [Utilisation](USAGE.md) - Utiliser le SDK
|
||||||
|
|
||||||
|
### 🔧 Développement
|
||||||
|
1. [Architecture](ARCHITECTURE.md) - Comprendre l'architecture
|
||||||
|
2. [API](API.md) - Consulter les APIs
|
||||||
|
3. [Tests](TESTING.md) - Exécuter les tests
|
||||||
|
|
||||||
|
### 📚 Documentation
|
||||||
|
1. [Index](INDEX.md) - Cet index
|
||||||
|
2. [Quick Reference](QUICK_REFERENCE.md) - Référence rapide
|
||||||
|
3. [Roadmap](ROADMAP.md) - Évolution du projet
|
||||||
|
|
||||||
|
### 🤝 Communauté
|
||||||
|
1. [Guide Communauté](COMMUNITY_GUIDE.md) - Contribuer
|
||||||
|
2. [Code de Conduite](../CODE_OF_CONDUCT.md) - Règles de conduite
|
||||||
|
3. [Support](SUPPORT.md) - Obtenir de l'aide
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🧪 Tests et Validation
|
||||||
|
|
||||||
|
### Tests Automatisés
|
||||||
|
```bash
|
||||||
|
# Tests unitaires
|
||||||
|
cargo test --all
|
||||||
|
|
||||||
|
# Tests d'intégration
|
||||||
|
cargo test --test integration
|
||||||
|
|
||||||
|
# Tests de performance
|
||||||
|
cargo test --test performance
|
||||||
|
|
||||||
|
# Linting
|
||||||
|
cargo clippy -- -D warnings
|
||||||
|
|
||||||
|
# Formatage
|
||||||
|
cargo fmt -- --check
|
||||||
|
```
|
||||||
|
|
||||||
|
### Tests WASM
|
||||||
|
```bash
|
||||||
|
# Compilation WASM
|
||||||
|
wasm-pack build --target web
|
||||||
|
|
||||||
|
# Tests WASM
|
||||||
|
wasm-pack test --headless --firefox
|
||||||
|
wasm-pack test --headless --chrome
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🚀 Développement
|
||||||
|
|
||||||
|
### Commandes Essentielles
|
||||||
|
```bash
|
||||||
|
# Build de développement
|
||||||
|
cargo build
|
||||||
|
|
||||||
|
# Build de production
|
||||||
|
cargo build --release
|
||||||
|
|
||||||
|
# Compilation WASM
|
||||||
|
wasm-pack build --target web
|
||||||
|
|
||||||
|
# Tests
|
||||||
|
cargo test --all
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**📚 Documentation complète pour sdk_client - SDK client pour les Silent Payments** 🚀
|
||||||
|
@ -1,533 +1,308 @@
|
|||||||
# 📦 Guide d'Installation - 4NK Node
|
# 📦 Guide d'Installation - sdk_client
|
||||||
|
|
||||||
Guide complet pour installer et configurer l'infrastructure 4NK Node.
|
Guide complet pour installer et configurer le SDK client pour les Silent Payments.
|
||||||
|
|
||||||
## 📋 Prérequis
|
## 📋 Prérequis
|
||||||
|
|
||||||
### Système
|
### Système
|
||||||
|
|
||||||
- **OS** : Linux (Ubuntu 20.04+, Debian 11+, CentOS 8+)
|
- **OS** : Linux (Ubuntu 20.04+, Debian 11+, CentOS 8+), macOS 10.15+, Windows 10+
|
||||||
- **Architecture** : x86_64
|
- **Architecture** : x86_64, ARM64 (Apple Silicon)
|
||||||
- **RAM** : 4 Go minimum, 8 Go recommandés
|
- **RAM** : 2 Go minimum, 4 Go recommandés
|
||||||
- **Stockage** : 20 Go minimum, 50 Go recommandés
|
- **Stockage** : 5 Go minimum, 10 Go recommandés
|
||||||
- **Réseau** : Connexion Internet stable
|
- **Réseau** : Connexion Internet stable
|
||||||
|
|
||||||
### Logiciels
|
### Logiciels
|
||||||
|
|
||||||
- **Docker** : Version 20.10+
|
- **Rust** : Version 1.70+ (obligatoire)
|
||||||
- **Docker Compose** : Version 2.0+
|
- **Cargo** : Inclus avec Rust
|
||||||
|
- **wasm-pack** : Version 0.12+ (pour compilation WASM)
|
||||||
- **Git** : Version 2.25+
|
- **Git** : Version 2.25+
|
||||||
- **Bash** : Version 4.0+
|
- **Node.js** : Version 18.0+ (optionnel, pour tests)
|
||||||
|
|
||||||
## 🚀 Installation
|
## 🚀 Installation
|
||||||
|
|
||||||
### 1. Installation de Docker
|
### 1. Installation de Rust
|
||||||
|
|
||||||
#### Ubuntu/Debian
|
#### Linux/macOS
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Mettre à jour les paquets
|
# Installer Rust via rustup
|
||||||
sudo apt update
|
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
|
||||||
|
|
||||||
# Installer les dépendances
|
# Recharger l'environnement
|
||||||
sudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release
|
source ~/.cargo/env
|
||||||
|
|
||||||
# Ajouter la clé GPG Docker
|
# Vérifier l'installation
|
||||||
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
|
rustc --version
|
||||||
|
cargo --version
|
||||||
# Ajouter le repository Docker
|
|
||||||
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
|
|
||||||
|
|
||||||
# Installer Docker
|
|
||||||
sudo apt update
|
|
||||||
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
|
|
||||||
|
|
||||||
# Ajouter l'utilisateur au groupe docker
|
|
||||||
sudo usermod -aG docker $USER
|
|
||||||
|
|
||||||
# Démarrer Docker
|
|
||||||
sudo systemctl start docker
|
|
||||||
sudo systemctl enable docker
|
|
||||||
```
|
```
|
||||||
|
|
||||||
#### CentOS/RHEL
|
#### Windows
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Installer les dépendances
|
# Télécharger et installer rustup depuis
|
||||||
sudo yum install -y yum-utils
|
# https://rustup.rs/
|
||||||
|
|
||||||
# Ajouter le repository Docker
|
|
||||||
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
|
|
||||||
|
|
||||||
# Installer Docker
|
|
||||||
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
|
|
||||||
|
|
||||||
# Démarrer Docker
|
|
||||||
sudo systemctl start docker
|
|
||||||
sudo systemctl enable docker
|
|
||||||
|
|
||||||
# Ajouter l'utilisateur au groupe docker
|
|
||||||
sudo usermod -aG docker $USER
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### 2. Configuration SSH (Recommandé)
|
### 2. Installation de wasm-pack
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Installer wasm-pack
|
||||||
|
cargo install wasm-pack
|
||||||
|
|
||||||
|
# Vérifier l'installation
|
||||||
|
wasm-pack --version
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. Configuration SSH (Recommandé)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Générer une clé SSH
|
# Générer une clé SSH
|
||||||
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_4nk -C "4nk-automation"
|
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_sdk -C "sdk-client-automation"
|
||||||
|
|
||||||
# Ajouter à l'agent SSH
|
# Ajouter à l'agent SSH
|
||||||
ssh-add ~/.ssh/id_ed25519_4nk
|
ssh-add ~/.ssh/id_ed25519_sdk
|
||||||
|
|
||||||
# Configurer Git pour utiliser la clé
|
# Configurer Git pour utiliser la clé
|
||||||
git config --global core.sshCommand "ssh -i ~/.ssh/id_ed25519_4nk"
|
git config --global core.sshCommand "ssh -i ~/.ssh/id_ed25519_sdk"
|
||||||
|
|
||||||
# Afficher la clé publique pour GitLab
|
# Afficher la clé publique pour Gitea
|
||||||
cat ~/.ssh/id_ed25519_4nk.pub
|
cat ~/.ssh/id_ed25519_sdk.pub
|
||||||
```
|
```
|
||||||
|
|
||||||
**Ajouter la clé publique à GitLab :**
|
**Ajouter la clé publique à Gitea :**
|
||||||
1. Aller sur GitLab > Settings > SSH Keys
|
1. Aller sur Gitea > Settings > SSH Keys
|
||||||
2. Coller la clé publique
|
2. Coller la clé publique
|
||||||
3. Cliquer sur "Add key"
|
3. Cliquer sur "Add key"
|
||||||
|
|
||||||
### 3. Clonage du Repository
|
### 4. Clonage du Repository
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Cloner avec SSH (recommandé)
|
# Cloner avec SSH (recommandé)
|
||||||
git clone git@git.4nkweb.com:4nk/4NK_node.git
|
git clone git@git.4nkweb.com:4nk/sdk_client.git
|
||||||
cd 4NK_node
|
cd sdk_client
|
||||||
|
|
||||||
# Ou avec HTTPS (si SSH non configuré)
|
# Ou cloner avec HTTPS
|
||||||
# git clone https://git.4nkweb.com/4nk/4NK_node.git
|
git clone https://git.4nkweb.com/4nk/sdk_client.git
|
||||||
# cd 4NK_node
|
cd sdk_client
|
||||||
```
|
```
|
||||||
|
|
||||||
### 4. Vérification de l'Installation
|
## 🔧 Configuration
|
||||||
|
|
||||||
|
### Variables d'Environnement
|
||||||
|
|
||||||
|
Créer un fichier `.env` à la racine du projet :
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Vérifier Docker
|
# Configuration Rust
|
||||||
docker --version
|
RUST_LOG=info
|
||||||
docker-compose --version
|
RUST_BACKTRACE=1
|
||||||
|
CARGO_INCREMENTAL=1
|
||||||
|
|
||||||
# Vérifier la connectivité GitLab
|
# Configuration WASM
|
||||||
ssh -T git@git.4nkweb.com
|
WASM_PACK_TARGET=web
|
||||||
|
WASM_PACK_PROFILE=release
|
||||||
|
|
||||||
# Vérifier les permissions
|
# Configuration de développement
|
||||||
ls -la
|
CARGO_PROFILE_DEV_OPT_LEVEL=0
|
||||||
|
CARGO_PROFILE_RELEASE_OPT_LEVEL=3
|
||||||
```
|
```
|
||||||
|
|
||||||
## 🔧 Configuration Initiale
|
### Configuration Cargo
|
||||||
|
|
||||||
### 1. Configuration des Variables d'Environnement
|
Le fichier `Cargo.toml` est déjà configuré pour :
|
||||||
|
- Dépendances Rust
|
||||||
|
- Features WASM
|
||||||
|
- Configuration de build
|
||||||
|
- Tests et documentation
|
||||||
|
|
||||||
|
### Configuration wasm-pack
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Créer le fichier d'environnement
|
# Configuration wasm-pack
|
||||||
cat > .env << EOF
|
wasm-pack build --target web --out-dir pkg
|
||||||
# Configuration 4NK Node
|
|
||||||
PROJECT_NAME=4NK Node
|
|
||||||
NETWORK_NAME=4nk_node_btcnet
|
|
||||||
|
|
||||||
# Logs
|
# Ou pour Node.js
|
||||||
RUST_LOG=debug,bitcoincore_rpc=trace
|
wasm-pack build --target nodejs --out-dir pkg
|
||||||
|
|
||||||
# Bitcoin
|
|
||||||
BITCOIN_COOKIE_PATH=/home/bitcoin/.bitcoin/signet/.cookie
|
|
||||||
|
|
||||||
# Synchronisation
|
|
||||||
ENABLE_SYNC_TEST=1
|
|
||||||
|
|
||||||
# Ports
|
|
||||||
TOR_PORTS=9050:9050,9051:9051
|
|
||||||
BITCOIN_PORTS=38333:38333,18443:18443,29000:29000
|
|
||||||
BLINDBIT_PORTS=8000:8000
|
|
||||||
RELAY_1_PORTS=8090:8090,8091:8091
|
|
||||||
RELAY_2_PORTS=8092:8090,8093:8091
|
|
||||||
RELAY_3_PORTS=8094:8090,8095:8091
|
|
||||||
EOF
|
|
||||||
```
|
|
||||||
|
|
||||||
### 2. Configuration Bitcoin Core
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Vérifier la configuration Bitcoin
|
|
||||||
cat bitcoin/bitcoin.conf
|
|
||||||
|
|
||||||
# Modifier si nécessaire
|
|
||||||
nano bitcoin/bitcoin.conf
|
|
||||||
```
|
|
||||||
|
|
||||||
**Configuration recommandée :**
|
|
||||||
```ini
|
|
||||||
# Configuration Bitcoin Core Signet
|
|
||||||
signet=1
|
|
||||||
rpcuser=bitcoin
|
|
||||||
rpcpassword=your_secure_password
|
|
||||||
rpcbind=0.0.0.0
|
|
||||||
rpcallowip=172.19.0.0/16
|
|
||||||
zmqpubrawblock=tcp://0.0.0.0:29000
|
|
||||||
zmqpubrawtx=tcp://0.0.0.0:29000
|
|
||||||
txindex=1
|
|
||||||
server=1
|
|
||||||
listen=1
|
|
||||||
```
|
|
||||||
|
|
||||||
### 3. Configuration Blindbit
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Vérifier la configuration Blindbit
|
|
||||||
cat blindbit/blindbit.toml
|
|
||||||
|
|
||||||
# Modifier si nécessaire
|
|
||||||
nano blindbit/blindbit.toml
|
|
||||||
```
|
|
||||||
|
|
||||||
**Configuration recommandée :**
|
|
||||||
```toml
|
|
||||||
# Configuration Blindbit
|
|
||||||
host = "0.0.0.0:8000"
|
|
||||||
chain = "signet"
|
|
||||||
rpc_endpoint = "http://bitcoin:18443"
|
|
||||||
cookie_path = "/home/bitcoin/.bitcoin/signet/.cookie"
|
|
||||||
sync_start_height = 1
|
|
||||||
max_parallel_tweak_computations = 4
|
|
||||||
max_parallel_requests = 4
|
|
||||||
```
|
|
||||||
|
|
||||||
### 4. Configuration des Relais
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Vérifier les configurations des relais
|
|
||||||
ls -la sdk_relay/.conf.docker.*
|
|
||||||
|
|
||||||
# Modifier si nécessaire
|
|
||||||
nano sdk_relay/.conf.docker.relay1
|
|
||||||
nano sdk_relay/.conf.docker.relay2
|
|
||||||
nano sdk_relay/.conf.docker.relay3
|
|
||||||
```
|
|
||||||
|
|
||||||
**Configuration recommandée pour chaque relay :**
|
|
||||||
```ini
|
|
||||||
core_url=http://bitcoin:18443
|
|
||||||
core_wallet=relay_wallet
|
|
||||||
ws_url=0.0.0.0:8090
|
|
||||||
wallet_name=relay_wallet.json
|
|
||||||
network=signet
|
|
||||||
blindbit_url=http://blindbit:8000
|
|
||||||
zmq_url=tcp://bitcoin:29000
|
|
||||||
data_dir=.4nk
|
|
||||||
cookie_path=/home/bitcoin/.4nk/bitcoin.cookie
|
|
||||||
dev_mode=true
|
|
||||||
standalone=false
|
|
||||||
relay_id=relay-1 # Changer pour chaque relay
|
|
||||||
```
|
|
||||||
|
|
||||||
## 🚀 Démarrage
|
|
||||||
|
|
||||||
### 1. Démarrage Complet
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Démarrer tous les services
|
|
||||||
./restart_4nk_node.sh
|
|
||||||
|
|
||||||
# Vérifier le statut
|
|
||||||
docker ps
|
|
||||||
```
|
|
||||||
|
|
||||||
### 2. Démarrage Séquentiel (Debug)
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Démarrer Tor
|
|
||||||
./restart_4nk_node.sh -t
|
|
||||||
|
|
||||||
# Démarrer Bitcoin Core
|
|
||||||
./restart_4nk_node.sh -b
|
|
||||||
|
|
||||||
# Attendre la synchronisation Bitcoin (10-30 minutes)
|
|
||||||
echo "Attendre la synchronisation Bitcoin..."
|
|
||||||
docker logs bitcoin-signet | grep "progress"
|
|
||||||
|
|
||||||
# Démarrer Blindbit
|
|
||||||
./restart_4nk_node.sh -l
|
|
||||||
|
|
||||||
# Démarrer les relais
|
|
||||||
./restart_4nk_node.sh -r
|
|
||||||
```
|
|
||||||
|
|
||||||
### 3. Vérification du Démarrage
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Vérifier tous les services
|
|
||||||
docker ps
|
|
||||||
|
|
||||||
# Vérifier les logs
|
|
||||||
docker-compose logs --tail=50
|
|
||||||
|
|
||||||
# Vérifier la connectivité
|
|
||||||
./test_final_sync.sh
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## 🧪 Tests Post-Installation
|
## 🧪 Tests Post-Installation
|
||||||
|
|
||||||
### 1. Tests de Connectivité
|
### 1. Test de Compilation Rust
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Test de base
|
# Test de compilation
|
||||||
./test_final_sync.sh
|
cargo build
|
||||||
|
|
||||||
# Test de synchronisation
|
# Vérifier le build
|
||||||
./test_sync_logs.sh
|
cargo build --release
|
||||||
|
|
||||||
# Test des messages WebSocket
|
# Vérifier les dépendances
|
||||||
python3 test_websocket_messages.py
|
cargo check
|
||||||
```
|
```
|
||||||
|
|
||||||
### 2. Tests de Performance
|
### 2. Test de Compilation WASM
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Vérifier l'utilisation des ressources
|
# Compilation WASM
|
||||||
docker stats
|
wasm-pack build --target web
|
||||||
|
|
||||||
# Test de charge
|
# Vérifier les fichiers générés
|
||||||
python3 test_websocket_messages.py --load-test
|
ls -la pkg/
|
||||||
|
|
||||||
# Monitoring de la synchronisation
|
|
||||||
./monitor_sync.sh
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### 3. Tests de Sécurité
|
### 3. Test des Tests
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Vérifier les ports exposés
|
# Tests unitaires
|
||||||
netstat -tlnp | grep -E "(18443|8000|9050|8090)"
|
cargo test
|
||||||
|
|
||||||
# Vérifier les permissions
|
# Tests d'intégration
|
||||||
ls -la sdk_relay/.conf*
|
cargo test --test integration
|
||||||
ls -la bitcoin/bitcoin.conf
|
|
||||||
ls -la blindbit/blindbit.toml
|
# Tests WASM
|
||||||
|
wasm-pack test --headless --firefox
|
||||||
```
|
```
|
||||||
|
|
||||||
## 🔧 Configuration Avancée
|
### 4. Test de Linting
|
||||||
|
|
||||||
### 1. Configuration Réseau
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Créer un réseau Docker personnalisé
|
# Clippy (linter Rust)
|
||||||
docker network create 4nk-network --subnet=172.20.0.0/16
|
cargo clippy -- -D warnings
|
||||||
|
|
||||||
# Modifier docker-compose.yml
|
# Formatage
|
||||||
sed -i 's/4nk_default/4nk-network/g' docker-compose.yml
|
cargo fmt -- --check
|
||||||
```
|
|
||||||
|
|
||||||
### 2. Configuration SSL/TLS
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Générer un certificat auto-signé
|
|
||||||
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes
|
|
||||||
|
|
||||||
# Configurer nginx comme proxy SSL
|
|
||||||
cat > nginx.conf << EOF
|
|
||||||
server {
|
|
||||||
listen 443 ssl;
|
|
||||||
server_name your-domain.com;
|
|
||||||
|
|
||||||
ssl_certificate cert.pem;
|
|
||||||
ssl_certificate_key key.pem;
|
|
||||||
|
|
||||||
location / {
|
|
||||||
proxy_pass http://localhost:8090;
|
|
||||||
proxy_http_version 1.1;
|
|
||||||
proxy_set_header Upgrade \$http_upgrade;
|
|
||||||
proxy_set_header Connection "upgrade";
|
|
||||||
proxy_set_header Host \$host;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
EOF
|
|
||||||
```
|
|
||||||
|
|
||||||
### 3. Configuration de Pare-feu
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Autoriser seulement les ports nécessaires
|
|
||||||
sudo ufw allow 18443/tcp # Bitcoin Core RPC
|
|
||||||
sudo ufw allow 8090/tcp # sdk_relay WebSocket
|
|
||||||
sudo ufw allow 8000/tcp # Blindbit API
|
|
||||||
sudo ufw enable
|
|
||||||
|
|
||||||
# Vérifier les règles
|
|
||||||
sudo ufw status numbered
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## 🚨 Dépannage
|
## 🚨 Dépannage
|
||||||
|
|
||||||
### Problèmes Courants
|
### Problèmes Courants
|
||||||
|
|
||||||
#### 1. Docker Non Installé
|
#### Rust non trouvé
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Vérifier l'installation Docker
|
# Vérifier l'installation
|
||||||
docker --version
|
which rustc
|
||||||
|
rustc --version
|
||||||
|
|
||||||
# Si non installé, suivre les étapes d'installation ci-dessus
|
# Réinstaller si nécessaire
|
||||||
|
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
|
||||||
|
source ~/.cargo/env
|
||||||
```
|
```
|
||||||
|
|
||||||
#### 2. Permissions Docker
|
#### wasm-pack non trouvé
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Vérifier les permissions
|
# Vérifier l'installation
|
||||||
docker ps
|
which wasm-pack
|
||||||
|
wasm-pack --version
|
||||||
|
|
||||||
# Si erreur de permission
|
# Réinstaller si nécessaire
|
||||||
sudo usermod -aG docker $USER
|
cargo install wasm-pack
|
||||||
newgrp docker
|
|
||||||
```
|
```
|
||||||
|
|
||||||
#### 3. Ports Déjà Utilisés
|
#### Erreurs de compilation
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Vérifier les ports utilisés
|
# Nettoyer et recompiler
|
||||||
sudo netstat -tlnp | grep -E "(18443|8000|9050|8090)"
|
cargo clean
|
||||||
|
cargo build
|
||||||
|
|
||||||
# Arrêter les services conflictuels
|
# Vérifier les dépendances
|
||||||
sudo docker-compose down
|
cargo update
|
||||||
|
cargo check
|
||||||
```
|
```
|
||||||
|
|
||||||
#### 4. Problèmes de Synchronisation Bitcoin
|
#### Erreurs WASM
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Vérifier les logs Bitcoin
|
# Nettoyer et recompiler WASM
|
||||||
docker logs bitcoin-signet
|
rm -rf pkg/
|
||||||
|
wasm-pack build --target web
|
||||||
|
|
||||||
# Vérifier l'espace disque
|
# Vérifier les dépendances WASM
|
||||||
df -h
|
cargo tree
|
||||||
|
|
||||||
# Redémarrer Bitcoin Core
|
|
||||||
docker restart bitcoin-signet
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### Logs Utiles
|
### Logs Détaillés
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Logs de tous les services
|
# Logs de compilation Rust
|
||||||
docker-compose logs -f
|
RUST_LOG=debug cargo build
|
||||||
|
|
||||||
# Logs d'un service spécifique
|
# Logs de compilation WASM
|
||||||
docker logs bitcoin-signet
|
wasm-pack build --target web --verbose
|
||||||
docker logs blindbit-oracle
|
|
||||||
docker logs sdk_relay_1
|
|
||||||
|
|
||||||
# Logs avec timestamps
|
# Logs de tests
|
||||||
docker-compose logs -t
|
RUST_LOG=debug cargo test
|
||||||
|
|
||||||
# Logs depuis une date
|
|
||||||
docker-compose logs --since="2024-01-01T00:00:00"
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## 🔒 Sécurité
|
||||||
|
|
||||||
|
### Vérifications de Sécurité
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Audit des dépendances Rust
|
||||||
|
cargo audit
|
||||||
|
|
||||||
|
# Vérification des vulnérabilités
|
||||||
|
cargo audit --deny warnings
|
||||||
|
|
||||||
|
# Vérification du code
|
||||||
|
cargo clippy -- -D warnings
|
||||||
|
```
|
||||||
|
|
||||||
|
### Bonnes Pratiques
|
||||||
|
|
||||||
|
- Maintenir Rust à jour
|
||||||
|
- Utiliser des dépendances sécurisées
|
||||||
|
- Tester régulièrement le code
|
||||||
|
- Valider les entrées
|
||||||
|
- Utiliser des variables d'environnement pour les secrets
|
||||||
|
|
||||||
## 📊 Monitoring
|
## 📊 Monitoring
|
||||||
|
|
||||||
### 1. Monitoring de Base
|
### Métriques d'Installation
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Statut des conteneurs
|
# Taille du projet
|
||||||
docker ps
|
du -sh .
|
||||||
|
|
||||||
# Utilisation des ressources
|
# Nombre de fichiers
|
||||||
docker stats
|
find . -type f | wc -l
|
||||||
|
|
||||||
# Espace disque
|
# Dépendances Rust
|
||||||
docker system df
|
cargo tree | wc -l
|
||||||
|
|
||||||
|
# Taille du binaire
|
||||||
|
ls -lh target/release/sdk_client.wasm
|
||||||
```
|
```
|
||||||
|
|
||||||
### 2. Monitoring Avancé
|
### Vérification de l'Installation
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Surveillance de la synchronisation
|
# Script de vérification
|
||||||
./monitor_sync.sh
|
./scripts/verify-installation.sh
|
||||||
|
|
||||||
# Monitoring en continu
|
# Tests automatisés
|
||||||
while true; do
|
cargo test --all
|
||||||
echo "=== $(date) ==="
|
|
||||||
docker stats --no-stream | grep -E "(sdk_relay|bitcoin)"
|
|
||||||
sleep 30
|
|
||||||
done
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### 3. Alertes
|
## 🎯 Prochaines Étapes
|
||||||
|
|
||||||
```bash
|
Après l'installation réussie :
|
||||||
# Script d'alerte simple
|
|
||||||
cat > monitor_alert.sh << 'EOF'
|
|
||||||
#!/bin/bash
|
|
||||||
if ! docker ps | grep -q "bitcoin-signet.*Up"; then
|
|
||||||
echo "ALERTE: Bitcoin Core n'est pas en cours d'exécution!"
|
|
||||||
# Ajouter notification (email, Slack, etc.)
|
|
||||||
fi
|
|
||||||
EOF
|
|
||||||
|
|
||||||
chmod +x monitor_alert.sh
|
1. **Lire le [Guide d'Utilisation](USAGE.md)** - Utiliser le SDK
|
||||||
```
|
2. **Consulter l'[Architecture](ARCHITECTURE.md)** - Comprendre le système
|
||||||
|
3. **Explorer les [APIs](API.md)** - Utiliser les fonctionnalités
|
||||||
|
4. **Configurer l'[Intégration 4NK_node](INTEGRATION_4NK_NODE.md)** - Déployer en production
|
||||||
|
|
||||||
## 🔄 Mise à Jour
|
## 📞 Support
|
||||||
|
|
||||||
### 1. Mise à Jour de l'Infrastructure
|
En cas de problème :
|
||||||
|
|
||||||
```bash
|
1. Consulter la [documentation](INDEX.md)
|
||||||
# Sauvegarder la configuration
|
2. Vérifier les [issues existantes](https://git.4nkweb.com/4nk/sdk_client/issues)
|
||||||
cp -r . ../4NK_node_backup_$(date +%Y%m%d)
|
3. Créer une nouvelle issue avec les détails du problème
|
||||||
|
4. Inclure les logs et la configuration utilisée
|
||||||
# Mettre à jour le code
|
|
||||||
git pull origin main
|
|
||||||
|
|
||||||
# Redémarrer les services
|
|
||||||
./restart_4nk_node.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
### 2. Mise à Jour de Docker
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Mettre à jour Docker
|
|
||||||
sudo apt update
|
|
||||||
sudo apt upgrade docker-ce docker-ce-cli containerd.io
|
|
||||||
|
|
||||||
# Redémarrer Docker
|
|
||||||
sudo systemctl restart docker
|
|
||||||
```
|
|
||||||
|
|
||||||
### 3. Mise à Jour des Images
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Reconstruire les images
|
|
||||||
docker-compose build --no-cache
|
|
||||||
|
|
||||||
# Redémarrer les services
|
|
||||||
docker-compose up -d
|
|
||||||
```
|
|
||||||
|
|
||||||
## 📝 Checklist d'Installation
|
|
||||||
|
|
||||||
- [ ] Docker installé et configuré
|
|
||||||
- [ ] Docker Compose installé
|
|
||||||
- [ ] Clé SSH configurée pour GitLab
|
|
||||||
- [ ] Repository cloné
|
|
||||||
- [ ] Variables d'environnement configurées
|
|
||||||
- [ ] Configurations Bitcoin Core vérifiées
|
|
||||||
- [ ] Configurations Blindbit vérifiées
|
|
||||||
- [ ] Configurations des relais vérifiées
|
|
||||||
- [ ] Services démarrés avec succès
|
|
||||||
- [ ] Tests de connectivité passés
|
|
||||||
- [ ] Tests de synchronisation passés
|
|
||||||
- [ ] Monitoring configuré
|
|
||||||
- [ ] Pare-feu configuré (optionnel)
|
|
||||||
- [ ] SSL/TLS configuré (optionnel)
|
|
||||||
|
|
||||||
## 🎉 Installation Terminée
|
|
||||||
|
|
||||||
Félicitations ! L'infrastructure 4NK Node est maintenant installée et configurée.
|
|
||||||
|
|
||||||
**Prochaines étapes :**
|
|
||||||
1. Consulter le [Guide d'Utilisation](USAGE.md)
|
|
||||||
2. Configurer les [Nœuds Externes](EXTERNAL_NODES.md)
|
|
||||||
3. Tester la [Synchronisation](SYNCHRONIZATION.md)
|
|
||||||
4. Configurer le [Monitoring](PERFORMANCE.md)
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
**🚀 Installation terminée ! sdk_client est prêt à être utilisé.** ✨
|
||||||
|
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
|
```bash
|
||||||
# Démarrer tous les services
|
# Build de développement
|
||||||
./restart_4nk_node.sh
|
cargo build
|
||||||
|
|
||||||
# Vérifier le statut
|
# Build avec optimisations
|
||||||
docker ps
|
cargo build --release
|
||||||
|
|
||||||
|
# Vérifier le build
|
||||||
|
cargo check
|
||||||
```
|
```
|
||||||
|
|
||||||
### 2. Démarrage Séquentiel
|
### 2. Compilation WASM
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Démarrer Tor
|
# Compilation WASM pour le web
|
||||||
./restart_4nk_node.sh -t
|
wasm-pack build --target web
|
||||||
|
|
||||||
# Démarrer Bitcoin Core
|
# Compilation WASM pour Node.js
|
||||||
./restart_4nk_node.sh -b
|
wasm-pack build --target nodejs
|
||||||
|
|
||||||
# Attendre la synchronisation Bitcoin
|
# Compilation WASM avec optimisations
|
||||||
echo "Attendre la synchronisation Bitcoin (10-30 minutes)..."
|
wasm-pack build --target web --release
|
||||||
docker logs bitcoin-signet | grep "progress"
|
|
||||||
|
|
||||||
# Démarrer Blindbit
|
|
||||||
./restart_4nk_node.sh -l
|
|
||||||
|
|
||||||
# Démarrer les relais
|
|
||||||
./restart_4nk_node.sh -r
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### 3. Vérification du Démarrage
|
### 3. Vérification du Build
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Vérifier tous les services
|
# Vérifier les fichiers générés
|
||||||
docker ps
|
ls -la pkg/
|
||||||
|
|
||||||
# Vérifier les logs
|
# Vérifier la taille du WASM
|
||||||
docker-compose logs --tail=50
|
ls -lh pkg/sdk_client_bg.wasm
|
||||||
|
|
||||||
# Vérifier la connectivité
|
# Vérifier les types TypeScript
|
||||||
./test_final_sync.sh
|
cat pkg/sdk_client.d.ts
|
||||||
```
|
```
|
||||||
|
|
||||||
## 🔧 Opérations Quotidiennes
|
## 🔧 Intégration dans les Projets
|
||||||
|
|
||||||
### 1. Surveillance des Services
|
### 1. Intégration JavaScript/TypeScript
|
||||||
|
|
||||||
```bash
|
```javascript
|
||||||
# Statut des services
|
// Import du module WASM
|
||||||
docker ps
|
import init, { generate_sp_wallet, lock_freezed_utxos } from './pkg/sdk_client.js';
|
||||||
|
|
||||||
# Logs en temps réel
|
// Initialisation
|
||||||
docker-compose logs -f
|
await init();
|
||||||
|
|
||||||
# Utilisation des ressources
|
// Utilisation des fonctions
|
||||||
docker stats
|
const wallet = generate_sp_wallet();
|
||||||
|
const success = lock_freezed_utxos(wallet, utxos);
|
||||||
# Espace disque
|
|
||||||
docker system df
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### 2. Monitoring de la Synchronisation
|
### 2. Intégration Rust
|
||||||
|
|
||||||
```bash
|
```rust
|
||||||
# Surveillance de la synchronisation
|
use sdk_client::{generate_sp_wallet, lock_freezed_utxos};
|
||||||
./monitor_sync.sh
|
|
||||||
|
|
||||||
# Test de synchronisation
|
// Utilisation directe
|
||||||
./test_sync_logs.sh
|
let wallet = generate_sp_wallet();
|
||||||
|
let success = lock_freezed_utxos(&wallet, &utxos);
|
||||||
# Test des messages WebSocket
|
|
||||||
python3 test_websocket_messages.py
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### 3. Gestion des Logs
|
### 3. Intégration Web
|
||||||
|
|
||||||
```bash
|
```html
|
||||||
# Logs de tous les services
|
<!DOCTYPE html>
|
||||||
docker-compose logs -f
|
<html>
|
||||||
|
<head>
|
||||||
# Logs d'un service spécifique
|
<script type="module">
|
||||||
docker logs bitcoin-signet
|
import init, { generate_sp_wallet } from './pkg/sdk_client.js';
|
||||||
docker logs blindbit-oracle
|
|
||||||
docker logs sdk_relay_1
|
async function main() {
|
||||||
|
await init();
|
||||||
# Logs avec timestamps
|
const wallet = generate_sp_wallet();
|
||||||
docker-compose logs -t
|
console.log('Wallet généré:', wallet);
|
||||||
|
}
|
||||||
# Logs depuis une date
|
|
||||||
docker-compose logs --since="2024-01-01T00:00:00"
|
main();
|
||||||
|
</script>
|
||||||
# Logs des 100 dernières lignes
|
</head>
|
||||||
docker-compose logs --tail=100
|
<body>
|
||||||
|
<h1>SDK Client Test</h1>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
```
|
```
|
||||||
|
|
||||||
## 🌐 Utilisation du Réseau de Relais
|
## 💰 Utilisation des Silent Payments
|
||||||
|
|
||||||
### 1. Configuration des Relais
|
### 1. Génération de Wallet
|
||||||
|
|
||||||
L'infrastructure utilise 3 relais locaux :
|
```rust
|
||||||
|
// Génération d'un nouveau wallet Silent Payment
|
||||||
|
let wallet = generate_sp_wallet();
|
||||||
|
|
||||||
| Relay | Port WebSocket | Port HTTP | Configuration |
|
// Propriétés du wallet
|
||||||
|-------|----------------|-----------|---------------|
|
println!("Address: {}", wallet.address);
|
||||||
| **Relay 1** | 8090 | 8091 | `sdk_relay/.conf.docker.relay1` |
|
println!("Public Key: {}", wallet.public_key);
|
||||||
| **Relay 2** | 8092 | 8093 | `sdk_relay/.conf.docker.relay2` |
|
|
||||||
| **Relay 3** | 8094 | 8095 | `sdk_relay/.conf.docker.relay3` |
|
|
||||||
|
|
||||||
### 2. Test de Connectivité des Relais
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Test de connectivité de base
|
|
||||||
./test_final_sync.sh
|
|
||||||
|
|
||||||
# Test de synchronisation
|
|
||||||
./test_sync_logs.sh
|
|
||||||
|
|
||||||
# Test des messages WebSocket
|
|
||||||
python3 test_websocket_messages.py
|
|
||||||
|
|
||||||
# Test de charge
|
|
||||||
python3 test_websocket_messages.py --load-test
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### 3. Surveillance de la Synchronisation
|
### 2. Verrouillage d'UTXOs
|
||||||
|
|
||||||
```bash
|
```rust
|
||||||
# Surveillance en temps réel
|
// Liste des UTXOs à verrouiller
|
||||||
./monitor_sync.sh
|
let utxos = vec![
|
||||||
|
UTXO {
|
||||||
|
txid: "abc123...",
|
||||||
|
vout: 0,
|
||||||
|
amount: 100000,
|
||||||
|
script_pubkey: "script...",
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
# Test de synchronisation forcé
|
// Verrouillage des UTXOs
|
||||||
./test_sync_logs.sh force
|
let success = lock_freezed_utxos(&wallet, &utxos);
|
||||||
|
if success {
|
||||||
# Test de synchronisation en continu
|
println!("UTXOs verrouillés avec succès");
|
||||||
./test_sync_logs.sh continuous
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
## 🔗 Connexion aux Services
|
### 3. Scan de Blocs
|
||||||
|
|
||||||
### 1. Bitcoin Core RPC
|
```rust
|
||||||
|
// Scan de blocs pour les Silent Payments
|
||||||
|
let blocks = vec![800000, 800001, 800002];
|
||||||
|
let results = scan_blocks(&wallet, &blocks);
|
||||||
|
|
||||||
```bash
|
for result in results {
|
||||||
# Connexion via curl
|
println!("Transaction trouvée: {}", result.txid);
|
||||||
curl -u bitcoin:your_password --data-binary '{"jsonrpc": "1.0", "id": "curltest", "method": "getblockchaininfo", "params": []}' -H 'content-type: text/plain;' http://localhost:18443/
|
println!("Montant: {} sats", result.amount);
|
||||||
|
}
|
||||||
# Connexion via bitcoin-cli
|
|
||||||
docker exec bitcoin-signet bitcoin-cli -signet getblockchaininfo
|
|
||||||
|
|
||||||
# Vérifier la synchronisation
|
|
||||||
docker exec bitcoin-signet bitcoin-cli -signet getblockchaininfo | jq '.verificationprogress'
|
|
||||||
```
|
|
||||||
|
|
||||||
### 2. Blindbit API
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Test de connectivité
|
|
||||||
curl -s http://localhost:8000/
|
|
||||||
|
|
||||||
# Vérifier le statut
|
|
||||||
curl -s http://localhost:8000/status
|
|
||||||
|
|
||||||
# Obtenir des filtres
|
|
||||||
curl -s http://localhost:8000/filters
|
|
||||||
```
|
|
||||||
|
|
||||||
### 3. sdk_relay WebSocket
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Test de connectivité WebSocket
|
|
||||||
curl -v -H "Connection: Upgrade" -H "Upgrade: websocket" -H "Sec-WebSocket-Key: test" http://localhost:8090/
|
|
||||||
|
|
||||||
# Test avec wscat (si installé)
|
|
||||||
wscat -c ws://localhost:8090
|
|
||||||
|
|
||||||
# Test avec Python
|
|
||||||
python3 test_websocket_messages.py
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## 🧪 Tests et Validation
|
## 🧪 Tests et Validation
|
||||||
|
|
||||||
### 1. Tests de Base
|
### 1. Tests Unitaires
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Test de connectivité complet
|
# Exécuter tous les tests
|
||||||
./test_final_sync.sh
|
cargo test
|
||||||
|
|
||||||
# Test de synchronisation
|
# Tests avec output détaillé
|
||||||
./test_sync_logs.sh
|
cargo test -- --nocapture
|
||||||
|
|
||||||
# Test des messages
|
# Tests spécifiques
|
||||||
./test_messages.sh
|
cargo test test_wallet_generation
|
||||||
|
|
||||||
# Test des 3 relais
|
|
||||||
./test_3_relays.sh
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### 2. Tests de Performance
|
### 2. Tests d'Intégration
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Test de charge WebSocket
|
# Tests d'intégration
|
||||||
for i in {1..10}; do
|
cargo test --test integration
|
||||||
python3 test_websocket_messages.py &
|
|
||||||
done
|
|
||||||
wait
|
|
||||||
|
|
||||||
# Test de connectivité multiple
|
# Tests de performance
|
||||||
netstat -tlnp | grep -E "(8090|8092|8094)"
|
cargo test --test performance
|
||||||
|
|
||||||
# Test de performance
|
|
||||||
docker stats --no-stream
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### 3. Tests de Sécurité
|
### 3. Tests WASM
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Vérifier les ports exposés
|
# Tests WASM avec Firefox
|
||||||
netstat -tuln | grep -E "(8090|8092|8094)"
|
wasm-pack test --headless --firefox
|
||||||
|
|
||||||
# Vérifier les logs d'accès
|
# Tests WASM avec Chrome
|
||||||
docker logs sdk_relay_1 | grep -E "(ERROR|WARN)" | tail -20
|
wasm-pack test --headless --chrome
|
||||||
|
|
||||||
# Vérifier l'utilisation des ressources
|
# Tests WASM avec Node.js
|
||||||
docker stats --no-stream | grep sdk_relay
|
wasm-pack test --node
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4. Tests de Linting
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Clippy (linter Rust)
|
||||||
|
cargo clippy -- -D warnings
|
||||||
|
|
||||||
|
# Formatage du code
|
||||||
|
cargo fmt -- --check
|
||||||
|
|
||||||
|
# Audit de sécurité
|
||||||
|
cargo audit
|
||||||
```
|
```
|
||||||
|
|
||||||
## 🔧 Configuration et Maintenance
|
## 🔧 Configuration et Maintenance
|
||||||
|
|
||||||
### 1. Modification de Configuration
|
### 1. Configuration des Features
|
||||||
|
|
||||||
```bash
|
```toml
|
||||||
# Modifier la configuration Bitcoin Core
|
# Cargo.toml
|
||||||
sudo docker-compose down
|
[dependencies]
|
||||||
nano bitcoin/bitcoin.conf
|
sdk_client = { git = "https://git.4nkweb.com/4nk/sdk_client.git", features = ["wasm", "web"] }
|
||||||
sudo docker-compose up -d bitcoin
|
|
||||||
|
|
||||||
# Modifier la configuration Blindbit
|
|
||||||
nano blindbit/blindbit.toml
|
|
||||||
sudo docker-compose restart blindbit
|
|
||||||
|
|
||||||
# Modifier la configuration des relais
|
|
||||||
nano sdk_relay/.conf.docker.relay1
|
|
||||||
sudo docker-compose restart sdk_relay_1
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### 2. Redémarrage des Services
|
### 2. Configuration de Build
|
||||||
|
|
||||||
```bash
|
```toml
|
||||||
# Redémarrage complet
|
# Cargo.toml
|
||||||
./restart_4nk_node.sh
|
[profile.release]
|
||||||
|
opt-level = 3
|
||||||
|
lto = true
|
||||||
|
codegen-units = 1
|
||||||
|
panic = "abort"
|
||||||
|
|
||||||
# Redémarrage d'un service spécifique
|
[profile.dev]
|
||||||
docker-compose restart bitcoin
|
opt-level = 0
|
||||||
docker-compose restart blindbit
|
debug = true
|
||||||
docker-compose restart sdk_relay_1
|
|
||||||
|
|
||||||
# Redémarrage avec reconstruction
|
|
||||||
docker-compose down
|
|
||||||
docker-compose build --no-cache
|
|
||||||
docker-compose up -d
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### 3. Sauvegarde et Restauration
|
### 3. Configuration WASM
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Sauvegarde des données
|
# Variables d'environnement pour WASM
|
||||||
docker exec bitcoin-signet tar czf /tmp/bitcoin-backup.tar.gz /home/bitcoin/.bitcoin
|
export WASM_PACK_TARGET=web
|
||||||
docker cp bitcoin-signet:/tmp/bitcoin-backup.tar.gz ./backup/
|
export WASM_PACK_PROFILE=release
|
||||||
|
export CARGO_PROFILE_RELEASE_OPT_LEVEL=3
|
||||||
# Sauvegarde des configurations
|
|
||||||
tar czf config-backup.tar.gz sdk_relay/.conf* external_nodes.conf
|
|
||||||
|
|
||||||
# Restauration
|
|
||||||
docker cp ./backup/bitcoin-backup.tar.gz bitcoin-signet:/tmp/
|
|
||||||
docker exec bitcoin-signet tar xzf /tmp/bitcoin-backup.tar.gz -C /
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## 🌐 Gestion des Nœuds Externes
|
## 📊 Optimisations de Performance
|
||||||
|
|
||||||
### 1. Ajout de Nœuds Externes
|
### 1. Optimisations Rust
|
||||||
|
|
||||||
```bash
|
```rust
|
||||||
# Ajouter un nœud externe
|
// Utilisation de types optimisés
|
||||||
./add_external_node.sh add external-relay-1 external-relay-1.example.com:8090
|
use std::collections::HashMap;
|
||||||
|
|
||||||
# Lister les nœuds configurés
|
// Pool de connexions
|
||||||
./add_external_node.sh list
|
use tokio::sync::Semaphore;
|
||||||
|
|
||||||
# Tester la connectivité
|
// Cache en mémoire
|
||||||
./add_external_node.sh test external-relay-1
|
use lru::LruCache;
|
||||||
|
|
||||||
# Supprimer un nœud
|
|
||||||
./add_external_node.sh remove external-relay-1
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### 2. Configuration Multi-Sites
|
### 2. Optimisations WASM
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Site principal
|
# Build optimisé
|
||||||
./add_external_node.sh add site-paris-1 paris-relay-1.4nk.net:8090
|
wasm-pack build --target web --release
|
||||||
./add_external_node.sh add site-paris-2 paris-relay-2.4nk.net:8090
|
|
||||||
|
|
||||||
# Site secondaire
|
# Optimisation de la taille
|
||||||
./add_external_node.sh add site-lyon-1 lyon-relay-1.4nk.net:8090
|
wasm-opt -O4 pkg/sdk_client_bg.wasm -o pkg/sdk_client_bg_opt.wasm
|
||||||
./add_external_node.sh add site-lyon-2 lyon-relay-2.4nk.net:8090
|
|
||||||
|
|
||||||
# Site de backup
|
# Compression gzip
|
||||||
./add_external_node.sh add backup-1 backup-relay-1.4nk.net:8090
|
gzip -9 pkg/sdk_client_bg_opt.wasm
|
||||||
```
|
```
|
||||||
|
|
||||||
### 3. Test d'Intégration
|
### 3. Optimisations JavaScript
|
||||||
|
|
||||||
```bash
|
```javascript
|
||||||
# Test d'intégration complet
|
// Chargement lazy du WASM
|
||||||
./test_integration_dev3.sh
|
const loadWASM = async () => {
|
||||||
|
if (!wasmModule) {
|
||||||
|
wasmModule = await import('./pkg/sdk_client.js');
|
||||||
|
await wasmModule.default();
|
||||||
|
}
|
||||||
|
return wasmModule;
|
||||||
|
};
|
||||||
|
|
||||||
# Test de connectivité dev3
|
// Cache des résultats
|
||||||
python3 test_dev3_simple.py
|
const cache = new Map();
|
||||||
|
const getCachedResult = (key, computeFn) => {
|
||||||
# Test de connectivité avancé
|
if (!cache.has(key)) {
|
||||||
python3 test_dev3_connectivity.py
|
cache.set(key, computeFn());
|
||||||
```
|
}
|
||||||
|
return cache.get(key);
|
||||||
## 📊 Monitoring et Alertes
|
};
|
||||||
|
|
||||||
### 1. Monitoring de Base
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Surveillance de la synchronisation
|
|
||||||
./monitor_sync.sh
|
|
||||||
|
|
||||||
# Monitoring en continu
|
|
||||||
while true; do
|
|
||||||
echo "=== $(date) ==="
|
|
||||||
docker stats --no-stream | grep -E "(sdk_relay|bitcoin)"
|
|
||||||
echo "WebSocket connections:"
|
|
||||||
netstat -an | grep :8090 | wc -l
|
|
||||||
sleep 30
|
|
||||||
done
|
|
||||||
```
|
|
||||||
|
|
||||||
### 2. Monitoring Avancé
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Script de monitoring complet
|
|
||||||
cat > monitor_advanced.sh << 'EOF'
|
|
||||||
#!/bin/bash
|
|
||||||
while true; do
|
|
||||||
clear
|
|
||||||
echo "=== 4NK Node Monitoring ==="
|
|
||||||
echo "Date: $(date)"
|
|
||||||
echo ""
|
|
||||||
|
|
||||||
echo "Services:"
|
|
||||||
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
|
|
||||||
echo ""
|
|
||||||
|
|
||||||
echo "Ressources:"
|
|
||||||
docker stats --no-stream | grep -E "(sdk_relay|bitcoin|blindbit)"
|
|
||||||
echo ""
|
|
||||||
|
|
||||||
echo "Connexions WebSocket:"
|
|
||||||
netstat -an | grep :8090 | wc -l
|
|
||||||
echo ""
|
|
||||||
|
|
||||||
echo "Espace disque:"
|
|
||||||
df -h | grep -E "(bitcoin|blindbit)"
|
|
||||||
echo ""
|
|
||||||
|
|
||||||
sleep 60
|
|
||||||
done
|
|
||||||
EOF
|
|
||||||
|
|
||||||
chmod +x monitor_advanced.sh
|
|
||||||
./monitor_advanced.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
### 3. Alertes Automatiques
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Script d'alerte simple
|
|
||||||
cat > alert_monitor.sh << 'EOF'
|
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Vérifier Bitcoin Core
|
|
||||||
if ! docker ps | grep -q "bitcoin-signet.*Up"; then
|
|
||||||
echo "ALERTE: Bitcoin Core n'est pas en cours d'exécution!"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Vérifier les relais
|
|
||||||
for i in {1..3}; do
|
|
||||||
if ! docker ps | grep -q "sdk_relay_$i.*Up"; then
|
|
||||||
echo "ALERTE: Relay $i n'est pas en cours d'exécution!"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
# Vérifier l'espace disque
|
|
||||||
if [ $(df / | awk 'NR==2 {print $5}' | sed 's/%//') -gt 90 ]; then
|
|
||||||
echo "ALERTE: Espace disque faible!"
|
|
||||||
fi
|
|
||||||
EOF
|
|
||||||
|
|
||||||
chmod +x alert_monitor.sh
|
|
||||||
|
|
||||||
# Ajouter au cron pour surveillance automatique
|
|
||||||
echo "*/5 * * * * /path/to/alert_monitor.sh" | crontab -
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## 🔒 Sécurité
|
## 🔒 Sécurité
|
||||||
|
|
||||||
### 1. Vérification de Sécurité
|
### 1. Validation des Entrées
|
||||||
|
|
||||||
```bash
|
```rust
|
||||||
# Vérifier les ports exposés
|
// Validation des adresses
|
||||||
netstat -tuln | grep -E "(8090|8092|8094)"
|
pub fn validate_address(address: &str) -> Result<(), Error> {
|
||||||
|
if address.len() != 62 || !address.starts_with("sp1") {
|
||||||
# Vérifier les permissions
|
return Err(Error::InvalidAddress);
|
||||||
ls -la sdk_relay/.conf*
|
}
|
||||||
ls -la bitcoin/bitcoin.conf
|
Ok(())
|
||||||
ls -la blindbit/blindbit.toml
|
|
||||||
|
|
||||||
# Vérifier les logs de sécurité
|
|
||||||
docker logs sdk_relay_1 | grep -E "(ERROR|WARN|SECURITY)" | tail -20
|
|
||||||
```
|
|
||||||
|
|
||||||
### 2. Configuration de Pare-feu
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Autoriser seulement les ports nécessaires
|
|
||||||
sudo ufw allow 18443/tcp # Bitcoin Core RPC
|
|
||||||
sudo ufw allow 8090/tcp # sdk_relay WebSocket
|
|
||||||
sudo ufw allow 8000/tcp # Blindbit API
|
|
||||||
sudo ufw enable
|
|
||||||
|
|
||||||
# Vérifier les règles
|
|
||||||
sudo ufw status numbered
|
|
||||||
```
|
|
||||||
|
|
||||||
### 3. Rotation des Logs
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Configuration de rotation des logs
|
|
||||||
cat > /etc/logrotate.d/4nk-node << EOF
|
|
||||||
/var/lib/docker/containers/*/*.log {
|
|
||||||
daily
|
|
||||||
rotate 7
|
|
||||||
compress
|
|
||||||
delaycompress
|
|
||||||
missingok
|
|
||||||
notifempty
|
|
||||||
copytruncate
|
|
||||||
}
|
}
|
||||||
EOF
|
|
||||||
|
// Validation des montants
|
||||||
|
pub fn validate_amount(amount: u64) -> Result<(), Error> {
|
||||||
|
if amount == 0 || amount > MAX_AMOUNT {
|
||||||
|
return Err(Error::InvalidAmount);
|
||||||
|
}
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Gestion de la Mémoire
|
||||||
|
|
||||||
|
```rust
|
||||||
|
// Nettoyage sécurisé
|
||||||
|
impl Drop for Wallet {
|
||||||
|
fn drop(&mut self) {
|
||||||
|
// Nettoyer les données sensibles
|
||||||
|
self.private_key.zeroize();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Utilisation de types sécurisés
|
||||||
|
use zeroize::Zeroize;
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. Protection contre les Attaques
|
||||||
|
|
||||||
|
```rust
|
||||||
|
// Protection contre les attaques par timing
|
||||||
|
use subtle::ConstantTimeEq;
|
||||||
|
|
||||||
|
// Protection contre les attaques par débordement
|
||||||
|
use checked_add::CheckedAdd;
|
||||||
```
|
```
|
||||||
|
|
||||||
## 🚨 Dépannage
|
## 🚨 Dépannage
|
||||||
|
|
||||||
### 1. Problèmes Courants
|
### 1. Problèmes de Compilation
|
||||||
|
|
||||||
#### Service Ne Démarre Pas
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Vérifier les logs
|
# Nettoyer et recompiler
|
||||||
docker logs <service_name>
|
cargo clean
|
||||||
|
cargo build
|
||||||
|
|
||||||
# Vérifier la configuration
|
# Vérifier les dépendances
|
||||||
docker exec <service_name> cat /path/to/config
|
cargo update
|
||||||
|
cargo check
|
||||||
|
|
||||||
# Redémarrer le service
|
# Vérifier les features
|
||||||
docker restart <service_name>
|
cargo build --features wasm
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Problèmes de Connectivité
|
### 2. Problèmes WASM
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Tester la connectivité réseau
|
# Nettoyer WASM
|
||||||
docker exec <service_name> ping <target>
|
rm -rf pkg/
|
||||||
|
wasm-pack build --target web
|
||||||
|
|
||||||
# Vérifier la résolution DNS
|
# Vérifier la compatibilité
|
||||||
docker exec <service_name> nslookup <target>
|
wasm-pack test --headless --firefox
|
||||||
|
|
||||||
# Tester les ports
|
# Debug WASM
|
||||||
docker exec <service_name> nc -z <target> <port>
|
RUST_LOG=debug wasm-pack build --target web
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Problèmes de Synchronisation
|
### 3. Problèmes de Performance
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Vérifier les logs de synchronisation
|
# Profiling Rust
|
||||||
docker logs sdk_relay_1 | grep -E "(Sync|Relay|Mesh)"
|
cargo build --release
|
||||||
|
perf record ./target/release/sdk_client
|
||||||
|
perf report
|
||||||
|
|
||||||
# Forcer la synchronisation
|
# Profiling WASM
|
||||||
docker restart sdk_relay_1 sdk_relay_2 sdk_relay_3
|
wasm-pack build --target web --profiling
|
||||||
|
|
||||||
# Vérifier la connectivité entre relais
|
|
||||||
./test_sync_logs.sh force
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### 2. Logs de Debug
|
### 4. Logs et Debugging
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Logs détaillés
|
# Logs détaillés
|
||||||
docker-compose logs -f --tail=100
|
RUST_LOG=debug cargo test
|
||||||
|
|
||||||
# Logs d'un service spécifique
|
# Logs spécifiques
|
||||||
docker logs <service_name> -f
|
RUST_LOG=sdk_client::wallet=debug cargo test
|
||||||
|
|
||||||
# Logs avec timestamps
|
# Backtrace
|
||||||
docker-compose logs -t
|
RUST_BACKTRACE=1 cargo test
|
||||||
|
|
||||||
# Logs depuis une date
|
|
||||||
docker-compose logs --since="2024-01-01T00:00:00"
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### 3. Outils de Debug
|
## 📈 Monitoring
|
||||||
|
|
||||||
```bash
|
### 1. Métriques de Performance
|
||||||
# Debug du container sdk_relay
|
|
||||||
./sdk_relay/debug_container.sh
|
|
||||||
|
|
||||||
# Test du healthcheck
|
```rust
|
||||||
./sdk_relay/test_healthcheck.sh
|
// Métriques de compilation
|
||||||
|
use std::time::Instant;
|
||||||
|
|
||||||
# Test de connectivité
|
let start = Instant::now();
|
||||||
./sdk_relay/test_connectivity.sh
|
let wallet = generate_sp_wallet();
|
||||||
|
let duration = start.elapsed();
|
||||||
# Test simple
|
println!("Génération wallet: {:?}", duration);
|
||||||
./sdk_relay/test_simple.sh
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## 📈 Performance
|
### 2. Métriques d'Utilisation
|
||||||
|
|
||||||
### 1. Optimisation
|
```rust
|
||||||
|
// Compteurs d'utilisation
|
||||||
|
static mut WALLET_COUNT: AtomicU64 = AtomicU64::new(0);
|
||||||
|
|
||||||
```bash
|
unsafe {
|
||||||
# Limiter l'utilisation CPU
|
WALLET_COUNT.fetch_add(1, Ordering::Relaxed);
|
||||||
docker-compose up -d --scale bitcoin=1
|
}
|
||||||
|
|
||||||
# Optimiser la mémoire
|
|
||||||
docker stats --no-stream | grep sdk_relay
|
|
||||||
|
|
||||||
# Nettoyer l'espace disque
|
|
||||||
docker system prune -f
|
|
||||||
```
|
```
|
||||||
|
|
||||||
### 2. Monitoring de Performance
|
### 3. Monitoring en Production
|
||||||
|
|
||||||
```bash
|
```javascript
|
||||||
# Surveillance des ressources
|
// Métriques JavaScript
|
||||||
docker stats
|
const metrics = {
|
||||||
|
walletGenerationTime: 0,
|
||||||
|
utxoLockTime: 0,
|
||||||
|
scanTime: 0,
|
||||||
|
errorCount: 0
|
||||||
|
};
|
||||||
|
|
||||||
# Surveillance des connexions
|
// Envoi des métriques
|
||||||
netstat -an | grep :8090 | wc -l
|
fetch('/metrics', {
|
||||||
|
method: 'POST',
|
||||||
# Surveillance de l'espace disque
|
body: JSON.stringify(metrics)
|
||||||
df -h
|
});
|
||||||
```
|
```
|
||||||
|
|
||||||
### 3. Tests de Charge
|
## 🔄 Mise à Jour
|
||||||
|
|
||||||
|
### 1. Mise à Jour des Dépendances
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Test de charge simple
|
# Mettre à jour les dépendances
|
||||||
for i in {1..50}; do
|
cargo update
|
||||||
python3 test_websocket_messages.py &
|
|
||||||
sleep 0.1
|
|
||||||
done
|
|
||||||
wait
|
|
||||||
|
|
||||||
# Test de charge avancé
|
# Vérifier les vulnérabilités
|
||||||
python3 test_websocket_messages.py --load-test --duration=300
|
cargo audit
|
||||||
|
|
||||||
|
# Mettre à jour wasm-pack
|
||||||
|
cargo install wasm-pack --force
|
||||||
```
|
```
|
||||||
|
|
||||||
## 🔄 Maintenance
|
### 2. Mise à Jour du Code
|
||||||
|
|
||||||
### 1. Sauvegarde Régulière
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Script de sauvegarde automatique
|
# Pull des dernières modifications
|
||||||
cat > backup_4nk.sh << 'EOF'
|
|
||||||
#!/bin/bash
|
|
||||||
DATE=$(date +%Y%m%d_%H%M%S)
|
|
||||||
BACKUP_DIR="/backup/4nk_node_$DATE"
|
|
||||||
|
|
||||||
mkdir -p $BACKUP_DIR
|
|
||||||
|
|
||||||
# Sauvegarder les configurations
|
|
||||||
cp -r sdk_relay/.conf* $BACKUP_DIR/
|
|
||||||
cp external_nodes.conf $BACKUP_DIR/
|
|
||||||
|
|
||||||
# Sauvegarder les données Bitcoin
|
|
||||||
docker exec bitcoin-signet tar czf /tmp/bitcoin-backup.tar.gz /home/bitcoin/.bitcoin
|
|
||||||
docker cp bitcoin-signet:/tmp/bitcoin-backup.tar.gz $BACKUP_DIR/
|
|
||||||
|
|
||||||
echo "Sauvegarde terminée: $BACKUP_DIR"
|
|
||||||
EOF
|
|
||||||
|
|
||||||
chmod +x backup_4nk.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
### 2. Mise à Jour
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Mise à jour de l'infrastructure
|
|
||||||
git pull origin main
|
git pull origin main
|
||||||
./restart_4nk_node.sh
|
|
||||||
|
|
||||||
# Mise à jour des images
|
# Recompiler
|
||||||
docker-compose build --no-cache
|
cargo build --release
|
||||||
docker-compose up -d
|
wasm-pack build --target web --release
|
||||||
|
|
||||||
|
# Tester
|
||||||
|
cargo test --all
|
||||||
```
|
```
|
||||||
|
|
||||||
### 3. Nettoyage
|
### 3. Migration des Données
|
||||||
|
|
||||||
```bash
|
```rust
|
||||||
# Nettoyer les conteneurs arrêtés
|
// Migration des wallets
|
||||||
docker container prune -f
|
pub fn migrate_wallet_v1_to_v2(wallet_v1: WalletV1) -> WalletV2 {
|
||||||
|
WalletV2 {
|
||||||
# Nettoyer les images non utilisées
|
address: wallet_v1.address,
|
||||||
docker image prune -f
|
public_key: wallet_v1.public_key,
|
||||||
|
// Nouveaux champs
|
||||||
# Nettoyer les volumes non utilisés
|
version: 2,
|
||||||
docker volume prune -f
|
created_at: SystemTime::now(),
|
||||||
|
}
|
||||||
# Nettoyer tout
|
}
|
||||||
docker system prune -a -f
|
|
||||||
```
|
|
||||||
|
|
||||||
## 📝 Checklist Quotidienne
|
|
||||||
|
|
||||||
- [ ] Services démarrés et fonctionnels
|
|
||||||
- [ ] Bitcoin Core synchronisé
|
|
||||||
- [ ] Relais connectés et synchronisés
|
|
||||||
- [ ] Tests de connectivité passés
|
|
||||||
- [ ] Logs vérifiés (pas d'erreurs critiques)
|
|
||||||
- [ ] Ressources système OK
|
|
||||||
- [ ] Sauvegarde effectuée (si nécessaire)
|
|
||||||
- [ ] Monitoring actif
|
|
||||||
|
|
||||||
## 🎯 Commandes Rapides
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# Démarrage rapide
|
|
||||||
./restart_4nk_node.sh
|
|
||||||
|
|
||||||
# Statut des services
|
|
||||||
docker ps
|
|
||||||
|
|
||||||
# Logs en temps réel
|
|
||||||
docker-compose logs -f
|
|
||||||
|
|
||||||
# Test de connectivité
|
|
||||||
./test_final_sync.sh
|
|
||||||
|
|
||||||
# Surveillance
|
|
||||||
./monitor_sync.sh
|
|
||||||
|
|
||||||
# Arrêt propre
|
|
||||||
docker-compose down
|
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
**✨ Infrastructure 4NK Node - Utilisation optimale !**
|
**🎯 SDK client - Prêt pour une utilisation en production !** ✨
|
||||||
|
Loading…
x
Reference in New Issue
Block a user