Resumen
Un endpoint RPC público de Solana es una URL compartida que no requiere registro y que te permite leer y enviar transacciones a la mainnet de Solana sin ejecutar tu propio validador o nodo RPC. Es ideal para aprender, crear prototipos, demos de hackathon y scripts de bajo volumen, pero al ser capacidad compartida, debes esperar un rendimiento variable y límites de tasa bajo carga.
Esta página explica cómo funciona el RPC público de Solana, cómo conectarte con curl y JavaScript, la configuración exacta de mainnet que necesitas y el punto en el que un endpoint gestionado o dedicado se convierte en la mejor opción para aplicaciones en producción.
Un endpoint RPC público de Solana es una URL compartida y de acceso abierto que permite a cualquier cliente leer el estado de Solana y enviar transacciones sin ejecutar un validador o nodo RPC. Pegas la URL en tu billetera, script o dApp, y responde llamadas JSON-RPC a través de HTTP o WebSocket. La contrapartida es que compartes esa capacidad con todos los demás que usan la misma URL.
Esta página cubre cómo se comporta realmente el RPC público de Solana, la configuración exacta de mainnet, ejemplos de solicitudes funcionales y las señales que indican que es hora de pasar a un endpoint gestionado o dedicado.
¿Es un endpoint RPC público de Solana la opción adecuada para tu proyecto?
Usa esta breve guía antes de comprometerte con un endpoint público para algo más que una prueba rápida.
| Tu situación | Endpoint público | Endpoint gestionado/compartido | Nodo dedicado |
|---|---|---|---|
| Aprender Solana, tutoriales, hackathons | Buena opción | Bien | Excesivo |
| Demo de billetera o dApp con pocos usuarios | Viable | Mejor | Excesivo |
| Aplicación en producción con tráfico real | Arriesgado | Recomendado | Ideal para cargas intensas o sensibles a la latencia |
Indexación, getProgramAccounts, rellenos | No adecuado | Posible con límites | Recomendado |
| Bots de trading, suscripciones WebSocket | No adecuado | Posible | Recomendado |
Si aún estás explorando, un endpoint público es la forma más rápida de empezar. Si vas a lanzar a usuarios reales, planifica la ruta de actualización desde el principio en lugar de después de tu primer incidente de límite de tasa.
En qué se diferencia el RPC público de Solana de un endpoint privado
Los endpoints públicos suelen operarse como cortesía o como embudo hacia un servicio de pago. Son compartidos, tienen límites de tasa y no están diseñados para un rendimiento sostenido. Un endpoint privado o gestionado te ofrece una clave API dedicada, mayores presupuestos de solicitudes y una vía de soporte cuando algo falla.
Las diferencias prácticas se manifiestan en tres aspectos:
- Rendimiento. Los endpoints públicos limitan a los clientes agresivos. Las ráfagas de
getProgramAccountso las suscripciones a logs son lo primero que se corta. - Consistencia. La carga compartida hace que la latencia varíe a lo largo del día. Eso está bien para actualizar un explorador de bloques, pero es doloroso para un bucle de trading.
- Soporte. Cuando un endpoint público devuelve errores, normalmente no tienes un canal para preguntar por qué. Los proveedores gestionados te ofrecen páginas de estado y una forma de escalar.
Configuración de Solana mainnet de un vistazo
Si estás integrando Solana en una billetera, dApp o script, estos son los valores que necesitas. Coinciden con la configuración de red de Solana de OnFinality.
| Configuración | Valor |
|---|---|
| Red | 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 |
| Transportes compatibles | HTTP, WebSocket |
Para trabajo en devnet, usa la página RPC de Solana Devnet en lugar de apuntar código de prueba a mainnet.
Conexión con curl y JSON-RPC
Solana habla JSON-RPC 2.0. La comprobación de sanidad más sencilla es una llamada getHealth, que te dice si el nodo está al día y sirviendo solicitudes.
curl https://solana.api.onfinality.io/public \
-X POST \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "getHealth"
}'
Un nodo saludable devuelve {"jsonrpc":"2.0","result":"ok","id":1}. Si obtienes un timeout o un 429, esa es tu primera señal de que el endpoint está bajo presión.
Para leer un saldo, usa getBalance con una clave pública en base58:
curl https://solana.api.onfinality.io/public \
-X POST \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "getBalance",
"params": ["11111111111111111111111111111111"]
}'
El resultado está en lamports. Divide por 1,000,000,000 para obtener SOL.
Uso de un RPC público de Solana desde JavaScript
La mayoría de las aplicaciones de Solana usan @solana/web3.js. Apuntarlo a un endpoint público es un cambio de una línea, pero aún así deberías envolver las llamadas para poder cambiar la URL más adelante.
import { Connection, PublicKey, LAMPORTS_PER_SOL } from "@solana/web3.js";
const connection = new Connection(
"https://solana.api.onfinality.io/public",
"confirmed"
);
const wallet = new PublicKey("11111111111111111111111111111111");
const lamports = await connection.getBalance(wallet);
console.log("Balance:", lamports / LAMPORTS_PER_SOL, "SOL");
Mantén el endpoint en una variable de entorno para poder pasar de una URL pública a una gestionada o dedicada sin tocar la lógica de negocio.
Suscripciones WebSocket en un endpoint compartido
La API WebSocket de Solana es donde los endpoints públicos tienen más problemas. accountSubscribe, logsSubscribe y slotSubscribe mantienen conexiones de larga duración, y la infraestructura compartida tiende a dejarlas caer bajo carga.
const ws = new WebSocket("wss://solana.api.onfinality.io/public-ws");
ws.onopen = () => {
ws.send(JSON.stringify({
jsonrpc: "2.0",
id: 1,
method: "slotSubscribe"
}));
};
ws.onmessage = (event) => {
const msg = JSON.parse(event.data);
if (msg.method === "slotNotification") {
console.log("New slot:", msg.params.result.slot);
}
};
Si dependes de suscripciones para una interfaz en vivo o un bot, trata un WebSocket público como una comodidad de desarrollo, no como un transporte de producción. Planifica reconexiones, retroceso y un endpoint de respaldo.
Dónde empieza a fallar el RPC público de Solana
Estos son los modos de fallo que los desarrolladores encuentran con más frecuencia cuando fuerzan demasiado un endpoint público.
| Síntoma | Causa probable | Qué hacer |
|---|---|---|
| Respuestas HTTP 429 | Límite de tasa compartido excedido | Reduce la tasa de solicitudes, agrupa llamadas o pasa a un endpoint gestionado |
| Desconexiones WebSocket | Conexiones de larga duración caídas bajo carga | Añade lógica de reconexión y considera un endpoint dedicado |
Timeouts de getProgramAccounts | Escaneo pesado en capacidad compartida | Usa una consulta filtrada o un indexador; evítalo en endpoints públicos |
| Lecturas obsoletas o retrasadas | Nodo por detrás de la punta | Comprueba getHealth y getSlot; cambia a otro endpoint |
| Latencia inconsistente | Carga de vecinos ruidosos | Mueve las llamadas sensibles a la latencia a un nodo dedicado |
Cuándo pasar a un RPC de Solana gestionado o dedicado
Un endpoint público es un punto de partida, no un destino. El cambio suele desencadenarse por uno de estos motivos:
- Vas a lanzar a usuarios reales y no puedes permitirte 429 durante un lanzamiento o un airdrop.
- Ejecutas lógica de trading o liquidación donde un WebSocket caído cuesta dinero.
- Necesitas historial de archivo,
getProgramAccountso depuración estilo trace que los endpoints públicos no sirven. - Quieres un canal de soporte y una página de estado a la que apuntar tu rotación de guardia.
OnFinality ofrece Solana RPC como API gestionada y como nodos dedicados cuando necesitas capacidad aislada. Puedes revisar precios de RPC y la lista completa de redes RPC compatibles para planificar la actualización. La página de red Solana tiene los detalles actuales del endpoint.
Lista de verificación práctica para la migración
Cuando decidas dejar el endpoint público, sigue esto en orden:
- Externaliza el endpoint. Mueve la URL a configuración o a una variable de entorno.
- Añade comprobaciones de salud. Sondea
getHealthygetSlotde forma programada y registra los fallos. - Instrumenta la latencia. Rastrea p50 y p95 por método para poder comparar proveedores de forma justa.
- Añade un respaldo. Mantén un segundo endpoint y cambia ante errores repetidos.
- Separa cargas de trabajo. Envía las lecturas pesadas a un endpoint diferente al de tu ruta de envío de transacciones.
- Prueba bajo carga. Reproduce tráfico realista antes de hacer el cambio.
- Revisa los números. Compara tasas de error y latencia antes y después del cambio.
Puntos clave
- Un endpoint RPC público de Solana es una URL compartida excelente para aprender y crear prototipos, pero no está diseñada para tráfico de producción sostenido.
- Solana mainnet usa JSON-RPC sobre HTTP y WebSocket; los endpoints públicos de OnFinality son
https://solana.api.onfinality.io/publicywss://solana.api.onfinality.io/public-ws. - Los límites de tasa, las conexiones WebSocket caídas y los timeouts de
getProgramAccountsson los modos de fallo más comunes de los endpoints públicos. - Mantén tu endpoint en configuración para poder pasar a un nodo dedicado o gestionado sin reescribir la lógica de la aplicación.
- Revisa precios de RPC y redes RPC compatibles antes de escalar.
Preguntas frecuentes
¿Es gratis usar un endpoint RPC público de Solana?
Los endpoints públicos suelen ser gratuitos de llamar, pero son compartidos y tienen límites de tasa. El acceso gratuito normalmente conlleva menor rendimiento y sin garantía de soporte, por lo que los equipos de producción pasan a un endpoint gestionado o dedicado.
¿Cuál es la URL del RPC público de Solana?
OnFinality expone Solana mainnet en https://solana.api.onfinality.io/public para HTTP y wss://solana.api.onfinality.io/public-ws para WebSocket. Confirma siempre la URL actual en la página de red Solana.
¿Puedo usar un RPC público de Solana para un bot de trading?
No se recomienda. Los bots dependen de lecturas de baja latencia y suscripciones WebSocket estables, ambas poco fiables en capacidad pública compartida. Un nodo dedicado te da rendimiento aislado y una conexión predecible.
¿Por qué mi RPC público de Solana devuelve errores 429?
Un 429 significa que has superado el límite de tasa compartido. Reduce tu tasa de solicitudes, agrupa llamadas cuando sea posible y mueve los métodos sensibles a la latencia o de alto volumen a un endpoint gestionado o dedicado.
¿Cómo cambio de un endpoint público a uno privado?
Mantén el endpoint en una variable de entorno, añade sondas de salud y latencia, luego cambia la URL por tu endpoint gestionado o dedicado. Como Solana usa la misma interfaz JSON-RPC, no es necesario cambiar el código de la aplicación más allá de la cadena de conexión.
¿Ofrece OnFinality RPC de Solana devnet?
Sí. Consulta la página RPC de Solana Devnet para detalles del endpoint devnet y úsala para pruebas antes de apuntar código a mainnet.