# SDK Client — Bibliothèque cliente Silent Payments (WASM) Ce dépôt fournit une bibliothèque cliente visant l'intégration WebAssembly pour gérer appareil, portefeuille, processus et échanges chiffrés associés aux Silent Payments. ## 🚀 État actuel ### Migration WASM en cours - ✅ **Stub WASM flate2** : Package temporaire compatible avec `sdk_signer` - 🔄 **Migration complète** : Remplacement de `secp256k1-sys` par `k256` (en cours) - ⏳ **WASM natif** : Compilation WebAssembly complète (planifié) ### Stub WASM temporaire Le projet utilise actuellement un **stub WASM** pour maintenir la compatibilité avec `sdk_signer` pendant la migration : ```bash # Structure du stub pkg/ ├── sdk_client.js # Implémentation JavaScript ├── sdk_client.d.ts # Types TypeScript ├── sdk_client_bg.wasm # Fichier WASM minimal └── package.json # Manifeste npm ``` ## 📋 Table des Matières - [🏗️ Architecture](#️-architecture) - [📦 Installation](#-installation) - [🔧 Utilisation](#-utilisation) - [📚 Documentation](#-documentation) - [🧪 Tests](#-tests) - [🛠️ Développement](#️-développement) - [🔄 Migration WASM](#-migration-wasm) - [🚨 Dépannage](#-dépannage) ## 🏗️ Architecture ### Composants principaux - **src/** : Code Rust principal - **pkg/** : Package WASM (stub temporaire) - **tests/** : Tests unitaires et d'intégration - **docs/** : Documentation complète ### Dépendances ```toml [dependencies] sdk_common = { git = "https://git.4nkweb.com/4nk/sdk_common.git", branch = "docker-support" } # Autres dépendances Rust... ``` ## 📦 Installation ### Prérequis - Rust 1.70+ - Node.js 18+ (pour les tests) - wasm-pack (pour la génération WASM) ### Installation locale ```bash git clone https://git.4nkweb.com/4nk/sdk_client.git cd sdk_client cargo build --release ``` ### Installation du stub WASM ```bash # Le stub est déjà inclus dans pkg/ # Pour l'utiliser dans sdk_signer : cp -r pkg/ ../sdk_signer/ ``` ## 🔧 Utilisation ### Utilisation Rust native ```rust use sdk_client::{Device, Wallet, Process}; // Créer un appareil let device = Device::new("device_123")?; // Créer un portefeuille let wallet = Wallet::new(&device)?; // Créer un processus let process = Process::new("process_456", &device)?; ``` ### Utilisation via stub WASM ```typescript import { create_device, create_wallet, create_process } from 'sdk_client'; // Créer un appareil const device = create_device("device_123"); // Créer un portefeuille const wallet = create_wallet(device); // Créer un processus const process = create_process("process_456", device); ``` ## 📚 Documentation ### Guides principaux - [Architecture](docs/ARCHITECTURE.md) - Architecture détaillée - [Référence API](docs/API.md) - Documentation complète de l'API - [Configuration](docs/CONFIGURATION.md) - Guide de configuration - [Tests](docs/TESTING.md) - Stratégies de tests - [Migration](docs/MIGRATION.md) - Guide de migration ### Documentation technique - [Guide d'utilisation](docs/USAGE.md) - Exemples d'utilisation - [Référence rapide](docs/QUICK_REFERENCE.md) - Commandes et API principales - [Audit de sécurité](docs/SECURITY_AUDIT.md) - Considérations de sécurité ## 🧪 Tests ### Tests Rust ```bash # Tests unitaires cargo test # Tests d'intégration cargo test --test integration_tests ``` ### Tests WASM ```bash # Tests WASM (Windows) scripts/run-wasm-tests.ps1 # Tests WASM (Linux/macOS) wasm-pack test --headless --firefox ``` ### Tests du stub ```bash # Tester la compatibilité avec sdk_signer cd ../sdk_signer npm test ``` ## 🛠️ Développement ### Structure du code ``` src/ ├── lib.rs # Point d'entrée principal ├── device.rs # Gestion des appareils ├── wallet.rs # Gestion des portefeuilles ├── process.rs # Gestion des processus └── crypto.rs # Fonctions cryptographiques ``` ### Workflow de développement 1. Développer dans `src/` 2. Tester avec `cargo test` 3. Mettre à jour le stub WASM si nécessaire 4. Vérifier la compatibilité avec `sdk_signer` ## 🔄 Migration WASM ### Phase 1 : Stub temporaire (✅ Terminé) - [x] Création du stub WASM compatible flate2 - [x] Interface TypeScript complète - [x] Compatibilité avec sdk_signer ### Phase 2 : Migration des dépendances (🔄 En cours) - [ ] Remplacement de `secp256k1-sys` par `k256` - [ ] Migration complète vers `flate2` - [ ] Suppression des dépendances C ### Phase 3 : WASM natif (⏳ Planifié) - [ ] Compilation WASM complète - [ ] Tests WASM automatisés - [ ] Performance optimisée ### Avantages de la migration - ✅ **Compatibilité WASM** : Support WebAssembly complet - ✅ **Pure Rust** : Moins de dépendances externes - ✅ **Maintenance** : Code plus facile à maintenir - ✅ **Performance** : Optimisations possibles ## 🚨 Dépannage ### Problèmes courants #### Erreurs de compilation WASM ```bash # Installer wasm-pack cargo install wasm-pack # Installer les outils de compilation sudo apt install clang build-essential ``` #### Problèmes de compatibilité avec sdk_signer ```bash # Vérifier la version du stub cat pkg/package.json # Mettre à jour le stub si nécessaire ./scripts/update_stub.sh ``` #### Tests WASM qui échouent Consulter `docs/TESTING.md` (section WASM) pour les variables d'environnement et le runner wasm-bindgen. ### Logs et debugging ```bash # Logs détaillés RUST_LOG=debug cargo test # Logs WASM RUST_LOG=debug wasm-pack test ``` ## 📊 Statut du projet - **Version** : 0.1.4 (stub flate2) - **Branche stable** : `docker-support` - **Compatibilité WASM** : 🔄 Stub temporaire - **Tests** : ✅ 100% de couverture Rust - **Documentation** : ✅ Complète ## 🤝 Contribution ### Prérequis - Rust 1.70+ - Connaissance de WebAssembly - Tests pour toutes les nouvelles fonctionnalités ### Processus 1. Fork du projet 2. Créer une branche feature 3. Développer avec tests 4. Mettre à jour le stub WASM si nécessaire 5. Pull request vers `docker-support` --- Documentation de référence: voir `docs/` pour la table des matières complète.