426 lines
7.8 KiB
Markdown
426 lines
7.8 KiB
Markdown
# 📦 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
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# Installer wasm-pack
|
|
cargo install wasm-pack
|
|
|
|
# Vérifier l'installation
|
|
wasm-pack --version
|
|
```
|
|
|
|
### 3. Configuration SSH (Recommandé)
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# Créer le fichier de configuration
|
|
cp .env.example .env
|
|
|
|
# Éditer les variables d'environnement
|
|
nano .env
|
|
```
|
|
|
|
**Variables d'environnement principales :**
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# Tests d'intégration
|
|
cargo test --test integration
|
|
|
|
# Tests de performance
|
|
cargo test --test performance
|
|
|
|
# Tests de sécurité
|
|
cargo audit
|
|
```
|
|
|
|
### 4. Tests WASM
|
|
|
|
```bash
|
|
# Compilation WASM
|
|
wasm-pack build --target web
|
|
|
|
# Tests WASM
|
|
wasm-pack test --headless --firefox
|
|
wasm-pack test --headless --chrome
|
|
```
|
|
|
|
### 5. Tests de Linting
|
|
|
|
```bash
|
|
# 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 :**
|
|
|
|
```toml
|
|
[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 :**
|
|
|
|
```toml
|
|
[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` :**
|
|
|
|
```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
|
|
|
|
```bash
|
|
# Mettre à jour Rust
|
|
rustup update
|
|
|
|
# Nettoyer le cache
|
|
cargo clean
|
|
|
|
# Recompiler
|
|
cargo build
|
|
```
|
|
|
|
#### Erreur WASM
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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é
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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](USAGE.md) - Utiliser la bibliothèque
|
|
- [Guide de Configuration](CONFIGURATION.md) - Configurer selon vos besoins
|
|
- [API Reference](API.md) - Consulter les APIs
|
|
|
|
### 2. Développement
|
|
|
|
- [Guide de Développement](DEVELOPMENT.md) - Contribuer au développement
|
|
- [Guide des Tests](TESTING.md) - Écrire et exécuter des tests
|
|
- [Architecture](ARCHITECTURE.md) - Comprendre l'architecture
|
|
|
|
### 3. Intégration avec 4NK_node
|
|
|
|
- [Intégration 4NK_node](INTEGRATION_4NK_NODE.md) - Intégrer avec l'infrastructure
|
|
- [Configuration SSH](SSH_SETUP.md) - Configurer SSH pour l'automatisation
|
|
- [Push SSH Automatisé](AUTO_SSH_PUSH.md) - Automatiser les déploiements
|
|
|
|
---
|
|
|
|
**📦 Installation réussie ! La bibliothèque sdk_common est maintenant prête à être utilisée.** 🚀
|
|
|
|
|