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
| Modulo | Descrizione |
|---|---|
| Client RPC | Client JSON-RPC 2.0 completo |
| Wallet | Generazione chiavi, firma, interrogazioni saldo |
| Transazioni | Costruisci, firma e invia transazioni |
| Contratti | Chiamate a contratti, oracle, governance |
| Light Client | API semplificata per utenti leggeri |
Sicurezza
- Imposizione HTTPS: Gli endpoint remoti (non localhost) richiedono HTTPS per impostazione predefinita. Imposta
allow_insecure: trueper 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