Лайт-клиент
LightClient предоставляет упрощённый API для облегчённых потребителей, которым нужны только базовые запросы к цепочке и отправка транзакций.
Настройка
use savitri_sdk::LightClient;
let client = LightClient::new("http://localhost:8545")?;
API
// Connection check
let connected: bool = client.is_connected().await;
// Health
let health = client.health().await?;
println!("{} - {}", health.mode, health.status);
// Block height
let height: u64 = client.get_block_number().await?;
// Block by height
let block = client.get_block(42).await?;
// Account info
let account = client.get_account("address_hex").await?;
println!("Balance: {}, Nonce: {}", account.balance, account.nonce);
// Balance only
let balance: String = client.get_balance("address_hex").await?;
// Submit transaction
let result = client.send_raw_transaction("signed_tx_hex").await?;
println!("TX hash: {}", result.tx_hash);
// PoU status
let pou = client.pou_local().await?;
Когда использовать LightClient вместо RpcClient
| Функция | LightClient | RpcClient |
|---|---|---|
| Проверка состояния/ping | Да | Да |
| Запросы блоков | Высота + по высоте | Все методы блоков |
| Запросы аккаунтов | Баланс + аккаунт | Баланс, nonce, токены |
| Транзакции | Только отправка | Отправка + получение + квитанция |
| PoU | Только локально | Локально, пиры, группы, мастерноды |
| Мемпул | Нет | Размер, статус, ожидающие |
| Токены | Нет | Информация, баланс, переводы |
| Пакетные запросы | Нет | Да |
| Прямой JSON-RPC | Нет | Да (call_raw) |
Используйте LightClient для простых интеграций. Используйте RpcClient напрямую, когда нужна полная поверхность API. Вы можете получить доступ к внутреннему RpcClient через client.rpc() для продвинутых операций.