Proveedores RPC
Cada ejemplo de código en esta guía que habla con Solana - leyendo un saldo, enviando una transacción, suscribiéndose a cambios de cuenta - lo hace a través de un endpoint RPC. Este tutorial explica qué es realmente ese endpoint, por qué la URL https://api.devnet.solana.com utilizada en los ejemplos no es lo que usan las aplicaciones de producción, y cómo cambiar a un proveedor dedicado como Helius o QuickNode.
¿Qué es un Proveedor RPC?
Solana en sí no tiene una única "puerta de entrada". La red es un conjunto de validadores independientes, cada uno ejecutando software (Agave) que puede responder preguntas como "¿cuál es el saldo de esta cuenta?" o aceptar una nueva transacción. RPC significa Llamada a Procedimiento Remoto (Remote Procedure Call) - es el protocolo que tu código utiliza para pedirle a un validador (o a un nodo construido específicamente para responder estas preguntas) que haga algo.
Un endpoint RPC es solo una URL que apunta a uno de estos nodos. Cuando tu código llama a createSolanaRpc("https://api.devnet.solana.com"), no está hablando con "Solana" en abstracto, sino con un servidor específico que resulta estar ejecutando software RPC para el clúster de devnet.
api.devnet.solana.com y api.mainnet-beta.solana.com son endpoints públicos que la Fundación Solana ejecuta de forma gratuita, para cualquiera. Son genuinamente útiles para aprender y para los primeros días de un proyecto. Son compartidos por todos los desarrolladores del mundo que acceden a ellos al mismo tiempo.
Un proveedor RPC es una empresa que ejecuta su propia flota de nodos RPC de alto rendimiento y te da una URL privada para acceder a ellos. En lugar de compartir una cola con todos los demás desarrolladores en el endpoint público, tu aplicación obtiene su propio carril, con límites dimensionados a lo que estás pagando.
Dos de los proveedores RPC más utilizados en el ecosistema de Solana son Helius y QuickNode. Ambos te proporcionan un flujo de registro, un panel de control y una URL RPC personal (a menudo con una clave API integrada) en un par de minutos.
Esta distinción - endpoint público compartido versus endpoint de proveedor dedicado - es la cosa más común que confunde a los desarrolladores que pasan de "funciona en mi tutorial" a "funciona para usuarios reales".
Términos Clave
| Término | Significado en lenguaje sencillo |
|---|---|
RPC | Llamada a Procedimiento Remoto - el protocolo que tu código utiliza para pedirle a un nodo de Solana que haga algo (leer datos, enviar una transacción). |
Endpoint RPC / URL RPC | La dirección web específica a la que tu biblioteca cliente envía las solicitudes RPC. |
Proveedor RPC | Una empresa que ejecuta infraestructura RPC dedicada y te vende acceso privado a ella. |
RPC Público | Un endpoint gratuito y compartido (como api.devnet.solana.com) ejecutado por la Fundación Solana, sin garantías. |
Límite de Tasa | El número máximo de solicitudes que puedes enviar en una ventana de tiempo determinada antes de que las solicitudes empiecen a fallar. |
Clave API | Una cadena secreta que un proveedor te emite, ya sea como parte de tu URL RPC o como encabezado, para identificar y medir tu uso. |
Endpoint de Websocket | Una URL separada (wss://...) utilizada para suscripciones en tiempo real, como observar una cuenta para detectar cambios. |
API Mejorada | Endpoints específicos del proveedor más allá del RPC de Solana puro - por ejemplo, datos de NFT indexados, webhooks o estimación de tarifas de prioridad. |
Por Qué Importa
Los ejemplos en esta guía utilizan https://api.devnet.solana.com porque no requiere registro y funciona para cualquiera que siga las instrucciones. Esa es exactamente la razón por la que es inadecuado para una aplicación real: tiene límites de tasa, no tiene garantía de tiempo de actividad y puede limitar o rechazar tus solicitudes sin previo aviso si suficientes desarrolladores lo están utilizando al mismo tiempo.
Los desarrolladores profesionales de Solana tratan el endpoint RPC de la misma manera que tratarían una cadena de conexión de base de datos: como una pieza de infraestructura de producción, no como una constante codificada. Se registran con un proveedor dedicado, obtienen una URL privada y la leen de una variable de entorno.
Más allá de la fiabilidad, los proveedores dedicados a menudo exponen funcionalidades que el RPC público puro no ofrece: indexación más rápida, webhooks que notifican a tu backend cuando algo sucede en la cadena, estimación de tarifas de prioridad y APIs adaptadas a cargas de trabajo específicas como NFTs o DeFi. Helius, por ejemplo, ofrece una API de Estándar de Activos Digitales (DAS) para consultar NFTs comprimidos y datos de tokens de manera mucho más eficiente de lo que permitirían las llamadas RPC puras.
Para un proyecto personal o tus primeros días aprendiendo Solana, el endpoint público está bien. En el momento en que estés construyendo algo que la gente realmente usará, dedica diez minutos a configurar un proveedor; generalmente es gratuito a bajo volumen.
Paseo Paso a Paso
Paso 1: Reconoce el endpoint que esta guía ha estado usando
Mira hacia atrás en cualquier ejemplo de código en esta guía que cree un cliente RPC; por ejemplo, el de Clústeres y Redes. Señala el endpoint público de devnet.
import { createSolanaRpc } from "@solana/kit";
// Este es el endpoint público, gratuito y compartido - bueno para aprender
const rpc = createSolanaRpc("https://api.devnet.solana.com");Esa URL es un marcador de posición para "cualquier endpoint RPC de devnet que funcione", no una recomendación para enviarlo en producción. Los siguientes pasos lo reemplazan con una URL emitida por un proveedor sin cambiar nada más sobre cómo funciona el código.
Paso 2: Regístrate en Helius
Helius es una empresa de infraestructura construida específicamente para Solana. Junto con el RPC estándar, ofrece APIs mejoradas para datos de NFT y tokens, webhooks para eventos en cadena y estimación de tarifas de prioridad.
Para obtener una URL, crea una cuenta gratuita en helius.dev, luego abre el panel de control y crea un nuevo proyecto. Helius genera una URL RPC personal para ti, con tu clave API incrustada como parámetro de consulta, tanto para devnet como para mainnet-beta.
https://devnet.helius-rpc.com/?api-key=TU_CLAVE_APIPaso 3: Regístrate en QuickNode
QuickNode es un proveedor de infraestructura multicanal; soporta Solana además de Ethereum, Bitcoin y muchas otras redes, por lo que es una opción común para equipos que ya lo usan en otros lugares. Ofrece nodos RPC dedicados, un mercado de complementos para funcionalidad adicional y paneles de uso.
Para obtener una URL, crea una cuenta gratuita en quicknode.com, crea un nuevo endpoint de Solana desde el panel de control y elige el clúster (devnet o mainnet-beta) que necesites. QuickNode te proporciona una URL HTTPS completa con tu token de acceso incrustado en la ruta.
https://your-endpoint-name.solana-devnet.quiknode.pro/TU_TOKEN/Solo necesitas un proveedor para seguir el resto de esta guía; elige el que mejor se adapte a tu flujo de trabajo, o usa el endpoint público por ahora y cambia a una URL de proveedor más tarde usando el mismo patrón.
Paso 4: Almacena la URL como una variable de entorno
Nunca codifiques una URL de proveedor directamente en el código fuente; generalmente contiene tu clave API, y enviarla a git filtra esa clave a cualquiera con acceso al repositorio.
# .env (añade .env a .gitignore antes de enviar nada)
SOLANA_RPC_URL=https://devnet.helius-rpc.com/?api-key=TU_CLAVE_APIPaso 5: Lee el endpoint de la configuración en lugar de codificarlo
Con la URL en una variable de entorno, reemplaza la cadena codificada con una búsqueda que recurra al endpoint público cuando no haya un proveedor configurado; útil para scripts locales y CI donde no quieres requerir una clave de pago.
import { createSolanaRpc } from "@solana/kit";
const endpoint = process.env.SOLANA_RPC_URL ?? "https://api.devnet.solana.com";
const rpc = createSolanaRpc(endpoint);El resto de tu código - cada rpc.getBalance(), rpc.sendTransaction(), etc. - no cambia. Solo cambia la creación de la URL.
Juntándolo Todo
// rpc-client.ts - Solana Kit 7.0.0
import { createSolanaRpc } from "@solana/kit";
// Recurre al endpoint público de devnet cuando SOLANA_RPC_URL no esté configurado,
// así que esto todavía funciona para cualquiera que clone el repositorio sin una clave de proveedor.
const endpoint = process.env.SOLANA_RPC_URL ?? "https://api.devnet.solana.com";
const rpc = createSolanaRpc(endpoint);
const { value: version } = await rpc.getVersion().send();
console.log("Conectado a través de:", endpoint.includes("devnet.solana.com") ? "devnet público" : "proveedor dedicado");
console.log("Versión de Agave:", version["solana-core"]);// rpc_client.rs - solana-client 3.0.10
use solana_client::rpc_client::RpcClient;
use std::env;
fn main() {
let endpoint = env::var("SOLANA_RPC_URL")
.unwrap_or_else(|_| "https://api.devnet.solana.com".to_string());
let rpc = RpcClient::new(endpoint.clone());
let version = rpc.get_version().unwrap();
println!("Conectado a través de: {endpoint}");
println!("Versión de Agave: {}", version.solana_core);
}Ambos fragmentos hacen lo mismo: primero verifican si hay una URL de proveedor y solo recurren al endpoint público si no se establece ninguna. Ese único ?? (TypeScript) o unwrap_or_else (Rust) es la única diferencia entre un script que funciona para una demostración y uno que está listo para ser desplegado.
Nada más en el código de tu aplicación necesita saber o preocuparse por qué proveedor estás usando; createSolanaRpc y RpcClient::new aceptan cualquier URL RPC de Solana válida, pública o emitida por un proveedor.
Errores Comunes de Principiantes
- Codificar
api.devnet.solana.comen el código de la aplicación - funciona hasta que el tráfico aumenta, luego las solicitudes empiezan a fallar silenciosamente debido a los límites de tasa. Solución: leer el endpoint de una variable de entorno con una opción de fallback al endpoint público, como se muestra arriba. - Enviar una clave API a git - una URL de proveedor con una clave incrustada es un secreto, y el historial de GitHub la guarda para siempre incluso después de que la elimines. Solución: poner la URL en
.env, añadir.enva.gitignoreantes de tu primer commit, y rotar la clave si alguna vez se filtra. - Mezclar clústeres entre tu URL RPC y tu par de claves - apuntar una URL de proveedor de mainnet-beta a cuentas solo de devnet devuelve "cuenta no encontrada", no un error útil. Solución: verificar dos veces que el clúster tanto en tu panel de proveedor como en tu URL RPC coincida con las cuentas que estás utilizando.
- Asumir que un plan de proveedor gratuito tiene solicitudes ilimitadas - los niveles gratuitos son mucho más generosos que el endpoint público, pero aún así miden las solicitudes por mes o por segundo. Solución: consultar el panel de tu proveedor para ver el uso actual antes de asumir que los límites de tasa no son la causa de un fallo.
- Usar la URL RPC HTTPS para suscripciones en tiempo real - las suscripciones tipo
onAccountChangenecesitan una conexión websocket, no una solicitud HTTPS simple. Solución: usar el endpointwss://que tu proveedor emite junto con el HTTPS; la mayoría de los SDKs aceptan ambos y eligen el correcto automáticamente. - Olvidar que devnet y mainnet-beta necesitan URLs RPC separadas y claves separadas en la mayoría de los paneles - reutilizar uno ciegamente entre entornos hace imposible atribuir el uso. Solución: crear un endpoint distinto por clúster en el panel de tu proveedor.
Preguntas Frecuentes
¿Es el endpoint RPC público malo, o solo no es para producción?
Solo no es para producción. api.devnet.solana.com es una forma legítima y gratuita de aprender y prototipar. El problema es solo que es compartido por todos y no tiene garantía de tiempo de actividad; está bien para un tutorial, pero es arriesgado para cualquier cosa de la que dependan los usuarios reales.
¿Necesito pagar por Helius o QuickNode para seguir esta guía?
No. Ambos ofrecen niveles gratuitos que son más generosos que el endpoint público y son suficientes para desarrollo y proyectos pequeños. Solo necesitarás pagar una vez que tu tráfico supere el nivel gratuito.
¿Qué significa realmente "RPC"?
Llamada a Procedimiento Remoto (Remote Procedure Call). Es un patrón de programación general, no específico de Solana, para llamar a una función que se ejecuta en una máquina diferente como si fuera local.
¿Puedo usar Helius para mainnet y QuickNode para devnet, o tengo que elegir uno?
Puedes mezclar proveedores libremente por clúster o por entorno. Nada en el protocolo de Solana te ata a un solo proveedor; simplemente estás eligiendo los servidores de qué empresa responden a tus llamadas RPC.
¿Qué es una "API mejorada" y la necesito?
Es una funcionalidad que un proveedor añade sobre el RPC de Solana puro; la API DAS de Helius para datos de NFT/tokens es un ejemplo. No la necesitas para lecturas y transacciones básicas; son importantes una vez que estás construyendo características que el RPC puro hace lentas o torpes, como consultar todos los NFTs que posee una billetera.
¿Por qué mi panel de proveedor muestra URLs separadas para devnet y mainnet-beta?
Porque son clústeres diferentes con datos diferentes. Una URL de devnet solo ve cuentas y transacciones de devnet; necesitas una URL de mainnet-beta (y generalmente una clave separada) una vez que despliegas para producción.
¿Es un endpoint de websocket lo mismo que un endpoint RPC?
Relacionado pero distinto. El endpoint RPC HTTPS maneja solicitudes únicas (obtener un saldo, enviar una transacción). El endpoint websocket (wss://...) maneja suscripciones: tu código permanece conectado y recibe actualizaciones empujadas, como "esta cuenta acaba de cambiar".
¿Qué sucede si excedo el límite de tasa de mi proveedor?
Las solicitudes empiezan a devolver errores (comúnmente HTTP 429) en lugar de datos. La mayoría de los SDKs no reintentan automáticamente, por lo que el código de tu aplicación debe manejar ese fallo: retroceder y reintentar, o mostrar un error al usuario.
¿Debo poner mi URL RPC en código del lado del cliente (navegador)?
Solo si la URL y la clave están destinadas a ser públicas; consulta la documentación de tu proveedor, ya que algunos planes admiten claves restringidas por dominio específicamente para esto. De lo contrario, mantén la URL en el lado del servidor y haz que tu backend proxy las llamadas RPC, de la misma manera que protegerías cualquier otra clave API.
¿Existen proveedores RPC además de Helius y QuickNode?
Sí, Triton y otros también sirven al ecosistema de Solana. Helius y QuickNode se cubren aquí porque son los dos más comúnmente elegidos por los desarrolladores que son nuevos en la elección de un proveedor, no porque sean las únicas opciones.
¿Cambiar de proveedor RPC requiere alguna vez cambiar el código de mi aplicación?
No, siempre y cuando leas la URL de la configuración en lugar de codificarla (Paso 5 arriba). Cambiar de proveedor se convierte en un cambio de una línea en una variable de entorno.
Relacionado
- Clústeres y Redes - devnet, testnet, mainnet-beta, y cómo hacer coincidir tu URL RPC con el clúster correcto
- Fundamentos de Solana - primeros pasos en devnet usando el endpoint público
- Wallets y Exploradores - flujo de trabajo de devnet y faucets
Versiones de Stack: Esta página fue escrita para Agave 4.1.1, Solana CLI 3.0.10, @solana/kit 7.0.0, y solana-client 3.0.10 (Rust).