Cliente Ligero
El LightClient proporciona una API simplificada para consumidores ligeros que solo necesitan consultas básicas de la cadena y envío de transacciones.
Configuración
use savitri_sdk::LightClient;
let client = LightClient::new("http://localhost:8545")?;
API
// Verificación de conexión
let connected: bool = client.is_connected().await;
// Estado
let health = client.health().await?;
println!("{} - {}", health.mode, health.status);
// Altura del bloque
let height: u64 = client.get_block_number().await?;
// Bloque por altura
let block = client.get_block(42).await?;
// Información de cuenta
let account = client.get_account("address_hex").await?;
println!("Balance: {}, Nonce: {}", account.balance, account.nonce);
// Solo el saldo
let balance: String = client.get_balance("address_hex").await?;
// Enviar transacción
let result = client.send_raw_transaction("signed_tx_hex").await?;
println!("TX hash: {}", result.tx_hash);
// Estado PoU
let pou = client.pou_local().await?;
Cuándo Usar LightClient vs RpcClient
| Característica | LightClient | RpcClient |
|---|---|---|
| Estado/ping | Sí | Sí |
| Consultas de bloque | Altura + por altura | Todos los métodos de bloque |
| Consultas de cuenta | Saldo + cuenta | Saldo, nonce, tokens |
| Transacciones | Enviar en bruto | Enviar en bruto + obtener + recibo |
| PoU | Solo local | Local, pares, grupos, masternodes |
| Mempool | No | Tamaño, estado, pendientes |
| Tokens | No | Información, saldo, transferencias |
| Solicitudes en lote | No | Sí |
| JSON-RPC sin formato | No | Sí (call_raw) |
Usa LightClient para integraciones simples. Usa RpcClient directamente cuando necesites toda la superficie de la API. Puedes acceder al RpcClient interno mediante client.rpc() para operaciones avanzadas.