Resumen
solana.io no es el endpoint RPC de Solana ni el portal para desarrolladores que necesitas. Se accede a la red Solana a través de endpoints JSON-RPC, y la pregunta práctica es a qué endpoint debe apuntar tu aplicación. Este artículo explica la confusión del dominio, muestra las URL reales de RPC y WebSocket de la mainnet de Solana, y te ayuda a decidir entre un endpoint público y una infraestructura de nodo dedicada.
Obtendrás un ejemplo de conexión funcional, una comparación entre acceso público y dedicado, y una ruta de depuración para los fallos más comunes del RPC de Solana, para que puedas pasar de una primera solicitud a una configuración lista para producción.
Qué es solana.io y qué no es
Si escribiste solana.io en un navegador o en un archivo de configuración esperando un endpoint RPC de Solana, te has topado con una colisión de nombres. El dominio solana.io no es el portal oficial para desarrolladores de Solana, ni es un endpoint JSON-RPC al que puedas enviar solicitudes POST. Se accede a la red Solana a través de proveedores de RPC que exponen endpoints HTTP y WebSocket, y la documentación oficial para desarrolladores se encuentra en el sitio de documentación de Solana, no en un dominio .io.
La conclusión práctica: deja de buscar solana.io como endpoint. Lo que realmente necesitas es una URL RPC de Solana mainnet o devnet, el transporte adecuado (HTTP para solicitud/respuesta, WebSocket para suscripciones) y una decisión sobre si un endpoint público compartido es suficiente o si tu carga de trabajo necesita capacidad dedicada.
Este artículo responde directamente a eso, luego recorre la configuración de conexión, una solicitud funcional y los modos de fallo que aparecen cuando un endpoint de Solana no está dimensionado para tu tráfico.
¿A qué endpoint de Solana deberías apuntar?
Antes de copiar cualquier URL, relaciona el endpoint con el entorno y la carga de trabajo. La siguiente tabla es la forma más rápida de decidir.
| Tu situación | Entorno | Transporte | Acceso recomendado |
|---|---|---|---|
| Primer script, aprendiendo JSON-RPC | Devnet | HTTP | Endpoint público de devnet |
| Pruebas de billetera o dApp | Devnet | HTTP + WebSocket | Endpoint público o compartido |
| Lecturas de dApp en producción | Mainnet | HTTP | RPC compartido o dedicado |
| Actualizaciones de cuenta o slot en tiempo real | Mainnet | WebSocket | Endpoint con soporte de WS |
| Alto volumen de solicitudes o indexación | Mainnet | HTTP + WebSocket | Nodo dedicado |
| Trading o bots sensibles a la latencia | Mainnet | HTTP + WebSocket | Nodo dedicado, co-ubicado |
Dos reglas te mantienen fuera de problemas. Primero, nunca dirijas tráfico de producción a un endpoint de devnet, y nunca dirijas pruebas a mainnet. Segundo, si tu aplicación abre suscripciones WebSocket, confirma que el endpoint anuncia soporte de WebSocket antes de lanzar.
OnFinality expone Solana mainnet tanto por HTTP como por WebSocket, por lo que el mismo proveedor puede cubrir llamadas de solicitud/respuesta y flujos basados en suscripciones. Puedes revisar los detalles de la red en la página de la red RPC de Solana, y usar Solana Devnet mientras aún estás construyendo.
Configuración de la cadena Solana de un vistazo
Cuando configuras una billetera, un framework o un cliente personalizado, estos son los valores que importan para Solana mainnet.
| Configuración | Valor |
|---|---|
| Nombre de la cadena | Solana Mainnet |
| Moneda nativa | SOL (9 decimales) |
| RPC HTTP | https://solana.api.onfinality.io/public |
| RPC WebSocket | wss://solana.api.onfinality.io/public-ws |
| Explorador de bloques | https://explorer.solana.com |
Ten en cuenta que Solana no usa un ID de cadena numérico al estilo EVM de la misma manera que las redes Ethereum. Si una herramienta solicita un ID de cadena, consulta la documentación específica de Solana de esa herramienta en lugar de adivinar un número.
Para el trabajo en devnet, mantén tu configuración de devnet y mainnet en variables de entorno separadas para que un error de copiar y pegar no pueda enviar transacciones de prueba a mainnet.
# .env
SOLANA_MAINNET_RPC=https://solana.api.onfinality.io/public
SOLANA_MAINNET_WS=wss://solana.api.onfinality.io/public-ws
SOLANA_DEVNET_RPC=<your-devnet-endpoint>
Una solicitud JSON-RPC de Solana funcional
Solana usa JSON-RPC sobre HTTP. El siguiente ejemplo obtiene el slot actual, que es una forma ligera de confirmar que tu endpoint es accesible y devuelve datos.
curl https://solana.api.onfinality.io/public \
-X POST \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "getSlot",
"params": [{"commitment": "confirmed"}]
}'
Una respuesta saludable se ve como un objeto JSON con un campo result que contiene un número. Si en su lugar obtienes un objeto de error, salta a la sección de depuración a continuación.
La misma llamada en JavaScript con fetch:
const res = await fetch("https://solana.api.onfinality.io/public", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
jsonrpc: "2.0",
id: 1,
method: "getSlot",
params: [{ commitment: "confirmed" }],
}),
});
const data = await res.json();
console.log(data.result);
Una vez que las llamadas básicas funcionan, pasa a los métodos que tu aplicación realmente necesita: getAccountInfo para saldos y datos de cuentas, getTransaction para verificar confirmaciones, sendTransaction para escrituras y getProgramAccounts para consultas con alcance de programa. getProgramAccounts es el método con más probabilidades de exponer un endpoint con recursos insuficientes porque puede devolver conjuntos de resultados grandes.
¿Endpoint público o nodo dedicado?
Esta es la decisión que determina si tu aplicación se mantiene receptiva a medida que crece el uso. Un endpoint público o compartido es suficiente para desarrollo, scripts de bajo volumen y pruebas tempranas. Un nodo dedicado tiene sentido cuando tu tráfico es predecible pero intenso, cuando necesitas acceso constante a suscripciones WebSocket, o cuando ejecutas indexadores y bots que emiten muchas llamadas concurrentes.
Señales de que has superado un endpoint compartido:
- Ves respuestas
429intermitentes durante horas pico. - Las suscripciones WebSocket se caen y reconectan con frecuencia.
getProgramAccountso lotes grandes degetTransactionagotan el tiempo de espera.- Tu latencia p95 varía ampliamente a lo largo del día.
- Necesitas capacidad predecible para un lanzamiento o una ventana de trading.
Si se aplican dos o más de estas, evalúa capacidad dedicada. OnFinality ofrece nodos dedicados para equipos que necesitan recursos aislados, y puedes comparar niveles de acceso en la página de precios de RPC. Para un marco más amplio que cubre acceso a archivo, métodos de trace y failover, consulta cómo elegir un proveedor de RPC.
Ruta de depuración para fallos comunes del RPC de Solana
Cuando una llamada falla, el error generalmente apunta a una de unas pocas causas. Revisa esta tabla antes de cambiar de proveedor.
| Síntoma | Causa probable | Siguiente paso |
|---|---|---|
429 Too Many Requests | Limitación de tasa en un endpoint compartido | Reduce la concurrencia o pasa a capacidad dedicada |
Method not found | Método no habilitado en ese endpoint | Confirma el soporte del método con el proveedor |
Tiempo de espera en getProgramAccounts | Conjunto de resultados grande, límites del endpoint | Agrega filtros, pagina o usa un endpoint más potente |
| Desconexiones de WebSocket | Límites de suscripción o inestabilidad de red | Agrega lógica de reconexión, confirma soporte de WS |
Blockhash not found | Blockhash obsoleto en una transacción | Obtén un blockhash nuevo antes de firmar |
result vacío para una cuenta | Nivel de commitment incorrecto o cuenta aún no creada | Reintenta con confirmed o finalized |
Dos hábitos de depuración valen la pena. Primero, registra el objeto de error JSON-RPC sin procesar, no solo el estado HTTP, porque Solana devuelve códigos de error útiles en el cuerpo. Segundo, prueba la misma llamada contra un segundo endpoint para separar un error de la aplicación de un problema del endpoint.
Si estás persiguiendo específicamente problemas de límite de tasa y autenticación, el artículo de acceso RPC de Solana profundiza en esos modos de fallo.
Niveles de commitment y por qué cambian los resultados
Solana te permite elegir qué tan finalizada debe estar una respuesta. Esto afecta tanto la corrección como la latencia.
processeddevuelve los datos más rápidos pero menos asentados.confirmedes un valor predeterminado común para lecturas orientadas al usuario.finalizedes el más seguro para cualquier cosa irreversible, como acreditar un depósito.
Un error frecuente es leer un saldo en processed y tratarlo como final. Para cualquier cosa que mueva valor, lee en confirmed o finalized, y sé explícito sobre el commitment en cada llamada en lugar de confiar en un valor predeterminado.
Ejecución de suscripciones sobre WebSocket
Las funciones en tiempo real, como observar una cuenta o rastrear slots, necesitan una conexión WebSocket. Solana expone métodos de suscripción como accountSubscribe y slotSubscribe a través del transporte WebSocket.
const ws = new WebSocket("wss://solana.api.onfinality.io/public-ws");
ws.onopen = () => {
ws.send(JSON.stringify({
jsonrpc: "2.0",
id: 1,
method: "slotSubscribe",
params: [],
}));
};
ws.onmessage = (event) => {
console.log(JSON.parse(event.data));
};
El código de suscripción en producción debe incluir lógica de reconexión con retroceso exponencial, un latido para detectar conexiones muertas y un límite en el número de suscripciones simultáneas por cliente. Las suscripciones caídas que dejan de entregar actualizaciones silenciosamente son uno de los errores más difíciles de notar, así que monitorea la llegada de mensajes en lugar de asumir que el socket está sano.
Puntos clave
solana.iono es el endpoint RPC de Solana ni el portal oficial para desarrolladores; usa una URL JSON-RPC real en su lugar.- Se puede acceder a Solana mainnet por HTTP en
https://solana.api.onfinality.io/publicy por WebSocket enwss://solana.api.onfinality.io/public-ws. - Relaciona el endpoint con el entorno: devnet para construir, mainnet para producción, y nunca mezcles los dos.
- Elige los niveles de commitment deliberadamente; usa
confirmedofinalizedpara cualquier cosa que mueva valor. - Pasa de capacidad compartida a dedicada cuando veas
429s sostenidos, suscripciones caídas o tiempos de espera en consultas grandes. - Registra los cuerpos de error JSON-RPC sin procesar y prueba contra un segundo endpoint para separar errores de la aplicación de límites del endpoint.
Preguntas frecuentes
¿solana.io es el endpoint RPC oficial de Solana?
No. solana.io no es un endpoint JSON-RPC. Se accede a Solana a través de proveedores de RPC que exponen URL HTTP y WebSocket, y la documentación oficial para desarrolladores se encuentra en el sitio de documentación de Solana.
¿Cuál es la URL RPC de Solana mainnet?
OnFinality expone Solana mainnet por HTTP en https://solana.api.onfinality.io/public y por WebSocket en wss://solana.api.onfinality.io/public-ws. Puedes revisar la red en la página de la red RPC de Solana.
¿Necesito un endpoint WebSocket para Solana?
Solo si tu aplicación usa suscripciones como accountSubscribe o slotSubscribe. Si solo haces llamadas de solicitud/respuesta, HTTP es suficiente. Si necesitas actualizaciones en tiempo real, confirma que el endpoint admite WebSocket antes de lanzar.
¿Cuándo debería dejar un endpoint público de Solana?
Cuando veas errores sostenidos de límite de tasa, suscripciones WebSocket caídas o tiempos de espera en consultas grandes como getProgramAccounts. En ese punto, evalúa nodos dedicados y compara niveles en la página de precios de RPC.
¿Cómo pruebo un endpoint de Solana rápidamente?
Envía una solicitud getSlot con curl como se muestra arriba. Un result numérico confirma que el endpoint es accesible y responde; un objeto de error te indica que revises el método, el commitment o los límites de tasa.
¿Dónde puedo ver todas las redes que OnFinality admite?
La lista completa está en la página de redes RPC compatibles, incluida Solana mainnet y devnet.
Próximos pasos
Comienza apuntando un script de prueba al endpoint de Solana mainnet y confirmando una respuesta getSlot. Luego agrega los métodos que tu aplicación necesita, establece niveles de commitment explícitos y agrega lógica de reconexión WebSocket si usas suscripciones. Cuando tu tráfico supere lo que un endpoint compartido maneja cómodamente, revisa nodos dedicados y precios de RPC, y mantén a mano la página de redes RPC compatibles a medida que te expandes a otras cadenas.