diff --git a/docs/INDEX.md b/docs/INDEX.md index bb352f4..0c83a32 100644 --- a/docs/INDEX.md +++ b/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** 🚀 diff --git a/docs/INSTALLATION.md b/docs/INSTALLATION.md index 3b66620..b29879c 100644 --- a/docs/INSTALLATION.md +++ b/docs/INSTALLATION.md @@ -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Ă©.** ✹ diff --git a/docs/USAGE.md b/docs/USAGE.md index 23c3612..8922124 100644 --- a/docs/USAGE.md +++ b/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 + + + + + + +

SDK Client Test

+ + ``` -## 🌐 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 +# Nettoyer et recompiler +cargo clean +cargo build -# VĂ©rifier la configuration -docker exec cat /path/to/config +# VĂ©rifier les dĂ©pendances +cargo update +cargo check -# RedĂ©marrer le service -docker restart +# VĂ©rifier les features +cargo build --features wasm ``` -#### ProblĂšmes de ConnectivitĂ© +### 2. ProblĂšmes WASM ```bash -# Tester la connectivitĂ© rĂ©seau -docker exec ping +# Nettoyer WASM +rm -rf pkg/ +wasm-pack build --target web -# VĂ©rifier la rĂ©solution DNS -docker exec nslookup +# VĂ©rifier la compatibilitĂ© +wasm-pack test --headless --firefox -# Tester les ports -docker exec nc -z +# 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 -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 !** ✹