Logo
Nuevos usuarios de RPC: 35% de descuento el primer mesVer oferta
OnFinality Learn
Infraestructura y Operaciones12 min de lectura

Nodo de Archivo vs Nodo Completo: ¿Cuál es la Diferencia Real?

Comprende las diferencias en retención de datos, capacidades de consulta y costos entre nodos completos, de archivo y de rastreo en cadenas EVM, y cuándo realmente necesitas acceso RPC de archivo.

TL;DR

Un nodo completo almacena solo el estado más reciente (por ejemplo, los últimos 128 bloques en Ethereum) y puede servir datos actuales, mientras que un nodo de archivo retiene todos los cambios de estado históricos desde el génesis, permitiendo consultas como eth_call en cualquier bloque pasado. Los nodos de archivo requieren significativamente más disco (varios TB) y son más costosos de operar, pero son esenciales para dApps que necesitan estado histórico, análisis o depuración profunda. Los nodos de rastreo añaden aún más capacidad al almacenar rastros de ejecución. Elige según tus patrones de consulta: si solo necesitas el estado actual, un nodo completo es suficiente; si necesitas estado histórico, usa un nodo de archivo o un proveedor de RPC que ofrezca acceso de archivo.

La Respuesta Corta: Completo vs Archivo vs Rastreo

La diferencia principal entre un nodo completo y un nodo de archivo es cuánto estado histórico mantienen. Un nodo completo en Ethereum poda los datos de estado más antiguos que 128 bloques (aproximadamente 5 minutos), manteniendo solo el trie de estado más reciente y los datos de bloques recientes. Un nodo de archivo retiene cada cambio de estado desde el génesis, permitiéndote consultar el estado en cualquier bloque histórico. Un nodo de rastreo va más allá al almacenar rastros de ejecución para cada transacción, habilitando la reproducción y depuración profunda.

Esta distinción es importante para llamadas RPC como eth_call, eth_getBalance y eth_getStorageAt. En un nodo completo, estas llamadas solo funcionan para el bloque más reciente o un bloque dentro de la ventana de retención. En un nodo de archivo, puedes especificar cualquier número de bloque y obtener el estado exacto en ese punto. Por ejemplo, eth_call con un parámetro de bloque de 0x1000000 (bloque 16,777,216) fallará en un nodo completo pero tendrá éxito en un nodo de archivo.

La compensación es almacenamiento y costo. Un nodo completo de Ethereum requiere aproximadamente 1 TB de disco, mientras que un nodo de archivo puede requerir 2-4 TB o más, dependiendo del cliente y la configuración de poda. Esto se traduce directamente en mayores costos de hardware y operación. Para muchas aplicaciones, un nodo completo es suficiente, pero si necesitas datos históricos, necesitas acceso de archivo.

  • Nodo completo: almacena el estado más reciente (últimos 128 bloques en Ethereum) y puede servir datos actuales.
  • Nodo de archivo: almacena todos los cambios de estado históricos, permitiendo consultas en cualquier bloque.
  • Nodo de rastreo: almacena rastros de ejecución, permitiendo reproducción y depuración profunda.
curl -s https://eth.api.onfinality.io -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_call","params":[{"to":"0x0000000000000000000000000000000000000000","data":"0x"}, "0x1000000"],"id":1}'

Cómo Poda el Estado un Nodo Completo: La Ventana de 128 Bloques

Para entender por qué los nodos completos no pueden servir estado histórico, necesitas saber cómo los clientes de Ethereum gestionan el estado. Ethereum usa un Trie de Merkle Patricia para almacenar saldos de cuentas, nonces y almacenamiento de contratos. Cuando se procesa un bloque, el trie se actualiza. Para mantener el uso de disco manejable, la mayoría de los clientes implementan poda de estado: eliminan nodos del trie que ya no son referenciados por el estado más reciente. En Ethereum, el valor predeterminado es mantener el estado de los últimos 128 bloques, que son aproximadamente 5 minutos.

Esta poda es segura para el consenso porque la red solo necesita el estado más reciente para validar nuevos bloques. Sin embargo, significa que si consultas un bloque más antiguo que 128 bloques, el nodo no puede reconstruir el estado porque los nodos del trie han desaparecido. El nodo aún puede servir encabezados de bloque, transacciones y recibos, pero no el estado.

Otras cadenas tienen diferentes políticas de retención. Por ejemplo, los nodos completos de Solana (llamados validadores) mantienen el estado de la época actual y pueden configurarse para retener más, pero también podan el estado histórico. Los nodos completos de Polkadot mantienen el estado de los últimos 256 bloques por defecto, pero pueden configurarse para archivar todo el estado. El principio es el mismo: los nodos completos optimizan el uso de disco descartando el estado histórico.

Es por esto que cuando usas un endpoint RPC público respaldado por un nodo completo, podrías obtener un error como "message":"missing trie node" al consultar estado histórico. El nodo simplemente no tiene los datos.

  • Los nodos completos de Ethereum podan el estado más antiguo que 128 bloques (aproximadamente 5 minutos).
  • Los validadores de Solana podan el estado más antiguo que la época actual por defecto.
  • Los nodos completos de Polkadot mantienen el estado durante 256 bloques a menos que se configuren de otra manera.
curl -s https://eth.api.onfinality.io -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_getBalance","params":["0x742d35Cc6634C0532925a3b844Bc454e4438f44e", "0x1000000"],"id":1}'

Qué Almacenan Realmente los Nodos de Archivo

Un nodo de archivo almacena cada cambio de estado histórico desde el génesis. Esto significa que para cada bloque, mantiene el trie de estado completo después de que ese bloque fue procesado. Esto te permite consultar el estado en cualquier número de bloque, no solo el más reciente. Por ejemplo, puedes llamar a eth_getBalance con un número de bloque de hace años y obtener el saldo exacto en ese momento.

El requisito de almacenamiento es significativamente mayor. Según ethereum.org, un nodo de archivo requiere 2-4 TB de espacio en disco, en comparación con aproximadamente 1 TB para un nodo completo. Esto se debe a que el nodo de archivo almacena múltiples versiones del trie de estado, y los nodos del trie nunca se eliminan.

El tamaño exacto depende del cliente y su configuración de poda. Por ejemplo, el modo de archivo de Geth almacena todo el estado, mientras que el modo de archivo de Erigon usa una estructura de datos diferente que es más eficiente en disco. Algunos clientes también ofrecen una sincronización 'snap' que puede reducir el tiempo de sincronización inicial, pero los datos de archivo siguen creciendo con el tiempo.

Debido a los mayores requisitos de disco y E/S, los nodos de archivo son más costosos de operar. Requieren discos más rápidos (SSD NVMe) y más RAM para manejar la carga de lectura/escritura aumentada. Es por esto que muchos desarrolladores eligen usar un proveedor de RPC que ofrezca acceso de archivo en lugar de operar su propio nodo de archivo.

  • Los nodos de archivo almacenan el trie de estado completo después de cada bloque.
  • Uso de disco: 2-4 TB para nodos de archivo de Ethereum, creciendo con el tiempo.
  • Mayores requisitos de hardware: SSD NVMe, más RAM y CPU más rápida.
curl -s https://eth.api.onfinality.io -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_getStorageAt","params":["0x6B175474E89094C44Da98b954EedeAC495271d0F", "0x0", "0x1000000"],"id":1}'

Nodos de Rastreo: El Siguiente Nivel de Datos Históricos

Un nodo de rastreo va más allá del estado de archivo al almacenar rastros de ejecución para cada transacción. Estos rastros registran cada paso de la ejecución de la EVM, incluyendo opcodes, consumo de gas y cambios de estado. Esto habilita herramientas poderosas de depuración y análisis como debug_traceTransaction y trace_block.

Los nodos de rastreo son utilizados por exploradores de bloques, plataformas de análisis y desarrolladores que necesitan entender exactamente cómo se ejecutó una transacción. Por ejemplo, puedes reproducir una transacción para ver por qué falló, o calcular el gas utilizado por cada llamada interna.

El costo de almacenamiento es incluso mayor que el de un nodo de archivo porque los rastros son verbosos. Un nodo de rastreo puede requerir 5-10 TB de disco para Ethereum, dependiendo del cliente y el nivel de detalle almacenado. Algunos proveedores ofrecen endpoints de rastreo como una característica premium.

Si solo necesitas estado histórico (saldos, almacenamiento, llamadas), un nodo de archivo es suficiente. Si necesitas depurar transacciones o analizar detalles de ejecución, necesitas un nodo de rastreo.

  • Los nodos de rastreo almacenan rastros de ejecución para cada transacción.
  • Habilitan métodos como debug_traceTransaction y trace_block.
  • El uso de disco puede ser de 5-10 TB para nodos de rastreo de Ethereum.
curl -s https://eth.api.onfinality.io -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"trace_block","params":["0x1000000"],"id":1}'

Cómo Probar si tu Endpoint RPC es de Archivo o Completo

Puedes determinar fácilmente si un endpoint RPC está respaldado por un nodo de archivo o un nodo completo haciendo una simple solicitud eth_call o eth_getBalance para un bloque muy antiguo. Si el nodo devuelve un resultado, es un nodo de archivo; si devuelve un error como "missing trie node" o "header not found", es un nodo completo.

Aquí tienes un comando curl que puedes ejecutar contra cualquier endpoint RPC de Ethereum. Reemplaza la URL con tu endpoint y elige un número de bloque del pasado (por ejemplo, 0x1000000 para el bloque 16,777,216, que es alrededor de 2021).

curl -s https://your-rpc-endpoint -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_getBalance","params":["0x742d35Cc6634C0532925a3b844Bc454e4438f44e", "0x1000000"],"id":1}'

Si la respuesta contiene un campo result con un valor hexadecimal, el endpoint tiene datos de archivo. Si contiene un campo error, es probablemente un nodo completo. Ten en cuenta que algunos proveedores pueden tener un endpoint de archivo separado, así que consulta su documentación.

Para otras cadenas, el principio es similar. Por ejemplo, en Polkadot, puedes consultar state_getStorage con un hash de bloque del pasado. En Solana, puedes consultar getAccountInfo con una ranura específica, pero ten en cuenta que los nodos de archivo de Solana son menos comunes y a menudo requieren configuración especial.

  • Usa eth_getBalance con un número de bloque antiguo para probar la disponibilidad de archivo.
  • Un resultado exitoso indica datos de archivo; un error indica un nodo completo.
  • Consulta la documentación del proveedor para endpoints específicos de archivo.
curl -s https://your-rpc-endpoint -X POST -H "Content-Type: application/json" --data '{"jsonrpc":"2.0","method":"eth_getBalance","params":["0x742d35Cc6634C0532925a3b844Bc454e4438f44e", "0x1000000"],"id":1}'

¿Cuándo Necesitas Realmente Acceso de Archivo?

La mayoría de las aplicaciones solo necesitan el estado actual. Si estás construyendo una billetera, un frontend de DEX o un panel de análisis simple, un nodo completo es suficiente. Solo necesitas acceso de archivo si tienes un caso de uso específico que requiera estado histórico.

Los casos de uso comunes para nodos de archivo incluyen:

  • Análisis histórico: Consultar saldos o almacenamiento en un bloque pasado específico para investigación o informes.

  • Auditoría y cumplimiento: Probar que cierto estado existió en un momento determinado.

  • Depuración de contratos inteligentes: Reproducir transacciones o inspeccionar cambios de estado a lo largo del tiempo.

  • Construcción de indexadores: Rellenar datos para subgrafos o indexadores personalizados que necesitan estado histórico.

  • Gobernanza y votación: Verificar el poder de voto en un bloque de instantánea pasado.

Si necesitas acceso de archivo, tienes dos opciones: operar tu propio nodo de archivo o usar un proveedor de RPC que ofrezca endpoints de archivo. Operar tu propio nodo de archivo te da control total pero requiere hardware y mantenimiento significativos. Usar un proveedor es más simple y a menudo más rentable, especialmente para equipos pequeños.

En OnFinality, ofrecemos endpoints RPC de archivo para múltiples redes, incluyendo Ethereum, Polkadot y Solana. Puedes consultar nuestras páginas de redes para disponibilidad y precios para costos.

  • Un nodo completo es suficiente para la mayoría de las dApps que solo necesitan el estado actual.
  • El acceso de archivo es necesario para consultas históricas, auditorías y depuración.
  • Considera usar un proveedor de RPC gestionado para evitar la carga operativa.

Compensaciones de Costo y Almacenamiento: Completo vs Archivo

La principal compensación es almacenamiento y costo. Aquí tienes una tabla de comparación basada en requisitos típicos para Ethereum (a partir de 2026):

Tipo de NodoUso de DiscoRAMCosto (mensual, autoalojado)Costo (RPC gestionado)
Completo~1 TB16 GB$50-$100$0 (nivel gratuito)
Archivo2-4 TB32 GB$200-$400$20-$100
Rastreo5-10 TB64 GB$500-$1000$100-$500

Estas son estimaciones aproximadas; los costos reales varían según el proveedor de nube, el tipo de disco y la red. Los nodos de archivo requieren SSD NVMe para manejar la carga de E/S, lo que aumenta el costo. Los proveedores de RPC gestionados a menudo cobran por solicitud o por mes, pero manejan la infraestructura por ti.

Si estás operando tu propio nodo, considera usar un cliente como Erigon, que es más eficiente en disco para el modo de archivo. Erigon puede reducir el almacenamiento de archivo hasta en un 50% en comparación con Geth, según la documentación de Erigon.

Para muchos equipos, usar un proveedor de RPC gestionado es más rentable que operar un nodo de archivo internamente, especialmente cuando se consideran mantenimiento, monitoreo y tiempo de actividad. Consulta nuestros precios de RPC para costos transparentes.

  • Los nodos de archivo requieren 2-4 veces más disco que los nodos completos.
  • Los proveedores de RPC gestionados pueden ser más rentables para el acceso de archivo.
  • Erigon reduce el almacenamiento de archivo en comparación con Geth.

Errores Comunes y Cómo Evitarlos

Al trabajar con nodos completos y de archivo, los desarrolladores a menudo se encuentran con varios errores:

  • Asumir que todos los endpoints RPC son de archivo: Muchos endpoints públicos son nodos completos. Siempre prueba con un bloque antiguo antes de confiar en consultas históricas.

  • Usar eth_call con un número de bloque en un nodo completo: Esto fallará para bloques fuera de la ventana de retención. Usa eth_call con latest o un bloque reciente.

  • No considerar el crecimiento del estado: Los nodos de archivo crecen con el tiempo. Planifica la expansión del disco o usa un proveedor que maneje el escalado.

  • Ignorar las diferencias de cliente: Diferentes clientes tienen diferentes comportamientos de poda y archivo. Prueba tus consultas en el cliente específico que uses.

  • Pagar de más por acceso de archivo: Si solo necesitas consultas históricas ocasionales, considera usar un proveedor con precios de pago por solicitud en lugar de un nodo de archivo dedicado.

Para evitar estos errores, siempre prueba tus consultas contra tu endpoint elegido y comprende la política de retención del nodo que estás usando. Para aplicaciones de producción, considera usar un servicio de RPC gestionado que ofrezca endpoints completos y de archivo, para que puedas cambiar según sea necesario.

  • Prueba tu endpoint RPC para soporte de archivo antes de confiar en consultas históricas.
  • Comprende la política de retención de tu nodo o proveedor.
  • Usa precios de pago por solicitud para consultas de archivo ocasionales.

Próximos Pasos: Elegir el Nodo Adecuado para tu Proyecto

Para decidir entre un nodo completo y uno de archivo, comienza enumerando tus patrones de consulta. Si solo necesitas el estado actual, un nodo completo es suficiente. Si necesitas estado histórico, necesitas acceso de archivo. Si necesitas rastros de ejecución, necesitas un nodo de rastreo.

Considera la siguiente lista de verificación de decisión:

  • ¿Consultas el estado en bloques más antiguos que 5 minutos? Si es así, necesitas archivo.

  • ¿Necesitas depurar transacciones o inspeccionar llamadas internas? Si es así, necesitas rastreo.

  • ¿Tienes el hardware y la experiencia para operar tu propio nodo? Si no, usa un proveedor gestionado.

  • ¿Cuál es tu presupuesto? Los nodos de archivo son más costosos, pero el RPC gestionado puede ser rentable.

Una vez que hayas decidido, puedes configurar tu propio nodo usando guías como nuestra guía de alojamiento de nodos blockchain o usar un servicio de RPC gestionado. OnFinality ofrece endpoints de archivo y rastreo para múltiples redes; consulta nuestras páginas de redes para detalles.

Para más sobre acceso a datos históricos, consulta nuestro artículo sobre acceso a datos históricos de blockchain. Y para optimizar tus llamadas RPC, lee sobre mejores prácticas de agrupación JSON-RPC.

  • Usa la lista de verificación para determinar tu tipo de nodo.
  • Considera el RPC gestionado para simplicidad y rentabilidad.
  • Explora los endpoints de archivo y rastreo de OnFinality.

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