Savitri SDK
savitri-sdk는 Savitri Network와 상호작용하기 위한 공식 Rust 클라이언트 라이브러리입니다. 다음을 제공합니다:
- RpcClient -- 모든 노드 API를 위한 JSON-RPC 2.0 클라이언트
- LightClient -- 일반 작업을 위한 간소화된 래퍼
- Wallet -- Ed25519 키 관리 및 트랜잭션 서명
- ContractClient -- 컨트랙트, 오라클, 거버넌스를 위한 고수준 헬퍼
- TransactionBuilder -- 트랜잭션 구성을 위한 플루언트 빌더
설치
Cargo.toml에 추가:
[dependencies]
savitri-sdk = { path = "../savitri-sdk" }
tokio = { version = "1", features = ["full"] }
anyhow = "1"
HTTP 클라이언트 지원:
savitri-sdk = { path = "../savitri-sdk", features = ["http-client"] }
빠른 시작
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(())
}
모듈
| 모듈 | 설명 |
|---|---|
| RPC 클라이언트 | 완전한 JSON-RPC 2.0 클라이언트 |
| Wallet | 키 생성, 서명, 잔액 조회 |
| 트랜잭션 | 트랜잭션 구성, 서명 및 전송 |
| 컨트랙트 | 컨트랙트 호출, 오라클, 거버넌스 |
| Light Client | 경량 사용자를 위한 간소화된 API |
보안
- HTTPS 강제: 원격 엔드포인트(localhost 제외)는 기본적으로 HTTPS가 필요합니다. 무시하려면
allow_insecure: true를 설정하세요 (권장하지 않음). - 최소 TLS 1.2: HTTPS 연결은 TLS 1.2+를 적용합니다.
- 키 제로화:
Wallet::drop()시 개인 키가 제로화되어 메모리 유출을 방지합니다. - 타임아웃: 요청에 대해 기본 30초 타임아웃.
CLI 도구
SDK에는 세 가지 바이너리 도구가 포함됩니다:
# 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