sdk_common/docs/INSTALLATION.md

7.8 KiB

📦 Guide d'Installation - sdk_common

Guide complet pour installer et configurer la bibliothèque commune sdk_common pour les Silent Payments.

📋 Prérequis

Système

  • OS : Linux (Ubuntu 20.04+, Debian 11+, CentOS 8+), macOS 10.15+, Windows 10+
  • Architecture : x86_64, ARM64 (pour certaines plateformes)
  • RAM : 2 Go minimum, 4 Go recommandés
  • Stockage : 5 Go minimum, 10 Go recommandés
  • Réseau : Connexion Internet stable pour télécharger les dépendances

Logiciels

  • Rust : Version 1.70+ (stable)
  • Cargo : Inclus avec Rust
  • Git : Version 2.25+
  • wasm-pack : Version 0.12+ (pour compilation WASM)
  • Node.js : Version 18+ (pour tests WASM)

🚀 Installation

1. Installation de Rust

Linux/macOS

# Installer Rust via rustup
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

# Recharger l'environnement
source ~/.cargo/env

# Vérifier l'installation
rustc --version
cargo --version

Windows

# Télécharger et installer rustup-init.exe depuis
# https://rustup.rs/
# Puis exécuter dans PowerShell :
rustup-init.exe

2. Installation de wasm-pack

# Installer wasm-pack
cargo install wasm-pack

# Vérifier l'installation
wasm-pack --version

3. Configuration SSH (Recommandé)

# Générer une clé SSH
ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519_sdk_common -C "sdk-common-automation"

# Ajouter à l'agent SSH
ssh-add ~/.ssh/id_ed25519_sdk_common

# Configurer Git pour utiliser la clé
git config --global core.sshCommand "ssh -i ~/.ssh/id_ed25519_sdk_common"

# Afficher la clé publique pour Gitea
cat ~/.ssh/id_ed25519_sdk_common.pub

Ajouter la clé publique à Gitea :

  1. Aller sur Gitea > Settings > SSH Keys
  2. Coller la clé publique
  3. Cliquer sur "Add key"

4. Clonage du Repository

# Cloner avec SSH (recommandé)
git clone git@git.4nkweb.com:4nk/sdk_common.git
cd sdk_common

# Ou cloner avec HTTPS
git clone https://git.4nkweb.com/4nk/sdk_common.git
cd sdk_common

5. Configuration de l'Environnement

# Créer le fichier de configuration
cp .env.example .env

# Éditer les variables d'environnement
nano .env

Variables d'environnement principales :

# Configuration Rust
RUST_LOG=info
RUST_BACKTRACE=1

# Configuration de build
CARGO_PROFILE_RELEASE_OPT_LEVEL=3
CARGO_PROFILE_RELEASE_LTO=true

# Configuration des tests
TEST_TIMEOUT=300
TEST_PARALLEL=true

# Configuration WASM
WASM_PACK_TARGET=web
WASM_PACK_PROFILE=release

6. Installation des Dépendances

# Mettre à jour Rust
rustup update

# Installer les dépendances Rust
cargo build

# Installer les dépendances de développement
cargo install cargo-audit
cargo install cargo-tarpaulin
cargo install cargo-watch

🧪 Tests Post-Installation

1. Tests de Compilation

# Test de compilation en mode debug
cargo build

# Test de compilation en mode release
cargo build --release

# Test de compilation avec toutes les features
cargo build --all-features

2. Tests Unitaires

# Tests unitaires de base
cargo test

# Tests avec output détaillé
cargo test -- --nocapture

# Tests avec couverture
cargo tarpaulin --out Html

3. Tests d'Intégration

# Tests d'intégration
cargo test --test integration

# Tests de performance
cargo test --test performance

# Tests de sécurité
cargo audit

4. Tests WASM

# Compilation WASM
wasm-pack build --target web

# Tests WASM
wasm-pack test --headless --firefox
wasm-pack test --headless --chrome

5. Tests de Linting

# Clippy (linter Rust)
cargo clippy -- -D warnings

# Formatage
cargo fmt -- --check

# Audit de sécurité
cargo audit

🔧 Configuration Avancée

Configuration Cargo

Cargo.toml - Configuration de base :

[package]
name = "sdk_common"
version = "0.1.0"
edition = "2021"
authors = ["4NK Team <team@4nkweb.com>"]
description = "Bibliothèque commune pour les Silent Payments"
license = "MIT"
repository = "https://git.4nkweb.com/4nk/sdk_common"
keywords = ["bitcoin", "silent-payments", "cryptography"]
categories = ["cryptography", "blockchain"]

[dependencies]
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
thiserror = "1.0"
log = "0.4"
env_logger = "0.10"

[dev-dependencies]
tokio = { version = "1.0", features = ["full"] }
criterion = "0.5"

[features]
default = ["std"]
std = []
wasm = ["getrandom/js"]
blindbit-wasm = ["wasm", "js-sys", "web-sys"]

[lib]
name = "sdk_common"
crate-type = ["cdylib", "rlib"]

Configuration de Build

Optimisations de performance :

[profile.release]
opt-level = 3
lto = true
codegen-units = 1
panic = "abort"
strip = true

[profile.dev]
opt-level = 0
debug = true

Configuration des Tests

Configuration des tests dans Cargo.toml :

[[test]]
name = "integration"
path = "tests/integration.rs"
harness = true

[[test]]
name = "performance"
path = "tests/performance.rs"
harness = true

[[bench]]
name = "benchmarks"
harness = false

🚨 Dépannage

Problèmes Courants

Erreur de Compilation Rust

# Mettre à jour Rust
rustup update

# Nettoyer le cache
cargo clean

# Recompiler
cargo build

Erreur WASM

# Mettre à jour wasm-pack
cargo install wasm-pack --force

# Nettoyer le build WASM
rm -rf pkg/

# Recompiler WASM
wasm-pack build --target web

Erreur de Dépendances

# Mettre à jour les dépendances
cargo update

# Vérifier les vulnérabilités
cargo audit

# Nettoyer et recompiler
cargo clean && cargo build

Problèmes de Performance

# Compiler en mode release
cargo build --release

# Activer les optimisations
export RUSTFLAGS="-C target-cpu=native"

# Utiliser LTO
export RUSTFLAGS="-C lto=fat"

Logs et Debug

# Activer les logs détaillés
export RUST_LOG=debug

# Activer le backtrace
export RUST_BACKTRACE=1

# Exécuter avec logs
cargo run --bin sdk_common

🔒 Sécurité

Bonnes Pratiques

  1. Mise à jour régulière : Maintenir Rust et les dépendances à jour
  2. Audit de sécurité : Exécuter cargo audit régulièrement
  3. Tests de sécurité : Inclure des tests de sécurité dans la suite de tests
  4. Validation des entrées : Valider toutes les entrées utilisateur
  5. Gestion des erreurs : Gérer proprement les erreurs sans exposer d'informations sensibles

Configuration de Sécurité

# Activer les vérifications de sécurité
export RUSTFLAGS="-C overflow-checks=on"

# Activer les sanitizers (Linux/macOS)
export RUSTFLAGS="-Z sanitizer=address"

# Tests de sécurité
cargo test --features security-tests

📊 Monitoring

Métriques de Build

# Taille du binaire
ls -lh target/release/libsdk_common.*

# Taille WASM
ls -lh pkg/sdk_common_bg.wasm

# Temps de compilation
time cargo build --release

Métriques de Performance

# Benchmarks
cargo bench

# Profiling
cargo install flamegraph
cargo flamegraph --bin sdk_common

# Couverture de code
cargo tarpaulin --out Html

🎯 Prochaines Étapes

1. Intégration

2. Développement

3. Intégration avec 4NK_node


📦 Installation réussie ! La bibliothèque sdk_common est maintenant prête à être utilisée. 🚀