Aller au contenu principal

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

ModuleDescription
Client RPCClient JSON-RPC 2.0 complet
PortefeuilleGénération de clés, signature, consultation du solde
TransactionsConstruire, signer et soumettre des transactions
ContratsAppels de contrats, oracle, gouvernance
Client LégerAPI 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: true pour 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