Logo
Nuevos usuarios de RPC: 35% de descuento el primer mesVer oferta
RPC Assistant

Descripción general de Solana RPC: Endpoints, métodos y qué configurar primero

Resumen

Solana RPC es la interfaz JSON-RPC que utiliza tu aplicación para leer cuentas, enviar transacciones y suscribirse a eventos en la cadena. Esta descripción general cubre la forma del endpoint, los métodos que llamarás con más frecuencia y la configuración que suele fallar primero cuando pasas de una demo a una aplicación en vivo. También explica cuándo un endpoint compartido es suficiente y cuándo un nodo dedicado de Solana es la mejor opción.

Solana RPC es la interfaz JSON-RPC que tu aplicación utiliza para comunicarse con un nodo de Solana. Cada saldo de billetera, cuenta de token, envío de transacción y suscripción a registros en una aplicación de Solana eventualmente se convierte en una llamada RPC. Esta descripción general explica cómo se ve el endpoint, qué métodos llamarás realmente y cómo decidir entre un endpoint compartido y un nodo dedicado antes de lanzar.

Si estás aquí porque buscaste la documentación de Solana RPC, la versión corta es: Solana expone una API JSON-RPC sobre HTTP para llamadas de solicitud/respuesta y sobre WebSocket para suscripciones. Apuntas tu cliente a una URL de endpoint, envías solicitudes JSON-RPC y recibes JSON de vuelta. Las decisiones interesantes son sobre qué endpoint usas, cómo manejas los niveles de compromiso y cómo mantienes la conexión saludable bajo carga.

Cuándo un endpoint compartido de Solana es suficiente (y cuándo no)

La mayoría de los equipos deberían comenzar con un endpoint compartido o público y pasar a infraestructura dedicada solo cuando aparezca una señal específica. Usa esto como un triaje rápido antes de dedicar tiempo a operaciones de nodos.

Señal que vesEl endpoint compartido suele ser suficienteMomento de considerar un nodo dedicado de Solana
Perfil de tráficoVolumen de solicitudes bajo a moderado, principalmente lecturasVolumen de solicitudes alto sostenido, ráfagas o muchas suscripciones WebSocket concurrentes
Tipo de carga de trabajoSaldos de billeteras, transferencias simples, panelesIndexadores, sistemas de trading, backends que llaman mucho a getProgramAccounts o getSignaturesForAddress
Sensibilidad a la latenciaTolerante a la cola compartidaRutas sensibles a la latencia donde deseas una ubicación predecible
Necesidades de datosSolo estado recienteConsultas históricas tipo archivo, escaneos grandes de registros o uso intensivo de getBlock
Control operativoNo quieres ejecutar nodosNecesitas aislamiento, límites personalizados o un endpoint privado

Si todavía estás en la primera columna, un endpoint compartido gestionado es el camino más rápido. OnFinality proporciona Solana RPC como una API gestionada, y puedes revisar detalles de la red Solana para el endpoint actual y el soporte de transporte. Si estás en la segunda o tercera columna, lee la sección de nodo dedicado a continuación antes de asumir que necesitas ejecutar hardware tú mismo.

La forma del endpoint: HTTP y WebSocket

Un endpoint de Solana RPC es una URL. Los endpoints HTTP manejan llamadas de solicitud/respuesta. Los endpoints WebSocket manejan suscripciones como accountSubscribe, logsSubscribe y slotSubscribe. El endpoint público de Solana de OnFinality sigue este patrón:

  • HTTP: https://solana.api.onfinality.io/public
  • WebSocket: wss://solana.api.onfinality.io/public-ws

Para aplicaciones en producción, normalmente usarás una clave API o un endpoint dedicado en lugar de la URL pública. El endpoint público es útil para pruebas rápidas, prototipos y verificar que la forma de tu solicitud sea correcta antes de integrarla en una aplicación.

Una configuración mínima se ve así:

import { Connection, PublicKey } from "@solana/web3.js";

const connection = new Connection(
  "https://solana.api.onfinality.io/public",
  { commitment: "confirmed" }
);

const balance = await connection.getBalance(
  new PublicKey("11111111111111111111111111111111")
);
console.log(balance);

La opción commitment es una de las fuentes más comunes de confusión, por lo que vale la pena establecerla deliberadamente en lugar de aceptar un valor predeterminado.

Niveles de compromiso y por qué cambian tus resultados

Solana no finaliza bloques instantáneamente. Una transacción pasa por los estados processed, confirmed y finalized. El nivel de compromiso que pasas a una llamada RPC le indica al nodo cuánta certeza deseas antes de devolver datos.

CompromisoQué significa en la prácticaUso típico
processedMás rápido, menos seguro; el nodo ha visto el bloque pero aún puede ser omitidoUI que necesita el estado más reciente posible y puede tolerar reversión
confirmedUna supermayoría de stake ha votado; poco probable que se reviertaLa mayoría de las lecturas de aplicaciones y confirmaciones de transacciones
finalizedMáxima certeza; el bloque está enraizadoContabilidad, liquidación y cualquier cosa que no deba revertirse

Un patrón práctico es leer con confirmed para saldos orientados al usuario y usar finalized cuando registras un valor que no debe cambiar. Mezclar niveles de compromiso en un solo flujo de trabajo es una fuente común de errores: una lectura de saldo en processed y una transacción confirmada en finalized pueden discrepar durante una ventana corta.

Métodos JSON-RPC principales de Solana que llamarás con más frecuencia

No necesitas memorizar la lista completa de métodos. La mayoría de las aplicaciones de Solana usan un subconjunto pequeño repetidamente, y el resto aparece solo para características específicas.

MétodoQué devuelveA tener en cuenta
getBalanceSaldo en lamports de una cuentaEl nivel de compromiso cambia el valor cerca de un límite de slot
getAccountInfoDatos de la cuenta, propietario, lamportsLas cuentas grandes aumentan el tamaño de la respuesta
getTokenAccountsByOwnerCuentas de token SPL de una billeteraPuede ser pesado para billeteras con muchas cuentas de token
getTransactionUna sola transacción por firmaDevuelve null si el nodo no la ha visto o la ha podado
getSignaturesForAddressFirmas recientes de una direcciónLa paginación importa; no solicites rangos ilimitados
getLatestBlockhashUn blockhash reciente para construir transaccionesLos blockhashes expiran; obtén uno cerca del momento de envío
sendTransactionEnvía una transacción firmadaManeja errores de preflight y reintentos explícitamente
simulateTransactionSimula una transacciónÚtil antes de enviar cualquier cosa que mueva fondos
getProgramAccountsCuentas propiedad de un programaCostoso; filtra agresivamente o espera tiempos de espera

Una llamada JSON-RPC directa se ve así:

curl https://solana.api.onfinality.io/public \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "getBalance",
    "params": [
      "11111111111111111111111111111111",
      {"commitment": "confirmed"}
    ]
  }'

Si estás depurando una biblioteca cliente, enviar la solicitud JSON-RPC sin procesar primero es una forma rápida de separar un problema de la biblioteca de un problema del endpoint.

Suscripciones WebSocket: qué cambia cuando dejas de hacer polling

Hacer polling de getSlot o getBalance en un bucle es simple pero derrochador. Las suscripciones WebSocket permiten que el nodo te envíe actualizaciones. La contrapartida es la gestión de conexiones: las suscripciones pueden caerse y necesitas lógica de reconexión.

const ws = new WebSocket("wss://solana.api.onfinality.io/public-ws");

ws.onopen = () => {
  ws.send(JSON.stringify({
    jsonrpc: "2.0",
    id: 1,
    method: "logsSubscribe",
    params: [
      { mentions: ["YourProgramPublicKeyHere"] },
      { commitment: "confirmed" }
    ]
  }));
};

ws.onmessage = (event) => {
  const message = JSON.parse(event.data);
  // Handle notification payloads here
};

Dos notas operativas. Primero, las suscripciones tienen estado: si el socket se cierra, tu suscripción desaparece y debe restablecerse. Segundo, una suscripción que nunca se limpia seguirá consumiendo recursos, así que cancela la suscripción cuando un componente se desmonte o un trabajo termine.

Modos de fallo comunes y cómo leerlos

La mayoría de los problemas de Solana RPC caen en unos pocos patrones. Reconocer el síntoma ahorra tiempo.

SíntomaCausa probableLo primero que hay que revisar
Respuestas 429 o limitaciónLa tasa de solicitudes excede la asignación del endpointTamaño del lote, frecuencia de polling y si estás reintentando con demasiada agresividad
getProgramAccounts agota el tiempoLa consulta es demasiado amplia para el endpointAgrega filtros, reduce el tamaño de los datos o pasa a un nodo dedicado
La transacción devuelve Blockhash not foundEl blockhash expiró antes del envíoObtén un blockhash fresco inmediatamente antes de enviar
La simulación de la transacción fallaEl estado de la cuenta cambió o la instrucción no es válidaVuelve a ejecutar simulateTransaction e inspecciona los registros
WebSocket deja de entregarEl socket se cayó o la suscripción expiróAgrega lógica de reconexión y resuscripción
Saldos inconsistentesLos niveles de compromiso difieren entre llamadasEstandariza el compromiso por flujo de trabajo

Un hábito útil es registrar el código y mensaje de error JSON-RPC sin procesar, no solo un genérico "request failed". Los códigos de error de Solana son lo suficientemente específicos como para indicarte la solución.

Endpoint compartido vs nodo dedicado de Solana

Una vez que conoces tu carga de trabajo, la cuestión de construir versus comprar se vuelve concreta. Ejecutar tu propio nodo de Solana significa aprovisionar hardware, mantenerte al día con las versiones del cliente y gestionar el crecimiento del almacenamiento. Un nodo dedicado gestionado te da un endpoint aislado sin esa carga operativa. Un endpoint compartido gestionado te da una API RPC funcional sin ninguna de las dos.

EnfoqueTú gestionasAdecuado para
Endpoint públicoNada, pero espera límites compartidosPrototipos, pruebas, scripts de bajo volumen
RPC compartido gestionado (OnFinality)Nada; obtienes un endpoint APIAplicaciones en producción con tráfico moderado, principalmente de lectura
Nodo dedicado gestionado (OnFinality)Decisiones de configuración, no hardwareLecturas de alto volumen, suscripciones pesadas, necesidades de aislamiento
Nodo autoalojadoHardware, actualizaciones, monitoreo, almacenamientoEquipos con requisitos específicos de cumplimiento o control

OnFinality ofrece Solana RPC como una API gestionada y nodos dedicados cuando necesitas aislamiento. Puedes comparar opciones en la página de precios de RPC y revisar redes RPC compatibles si también ejecutas en otras cadenas. Si aún estás decidiendo entre proveedores, la guía de selección de proveedor de RPC repasa los criterios de evaluación.

Una lista de verificación práctica para el despliegue

Antes de dirigir tráfico de producción a cualquier endpoint de Solana, confirma estos puntos:

  1. Los niveles de compromiso se establecen explícitamente por llamada, no se dejan en los valores predeterminados.
  2. Tienes una estrategia para getProgramAccounts y otras lecturas pesadas, como filtros o un nodo dedicado.
  3. El envío de transacciones obtiene un blockhash fresco y maneja errores de preflight.
  4. Los clientes WebSocket se reconectan y se vuelven a suscribir después de una caída.
  5. Registras los códigos de error JSON-RPC sin procesar para depuración.
  6. Conoces tu volumen de solicitudes esperado y lo has emparejado con un nivel de endpoint.
  7. Tienes un endpoint de respaldo o un plan de conmutación por error para rutas críticas.

Si no puedes responder al punto seis, comienza con un endpoint compartido y mide antes de comprometerte con infraestructura dedicada.

Puntos clave

  • Solana RPC es una API JSON-RPC disponible sobre HTTP para llamadas y WebSocket para suscripciones.
  • Los niveles de compromiso (processed, confirmed, finalized) cambian directamente los datos que recibes; establécelos deliberadamente.
  • Un conjunto pequeño de métodos cubre la mayoría de las aplicaciones, pero las lecturas pesadas como getProgramAccounts necesitan filtros o capacidad dedicada.
  • Las suscripciones WebSocket reducen el polling pero requieren lógica de reconexión y limpieza.
  • Elige un endpoint gestionado compartido para tráfico moderado y un nodo dedicado de Solana cuando necesites aislamiento o manejes lecturas pesadas.
  • OnFinality proporciona Solana RPC como una API gestionada; consulta detalles de la red Solana para endpoints actuales y soporte de transporte.

Preguntas frecuentes

¿Cuál es el formato del endpoint de Solana RPC?

Un endpoint de Solana RPC es una URL que acepta solicitudes JSON-RPC sobre HTTP, con una URL WebSocket separada para suscripciones. Los endpoints públicos de Solana de OnFinality son https://solana.api.onfinality.io/public para HTTP y wss://solana.api.onfinality.io/public-ws para WebSocket. Las aplicaciones en producción normalmente usan una clave API o un endpoint dedicado en lugar de la URL pública.

¿Qué nivel de compromiso debo usar?

Usa confirmed para la mayoría de las lecturas orientadas al usuario y confirmaciones de transacciones, y finalized para valores que no deben revertirse, como asientos contables. Usa processed solo cuando necesites el estado más reciente posible y puedas tolerar la posibilidad de un bloque omitido.

¿Por qué getProgramAccounts agota el tiempo de espera?

Escanea cuentas propiedad de un programa, y sin filtros el conjunto de resultados puede ser muy grande. Agrega filtros como tamaño de datos o restricciones memcmp, solicita solo los campos que necesitas o mueve esta carga de trabajo a un nodo dedicado con más margen.

¿Necesito un nodo dedicado de Solana?

No siempre. Comienza con un endpoint gestionado compartido y mide tu volumen de solicitudes, recuento de suscripciones y frecuencia de lecturas pesadas. Pasa a un nodo dedicado cuando necesites aislamiento, capacidad predecible o estés alcanzando repetidamente los límites en infraestructura compartida.

¿Cómo manejo las desconexiones de WebSocket?

Trata las suscripciones como con estado y desechables. Agrega lógica de reconexión, vuelve a suscribirte al reconectar y cancela la suscripción cuando el consumidor se apague. Registra los motivos de desconexión para poder distinguir problemas de red de límites del lado del endpoint.

¿Puedo usar OnFinality para Solana y otras cadenas?

Sí. OnFinality proporciona acceso a la API RPC en múltiples redes. Consulta redes RPC compatibles para la lista actual y precios de RPC para detalles del plan. Si necesitas capacidad aislada, revisa nodos dedicados.

Base de conocimiento RPC

Detalles RPC relacionados

Nunca te preocupes por la infraestructura nuevamente

OnFinality elimina la carga pesada de DevOps para que puedas construir de forma más inteligente y rápida.

Comenzar