Obtener Datos mediante el SDK
Puedes usar el cliente Aptos para obtener datos on-chain usando una variedad de metodos auxiliares. Los ejemplos a continuacion asumen que ya has creado una instancia del cliente Aptos:
use aptos_sdk::{Aptos, AptosConfig};
let aptos = Aptos::new(AptosConfig::testnet())?;Saldos de Cuentas
Sección titulada «Saldos de Cuentas»Obtiene el saldo de APT para cualquier direccion de cuenta. El saldo se devuelve en octas (1 APT = 100,000,000 octas).
let address = "0x1".parse()?;let balance = aptos.get_balance(address).await?;println!("Balance: {} octas", balance);Informacion de Cuentas
Sección titulada «Informacion de Cuentas»Verifica si una cuenta existe on-chain y obtiene su numero de secuencia actual. El numero de secuencia es necesario al construir transacciones manualmente.
let address = "0x1".parse()?;
// Check if an account existslet exists = aptos.account_exists(address).await?;println!("Account exists: {}", exists);
// Get the current sequence numberlet sequence_number = aptos.get_sequence_number(address).await?;println!("Sequence number: {}", sequence_number);Informacion del Ledger
Sección titulada «Informacion del Ledger»Obtiene el estado actual de la blockchain, incluyendo la ultima version del ledger, la altura del bloque y la epoca.
let info = aptos.ledger_info().await?;println!("Ledger version: {}", info.ledger_version);println!("Block height: {}", info.block_height);println!("Epoch: {}", info.epoch);Funciones de Vista (JSON)
Sección titulada «Funciones de Vista (JSON)»Las funciones de vista permiten llamar funciones Move on-chain que estan marcadas como #[view] sin enviar una transaccion. La variante JSON devuelve resultados como serde_json::Value, lo cual es util para consultas rapidas y datos dinamicos.
Sin argumentos de tipo
Sección titulada «Sin argumentos de tipo»Llama a una funcion de vista simple sin argumentos de tipo ni parametros:
let result = aptos .view("0x1::timestamp::now_seconds", vec![], vec![]) .await?;println!("Current timestamp: {:?}", result);Con argumentos de tipo
Sección titulada «Con argumentos de tipo»Para consultar un saldo de moneda especifico, pasa el tipo de moneda como argumento de tipo y la direccion de la cuenta como argumento de funcion:
let result = aptos .view( "0x1::coin::balance", vec!["0x1::aptos_coin::AptosCoin"], vec![serde_json::json!("0x1")], ) .await?;println!("Coin balance: {:?}", result);Funciones de Vista (BCS)
Sección titulada «Funciones de Vista (BCS)»El metodo view_bcs devuelve resultados como bytes codificados en BCS, que puedes deserializar en structs de Rust con tipado fuerte. Esto es mas eficiente y seguro en tipos que la variante JSON.
let timestamp: Vec<u64> = aptos .view_bcs("0x1::timestamp::now_seconds", vec![], vec![]) .await?;println!("Current timestamp: {} seconds", timestamp[0]);Estimacion de Gas
Sección titulada «Estimacion de Gas»Estima el costo de gas de una transaccion antes de enviarla. Esto es util para mostrar estimaciones de tarifas a los usuarios o validar que una transaccion no excedera un presupuesto de gas.
use aptos_sdk::types::InputEntryFunctionData;
let payload = InputEntryFunctionData { function: "0x1::aptos_account::transfer".to_string(), type_arguments: vec![], arguments: vec![ serde_json::json!("0xrecipient_address"), serde_json::json!("1000"), ],};
let gas_estimate = aptos.estimate_gas(&sender, payload.clone()).await?;println!("Estimated gas units: {}", gas_estimate);Cliente REST del Fullnode
Sección titulada «Cliente REST del Fullnode»Para consultas avanzadas no cubiertas por los metodos de alto nivel de Aptos, puedes acceder al cliente REST del fullnode directamente. Esto te da acceso al conjunto completo de endpoints de la API del fullnode.
let address = "0x1".parse()?;
// Retrieve all modules published under an accountlet modules = aptos.fullnode().get_account_modules(address).await?;for module in &modules.data { println!("Module: {}", module.abi.as_ref().unwrap().name);}Consultas al Indexador
Sección titulada «Consultas al Indexador»El SDK incluye un cliente de indexador para consultar datos on-chain agregados y enriquecidos. El indexador proporciona acceso a tipos de datos que no estan disponibles a traves de la API del fullnode por si sola, como el historial de propiedad de tokens, agregaciones de eventos y resumenes de transacciones de cuentas.
let indexer = aptos.indexer();El cliente del indexador proporciona acceso a:
- Datos de tokens — propiedad, metadatos e historial de transferencias para activos digitales.
- Saldos de monedas — saldos actuales e historicos de todos los tipos de monedas.
- Transacciones de cuentas — datos de transacciones enriquecidos con payloads decodificados.
- Datos de eventos — flujos de eventos agregados y filtrables.
- Datos de colecciones — metadatos y estadisticas de colecciones NFT.