Saltar al contenido principal

SDK de Savitri

savitri-sdk es la biblioteca cliente oficial en Rust para interactuar con Savitri Network. Proporciona:

  • RpcClient -- Cliente JSON-RPC 2.0 para todas las APIs del nodo
  • LightClient -- Envoltorio simplificado para operaciones comunes
  • Wallet -- Gestión de claves Ed25519 y firma de transacciones
  • ContractClient -- Helpers de alto nivel para contratos, oráculos y gobernanza
  • TransactionBuilder -- Constructor fluido para construir transacciones

Instalación

Agrega a tu Cargo.toml:

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

Para soporte de cliente HTTP:

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

Inicio Rápido

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

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

// Verificación de estado
let health = client.health().await?;
println!("Node: {} ({})", health.service, health.mode);

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

// Crear una billetera
let wallet = Wallet::new();
println!("Address: {}", wallet.address());

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

Ok(())
}

Módulos

MóduloDescripción
Cliente RPCCliente JSON-RPC 2.0 completo
WalletGeneración de claves, firma, consultas de saldo
TransaccionesConstruir, firmar y enviar transacciones
ContratosLlamadas a contratos, oráculo, gobernanza
Cliente LigeroAPI simplificada para consumidores ligeros

Seguridad

  • Aplicación de HTTPS: Los endpoints remotos (que no son localhost) requieren HTTPS de forma predeterminada. Establece allow_insecure: true para omitirlo (no recomendado).
  • TLS 1.2 mínimo: Las conexiones HTTPS aplican TLS 1.2+.
  • Puesta a cero de claves: Las claves privadas se ponen a cero en Wallet::drop() para evitar filtraciones de memoria.
  • Tiempo de espera: Tiempo de espera de solicitud predeterminado de 30 segundos.

Herramientas CLI

El SDK incluye tres herramientas binarias:

# Generar pares de claves ed25519
cargo run -p savitri-sdk --bin key_generator

# Firmar transacciones sin conexión
cargo run -p savitri-sdk --bin transaction_signer

# Monitorear el estado del nodo
cargo run -p savitri-sdk --bin network_monitor