7.8 KiB
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 :
- Aller sur Gitea > Settings > SSH Keys
- Coller la clé publique
- 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
- Mise à jour régulière : Maintenir Rust et les dépendances à jour
- Audit de sécurité : Exécuter
cargo audit
régulièrement - Tests de sécurité : Inclure des tests de sécurité dans la suite de tests
- Validation des entrées : Valider toutes les entrées utilisateur
- 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
- Guide d'Utilisation - Utiliser la bibliothèque
- Guide de Configuration - Configurer selon vos besoins
- API Reference - Consulter les APIs
2. Développement
- Guide de Développement - Contribuer au développement
- Guide des Tests - Écrire et exécuter des tests
- Architecture - Comprendre l'architecture
3. Intégration avec 4NK_node
- Intégration 4NK_node - Intégrer avec l'infrastructure
- Configuration SSH - Configurer SSH pour l'automatisation
- Push SSH Automatisé - Automatiser les déploiements
📦 Installation réussie ! La bibliothèque sdk_common est maintenant prête à être utilisée. 🚀