278 lines
5.4 KiB
Markdown
278 lines
5.4 KiB
Markdown
# sdk_client - Module WASM
|
|
|
|
Module WebAssembly compilé pour l'intégration des Silent Payments dans l'interface utilisateur `ihm_client`.
|
|
|
|
## 📋 Vue d'ensemble
|
|
|
|
Ce package contient le module WASM compilé de `sdk_client`, qui fournit les fonctionnalités de Silent Payments pour l'interface utilisateur.
|
|
|
|
### Fichiers inclus
|
|
|
|
- `sdk_client_bg.wasm` - Module WASM principal (3.3 MB)
|
|
- `sdk_client.d.ts` - Déclarations TypeScript (12.6 KB)
|
|
- `sdk_client.js` - Wrapper JavaScript (182 B)
|
|
- `sdk_client_bg.js` - Code JavaScript généré (38 KB)
|
|
- `package.json` - Métadonnées du package
|
|
- `README.md` - Ce fichier
|
|
|
|
## 🚀 Utilisation
|
|
|
|
### Import dans TypeScript
|
|
|
|
```typescript
|
|
import init, {
|
|
generate_sp_wallet,
|
|
lock_freezed_utxos,
|
|
// ... autres fonctions
|
|
} from 'pkg/sdk_client';
|
|
|
|
// Initialiser le module WASM
|
|
await init();
|
|
|
|
// Utiliser les fonctions
|
|
const wallet = generate_sp_wallet();
|
|
```
|
|
|
|
### Import dans JavaScript
|
|
|
|
```javascript
|
|
import init, { generate_sp_wallet } from 'pkg/sdk_client';
|
|
|
|
// Initialiser le module WASM
|
|
await init();
|
|
|
|
// Utiliser les fonctions
|
|
const wallet = generate_sp_wallet();
|
|
```
|
|
|
|
## 🔧 Configuration
|
|
|
|
### Variables d'environnement
|
|
|
|
```bash
|
|
# Configuration pour le développement
|
|
NODE_ENV=development
|
|
VITE_WASM_PATH=./pkg/sdk_client_bg.wasm
|
|
|
|
# Configuration pour la production
|
|
NODE_ENV=production
|
|
VITE_WASM_PATH=/assets/sdk_client_bg.wasm
|
|
```
|
|
|
|
### Configuration Vite
|
|
|
|
```typescript
|
|
// vite.config.ts
|
|
import { defineConfig } from 'vite';
|
|
import wasm from 'vite-plugin-wasm';
|
|
|
|
export default defineConfig({
|
|
plugins: [
|
|
wasm(),
|
|
// ... autres plugins
|
|
],
|
|
optimizeDeps: {
|
|
exclude: ['pkg/sdk_client']
|
|
}
|
|
});
|
|
```
|
|
|
|
## 📚 API Reference
|
|
|
|
### Fonctions principales
|
|
|
|
#### `generate_sp_wallet()`
|
|
Génère un nouveau wallet Silent Payment.
|
|
|
|
**Retourne :** `Wallet` - Instance du wallet généré
|
|
|
|
#### `lock_freezed_utxos(wallet: Wallet, utxos: UTXO[])`
|
|
Verrouille les UTXOs gelés dans le wallet.
|
|
|
|
**Paramètres :**
|
|
- `wallet` - Instance du wallet
|
|
- `utxos` - Liste des UTXOs à verrouiller
|
|
|
|
**Retourne :** `boolean` - Succès de l'opération
|
|
|
|
### Types TypeScript
|
|
|
|
```typescript
|
|
interface Wallet {
|
|
id: string;
|
|
address: string;
|
|
balance: number;
|
|
// ... autres propriétés
|
|
}
|
|
|
|
interface UTXO {
|
|
txid: string;
|
|
vout: number;
|
|
amount: number;
|
|
// ... autres propriétés
|
|
}
|
|
```
|
|
|
|
## 🧪 Tests
|
|
|
|
### Tests unitaires
|
|
|
|
```bash
|
|
# Tests des fonctions WASM
|
|
npm run test:wasm
|
|
|
|
# Tests avec couverture
|
|
npm run test:wasm:coverage
|
|
```
|
|
|
|
### Tests d'intégration
|
|
|
|
```bash
|
|
# Tests d'intégration avec l'interface
|
|
npm run test:integration
|
|
|
|
# Tests end-to-end
|
|
npm run test:e2e
|
|
```
|
|
|
|
## 🔍 Debugging
|
|
|
|
### Logs de développement
|
|
|
|
```typescript
|
|
// Activer les logs détaillés
|
|
import { set_panic_hook } from 'pkg/sdk_client';
|
|
|
|
set_panic_hook();
|
|
```
|
|
|
|
### Inspection du module
|
|
|
|
```javascript
|
|
// Inspecter les exports disponibles
|
|
import * as sdk_client from 'pkg/sdk_client';
|
|
console.log(Object.keys(sdk_client));
|
|
```
|
|
|
|
## 📦 Build
|
|
|
|
### Compilation WASM
|
|
|
|
```bash
|
|
# Compiler le module WASM
|
|
cd temp-deps/sdk_client
|
|
wasm-pack build --target web --out-dir ../../pkg
|
|
|
|
# Ou utiliser le script automatisé
|
|
./scripts/setup-remote-deps.sh
|
|
```
|
|
|
|
### Optimisation
|
|
|
|
```bash
|
|
# Optimiser la taille du module
|
|
wasm-opt -O4 -o sdk_client_bg.wasm sdk_client_bg.wasm
|
|
|
|
# Compresser le module
|
|
gzip -9 sdk_client_bg.wasm
|
|
```
|
|
|
|
## 🚨 Dépannage
|
|
|
|
### Problèmes courants
|
|
|
|
#### Module non trouvé
|
|
```bash
|
|
# Vérifier que le module est compilé
|
|
ls -la pkg/sdk_client_bg.wasm
|
|
|
|
# Recompiler si nécessaire
|
|
./scripts/setup-remote-deps.sh
|
|
```
|
|
|
|
#### Erreurs de type TypeScript
|
|
```bash
|
|
# Régénérer les types
|
|
cd temp-deps/sdk_client
|
|
wasm-pack build --target web --out-dir ../../pkg
|
|
|
|
# Vérifier la cohérence des types
|
|
npm run type-check
|
|
```
|
|
|
|
#### Problèmes de performance
|
|
```bash
|
|
# Vérifier la taille du module
|
|
ls -lh pkg/sdk_client_bg.wasm
|
|
|
|
# Optimiser si nécessaire
|
|
wasm-opt -O4 -o pkg/sdk_client_bg.wasm pkg/sdk_client_bg.wasm
|
|
```
|
|
|
|
## 📈 Performance
|
|
|
|
### Métriques
|
|
|
|
- **Taille du module** : 3.3 MB (non compressé)
|
|
- **Temps de chargement** : ~500ms (dépendant du réseau)
|
|
- **Temps d'initialisation** : ~100ms
|
|
- **Mémoire utilisée** : ~10MB
|
|
|
|
### Optimisations
|
|
|
|
1. **Compression gzip** : Réduit la taille de ~70%
|
|
2. **Lazy loading** : Chargement à la demande
|
|
3. **Caching** : Mise en cache du module
|
|
4. **Preloading** : Préchargement anticipé
|
|
|
|
## 🔒 Sécurité
|
|
|
|
### Bonnes pratiques
|
|
|
|
- Ne jamais exposer les clés privées
|
|
- Valider toutes les entrées utilisateur
|
|
- Utiliser HTTPS en production
|
|
- Maintenir les dépendances à jour
|
|
|
|
### Audit de sécurité
|
|
|
|
```bash
|
|
# Vérifier les vulnérabilités
|
|
npm audit
|
|
|
|
# Audit des dépendances Rust
|
|
cargo audit
|
|
```
|
|
|
|
## 📚 Documentation
|
|
|
|
### Liens utiles
|
|
|
|
- [Documentation WASM](https://webassembly.org/docs/)
|
|
- [Documentation wasm-pack](https://rustwasm.github.io/docs/wasm-pack/)
|
|
- [Documentation sdk_client](../temp-deps/sdk_client/README.md)
|
|
- [Documentation sdk_common](../temp-deps/sdk_common/README.md)
|
|
|
|
### Exemples
|
|
|
|
- [Exemples d'utilisation](../docs/API.md)
|
|
- [Tests d'intégration](../tests/)
|
|
- [Guide de développement](../CONTRIBUTING.md)
|
|
|
|
## 🤝 Contribution
|
|
|
|
Pour contribuer au module WASM :
|
|
|
|
1. Modifier le code source dans `temp-deps/sdk_client/`
|
|
2. Recompiler avec `./scripts/setup-remote-deps.sh`
|
|
3. Tester les changements
|
|
4. Mettre à jour la documentation
|
|
|
|
## 📄 Licence
|
|
|
|
Ce module est sous licence MIT. Voir le fichier LICENSE pour plus de détails.
|
|
|
|
---
|
|
|
|
**🚀 Module WASM sdk_client - Prêt pour l'intégration !**
|