Inicio Rápido
Pon en marcha un nodo Savitri local y envía tu primera transacción en menos de 5 minutos.
1. Generar Claves
# Generar un par de claves para el nodo
cargo run -p savitri-sdk --bin key_generator
Esto genera un par de claves ed25519:
- Clave privada: 64 caracteres hexadecimales (32 bytes) -- mantenla en secreto
- Clave pública: 64 caracteres hexadecimales (32 bytes) -- esta es tu dirección
2. Iniciar un Lightnode
cargo run -p savitri-lightnode --bin lightnode -- \
--listen-port 4001 \
--tx-interval-secs 2 \
--block-interval-secs 10 \
--max-block-txs 32
El lightnode comienza a escuchar en el puerto 4001 (P2P) y 8545 (RPC).
3. Verificar el Estado del Nodo
curl -X POST http://localhost:8545/rpc \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "savitri_health",
"params": [],
"id": 1
}'
Respuesta:
{
"jsonrpc": "2.0",
"result": {
"status": "ok",
"service": "savitri-rpc",
"mode": "lightnode"
},
"id": 1
}
4. Obtener la Altura del Bloque
curl -X POST http://localhost:8545/rpc \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "savitri_blockNumber",
"params": [],
"id": 2
}'
5. Consultar el Saldo de una Cuenta
curl -X POST http://localhost:8545/rpc \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "savitri_getAccount",
"params": ["YOUR_ADDRESS_HEX_64_CHARS"],
"id": 3
}'
6. Reclamar Tokens de Testnet (Faucet)
En testnet, reclama tokens SAVT gratuitos:
curl -X POST http://localhost:8545/rpc \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "savitri_faucetClaim",
"params": ["YOUR_ADDRESS_HEX_64_CHARS"],
"id": 4
}'
Respuesta:
{
"jsonrpc": "2.0",
"result": {
"result": {
"tx_hash": "0x...",
"amount": "5000000000000000000"
}
},
"id": 4
}
El faucet entrega 5 SAVT por reclamo con un período de espera de 24 horas.
7. Usar el SDK (Rust)
Agrega a tu Cargo.toml:
[dependencies]
savitri-sdk = { path = "../savitri-sdk" }
tokio = { version = "1", features = ["full"] }
use savitri_sdk::{RpcClient, Wallet, TransactionBuilder};
#[tokio::main]
async fn main() -> anyhow::Result<()> {
let client = RpcClient::from_url("http://localhost:8545")?;
// Verificación de estado
let health = client.health().await?;
println!("Node mode: {}", health.mode);
// Altura del bloque
let height = client.get_block_number().await?;
println!("Block height: {}", height);
// Crear billetera y consultar saldo
let wallet = Wallet::new();
let account = client.get_account(wallet.address()).await?;
println!("Address: {}", wallet.address());
println!("Balance: {}", account.balance);
Ok(())
}
Siguientes Pasos
- Referencia del SDK -- Documentación completa del SDK
- Referencia de la API RPC -- Todos los métodos JSON-RPC
- Enviar una Transacción -- Construir, firmar y enviar transacciones