242 lines
6.0 KiB
Markdown
242 lines
6.0 KiB
Markdown
# 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.
|