Passa al contenuto principale

Savitri SDK

savitri-sdk è la libreria client Rust ufficiale per interagire con la Savitri Network. Fornisce:

  • RpcClient -- Client JSON-RPC 2.0 per tutte le API dei nodi
  • LightClient -- Wrapper semplificato per le operazioni comuni
  • Wallet -- Gestione delle chiavi Ed25519 e firma delle transazioni
  • ContractClient -- Helper di alto livello per contratti, oracle e governance
  • TransactionBuilder -- Builder fluente per la costruzione di transazioni

Installazione

Aggiungi al tuo Cargo.toml:

[dependencies]
savitri-sdk = { path = "../savitri-sdk" }
tokio = { version = "1", features = ["full"] }
anyhow = "1"

Per il supporto del client HTTP:

savitri-sdk = { path = "../savitri-sdk", features = ["http-client"] }

Avvio Rapido

use savitri_sdk::{RpcClient, Wallet, TransactionBuilder};

#[tokio::main]
async fn main() -> anyhow::Result<()> {
// Connect to a node
let client = RpcClient::from_url("http://localhost:8545")?;

// Health check
let health = client.health().await?;
println!("Node: {} ({})", health.service, health.mode);

// Block height
let height = client.get_block_number().await?;
println!("Height: {}", height);

// Create a wallet
let wallet = Wallet::new();
println!("Address: {}", wallet.address());

// Check balance
let account = client.get_account(wallet.address()).await?;
println!("Balance: {} (nonce: {})", account.balance, account.nonce);

Ok(())
}

Moduli

ModuloDescrizione
Client RPCClient JSON-RPC 2.0 completo
WalletGenerazione chiavi, firma, interrogazioni saldo
TransazioniCostruisci, firma e invia transazioni
ContrattiChiamate a contratti, oracle, governance
Light ClientAPI semplificata per utenti leggeri

Sicurezza

  • Imposizione HTTPS: Gli endpoint remoti (non localhost) richiedono HTTPS per impostazione predefinita. Imposta allow_insecure: true per ignorarlo (non raccomandato).
  • TLS 1.2 minimo: Le connessioni HTTPS applicano TLS 1.2+.
  • Azzeramento delle chiavi: Le chiavi private vengono azzerate al momento del Wallet::drop() per prevenire fughe di memoria.
  • Timeout: Timeout predefinito di 30 secondi per le richieste.

Strumenti CLI

L'SDK include tre strumenti binari:

# Generate ed25519 keypairs
cargo run -p savitri-sdk --bin key_generator

# Sign transactions offline
cargo run -p savitri-sdk --bin transaction_signer

# Monitor node health
cargo run -p savitri-sdk --bin network_monitor