메인 콘텐츠로 건너뛰기

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