Antes de construir flujos de pago, necesitas conectarte a Solana y comprender cómo consultar datos de la red. Esta guía cubre los conceptos básicos: establecer una conexión y usar los métodos RPC que necesitarás para pagos utilizando el SDK de TypeScript @solana/kit y Solana CLI. Además, cubriremos los conceptos básicos del uso del Solana Explorer para verificar pagos manualmente, inspeccionar cuentas y depurar problemas.
Conexión a Solana
La API RPC de Solana es la forma principal de interactuar programáticamente con la red. Tu URL de RPC es efectivamente una clave API para la red.
No uses RPC público para producción
Los endpoints públicos (api.mainnet-beta.solana.com,
api.devnet.solana.com) tienen límites de tasa, no tienen SLA y no son
adecuados para flujos de pago en producción. Usa un proveedor de
RPC para asegurar un endpoint RPC privado para
despliegues en producción.
Para desarrollo y pruebas, puedes usar endpoints públicos con límites de tasa.
Crea un cliente RPC para interactuar con la red:
import { createSolanaRpc, createSolanaRpcSubscriptions } from "@solana/kit";const rpc = createSolanaRpc("https://api.mainnet-beta.solana.com");const rpcSubscriptions = createSolanaRpcSubscriptions("wss://api.mainnet-beta.solana.com");
Para desarrollo, usa devnet (https://api.devnet.solana.com) o un validator
local como Surfpool.
Métodos RPC comunes
La API JSON-RPC de Solana expone métodos para consultar la red. Aquí están los que usarás más para flujos de pago.
Obtener información de cuenta
Todas las cuentas en Solana son direccionables por su clave pública. Usa el
método RPC getAccountInfo para obtener
información sobre cualquier cuenta. El método getAccountInfo devuelve un
objeto AccountInfo, que contiene la clave pública de la cuenta, saldo de SOL,
datos y algunos otros metadatos.
El campo data es una cadena codificada en base64 de los datos de la cuenta.
Puedes codificarlo a bytes usando el método getBase64Codec del paquete
@solana/kit y luego decodificarlo a un objeto legible usando el códec esperado
(si se conoce) para los datos de la cuenta (por ejemplo, getTokenCodec para
token accounts).
const accountInfo = await rpc.getAccountInfo(address("7EcDhSYGxXyscszYEp35KHN8vvw3svAuLKTzXwCFLtV"), {encoding: "base64"}).send();const dataBytes = getBase64Codec().encode(accountInfo.value.data);const parsedTokenData = getTokenCodec().decode(dataBytes);console.log(parsedTokenData);
Obtener saldos de tokens
Consulta el saldo de un token account usando el método RPC
getTokenAccountBalance:
const balance = await rpc.getTokenAccountBalance(tokenAccountAddress).send();console.log(balance.value.uiAmount); // Human-readable (e.g., 100.50)console.log(balance.value.amount); // Base units (e.g., "100500000")
Construir transacciones
Cada transacción necesita un blockhash reciente para asegurar que sea válida (y
no obsoleta). Obtén uno antes de crear una transacción de pago usando el método
RPC getLatestBlockhash:
const { value: latestBlockhash } = await rpc.getLatestBlockhash().send();
Los blockhashes expiran después de ~60 segundos. Obtén uno nuevo inmediatamente antes de firmar y enviar.
Verificar el estado de la transacción
Verifica que una transacción se haya liquidado usando el método RPC
getSignatureStatuses:
const status = await rpc.getSignatureStatuses([signature]).send();const result = status.value[0];// result.confirmationStatus: "processed" | "confirmed" | "finalized"
Obtener detalles de la transacción
Obtén los detalles completos de una transacción confirmada usando el método RPC
getTransaction:
const transaction = await rpc.getTransaction(signature, { maxSupportedTransactionVersion: 0 }).send();
Historial de transacciones
Obtén las transacciones recientes de una dirección usando el método RPC
getSignaturesForAddress:
const signatures = await rpc.getSignaturesForAddress(walletAddress, { limit: 10 }).send();
Para un monitoreo integral de pagos, consulta Aceptar pagos que cubre webhooks y detección de transacciones en tiempo real.
Explorar datos públicos
El libro mayor público de Solana significa que cada transacción, token account y mint es completamente auditable. Los exploradores de bloques te permiten verificar pagos manualmente, inspeccionar cuentas y depurar problemas sin escribir código.
Lo que puedes consultar:
- Verificar que un pago se liquidó
- Inspeccionar saldos de token accounts
- Depurar transacciones fallidas
- Consultar detalles de mint (suministro, decimales, autoridad)
Exploradores comunes: Solana Explorer, SolanaFM, Solscan, Orb
Enlaces de ejemplo:
- USDC Token Mint — Suministro, mercados, tenedores y transacciones de USDC
- Transferencia de token USDC — Detalles de una transacción de pago en USDC
- USDG Token Account — Saldo de USDG de un usuario e historial de transacciones
Is this page helpful?