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

¿Qué es JSON RPC Solana y cómo se usa?

Resumen

La API JSON-RPC de Solana es la forma estándar para que las aplicaciones interactúen con la red: consultar cuentas, enviar transacciones y suscribirse a actualizaciones en tiempo real. Este artículo explica los métodos principales, cómo conectarse a un endpoint y los errores comunes que se deben evitar al desarrollar en Solana.

Respuesta rápida: ¿Qué es Solana JSON-RPC?

Solana JSON-RPC es una API HTTP y WebSocket que permite a tu aplicación leer y escribir datos en la blockchain de Solana. Sigue la especificación JSON-RPC 2.0, lo que significa que envías un objeto JSON con un method y params, y el nodo responde con un resultado JSON o un error.

La mayoría de los desarrolladores lo usan para tres cosas:

  • Consultar el estado – saldos de cuentas, tenencias de tokens, detalles de transacciones y datos de bloques.
  • Enviar transacciones – serializar y enviar instrucciones firmadas.
  • Suscribirse a actualizaciones – notificaciones en tiempo real de cambios de cuentas, registros y actualizaciones de slots.

Si estás creando una wallet, un explorador, un bot de trading o cualquier dApp que necesite datos en vivo de Solana, JSON-RPC es la interfaz que usarás.

Guía de decisión: Endpoint público vs. Nodo dedicado

Antes de escribir tu primera solicitud, decide qué tipo de endpoint se adapta a tu carga de trabajo. La elección afecta la fiabilidad, los límites de velocidad y la cantidad de infraestructura que gestionas.

Carga de trabajoEndpoint públicoNodo dedicado
Prototipos, hackathon✅ BuenoExcesivo
dApp de producción con tráfico moderado⚠️ Posible pero arriesgado✅ Recomendado
Trading de alta frecuencia, indexador❌ No adecuado✅ Requerido
Llamadas intensivas a getProgramAccounts❌ A menudo limitado✅ Mejor aislamiento
Suscripciones WebSocket a escala⚠️ Conexiones limitadas✅ Conexiones dedicadas

Los endpoints públicos son gratuitos y convenientes para pruebas. OnFinality ofrece un endpoint público de Solana en https://solana.api.onfinality.io/public y un WebSocket en wss://solana.api.onfinality.io/public-ws. Sin embargo, los endpoints públicos son compartidos, por lo que pueden limitar o bloquear el uso intensivo.

Los nodos dedicados te brindan un endpoint RPC privado con tus propios límites de velocidad y recursos. Son la opción correcta cuando necesitas rendimiento constante, datos de archivo o configuraciones personalizadas. OnFinality proporciona nodos dedicados de Solana que puedes configurar en minutos. Consulta Precios de RPC y Redes compatibles para más detalles.

Si no estás seguro, comienza con el endpoint público para desarrollo y luego muévete a un nodo dedicado antes del lanzamiento en mainnet.

Métodos JSON-RPC de Solana que realmente usarás

La RPC de Solana tiene docenas de métodos, pero probablemente usarás un pequeño subconjunto. Aquí están los más comunes agrupados por propósito.

Consultas de cuentas y estado

  • getBalance – devuelve el saldo de SOL de una clave pública.
  • getAccountInfo – devuelve los datos de la cuenta, lamports, propietario y el indicador de ejecutable.
  • getTokenAccountsByOwner – lista las cuentas de tokens propiedad de una wallet.
  • getProgramAccounts – obtiene todas las cuentas propiedad de un programa (se usa mucho para indexación).

Datos de transacciones y bloques

  • getTransaction – recupera una transacción por firma, con JSON parseado opcional.
  • getBlock – devuelve las transacciones y metadatos de un bloque.
  • getLatestBlockhash – obtiene el blockhash actual, que necesitas para firmar transacciones.
  • sendTransaction – envía una transacción firmada al clúster.

Información de red y clúster

  • getVersion – devuelve la versión del software del nodo.
  • getSlot – obtiene el número de slot actual.
  • getEpochInfo – devuelve detalles de época y slot.

Suscripciones WebSocket

  • accountSubscribe – notifica cuando cambian los datos de una cuenta.
  • logsSubscribe – transmite registros de un programa o transacción.
  • slotSubscribe – notifica sobre nuevos slots.

Conexión a un endpoint RPC de Solana

Puedes llamar a Solana JSON-RPC con cualquier cliente HTTP. Aquí tienes un ejemplo básico de curl que obtiene el último blockhash:

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

Respuesta:

{
  "jsonrpc": "2.0",
  "result": {
    "context": {
      "slot": 123456789
    },
    "value": {
      "blockhash": "5xYk...",
      "lastValidBlockHeight": 123456789
    }
  },
  "id": 1
}

Para JavaScript, puedes usar la biblioteca oficial @solana/web3.js, que envuelve las llamadas RPC. Aquí te mostramos cómo conectarte y obtener un saldo:

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

const connection = new Connection('https://solana.api.onfinality.io/public');
const publicKey = new PublicKey('YourPublicKeyHere');
const balance = await connection.getBalance(publicKey);
console.log('Balance in lamports:', balance);

Para suscripciones WebSocket, puedes usar los métodos de suscripción del objeto Connection:

const subscriptionId = connection.onAccountChange(publicKey, (accountInfo) => {
  console.log('Account updated:', accountInfo);
});

Errores comunes de JSON-RPC y cómo solucionarlos

Los errores de RPC de Solana pueden ser crípticos. Aquí están los más frecuentes y su significado.

ErrorCausaSolución
-32002: Transaction simulation failedLa transacción fallaría si se ejecutaraRevisa los registros, simula con preflightCommitment
-32003: Transaction precompile verification failurePrograma o instrucción inválidosVerifica los IDs de programa y los datos de instrucción
-32004: Transaction signature verification failureLa firma es inválidaAsegúrate de haber firmado con el par de claves correcto
-32005: Blockhash not foundBlockhash expirado o inválidoObtén un blockhash nuevo y reintenta
-32007: Transaction expiredLa transacción no se confirmó a tiempoAumenta maxRetries o usa un blockhash más reciente
-32602: Invalid paramsLos parámetros están mal formadosVerifica los tipos de parámetros esperados por el método

Consejos de depuración

  • Simula siempre primero: Usa simulateTransaction antes de enviar para detectar errores sin gastar comisiones.
  • Verifica los niveles de compromiso: Usa confirmed o finalized para operaciones críticas.
  • Usa el explorador: Pega la firma de la transacción en Solana Explorer para ver registros detallados.
  • Habilita registros: Para errores de programa, suscríbete a los registros o usa getTransaction con encoding: "jsonParsed".

Lista de verificación para producción de RPC de Solana

Cuando pases a producción, verifica estos puntos para evitar tiempos de inactividad.

  • Usa un endpoint dedicado – los endpoints públicos no son fiables para producción.
  • Configura conmutación por error – ten un endpoint de respaldo en caso de que el principal falle.
  • Monitorea los límites de velocidad – rastrea tu uso y planifica picos.
  • Maneja reconexiones WebSocket – implementa lógica de reconexión automática.
  • Usa getLatestBlockhash con reintentos – el blockhash expira rápidamente.
  • Elige el compromiso correctoconfirmed es un buen valor predeterminado para la mayoría de las aplicaciones.
  • ¿Datos de archivo? – si necesitas estado histórico, asegúrate de que tu proveedor admita nodos de archivo.

Conclusiones clave

  • Solana JSON-RPC es la API estándar para leer y escribir datos en Solana.
  • Los endpoints públicos son adecuados para desarrollo, pero las aplicaciones de producción deben usar nodos dedicados.
  • Aprende los métodos principales: getBalance, getAccountInfo, sendTransaction y getLatestBlockhash.
  • Usa suscripciones WebSocket para actualizaciones en tiempo real.
  • Depura errores comunes simulando transacciones y verificando los niveles de compromiso.

Preguntas frecuentes

¿Cuál es la diferencia entre JSON-RPC y gRPC en Solana?

JSON-RPC es la API HTTP/WebSocket estándar, mientras que gRPC es un protocolo más nuevo y eficiente utilizado para transmitir datos. La mayoría de las aplicaciones usan JSON-RPC; gRPC es para indexadores de alto rendimiento.

¿Cómo obtengo un endpoint RPC de Solana?

Puedes usar un endpoint público como https://solana.api.onfinality.io/public o crear un nodo dedicado a través de un proveedor como OnFinality. Consulta la página de red de Solana para opciones.

¿Cuál es el mejor nivel de compromiso a usar?

Para la mayoría de los casos de uso, confirmed es un buen equilibrio entre velocidad y fiabilidad. Usa finalized solo cuando necesites certeza absoluta.

¿Puedo usar WebSocket con RPC de Solana?

Sí, Solana admite suscripciones WebSocket para actualizaciones en tiempo real. Usa el endpoint wss:// y métodos como accountSubscribe.

¿Cómo manejo los límites de velocidad en endpoints públicos?

Los endpoints públicos tienen límites. Para producción, usa un nodo dedicado o un proveedor que ofrezca límites más altos. La página de Precios de RPC de OnFinality tiene detalles.

¿Qué es un blockhash y por qué expira?

Un blockhash es un hash reciente que evita ataques de repetición. Expira después de unos pocos slots, por lo que debes obtener uno nuevo antes de cada transacción.

¿Cómo depuro una transacción fallida?

Usa simulateTransaction para ver errores sin enviar. También revisa los registros de la transacción a través del explorador o getTransaction con encoding: "jsonParsed".

¿Qué es getProgramAccounts y por qué es lento?

getProgramAccounts devuelve todas las cuentas propiedad de un programa. Puede ser lento y consumir muchos recursos, así que úsalo con moderación y considera alternativas de indexación.

¿Cómo elijo entre un nodo compartido y uno dedicado?

Los nodos compartidos son más baratos pero tienen límites de velocidad. Los nodos dedicados ofrecen mejor rendimiento y aislamiento. Evalúa tus necesidades de tráfico y fiabilidad.

¿Dónde puedo encontrar documentación de RPC de Solana?

La documentación oficial de Solana es un buen comienzo. Para detalles específicos del proveedor, consulta la página de red de Solana de OnFinality.

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