Nodos RPC de Solana: Configuración, proveedores y mejores prácticas
Complete guide to Solana RPC nodes. Learn how they work, compare top providers like Helius and QuickNode, and fix rate limit errors for production dAp...
Los nodos RPC de Solana proporcionan las interfaces de lectura, envío y suscripción que las aplicaciones utilizan para comunicarse con la red. Las características de los proveedores, los límites, los precios, los requisitos de hardware y las cifras de rendimiento cambian con el tiempo, por lo que las decisiones de producción deben verificarse con la documentación actual y las pruebas de carga de trabajo.
Última actualización: julio de 2025
Los endpoints públicos de Solana pueden ser útiles para el desarrollo, pero no son una garantía universal de servicio de producción. Si una dApp devuelve errores 429, se detiene en las consultas de cuenta o tiene problemas de envío bajo carga, su ruta RPC es un componente a investigar junto con la construcción de la transacción, las comisiones, con vencimiento, la red y las condiciones del clúster.
Esta guía cubre qué es un nodo RPC de Solana, en qué se diferencia de un nodo validador, cómo fluyen las solicitudes a través del sistema, dónde obtener las URL de los endpoints públicos, qué métodos RPC son más importantes, cómo conectarse a través de @solana/web3.js, qué proveedores gestionados evaluar, qué requiere realmente el autoalojamiento y cómo solucionar los errores de límite de frecuencia que probablemente ya esté viendo.
Resumen: Para el desarrollo, utilice los endpoints públicos gratuitos de la Fundación Solana. Para la producción, utilice un proveedor gestionado como Helius, QuickNode, Alchemy o Triton One. El autoalojamiento ofrece más control operativo, pero sigue requiriendo planificación de capacidad, políticas de acceso, supervisión y orientación actualizada sobre el hardware.
Ir a:
- ¿Qué son los nodos RPC de Solana?
- Nodo RPC frente a nodo validador
- Cómo funcionan los nodos RPC de Solana
- Tipos de nodos RPC de Solana
- Por qué importa la calidad del nodo RPC: DeFi, NFT y rendimiento de dApps
- Los mejores proveedores de nodos RPC de Solana
- Conectar su aplicación mediante @solana/web3.js
- Métodos RPC de Solana: qué se puede consultar
- Cómo ejecutar su propio nodo RPC de Solana
- Error comunes de RPC de Solana y cómo solucionarlos
- Preguntas frecuentes
- Elegir la estrategia de RPC de Solana adecuada
¿Qué son los nodos RPC de Solana?
Un nodo RPC de Solana es un servidor que implementa la API JSON-RPC de Solana, aceptando solicitudes de aplicaciones cliente y devolviendo datos del estado de la blockchain en respuesta. Las dApps, los monederos, los exploradores de bloques y los scripts automatizados utilizan estos nodos para leer saldos de cuentas, enviar transacciones y suscribirse a eventos on-chain sin mantener una copia local del libro mayor (ledger).
Los materiales históricos citan un rendimiento teórico de Solana cercano a los 65.000 TPS y una duración de slot objetivo cercana a los 400 milisegundos. Ninguno de los dos es un resultado garantizado en vivo: las definiciones de las transacciones, los slots omitidos, el tráfico de votos, la carga de trabajo, las condiciones del clúster y las versiones de software afectan al rendimiento observado. La cadencia objetivo y el volumen de estado de cuenta siguen planteando exigencias sustanciales a la infraestructura RPC.
La llamada a procedimiento remoto (RPC, por sus siglas en inglés) es un patrón de comunicación en el que un programa en una máquina llama a una función en otra máquina como si fuera local, abstrayendo la complejidad de la red. Su dApp puede consultar el estado de la cuenta y enviar transacciones contra un nodo remoto en lugar de mantener su propia copia del libro mayor. Solana utiliza JSON-RPC 2.0 como su protocolo de comunicación: un formato ligero que enruta las llamadas por nombre de método a través de HTTP o WebSocket, no por rutas de URL basadas en recursos como las API REST.
La Fundación Solana opera endpoints públicos gratuitos en https://api.mainnet-beta.solana.com y URLs equivalentes para devnet y testnet. Estos endpoints imponen límites de frecuencia por dirección IP. Cuando su aplicación excede esos límites, recibe errores HTTP 429 Too Many Requests, lo que provoca fallos intermitentes y una degradación de la experiencia del usuario bajo carga.
Nodo RPC frente a nodo validador: Entendiendo la diferencia
Un nodo RPC sirve datos de la blockchain a clientes externos a través de la API JSON-RPC. Un nodo validador participa en el consenso y vota sobre la validez de los bloques. Estos son los dos tipos principales de nodos en Solana y sirven para propósitos distintos.
| Atributo | Nodo RPC | Nodo validador |
|---|---|---|
| Función principal | Sirve datos de la blockchain a clientes externos a través de la API JSON-RPC | Participa en el consenso Tower BFT; vota sobre la validez de los bloques en cada slot |
| Participación en el consenso | Ninguna | Sí — vota en cada slot |
| Staking / Recompensas | No se requiere Participar en staking; sin recompensas de bloque | Requiere SOL en staking; gana recompensas por Participar en staking de SOL |
| Requisito de RAM | 256 GB mínimo (mantiene el estado completo de la cuenta para respuestas a consultas) | Menor RAM; prioriza una red de baja latencia para la votación |
| Cómo se accede | A través de la URL del endpoint HTTP o WebSocket | Identificado por la clave pública de la cuenta de voto |
Los nodos validadores participan en el consenso Tower BFT, un mecanismo de votación basado en Proof-of-Stake. Proof of History (PoH), el mecanismo de secuenciación criptográfica de Solana (no su protocolo de consenso), establece el orden antes de que se emitan los votos. Tower BFT es la capa de consenso; PoH se encarga del cronometraje.
Gulf Stream, el protocolo de reenvío de transacciones de Solana, envía las transacciones directamente a los nodos líderes actuales y futuros, omitiendo la Mempool que utilizan otras blockchains. Los validadores gestionan este proceso de reenvío. Los nodos RPC no lo hacen.
Ejecutar un nodo RPC no requiere SOL en staking. Algunos operadores ejecutan tanto la funcionalidad de validador como la de RPC en la misma máquina física, pero las funciones permanecen lógicamente separadas: una vota en el consenso y la otra atiende las consultas de los clientes. En cuanto a los requisitos de hardware para el autoalojamiento de un nodo RPC, las demandas de RAM y almacenamiento son sustancialmente más altas que las de un validador solo.
Cómo funcionan los nodos RPC de Solana: Arquitectura y flujo de datos
Un nodo RPC de Solana mantiene una réplica local del libro mayor y del estado de la cuenta, sirviendo esos datos a cualquier cliente que envíe una solicitud JSON-RPC válida.
El ciclo de vida de una solicitud JSON-RPC
- Una aplicación cliente (dApp, monedero o script) envía una solicitud HTTP POST o un mensaje WebSocket a la URL del endpoint del nodo RPC.
- El cuerpo de la solicitud contiene una carga útil JSON-RPC 2.0 con cuatro campos:
jsonrpc,id,method,params. - El nodo RPC recibe la solicitud y la enruta al controlador interno adecuado basándose en el campo
method. - El nodo consulta su réplica local del libro mayor o el almacén de estado de cuenta para obtener los datos solicitados.
- El nodo devuelve una respuesta codificada en JSON que contiene los datos solicitados o un objeto de error estructurado.
Un ejemplo concreto de getBalance:
// Solicitud
{
"jsonrpc": "2.0",
"id": 1,
"method": "getBalance",
"params": ["SuClavePúblicaBase58Aquí", {"commitment": "confirmed"
}// Respuesta
{
"jsonrpc": "2.0",
"result": {
"context": {"slot": 285823400},
"value": 5000000000
},
"id": 1
}
// Nota: el valor está en lamports. Divida por 1.000.000.000 para convertir a SOL.A diferencia de las API REST que utilizan URL basadas en recursos, JSON-RPC enruta cada llamada a través de un único endpoint utilizando el campo method. Los desarrolladores con experiencia en Ethereum reconocerán la estructura de la solicitud. Solana se diferencia en tres aspectos clave: no hay Mempool (las transacciones van directamente al líder actual), el estado reside en cuentas en lugar de en el almacenamiento de contratos EVM, y los slots de 400 ms son aproximadamente 30 veces más rápidos que los tiempos de bloque de 12 segundos de Ethereum.
Niveles de compromiso (Commitment): processed, confirmed, finalized
Cada llamada RPC que lee el estado acepta un parámetro de compromiso (commitment):
processed: El slot más reciente que el nodo ha visto. Es el más rápido, pero teóricamente el slot podría revertirse.confirmed: El slot ha recibido una supermayoría de votos de los validadores. Finalidad sólida para la mayoría de los casos de uso de dApps.finalized: El slot es parte permanente de la cadena. Se utiliza para operaciones de alto riesgo.
Qué almacena un nodo RPC de Solana
El nodo almacena dos categorías de datos. El estado actual de la cuenta reside en la RAM: la instantánea de cada cuenta activa en el último slot confirmado, necesaria para respuestas rápidas a las consultas. Los datos históricos del ledger residen en SSD NVMe: todos los registros de transacciones organizados por slot. Solana acumula aproximadamente entre 100 y 200 GB de datos del ledger por día en mainnet-beta. Ese crecimiento de almacenamiento, combinado con slots de 400 ms, explica por qué los nodos RPC requieren un mínimo de 256 GB de RAM y varios terabytes de almacenamiento rápido.
Para la referencia completa de la API Solana JSON-RPC, consulta docs.solana.com/api.
HTTP vs. WebSocket: Cómo elegir el transporte adecuado
| Transporte | Modelo | Uso Típico | Métodos de Ejemplo |
|---|---|---|---|
| HTTP / HTTPS | Solicitud-respuesta (sin estado, pull) | Consultas únicas, envío de transacciones | getBalance, getAccountInfo, sendTransaction |
| WebSocket / WSS | Conexión persistente (con estado, push) | Suscripciones a eventos en tiempo real | accountSubscribe, logsSubscribe, signatureSubscribe |
Tipos de Nodos RPC de Solana: Públicos, Privados y Autohospedados
Los nodos RPC de Solana se acceden de tres maneras: a través de los endpoints públicos gratuitos de la Fundación Solana, a través de un proveedor privado gestionado, o a través de un nodo autohospedado que operas directamente.
| Tipo | Operador | Coste | Límites de Tasa | Objetivo de Servicio | Uso Típico |
|---|---|---|---|---|---|
| Endpoint Público | Fundación Solana | Gratis | Sí (aplicado por IP) | Ninguno | Desarrollo y pruebas |
| Proveedor Gestionado | Helius, QuickNode, Alchemy, Triton One | Niveles de pago disponibles | Límites más altos o ninguno en planes de pago | Sí (planes de pago) | dApps de producción |
| Autohospedado | Tú | Coste de hardware + operaciones | Ninguno (tú los controlas) | Tú lo defines | Grandes protocolos, exchanges |
Solana RPC Endpoints Públicos (Gratis)
La Fundación Solana opera cuatro endpoints RPC públicos, uno por cada cluster de red. Todos son gratuitos pero aplican límites de tasa por dirección IP. Todos son gratuitos pero aplican límites de tasa por dirección IP.
| Cluster | URL del Endpoint HTTP | URL del Endpoint WebSocket | Caso de Uso |
|---|---|---|---|
| mainnet-beta | https://api.mainnet-beta.solana.com | wss://api.mainnet-beta.solana.com | Red de producción (la etiqueta "beta" es histórica; esta es la mainnet activa de Solana) |
| devnet | https://api.devnet.solana.com | wss://api.devnet.solana.com | Desarrollo y pruebas; se ofrecen airdrops de SOL gratuitos |
| testnet | https://api.testnet.solana.com | wss://api.testnet.solana.com | Pruebas de estrés pre-producción |
| localnet | http://localhost:8899 | ws://localhost:8900 | Desarrollo local; generado por solana-test-validator (no es un cluster público oficial) |
Los endpoints públicos aplican un límite de tasa de aproximadamente 100 solicitudes por cada 10 segundos por dirección IP. Superar este umbral devuelve un HTTP 429 Too Many Requests. Estos endpoints funcionan para desarrollo y pruebas. Para uso en producción, consulta la comparación de proveedores de Solana RPC a continuación.
Para obtener documentación completa del cluster, consulta docs.solana.com/clusters.
Proveedores de Nodos RPC Privados y Gestionados
Un proveedor de RPC gestionado puede ofrecer endpoints dedicados, límites publicados más altos, soporte WebSocket, objetivos de servicio y múltiples regiones; las características exactas dependen del plan actual. Los cuatro proveedores principales para Solana:
- Helius: Proveedor nativo de Solana con APIs RPC mejoradas y notificaciones webhook
- QuickNode: Proveedor multichain con distribución geográfica y un mercado de complementos
- Alchemy: Proveedor multichain con herramientas para desarrolladores de nivel empresarial
- Triton One: Especialista nativo de Solana centrado en el rendimiento RPC bruto para cargas de trabajo institucionales
Una comparación completa con precios, soporte WebSocket y diferenciadores se encuentra en la sección de comparación de proveedores.
Nodos RPC de Solana Autohospedados
La autohospedación te da control total sobre tu infraestructura RPC sin límites de tasa, pero el coste del hardware comienza en miles de dólares y el mantenimiento continuo de DevOps no es trivial. Los requisitos completos y una descripción general de la configuración se encuentran en Cómo Ejecutar Tu Propio Nodo RPC de Solana.
Por Qué la Calidad del Nodo RPC es Importante: DeFi, NFTs y Rendimiento de dApps
La calidad de tu nodo RPC determina directamente si tu aplicación funciona correctamente en condiciones de producción. Cuatro casos de uso lo concretan.
Bots de Trading y Arbitraje DeFi
Los protocolos de DeFi en Solana procesan transacciones sensibles al tiempo donde la latencia determina los resultados. Un bot de trading que llama a getLatestBlockhash y sendTransaction a través de un endpoint público con límites de tasa se arriesga a tener un blockhash obsoleto o a perder una transacción durante un tiempo de espera de 429. En la línea de tiempo de slots de 400 ms de Solana, una diferencia de 50 ms en el tiempo de respuesta RPC puede determinar si una transacción aterriza en el slot objetivo o lo falla por completo.
Jupiter (agregador), Raydium (AMM/DEX), Drift (perpetuos) y Marginfi (préstamos) dependen del acceso RPC de baja latencia. A diferencia de Ethereum DeFi, las transacciones de Solana omiten completamente el mempool a través de Gulf Stream, yendo directamente al líder actual. No hay una cola de ordenación a la que recurrir si tu llamada RPC llega tarde.
La acuñación de NFT de alta demanda genera ráfagas de cientos de llamadas concurrentes a sendTransaction de compradores que compiten por un suministro limitado. Un endpoint público limitado a ~10 solicitudes por segundo devuelve errores 429 a la mayoría de los participantes durante los picos de lanzamientos. Marketplaces como Magic Eden y Tensor utilizan suscripciones WebSocket logsSubscribe para detectar eventos de acuñación en tiempo real, lo que requiere un proveedor que maneje conexiones WebSocket estables a escala.
Las aplicaciones de billetera (wallet) llaman a getBalance y getTokenAccountBalance para cada activo que un usuario posee, además de getAccountInfo para leer metadatos en la cadena. Una billetera que atiende a 10.000 usuarios activos puede emitir decenas de miles de consultas RPC por minuto. Un proveedor RPC privado con suficiente capacidad QPS (consultas por segundo) mantiene estas consultas resolviéndose sin degradar la experiencia del usuario. QPS aquí se refiere al rendimiento de las solicitudes RPC, no al rendimiento de las transacciones a nivel de red de Solana.
Las plataformas de análisis y los indexadores llaman repetidamente a getBlock para replicar el historial completo de transacciones del ledger de Solana. Una sincronización histórica completa emite miles de solicitudes getBlock en secuencia. Los nodos RPC autohospedados o los planes de nivel empresarial dedicados son las únicas opciones que sostienen este volumen de forma fiable. Los exchanges centralizados que ejecutan sus propios nodos RPC de Solana utilizan patrones similares de alto rendimiento para conciliar saldos de usuarios y detectar depósitos a escala.
El tiempo de slot de 400 ms de Solana en comparación con el tiempo de bloque de aproximadamente 12 segundos de Ethereum significa que una dApp de Solana consulta RPC aproximadamente 30 veces más frecuentemente por unidad de tiempo para operaciones equivalentes, haciendo que el rendimiento del nodo RPC sea desproporcionadamente más crítico aquí que en la mayoría de las otras redes. Si estás alcanzando límites de tasa bajo tráfico de producción, actualizar a un proveedor RPC privado es la solución más directa.
Comparativa de Proveedores de Nodos RPC de Solana
Para la mayoría de las dApps de producción, la pregunta no es si usar un proveedor RPC gestionado, sino cuál se adapta a tu carga de trabajo. La tabla cubre las cuatro opciones principales con el endpoint público gratuito de la Fundación Solana como línea base.
| Proveedor | Solana-Native | Nivel Gratuito | Nivel de Pago (aprox.) | Nodo Dedicado | WebSocket | Regiones | Diferenciador Clave |
|---|---|---|---|---|---|---|---|
| Helius | Sí | Sí | ~$49-$499/mes | Sí | Sí | EE. UU., UE | APIs mejoradas: webhooks, análisis de transacciones, APIs de NFT |
| QuickNode | No (multicadena) | Sí (prueba) | ~$49-$399/mes | Sí | Sí | EE. UU., UE, Asia + | Mercado de complementos; amplia cobertura multicadena |
| Alchemy | No (multicadena) | Sí | ~$49-$399/mes | Sí | Sí | EE. UU., UE | Herramientas para desarrolladores empresariales; webhooks Notify |
| Triton One | Sí | No | Personalizado/empresarial | Sí | Sí | EE. UU., UE, Asia | Rendimiento de grado institucional; contactar para precios |
| Fundación Solana (público) | Sí | Gratuito (limitado por tasa) | N/A | No | Sí (limitado por tasa) | EE. UU. | Solo desarrollo y pruebas |
La información de precios en esta tabla era precisa en el momento de la publicación. Los planes, precios y características de los proveedores cambian con frecuencia. Verifique los detalles actuales directamente en el sitio web de cada proveedor antes de tomar una decisión.
Última actualización: Julio de 2025
Helius anuncia métodos RPC centrados en Solana, webhooks y funciones de análisis de transacciones. Las capacidades, cuotas, precios, regiones y términos del servicio deben verificarse directamente en helius.dev y probarse con la carga de trabajo prevista.
QuickNode anuncia infraestructura RPC multicadena, Endpoints regionales y complementos opcionales. Verifique la cobertura actual de Solana, las cuotas, los precios y los términos del servicio en quicknode.com, luego compare los métodos y regiones requeridos.
Alchemy anuncia infraestructura de desarrollador multicadena que incluye soporte para Solana. Confirme la cobertura de métodos actual, el comportamiento de WebSocket, los límites, las regiones y los precios en alchemy.com antes de considerarlo equivalente a otro proveedor.
Triton One anuncia infraestructura de Solana para cargas de trabajo de mayor rendimiento. Su latencia, disponibilidad, cobertura geográfica, límites y términos comerciales requieren verificación directa en triton.one y pruebas específicas de la carga de trabajo.
GenesysGo operaba anteriormente un servicio RPC de Solana bajo la marca Shadow. Verifique el estado actual en genesysgo.com antes de evaluarlo.
Todos los proveedores principales ofrecen niveles gratuitos o planes de prueba suficientes para desarrollo y pruebas. Los límites de tasa se convierten en una preocupación de producción solo cuando su aplicación atiende a usuarios reales a escala.
Cómo evaluar un proveedor RPC de Solana
El proveedor adecuado depende de su carga de trabajo:
| Su situación | Punto de partida para la evaluación |
|---|---|
| Desarrollador individual o equipo pequeño, presupuesto limitado | Nivel gratuito de Helius o prueba gratuita de QuickNode; actualice cuando alcance los límites de tasa |
| dApp de producción solo en Solana | Helius (nativo de Solana, APIs mejoradas) o Triton One (si la latencia p99 es la principal preocupación) |
| Equipo multicadena (Solana más Ethereum u otros) | QuickNode o Alchemy (ambos admiten múltiples cadenas bajo una sola cuenta) |
| Empresa con requisitos estrictos de SLA | QuickNode (nivel empresarial) o Alchemy (reputación empresarial) |
| Protocolo de DeFi de alta frecuencia u operación MEV | Triton One (enfoque institucional) o un nodo RPC autoalojado |
| Máximo control, sin límites de tasa, equipo DevOps grande | Nodo RPC autoalojado (ver requisitos de hardware y descripción general de la configuración) |
Las afirmaciones de latencia de los proveedores no son intercambiables. p50 es el tiempo de respuesta mediano, mientras que p99 captura el 1% más lento de las solicitudes y puede ser importante para operaciones sensibles al tiempo. Los resultados reales dependen de la mezcla de métodos, la carga, la proximidad geográfica, el almacenamiento en caché y los límites del plan, por lo que se debe comparar el patrón de solicitud previsto antes de elegir un plan de pago.
Conectar su aplicación a un nodo RPC de Solana usando @solana/web3.js
Cambiar del endpoint público de la Fundación Solana a un proveedor privado requiere cambiar una línea en su aplicación: la cadena URL pasada al constructor Connection.
Nota de versión: Los ejemplos de código en esta sección utilizan @solana/web3.js v1.x, el estándar de producción actual. Solana Labs está desarrollando la v2.0 con una API significativamente diferente. Si está utilizando la v2.0, consulte la documentación oficial de la v2.0 para métodos equivalentes.
Instalar y conectar
Paso 1: Instalar el paquete
npm install @solana/web3.jsPaso 2: Instanciar una conexión y consultar un saldo
import { Connection, PublicKey, LAMPORTS_PER_SOL } from "@solana/web3.js";
// Obtenga el endpoint de una variable de entorno; nunca codifique una URL privada
const RPC_ENDPOINT = process.env.RPC_URL ?? "https://api.devnet.solana.com";
const connection = new Connection(RPC_ENDPOINT, "confirmed");
async function getWalletBalance(address: string): Promise<void> {
const publicKey = new PublicKey(address);
// getBalance devuelve lamports; divida por LAMPORTS_PER_SOL (10^9) para obtener SOL
const balanceLamports = await connection.getBalance(publicKey);
const balanceSOL = balanceLamports / LAMPORTS_PER_SOL;
console.log(`Balance: ${balanceSOL} SOL`);
}
**Paso 3: Leer datos de la cuenta**
async function getAccountData(address: string): Promise<void> {
const publicKey = new PublicKey(address);
// getAccountInfo devuelve null si la cuenta no existe
const accountInfo = await connection.getAccountInfo(publicKey);
if (!accountInfo) {
console.log("Cuenta no encontrada");
return;
}
console.log("Programa propietario:", accountInfo.owner.toBase58());
console.log("Longitud de los datos (bytes):"), accountInfo.data.length);
console.log("Lamports:", accountInfo.lamports);
}
**Paso 4: Enviar una transacción**
import {
Transaction,
SystemProgram,
Keypair,
sendAndConfirmTransaction,
} from "@solana/web3.js";
async function transferSOL(
sender: Keypair,
recipientAddress: string,
amountSOL: number
): Promise<string> {
const recipient = new PublicKey(recipientAddress);
const lamports = amountSOL * LAMPORTS_PER_SOL;
const transaction = new Transaction().add(
SystemProgram.transfer({
fromPubkey: sender.publicKey,
toPubkey: recipient,
lamports,
})
);
// sendAndConfirmTransaction espera el compromiso "confirmado" antes de resolver
const signature = await sendAndConfirmTransaction(connection, transaction, [sender]);
return signature;
}
**Paso 5: Configurar el cambio de endpoint basado en el entorno**
Configure un módulo de configuración para intercambiar clústeres a través de una variable de entorno en lugar de modificar el código de la aplicación:
// config/rpc.ts
const RPC_ENDPOINTS: Record<string, string> = {
"mainnet-beta": "https://api.mainnet-beta.solana.com",
"devnet": "https://api.devnet.solana.com",
"private": process.env.PRIVATE_RPC_URL ?? "",
};
const NETWORK = process.env.SOLANA_NETWORK ?? "devnet";
export const connection = new Connection(RPC_ENDPOINTS[NETWORK], "confirmed");Nota de seguridad: Nunca codifique la URL de su endpoint RPC privado en JavaScript del lado del cliente. Una URL expuesta en el navegador filtra su Clave API a cualquiera que inspeccione el tráfico de red. Enrútela a través de un proxy del lado del servidor o una ruta de API backend.
Para obtener la referencia completa de la API de @solana/web3.js, consulte solana-labs.github.io/solana-web3.js.
Conexiones RPC HTTP vs. WebSocket: Cuándo usar cada una
| Escenario | Usar HTTP | Usar WebSocket |
|---|---|---|
| Obtener el saldo de una billetera una vez | Sí | No |
| Enviar una transacción | Sí | No |
| Monitorear una cuenta para cambios en tiempo real | No | Sí |
| Transmitir registros de transacciones para un programa | No | Sí |
| Seguir la confirmación de una firma específica | No | Sí |
Las conexiones WebSocket usan wss:// en lugar de https://. La mayoría de los proveedores administrados proporcionan ambos endpoints bajo el mismo plan.
// Suscripción WebSocket: monitorear cambios de cuenta en tiempo real
const publicKey = new PublicKey("YourAccountPublicKeyHere");
const connectionWithWS = new Connection(
process.env.RPC_URL ?? "https://api.devnet.solana.com",
{
commitment: "confirmed",
wsEndpoint: process.env.WSS_URL ?? "wss://api.devnet.solana.com",
}
);
// onAccountChange devuelve un ID de suscripción utilizado para la limpieza posterior
const subscriptionId = connectionWithWS.onAccountChange(
publicKey,
(accountInfo, context) => {
console.log("Cuenta modificada en slot:", context.slot);
console.log("Nuevo saldo en lamports:", accountInfo.lamports);
},
"confirmed"
);
// Elimina la suscripción cuando ya no sea necesaria:
// connectionWithWS.removeAccountChangeListener(subscriptionId);Gestión de límites de velocidad y errores 429
Un error 429 Too Many Requests de un endpoint público de Solana significa que tu aplicación ha superado el límite de velocidad por IP. Tres estrategias abordan esto:
- Cambia a un proveedor privado gestionado. Helius, QuickNode, Alchemy y Triton One ofrecen planes adaptados al tráfico de producción. Consulta la comparativa de proveedores RPC privados de Solana.
- Implementa retroceso exponencial (exponential backoff). Ante una respuesta 429, reintenta con un retraso que se duplica en cada intento (ver el código a continuación).
- Agrupa lecturas de cuentas con
getMultipleAccounts. Recuperar 20 cuentas en una sola llamada consume una solicitud en lugar de 20.
// Envoltorio de retroceso exponencial para cualquier llamada RPC
async function withRetry<T>(
fn: () => Promise<T>,
maxRetries: number = 5
): Promise<T> {
let attempt = 0;
while (attempt < maxRetries) {
try {
return await fn();
} catch (error: any) {
const is429 = error?.message?.includes("429");
if (is429 && attempt < maxRetries - 1) {
// Espera 500ms, luego 1s, luego 2s, luego 4s, luego 8s
const waitMs = 500 * Math.pow(2, attempt);
await new Promise((resolve) => setTimeout(resolve, waitMs));
attempt++;
} else {
throw error;
}
}
}
throw new Error("Se excedió el número máximo de reintentos");
}Métodos RPC de Solana: Qué puedes consultar
La API JSON-RPC de Solana expone más de 80 métodos. La siguiente tabla cubre los que los desarrolladores de dApps utilizan con más frecuencia.
Métodos RPC HTTP
| Categoría | Método | Descripción | Caso de Uso Común |
|---|---|---|---|
| Datos de cuenta | getAccountInfo | Devuelve todos los datos almacenados en una cuenta | Lectura del estado de cuentas propiedad de programas |
| Datos de cuenta | getBalance | Devuelve el saldo de SOL para una clave pública (en lamports) | Visualización del saldo de la cartera |
| Datos de cuenta | getTokenAccountBalance | Devuelve el saldo de tokens SPL para una cuenta de token | Saldo de la cartera de tokens |
| Datos de cuenta | getMultipleAccounts | Devuelve datos de varias cuentas en una sola llamada | Lecturas en lote (reduce la exposición a límites de velocidad) |
| Transacción | sendTransaction | Envía una transacción firmada a la red | Cualquier operación de escritura |
| Transacción | simulateTransaction | Simula una transacción sin transmitirla | Validación previa al vuelo |
| Transacción | getTransaction | Devuelve detalles de transacciones confirmadas por firma | Búsqueda del historial de transacciones |
| Bloque / Slot | getSlot | Devuelve la altura de slot actual | Monitorización del progreso de la cadena |
| Bloque / Slot | getLatestBlockhash | Devuelve el hash de bloque más reciente y el último slot válido | Requerido antes de enviar cualquier transacción |
| Bloque / Slot | getBlock | Devuelve todas las transacciones en un slot determinado | Análisis e indexación On-Chain |
getRecentBlockhash está obsoleto. Usa getLatestBlockhash en su lugar. El reemplazo también devuelve lastValidBlockHeight, lo que permite un manejo fiable del vencimiento de transacciones.
Métodos de suscripción WebSocket
| Método | Qué hace | Caso de uso común |
|---|---|---|
accountSubscribe | Envía actualizaciones cuando una cuenta específica cambia | Monitorización de saldos en tiempo real |
logsSubscribe | Transmite logs de transacciones que coinciden con un filtro | Monitorización de eventos DeFi, detección de acuñación NFT |
signatureSubscribe | Notifica cuando se confirma una firma de transacción | Seguimiento de confirmación de transacciones |
Las suscripciones WebSocket son adecuadas para cualquier dApp que necesite reaccionar a eventos On-Chain sin realizar sondeos. accountSubscribe se dispara cuando cambian los datos de una cuenta específica, útil para rastrear la cartera de un usuario o la cuenta de estado de un programa de Solana (el equivalente a un Contrato inteligente en Ethereum). logsSubscribe transmite logs de transacciones que coinciden con un filtro de ID de programa, utilizado por protocolos como Jupiter y Raydium para detectar eventos de intercambio a medida que ocurren.
Anchor, el framework de desarrollo de programas de Solana más utilizado, genera clientes TypeScript que llaman a estos métodos a través de @solana/web3.js internamente. La configuración de RPC se aplica de manera idéntica a las dApps basadas en Anchor.
Para la referencia completa de métodos, incluyendo parámetros, tipos de retorno y códigos de error, consulta la Documentación API de RPC de Solana.
Cómo ejecutar tu propio nodo RPC de Solana: Requisitos y resumen de configuración
Alojar tu propio nodo RPC de Solana te da control total, sin límites de velocidad y máxima privacidad de datos. La inversión en hardware asciende a miles de dólares, y mantener el nodo en buen estado requiere capacidad DevOps dedicada. Grandes protocolos, exchanges y equipos con capacidades de infraestructura existentes son la audiencia para este camino.
Requisitos de hardware
| Componente | Mínimo | Recomendado para Producción |
|---|---|---|
| CPU | 12 núcleos, 3.5 GHz o superior | 24 núcleos, alta velocidad de reloj |
| RAM | 256 GB DDR4 ECC | 512 GB DDR4 ECC |
| Almacenamiento | SSD NVMe de 2 TB | 2x SSD NVMe de 2 TB (volúmenes de ledger y cuentas separados) |
| Red | Dedicada de 1 Gbps, baja latencia | Dedicada de 10 Gbps |
| Sistema Operativo | Ubuntu 20.04 LTS | Ubuntu 22.04 LTS |
Los requisitos de hardware evolucionan a medida que crece la red. Verifica las especificaciones actuales con la documentación oficial de Solana en docs.solana.com/running-validator) antes de aprovisionar el hardware.
El modelo basado en cuentas de Solana almacena todo el estado del programa en cuentas individuales. Un nodo RPC completo debe mantener el estado actual de todas las cuentas activas en RAM para respuestas rápidas de consulta, además de datos históricos del ledger en SSD NVMe. El crecimiento del almacenamiento de 100 a 200 GB por día en mainnet-beta significa que los operadores deben planificar la rotación continua del ledger.
Resumen del proceso de configuración
Se requieren siete etapas. Cada paso enlaza con la documentación oficial de Solana para obtener detalles completos de configuración.
- Aprovisiona hardware que cumpla o supere las especificaciones anteriores.
- Instala el sistema operativo y configura los parámetros del kernel de Linux: aumenta los límites de descriptores de archivo
ulimity ajusta la configuración de redsysctlpara el alto volumen de tráfico UDP de Solana. - Instala la CLI de Solana y el binario del validador
agave(anteriormentesolana-validator) desde el canal de lanzamientos oficial de Solana Labs. - Configura el nodo para modo RPC pasando el flag
--no-votingpara deshabilitar la participación en consenso, y establece--rpc-port 8899(HTTP) y--rpc-pubsub-port 8900(WebSocket). - Descarga una instantánea (snapshot) del repositorio de instantáneas de la Fundación Solana para arrancar la sincronización desde un estado reciente en lugar de reproducir desde el génesis.
- Inicia el nodo y monitoriza el progreso de la sincronización usando
solana catchuppara seguir cuánto está atrasado el nodo respecto a la punta del cluster. - Configura reglas de firewall para exponer los puertos 8899 y 8900 solo a direcciones IP autorizadas. No expongas tu puerto RPC públicamente sin autenticación.
Tiempo de sincronización y mantenimiento continuo
La sincronización de instantáneas tarda de 1 a 3 días en hardware recomendado. Sincronizar desde el génesis tarda considerablemente más y no se recomienda.
El metal desnudo (bare metal) suele costar entre 500 y 1500 dólares al mes, dependiendo de las especificaciones y la geografía del centro de datos. Los equivalentes en la nube cuestan más debido a la sobrecarga de virtualización en cargas de trabajo intensivas en almacenamiento. El crecimiento del almacenamiento de 100 a 200 GB por día obliga a elegir entre preasignar volúmenes masivos o automatizar la poda del ledger.
Para equipos que evalúan la decisión de construir versus comprar, compara los costos de los proveedores gestionados en la sección de comparación de proveedores antes de comprometerte con la adquisición de hardware.
Errores comunes de RPC de Solana y cómo solucionarlos
429 Demasiadas solicitudes
Tu aplicación ha superado el límite de tasa por IP en el endpoint público de Solana. Para solucionarlo:
- Cambia a un proveedor privado gestionado. Helius, QuickNode, Alchemy y Triton One ofrecen planes adaptados para tráfico de producción. Ver comparación de proveedores privados de RPC de Solana.
- Implementa retroceso exponencial. Ante una respuesta 429, reintenta con un retraso que se duplique en cada intento. Un ejemplo de código se encuentra en la sección de manejo de límites de tasa.
- Agrupa lecturas de cuentas con
getMultipleAccounts. Obtener 20 cuentas en una sola llamada consume una solicitud en lugar de 20.
Tiempos de espera de confirmación de transacciones
Una transacción enviada a través de sendTransaction no se confirma. El hash del bloque puede haber expirado o la red puede haber estado congestionada. Para solucionarlo:
- Llama a
getLatestBlockhashinmediatamente antes de construir una transacción. No usesgetRecentBlockhash(obsoleto). - Comprueba
lastValidBlockHeightde la respuesta y reintenta antes de que se alcance esa altura. - Usa
sendAndConfirmTransactionen lugar desendTransactioncrudo para reintentos automáticos ante fallos transitorios.
Errores de límite de tasa en getProgramAccounts
getProgramAccounts es una de las llamadas RPC que más recursos consume. Los endpoints públicos a menudo la restringen o la rechazan por completo debido a la carga que impone en la infraestructura compartida. Si ves errores 403 o tiempos de espera específicamente en estas llamadas, actualiza a un proveedor de RPC privado con soporte explícito para consultas de grandes cuentas de programas.
Preguntas frecuentes: Nodos RPC de Solana
¿Qué es un nodo RPC de Solana?
Un nodo RPC de Solana es un servidor que implementa la API JSON-RPC de Solana, aceptando solicitudes de aplicaciones cliente y devolviendo datos del estado de la Blockchain. Las dApps, las billeteras y los exploradores de bloques los utilizan para leer saldos de cuentas, obtener el historial de transacciones y enviar transacciones firmadas a la red sin ejecutar una copia local del ledger.
Sirven propósitos diferentes. Un nodo RPC sirve datos a clientes externos a través de la API JSON-RPC, no participa en el consenso y no obtiene recompensas de staking. Un nodo validador vota sobre la validez de los bloques en cada slot, requiere SOL apostado y obtiene recompensas de SOL por votos correctos. Algunos operadores ejecutan ambos en el mismo hardware, pero los roles permanecen lógicamente separados.
Sí. Los endpoints públicos de la Fundación Solana en api.mainnet-beta.solana.com, api.devnet.solana.com y api.testnet.solana.com son gratuitos. Aplican un límite de tasa de aproximadamente 100 solicitudes por ventana de 10 segundos por dirección IP. Estos endpoints son suficientes para el desarrollo y las pruebas, pero no son adecuados para dApps de producción que atienden a usuarios reales.
Tres enfoques funcionan juntos: cambia a un proveedor de RPC privado gestionado para tráfico de producción; implementa retroceso exponencial para reintentar solicitudes fallidas con intervalos de espera crecientes; y agrupa múltiples lecturas de cuentas en llamadas getMultipleAccounts únicas en lugar de emitir un getAccountInfo por cuenta.
Como mínimo: una CPU de 12 núcleos, 256 GB de RAM DDR4, 2 TB de SSD NVMe y una conexión de red dedicada de 1 Gbps. Recomendado para producción: una CPU de 24 núcleos, 512 GB de RAM, 2 SSD NVMe de 2 TB y red de 10 Gbps. Verifica las especificaciones actuales con la documentación de validadores de Solana,) ya que los requisitos aumentan a medida que la red crece.
Calcula entre 1 y 3 días usando una instantánea reciente en hardware recomendado. Sincronizar desde el génesis lleva considerablemente más tiempo. La Fundación Solana proporciona instantáneas oficiales para acelerar el proceso.
El RPC HTTP utiliza un modelo de solicitud-respuesta sin estado. Tu aplicación envía una solicitud y recibe una respuesta, lo que funciona para consultas únicas como getBalance o sendTransaction. El RPC WebSocket utiliza una conexión persistente con un modelo de suscripción. Tu aplicación se suscribe a eventos on-chain y recibe notificaciones push cuando ocurren esos eventos. Usa WebSocket para cualquier función en tiempo real en tu dApp.
Helius y QuickNode son dos opciones frecuentemente discutidas, pero la visibilidad comunitaria no es prueba de idoneidad o rendimiento. Helius se adapta a equipos que construyen exclusivamente en Solana y necesitan APIs mejoradas nativas de Solana. QuickNode se adapta a equipos que soportan múltiples Blockchains bajo una sola cuenta. Triton One es la opción para cargas de trabajo institucionales donde la latencia p99 es la restricción principal. La elección correcta depende de tu carga de trabajo y de si las funciones específicas de Solana o el soporte multichain son más importantes.
Guías Relacionadas de Solana
Explora SOL en Bybit
Los lectores pueden revisar información actual del mercado de SOL) o el mercado Spot de SOL/USDT.). Estos enlaces proporcionan información de mercado y acceso; no validan una afirmación técnica ni implican que SOL sea adecuado para todos los lectores.
Existen tres caminos, y la mayoría de los equipos reconocerán inmediatamente cuál se ajusta a su etapa actual.
| Situación | Camino |
|---|---|
| Construyendo o probando localmente | Usa los endpoints públicos gratuitos de la Fundación Solana en devnet o testnet |
| dApp de producción sirviendo a usuarios | Usa un proveedor privado gestionado: Helius, QuickNode, Alchemy o Triton One según tu carga de trabajo |
| Protocolo grande, exchange o equipo con capacidad DevOps | Evalúa el auto-hosting: control total, sin límites de tasa, coste significativo de hardware y operación |
La fiabilidad del RPC afecta a las lecturas de la aplicación y al envío de transacciones, pero una duración de slot objetivo no es una garantía de confirmación y la latencia del RPC es solo un factor en si una transacción se confirma. Elige el nivel que se ajuste a tu escala actual y planifica actualizar antes de que los límites de tasa se conviertan en un problema para el usuario.
Próximos pasos:
- Regístrate para un nivel de desarrollo gratuito: helius.dev o quicknode.com
- Revisa la referencia completa de métodos JSON-RPC de Solana: docs.solana.com/api
- Revisa las especificaciones de hardware antes de aprovisionar para auto-hosting: Cómo ejecutar tu propio nodo RPC de Solana