SDK Savitri
savitri-sdk est la bibliothèque client Rust officielle pour interagir avec le réseau Savitri. Elle fournit :
- RpcClient -- Client JSON-RPC 2.0 pour toutes les API de nœud
- LightClient -- Wrapper simplifié pour les opérations courantes
- Wallet -- Gestion des clés Ed25519 et signature des transactions
- ContractClient -- Assistants de haut niveau pour les contrats, oracles et gouvernance
- TransactionBuilder -- Constructeur fluide pour assembler des transactions
Installation
Ajoutez à votre Cargo.toml :
[dependencies]
savitri-sdk = { path = "../savitri-sdk" }
tokio = { version = "1", features = ["full"] }
anyhow = "1"
Pour le support client HTTP :
savitri-sdk = { path = "../savitri-sdk", features = ["http-client"] }
Démarrage Rapide
use savitri_sdk::{RpcClient, Wallet, TransactionBuilder};
#[tokio::main]
async fn main() -> anyhow::Result<()> {
// Se connecter à un nœud
let client = RpcClient::from_url("http://localhost:8545")?;
// Vérification de l'état
let health = client.health().await?;
println!("Nœud : {} ({})", health.service, health.mode);
// Hauteur de bloc
let height = client.get_block_number().await?;
println!("Hauteur : {}", height);
// Créer un portefeuille
let wallet = Wallet::new();
println!("Adresse : {}", wallet.address());
// Vérifier le solde
let account = client.get_account(wallet.address()).await?;
println!("Solde : {} (nonce : {})", account.balance, account.nonce);
Ok(())
}
Modules
| Module | Description |
|---|---|
| Client RPC | Client JSON-RPC 2.0 complet |
| Portefeuille | Génération de clés, signature, consultation du solde |
| Transactions | Construire, signer et soumettre des transactions |
| Contrats | Appels de contrats, oracle, gouvernance |
| Client Léger | API simplifiée pour les consommateurs légers |
Sécurité
- Application HTTPS : Les points d'accès distants (non-localhost) nécessitent HTTPS par défaut. Définissez
allow_insecure: truepour outrepasser (déconseillé). - TLS 1.2 minimum : Les connexions HTTPS imposent TLS 1.2+.
- Zéroïsation des clés : Les clés privées sont zéroïsées lors du
Wallet::drop()pour éviter les fuites mémoire. - Délai d'expiration : Délai de requête par défaut de 30 secondes.
Outils CLI
Le SDK comprend trois outils binaires :
# Générer des paires de clés ed25519
cargo run -p savitri-sdk --bin key_generator
# Signer des transactions hors ligne
cargo run -p savitri-sdk --bin transaction_signer
# Surveiller l'état du nœud
cargo run -p savitri-sdk --bin network_monitor