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 :

# 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

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

Documentation technique

🧪 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

  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é)

  • 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 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

# 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

  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.

Description
No description provided
Readme 2.1 MiB
Languages
Rust 56.1%
TypeScript 40%
CSS 2.6%
JavaScript 0.8%
HTML 0.5%