Resumen
Un endpoint RPC de Solana es la URL que tu dApp o validador usa para enviar solicitudes JSON-RPC a la red de Solana. Esta página explica los endpoints de mainnet y devnet, cómo configurarlos en tu código y cómo depurar problemas comunes de conexión. Para cargas de trabajo de producción, un endpoint RPC gestionado o dedicado de OnFinality proporciona fiabilidad y escalabilidad.
Guía rápida de decisión: ¿qué endpoint RPC de Solana deberías usar?
Antes de entrar en la configuración, decide qué tipo de endpoint se adapta a tu caso de uso:
- Endpoints RPC públicos (como
https://solana.api.onfinality.io/public) son gratuitos y adecuados para desarrollo, pruebas y aplicaciones de bajo tráfico. Tienen límites de tasa y son compartidos, por lo que no son adecuados para cargas de trabajo de producción. - Endpoints RPC gestionados de un proveedor como OnFinality ofrecen límites de tasa más altos, soporte WebSocket y fiabilidad para dApps de producción. Son un buen punto intermedio para la mayoría de los proyectos.
- Nodos dedicados de Solana te dan un endpoint privado y aislado sin compartir y con control total. Elige esto para aplicaciones de alto rendimiento, validadores o cuando necesites un rendimiento consistente.
Si estás construyendo una aplicación de producción, omite el endpoint público y ve directamente a una solución gestionada o dedicada. Consulta precios de RPC y redes soportadas para ver tus opciones.
¿Qué es un endpoint RPC de Solana?
Un endpoint RPC de Solana es una URL que acepta solicitudes JSON-RPC sobre HTTP o WebSocket. Actúa como puerta de enlace entre tu aplicación y la cadena de bloques de Solana. Cada transacción, consulta de cuenta e invocación de programa pasa por un endpoint RPC.
La API RPC de Solana se basa en JSON-RPC 2.0. Envías una solicitud POST con un método y parámetros, y el endpoint devuelve un resultado o error. Los endpoints WebSocket te permiten suscribirte a cambios de cuenta, registros de programa y confirmaciones de transacción.
Endpoints de mainnet y devnet de Solana
Solana tiene varios clústeres. Los dos más comunes son mainnet-beta (producción) y devnet (desarrollo). Aquí están los endpoints públicos oficiales de OnFinality:
| Clúster | Endpoint HTTP | Endpoint WebSocket |
|---|---|---|
| Mainnet | https://solana.api.onfinality.io/public | wss://solana.api.onfinality.io/public-ws |
| Devnet | Ver Solana Devnet | Ver Solana Devnet |
Nota: Los endpoints públicos tienen límites de tasa y son compartidos. Para producción, usa un endpoint gestionado o dedicado de OnFinality.
Cómo conectarse a un endpoint RPC de Solana
Puedes interactuar con un endpoint RPC de Solana usando curl, bibliotecas de JavaScript como @solana/web3.js, o cualquier cliente HTTP. Aquí tienes un ejemplo básico de curl para obtener el último blockhash:
curl https://solana.api.onfinality.io/public \
-X POST \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"getLatestBlockhash"}'
La respuesta se verá así:
{
"jsonrpc": "2.0",
"result": {
"blockhash": "5xYk...",
"lastValidBlockHeight": 123456
},
"id": 1
}
Usando @solana/web3.js
Para dApps de JavaScript, la biblioteca @solana/web3.js es el estándar. Configura la conexión con tu endpoint:
import { Connection } from '@solana/web3.js';
const connection = new Connection('https://solana.api.onfinality.io/public', 'confirmed');
// Obtener el último blockhash
const { blockhash } = await connection.getLatestBlockhash();
console.log(blockhash);
Para suscripciones WebSocket, usa la URL WebSocket:
import { Connection } from '@solana/web3.js';
const wsEndpoint = 'wss://solana.api.onfinality.io/public-ws';
const connection = new Connection(wsEndpoint, 'confirmed');
// Suscribirse a cambios de cuenta
const subscriptionId = connection.onAccountChange(
somePublicKey,
(accountInfo) => console.log(accountInfo)
);
Métodos RPC comunes de Solana
La API RPC de Solana incluye muchos métodos. Aquí están los más utilizados:
getBalance– obtener el saldo de SOL de una cuenta.getLatestBlockhash– obtener el blockhash actual para firmar transacciones.sendTransaction– enviar una transacción firmada.getTransaction– obtener detalles de una transacción.getAccountInfo– recuperar datos de una cuenta.getProgramAccounts– obtener todas las cuentas propiedad de un programa.getSlot– obtener el slot actual.getBlock– obtener información de un bloque.getSignaturesForAddress– listar firmas de transacciones para una dirección.onAccountChange(WebSocket) – suscribirse a actualizaciones de cuenta.onLogs(WebSocket) – suscribirse a registros de programa.
Para una lista completa, consulta la documentación de Solana.
Depuración de problemas de conexión RPC de Solana
Si tienes problemas para conectarte, aquí hay síntomas comunes y soluciones:
| Síntoma | Causa posible | Solución |
|---|---|---|
429 Too Many Requests | Límite de tasa excedido | Usa un endpoint gestionado o dedicado, o reduce la frecuencia de solicitudes. |
403 Forbidden | IP bloqueada o no autorizada | Verifica tu clave de API o usa un endpoint público. |
| Timeout | Problema de red o endpoint sobrecargado | Reintenta con backoff, o cambia a un proveedor más fiable. |
Invalid params | Solicitud JSON-RPC malformada | Valida la estructura de tu solicitud. |
| Desconexiones WebSocket | Conexión inestable | Implementa lógica de reconexión. |
Blockhash not found | Transacción demasiado antigua | Obtén un nuevo blockhash y vuelve a enviar. |
Prueba rápida con curl
Para verificar que tu endpoint es accesible, ejecuta:
curl https://solana.api.onfinality.io/public -X POST -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","id":1,"method":"getHealth"}'
Un nodo sano devuelve {"result":"ok"}.
Consideraciones de producción para RPC de Solana
Al pasar a producción, considera lo siguiente:
- Límites de tasa: Los endpoints públicos tienen límites estrictos. Los endpoints gestionados ofrecen mayor rendimiento.
- Estabilidad de WebSocket: Para funciones en tiempo real, asegúrate de que tu proveedor soporte WebSocket y maneje reconexiones.
- Latencia geográfica: Elige un endpoint cercano a tus usuarios para reducir la latencia.
- Datos de archivo: Si necesitas estado histórico, puede que necesites un nodo de archivo.
- Failover: Implementa múltiples endpoints y lógica de failover para evitar tiempo de inactividad.
OnFinality proporciona nodos dedicados de Solana y servicios RPC gestionados que abordan estas preocupaciones.
Conclusiones clave
- Un endpoint RPC de Solana es la URL para solicitudes JSON-RPC a la red de Solana.
- Usa endpoints públicos para desarrollo, pero cambia a gestionados o dedicados para producción.
- Configura tu conexión con la URL HTTP o WebSocket correcta.
- Depura problemas comunes verificando límites de tasa, formato de solicitud y estabilidad de red.
- Para producción, evalúa proveedores según límites de tasa, soporte WebSocket y fiabilidad.
Preguntas frecuentes
¿Cuál es la URL del endpoint RPC de Solana?
El endpoint público de mainnet es https://solana.api.onfinality.io/public. Para WebSocket, usa wss://solana.api.onfinality.io/public-ws. Para devnet, consulta Solana Devnet.
¿Cómo obtengo un endpoint RPC de Solana?
Puedes usar un endpoint público de forma gratuita, o registrarte en un servicio RPC gestionado como OnFinality para obtener un endpoint dedicado con límites más altos.
¿Cuál es la diferencia entre endpoints RPC HTTP y WebSocket?
HTTP es para llamadas de solicitud-respuesta, mientras que WebSocket permite suscripciones en tiempo real. Usa WebSocket para funciones como actualizaciones de cuenta en vivo.
¿Puedo usar un endpoint RPC de Solana gratis?
Sí, los endpoints públicos son gratuitos pero con límites de tasa. Para producción, considera un plan de pago.
¿Cómo elijo un proveedor de RPC de Solana?
Evalúa proveedores según límites de tasa, soporte WebSocket, tiempo de actividad y precios. Consulta nuestra comparación de proveedores de RPC de Solana para obtener orientación.