sdk_client/README.md

242 lines
6.0 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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.