Logo
Nuevos usuarios de RPC: 35% de descuento el primer mesVer oferta
RPC Assistant

API de nodo de Solana: cómo conectarse, configurar y depurar llamadas RPC

Resumen

La API de nodo de Solana es una interfaz JSON-RPC que permite a las aplicaciones leer el estado de la red, enviar transacciones y suscribirse a actualizaciones en vivo. Esta guía cubre endpoints de clúster, formatos de solicitud, niveles de compromiso y modos de fallo comunes para que puedas conectarte de manera confiable a mainnet o devnet de Solana.

Guía rápida de decisión: ¿qué endpoint de Solana deberías usar?

Antes de escribir cualquier código, decide qué clúster de Solana y modelo de acceso se adaptan a tu carga de trabajo. La respuesta depende de si estás construyendo una aplicación de producción, ejecutando un pipeline de QA o simplemente prototipando localmente.

Carga de trabajoEndpoint recomendadoPor qué
Desarrollo localhttp://localhost:8899 (solana-test-validator)Iteración rápida, límites de tasa claros, control total
Prototipado en devnetEndpoint público de devnet o RPC de devnet gestionadoSOL gratis del faucet, la infraestructura compartida es suficiente para bajo tráfico
Aplicación de producción en mainnetProveedor de RPC gestionado o nodo dedicadoLos endpoints públicos tienen límites de tasa y no son confiables para producción
Alto rendimiento o métodos pesados (getProgramAccounts)Nodo dedicado o proveedor gestionado con capacidad dedicadaEvita errores 429 y proporciona rendimiento consistente

Si estás comenzando, usa un proveedor de RPC gestionado como la API de Solana de OnFinality para obtener un endpoint estable sin operar tu propio nodo. Para producción, evalúa opciones de nodos dedicados para evitar límites de tasa compartidos.

¿Qué es la API de nodo de Solana?

La API de nodo de Solana es una interfaz JSON-RPC 2.0 que envuelve los internals del validador. Te permite leer el estado de cuentas, enviar transacciones, simular ejecución y suscribirte a actualizaciones en vivo a través de WebSocket. La mayoría de las solicitudes son POST HTTP con un cuerpo JSON, y las respuestas son objetos JSON.

A diferencia de otras cadenas, la API de Solana no es compatible con Ethereum. Usas métodos como getAccountInfo, getBalance, sendTransaction y getLatestBlockhash en lugar de eth_getBalance o eth_sendRawTransaction. Esto significa que tus herramientas y SDKs deben ser conscientes de Solana.

Clústeres de Solana y endpoints públicos

Solana tiene tres clústeres públicos: mainnet, devnet y testnet. Cada uno tiene un endpoint público, pero estos son infraestructura compartida y no están destinados al tráfico de producción. Los documentos oficiales advierten que los endpoints públicos pueden devolver 429 (límite de tasa) o 403 (bloqueado) cuando se usan en exceso.

ClústerEndpoint públicoCaso de uso
Mainnethttps://api.mainnet.solana.comRed de producción con SOL real
Devnethttps://api.devnet.solana.comPruebas de desarrollador, SOL gratis del faucet
Testnethttps://api.testnet.solana.comPruebas de validador

Para producción, debes usar un proveedor de RPC gestionado o ejecutar tu propio nodo. OnFinality proporciona un endpoint público de Solana en https://solana.api.onfinality.io/public y un endpoint WebSocket en wss://solana.api.onfinality.io/public-ws. Estos son adecuados para desarrollo y uso ligero en producción, pero para cargas de trabajo pesadas considera un nodo dedicado.

Haciendo tu primera llamada RPC de Solana

El RPC de Solana usa JSON-RPC 2.0. Aquí tienes un ejemplo básico de curl para obtener el slot actual:

curl https://solana.api.onfinality.io/public \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"getSlot"}'

La respuesta se ve así:

{"jsonrpc":"2.0","result":123456789,"id":1}

La mayoría de los métodos requieren parámetros. Por ejemplo, para obtener el saldo de una cuenta:

curl https://solana.api.onfinality.io/public \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"getBalance","params":["GgPpTKg78vmzgvPmNsDnN7hKs4q5WzJfPmZ3gY7hKJpX"]}'

Reemplaza la dirección con una clave pública real de Solana.

Entendiendo los niveles de compromiso

Los métodos RPC de Solana aceptan un parámetro commitment que controla cuán finalizado debe estar un bloque antes de que el nodo devuelva datos. Esto es crítico para la consistencia en tu aplicación.

CompromisoDescripciónCaso de uso
processedEl bloque procesado más reciente del nodo. Puede revertirse.Monitoreo en tiempo real, pero no seguro para transacciones financieras
confirmedUn bloque votado por una supermayoría de stake.La mayoría de las aplicaciones usan esto como equilibrio entre velocidad y seguridad
finalizedEl bloque está finalizado con bloqueo máximo.Transacciones de alto valor donde la reversibilidad es inaceptable

Por ejemplo, para obtener un saldo con compromiso confirmed:

curl https://solana.api.onfinality.io/public \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"getBalance","params":["GgPpTKg78vmzgvPmNsDnN7hKs4q5WzJfPmZ3gY7hKJpX",{"commitment":"confirmed"}]}'

Usando suscripciones WebSocket

Para actualizaciones en vivo, Solana ofrece suscripciones WebSocket. Puedes suscribirte a cambios de cuentas, actualizaciones de programas, cambios de slot y más. Aquí tienes un ejemplo usando wscat:

wscat -c wss://solana.api.onfinality.io/public-ws

Luego envía una solicitud de suscripción:

{"jsonrpc":"2.0","id":1,"method":"accountSubscribe","params":["GgPpTKg78vmzgvPmNsDnN7hKs4q5WzJfPmZ3gY7hKJpX",{"commitment":"confirmed"}]}

Recibirás un ID de suscripción y luego notificaciones a medida que la cuenta cambie.

Métodos RPC de Solana comunes que usarás

Aquí están los métodos HTTP más utilizados:

CategoríaMétodos
CuentasgetAccountInfo, getBalance, getMultipleAccounts
TransaccionessendTransaction, simulateTransaction, getTransaction, getSignatureStatuses
BloquesgetBlock, getBlocks, getBlockHeight
ProgramagetProgramAccounts
ClústergetSlot, getEpochInfo, getHealth, getVersion
TokensgetTokenAccountBalance, getTokenSupply

Para una lista completa, consulta la referencia de Métodos HTTP RPC de Solana.

Depurando errores comunes de RPC de Solana

Cuando tus llamadas fallan, el mensaje de error generalmente te dice qué corregir. Aquí hay problemas comunes:

ErrorCausa probableSolución
429 Too Many RequestsExcediste el límite de tasa en un endpoint compartidoUsa un proveedor gestionado con límites más altos o un nodo dedicado
403 ForbiddenEl endpoint bloqueó tu IP o patrón de tráficoVerifica tu volumen de solicitudes y considera un endpoint privado
-32602 Invalid paramsParámetros faltantes o mal formadosVerifica la firma del método y el orden de los parámetros
-32005 Node is unhealthyEl nodo está atrasado o sincronizandoEspera y reintenta, o cambia a un endpoint saludable
Transaction simulation failedLa transacción fallaría en la cadenaUsa simulateTransaction para depurar antes de enviar

Para fallos de transacción, siempre simula primero:

curl https://solana.api.onfinality.io/public \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"simulateTransaction","params":["base58-encoded-tx"]}'

Construyendo con JavaScript: usando @solana/web3.js

La forma más común de interactuar con Solana es la librería @solana/web3.js. Aquí tienes un ejemplo mínimo:

import { Connection, PublicKey } from '@solana/web3.js';

const connection = new Connection('https://solana.api.onfinality.io/public', 'confirmed');
const address = new PublicKey('GgPpTKg78vmzgvPmNsDnN7hKs4q5WzJfPmZ3gY7hKJpX');

const balance = await connection.getBalance(address);
console.log('Balance:', balance / 1e9, 'SOL');

Para suscripciones WebSocket en JS, usa connection.onAccountChange:

connection.onAccountChange(address, (accountInfo) => {
  console.log('Account changed:', accountInfo);
});

Cuándo usar un nodo dedicado de Solana

Si tu aplicación depende de métodos pesados como getProgramAccounts (que pueden ser costosos) o necesita baja latencia consistente, un endpoint público compartido puede no ser suficiente. Los nodos dedicados te dan:

  • Límites de tasa claros de otros usuarios
  • Rendimiento consistente para consultas pesadas
  • Control total sobre la configuración del nodo
  • Acceso a datos de archivo si es necesario

OnFinality ofrece nodos dedicados de Solana que puedes desplegar en minutos. También puedes comparar proveedores de RPC de Solana para entender las compensaciones.

Conclusiones clave

  • La API de nodo de Solana es JSON-RPC 2.0 sobre HTTP y WebSocket, con métodos específicos de Solana.
  • Los endpoints públicos son adecuados para desarrollo pero no para tráfico de producción.
  • Los niveles de compromiso (processed, confirmed, finalized) controlan la consistencia de los datos.
  • Usa simulateTransaction para depurar fallos de transacción antes de enviar.
  • Para producción, considera un proveedor de RPC gestionado o un nodo dedicado para evitar límites de tasa y asegurar confiabilidad.

Preguntas frecuentes

¿Cuál es la diferencia entre RPC de Solana y API de nodo de Solana?

Se refieren a lo mismo: la interfaz JSON-RPC que te permite interactuar con un nodo de Solana. Los términos se usan indistintamente.

¿Puedo usar métodos RPC de Ethereum en Solana?

No. Solana usa su propio conjunto de métodos. Necesitas SDKs y herramientas específicos de Solana.

¿Cómo obtengo SOL gratis para devnet?

Usa el faucet de Solana en https://faucet.solana.com para solicitar SOL de devnet.

¿Cuál es la mejor manera de evitar errores 429?

Usa un proveedor de RPC gestionado con límites de tasa más altos o un nodo dedicado. Los endpoints públicos son compartidos y fácilmente limitados.

¿OnFinality soporta WebSocket de Solana?

Sí, OnFinality proporciona un endpoint WebSocket en wss://solana.api.onfinality.io/public-ws para suscripciones.

Para más detalles sobre redes compatibles y precios, consulta redes RPC compatibles y precios de RPC.

Base de conocimiento RPC

Detalles RPC relacionados

Nunca te preocupes por la infraestructura nuevamente

OnFinality elimina la carga pesada de DevOps para que puedas construir de forma más inteligente y rápida.

Comenzar