En resumen: RPC y la indexación son dos enfoques fundamentalmente diferentes para acceder a los datos de la cadena de bloques. Los puntos finales RPC permiten consultar el estado actual de la cadena de bloques en tiempo real, una solicitud cada vez. La indexación extrae, transforma y almacena los datos de la cadena de bloques en una base de datos en la que se pueden realizar búsquedas, de modo que tu aplicación pueda ejecutar consultas complejas en registros históricos. El RPC es como pedirle a un bibliotecario que busque un libro concreto. La indexación es como crear un catálogo de fichas para toda la biblioteca. La mayoría de las aplicaciones en producción necesitan ambas cosas.
La explicación sencilla
Toda aplicación basada en blockchain necesita datos. Una cartera necesita los saldos de las cuentas. Un panel de control de DeFi necesita los precios de los tokens y el estado de los fondos de liquidez. Un mercado de NFT necesita registros de propiedad e historiales de transacciones. Una plataforma de análisis necesita métricas agregadas de miles de contratos y millones de transacciones. La cuestión es cómo obtener esos datos de la cadena de bloques para incorporarlos a tu aplicación.
Los puntos finales RPC son la interfaz nativa de la cadena de bloques. Cuando tu aplicación envía una solicitud JSON-RPC a un nodo, está planteando una pregunta directa sobre el estado actual o reciente de la cadena de bloques: cuál es el saldo actual de esta cartera, qué ocurrió en esta transacción concreta, qué contiene el bloque número 20.000.000. El nodo busca la respuesta y la devuelve. El RPC es inmediato, preciso y sencillo para consultas puntuales. Pero tiene una limitación fundamental: los métodos RPC están diseñados para recuperar datos específicos y conocidos, no para realizar búsquedas o agregaciones en toda la cadena. No existe ningún método RPC para «buscar todas las transacciones de esta cartera en los últimos 30 días» o «mostrar los 10 fondos de liquidez principales por volumen».
La indexación cubre esta carencia creando una base de datos consultable a partir de los datos sin procesar de la cadena de bloques. Un indexador lee cada bloque a medida que se genera, descodifica las transacciones y los registros de eventos, transforma los datos sin procesar en registros estructurados y escribe dichos registros en una base de datos con los índices adecuados. Una vez indexados, tu aplicación puede consultar los datos mediante SQL, GraphQL o cualquier otro lenguaje de consulta que admita tu base de datos. De este modo, se hacen posibles los filtros complejos, las agregaciones, la ordenación, las uniones y la búsqueda de texto completo.
Cuándo utilizar RPC
RPC es la opción adecuada cuando tu aplicación necesita leer o escribir datos específicos y conocidos en tiempo real. Para comprobar el saldo actual de ETH de un monedero basta con una sola llamada a «eth_getBalance». Para enviar una transacción firmada al mempool se necesita «eth_sendRawTransaction». Para leer el valor de retorno de la función «view» de un contrato inteligente se utiliza «eth_call». Todas estas son consultas puntuales en las que sabes exactamente lo que quieres y el método RPC puede devolvértelo directamente.
El RPC es también la única opción para las operaciones de escritura. No es posible enviar una transacción a través de un indexador. Los indexadores son sistemas de solo lectura que procesan los datos una vez que se han confirmado en la cadena. Siempre que tu aplicación necesite enviar una transacción, aprobar un token, interactuar con un contrato inteligente o transmitir cualquier operación que modifique el estado, deberá hacerlo a través de un RPC endpoint.
La verificación del estado en tiempo real es otro de los puntos fuertes del RPC. Cuando un protocolo DeFi necesita comprobar el ratio de garantía de un usuario antes de ejecutar una liquidación, o cuando un puente necesita verificar que se ha confirmado un depósito, consulta el estado actual del nodo a través del RPC. La respuesta refleja el último bloque canónico, lo que garantiza que los datos sean lo más recientes posible.
Donde el RPC se queda corto es en cualquier consulta que requiera escanear, filtrar o agregar datos a lo largo de múltiples bloques o contratos. «Muéstrame todas las transferencias ERC-20 en las que participe esta dirección» requiere recorrer cada bloque y comprobar cada recibo de transacción, lo cual resulta computacionalmente inviable solo mediante el RPC. «¿Cuál es el volumen total de operaciones en Uniswap V3 en las últimas 24 horas?» requiere descodificar y sumar los registros de eventos de miles de bloques en docenas de contratos de pool. Se trata de problemas de indexación.
Cuándo utilizar la indexación
La indexación es esencial siempre que tu aplicación necesite buscar, filtrar, ordenar o agregar datos de la cadena de bloques. Las herramientas de seguimiento de carteras que muestran el historial completo de transacciones de un usuario en múltiples tokens y cadenas dependen de datos indexados. Los paneles de análisis que muestran el volumen de operaciones, las tendencias del TVL, los patrones de consumo de gas y las métricas de los protocolos se basan íntegramente en bases de datos indexadas. Los exploradores de bloques, como Etherscan, indexan toda la cadena para que los usuarios puedan buscar cualquier dirección, transacción o contrato.
El análisis histórico es otro caso de uso fundamental de la indexación. Si un equipe de cumplimiento normativo necesita rastrear el flow de los fondos a través de una serie de monederos durante seis meses, ello requiere consultar datos de transacciones indexados con uniones y filtros complejos. Si una empresa de investigación desea analizar los patrones de extracción de MEV a lo largo de un año de bloques de Ethereum , necesita un índice exhaustivo de transacciones, trazas y registros de eventos, y que la carga computacional de esas consultas la asuma una base de datos, no un nodo de cadena de bloques.
Las arquitecturas basadas en eventos también se benefician de la indexación. En lugar de realizar sondeos en los puntos finales RPC para detectar cuándo se activa un evento concreto de un contrato inteligente, un indexador puede procesar continuamente los nuevos bloques y enviar los eventos coincidentes a tu aplicación en tiempo real. Esto resulta más fiable que las suscripciones a WebSocket (que pueden desconectarse y perder eventos) y más eficiente que el sondeo HTTP (que desperdicia solicitudes en respuestas vacías).
Usar ambos a la vez
La mayoría de las aplicaciones de blockchain de producción utilizan una combinación de RPC e indexación. La experiencia de lectura que ve el usuario suele basarse en datos indexados: valores de carteras, historiales de transacciones, paneles de análisis y resultados de búsqueda. Cuando el usuario realiza una acción (enviar una transacción, intercambiar tokens o acuñar un NFT), la aplicación cambia a RPC para enviar la transacción a la red y confirmar su inclusión. Una vez confirmada la transacción, el indexador la recoge del nuevo bloque y actualiza la base de datos, lo que a su vez se refleja en la interfaz de usuario.
Esta arquitectura separa claramente las funciones. RPC se encarga de las escrituras en tiempo real y de las lecturas puntuales. Las bases de datos indexadas se encargan de las lecturas complejas y de las consultas históricas. El resultado es una aplicación que resulta rápida y ágil para los usuarios, al tiempo que admite patrones sofisticados de acceso a los datos entre bastidores.
¿Cuál es la diferencia entre RPC y la indexación?
En resumen, un RPC ( endpoint ) responde a preguntas directas sobre el estado actual o específico, mientras que la indexación de la cadena de bloques procesa previamente la cadena para convertirla en una base de datos en la que se pueden realizar búsquedas y agregaciones. La tabla siguiente muestra las diferencias prácticas en una comparación lado a lado.
Aspecto | RPC | Indexación |
|---|---|---|
Patrón de acceso | Una pregunta, una respuesta | Buscar, filtrar y agrupar |
Actualidad de los datos | En tiempo real, último bloque | Ligero retraso respecto a la punta de la cadena |
Profundidad histórica | Se necesita un nodo de archivo | Almacenados y consultables al instante |
¿Es un indexador más rápido que RPC para las consultas históricas?
Para cualquier cosa que abarque muchas cadenas de bloques, sí. Solicitar a un nodo RPC el historial completo de un monedero implica escanear cadena de bloques por cadena de bloques, mientras que un indexador ya ha descodificado y almacenado esos datos, por lo que la misma consulta se resuelve con una única consulta rápida. Cuanto más antiguo es el historial, mayor es la diferencia: descubre por qué resulta complicado consultar los datos de la cadena de bloques y cómo los datos en tiempo real y los históricos apuntan en direcciones opuestas.
Tipo de consulta | La mejor herramienta | ¿Por qué? |
|---|---|---|
Saldo o situación actual | RPC | Directo y en tiempo real |
Enviar una transacción | RPC | Solo RPC puede escribir |
Historial de transacciones del monedero | Indexador | Es necesario realizar una búsqueda en todos los bloques |
Volumen del protocolo o TVL |
¿Se puede crear un indexador de blockchain basado en RPC?
Sí, y casi todos los indexadores lo hacen. Un indexador lee la cadena a través de RPC o de un flujo de datos en tiempo real, descodifica cada bloque y escribe filas estructuradas en su propia base de datos. Lo complicado es gestionar de forma fiable las reorganizaciones, los reintentos y las lagunas, por lo que muchos equipos utilizan un canal gestionado de transmisión de datos de la cadena de bloques en lugar de crear manualmente bucles de sondeo RPC.
¿La indexación sustituye al RPC?
No. La indexación y el RPC son capas complementarias de la pila de infraestructura de Web3. El RPC sigue siendo la única forma de enviar transacciones y leer el estado actualizado, mientras que la indexación permite realizar búsquedas, consultar el historial y realizar análisis. Las aplicaciones en producción dirigen las operaciones de escritura y las lecturas en tiempo real al RPC, y las lecturas complejas a un índice.
Preguntas frecuentes
¿Se pueden enviar transacciones a través de un indexador?
No. Los indexadores son sistemas de solo lectura que procesan los datos una vez que se han registrado en la cadena. Cada envío de transacción debe pasar por un RPC endpoint.
¿Por qué el RPC es lento en las consultas analíticas?
RPC devuelve un dato concreto por cada llamada y no puede filtrar ni agregar datos a lo largo de la cadena. Responder a una pregunta de análisis con RPC implica realizar miles de llamadas secuenciales y combinar los resultados uno mismo, lo cual resulta lento y costoso.
¿Qué grado de actualidad tienen los datos indexados en comparación con el RPC?
Los datos indexados suelen ir con un retraso de entre unos segundos y unos minutos respecto a la punta de la cadena, dependiendo del indexador. RPC refleja el último bloque canónico, por lo que, para obtener información actualizada en menos de un segundo, sigue siendo necesario leer directamente desde un nodo.
¿Necesitas un nodo de archivo para la indexación?
Para completar el historial antiguo, necesitas datos de archivo, ya sea de un nodo de archivo o de un proceso de completado. Consulta la diferencia entre un nodo completo y un nodo de archivo.
¿The Graph es un indexador o un proveedor de RPC?
The Graph es un protocolo de indexación. Sus propios indexadores leen la cadena a través de RPC y exponen el resultado procesado en forma de subgrafos consultables. Por sí solo, no puede enviar transacciones ni proporcionar datos en tiempo real en menos de un segundo.
Cómo « Quicknode » da soporte a ambos
Quicknode proporciona la infraestructura necesaria para ambos lados de esta ecuación. La API Core ofrece acceso RPC distribuido a nivel mundial y de baja latencia en más de 80 cadenas, gestionando lecturas en tiempo real y el envío de transacciones con un tiempo de actividad del 99,99 % y tiempos de respuesta 2,5 veces más rápidos que los de la competencia. Los métodos mejorados de la API reducen el número de llamadas RPC individuales necesarias para operaciones habituales, como consultar saldos de tokens o colecciones de NFT.
Quicknode Streams Tiende un puente entre el RPC y la indexación al proporcionar un canal de datos basado en envíos que entrega datos de la cadena de bloques, sin procesar o filtrados, directamente a tu base de datos, almacén de datos o webhook. En lugar de crear y mantener una infraestructura de sondeo RPC personalizada para alimentar tu indexador, configuras un Stream y Quicknode se encarga de la extracción, el filtrado, la entrega, la corrección de reorganizaciones y la lógica de reintentos de los datos. Streams admite tanto la transmisión en tiempo real como el rellenado histórico, por lo que puedes poblar tu índice desde el origen y mantenerlo actualizado con una única herramienta. Para los equipos que necesiten crear su propio indexador, Quicknode publica una guía paso a paso que muestra cómo crear un indexador de blockchain completo respaldado por PostgreSQL utilizando Streams.
Lecturas recomendadas
Guía para realizar solicitudes RPC eficientes - Quicknode
Creación de un indexador de blockchain con Streams - Quicknode Guía
Introducción a Streams - Quicknode Documentación
Quicknode API principal