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
park256
(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 :
# 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
- 📦 Installation
- 🔧 Utilisation
- 📚 Documentation
- 🧪 Tests
- 🛠️ Développement
- 🔄 Migration WASM
- 🚨 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
[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
git clone https://git.4nkweb.com/4nk/sdk_client.git
cd sdk_client
cargo build --release
Installation du stub WASM
# Le stub est déjà inclus dans pkg/
# Pour l'utiliser dans sdk_signer :
cp -r pkg/ ../sdk_signer/
🔧 Utilisation
Utilisation Rust native
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
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 - Architecture détaillée
- Référence API - Documentation complète de l'API
- Configuration - Guide de configuration
- Tests - Stratégies de tests
- Migration - Guide de migration
Documentation technique
- Guide d'utilisation - Exemples d'utilisation
- Référence rapide - Commandes et API principales
- Audit de sécurité - Considérations de sécurité
🧪 Tests
Tests Rust
# Tests unitaires
cargo test
# Tests d'intégration
cargo test --test integration_tests
Tests WASM
# Tests WASM (Windows)
scripts/run-wasm-tests.ps1
# Tests WASM (Linux/macOS)
wasm-pack test --headless --firefox
Tests du stub
# 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
- Développer dans
src/
- Tester avec
cargo test
- Mettre à jour le stub WASM si nécessaire
- Vérifier la compatibilité avec
sdk_signer
🔄 Migration WASM
Phase 1 : Stub temporaire (✅ Terminé)
- Création du stub WASM compatible flate2
- Interface TypeScript complète
- Compatibilité avec sdk_signer
Phase 2 : Migration des dépendances (🔄 En cours)
- Remplacement de
secp256k1-sys
park256
- 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
# 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
# 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
# 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
- Fork du projet
- Créer une branche feature
- Développer avec tests
- Mettre à jour le stub WASM si nécessaire
- Pull request vers
docker-support
Documentation de référence: voir docs/
pour la table des matières complète.
Description
Languages
Rust
56.1%
TypeScript
40%
CSS
2.6%
JavaScript
0.8%
HTML
0.5%