Saltar al contenido
0%

Nodos de archivo: todo lo que necesitas saber

Alchemy team headshot

Escrito por Alchemy

Publicado el 21 de junio de 20228 min de lectura

Una blockchain pública como Ethereum o Polygon es una red global de computadoras peer-to-peer. Los nodos, como se conoce a cada dispositivo par, almacenan y procesan información de la blockchain y verifican el estado de la red, entre otras cosas.

Si bien los nodos pueden interactuar con otros pares en la blockchain, tienen distintas capacidades y casos de uso. Por ejemplo, los archive nodes (nodos de archivo) —de los que trata este artículo— pueden almacenar el historial completo de la blockchain y entregarlo cuando se solicita. Esto los diferencia de los full nodes, que solo almacenan el estado reciente de la blockchain, y de los light nodes, que principalmente solicitan datos a los full nodes.

Este resumen cubre en detalle los archive nodes y explica cómo funcionan en Ethereum. Aprenderás por qué es importante correr un archive node, qué clientes usar y cómo construir tu archive node para consultar datos históricos de la blockchain.

Diagrama que muestra cómo se conectan e interactúan los nodos peer-to-peer en una red blockchain.
Diagrama que muestra cómo se conectan e interactúan los nodos peer-to-peer en una red blockchain.

¿Qué es un archive node de Ethereum?

Un archive node de Ethereum es un full node con la capacidad de almacenar todo el historial de la blockchain, incluso hasta el genesis block, o el primer bloque creado. Cubrimos todos los tipos de nodos en profundidad en nuestra guía sobre nodos de blockchain, así que aquí solo daremos un resumen rápido de cada tipo:

Full nodes

Los full nodes almacenan el estado actual y más reciente de la blockchain (hasta los últimos 128 bloques) y participan en la validación de los bloques recién agregados. Pueden procesar transacciones, ejecutar smart contracts y consultar/entregar datos de la blockchain. También pueden acceder a algunos datos históricos (mediante tracing), pero son ineficientes para esta tarea.

Light nodes (o "light clients")

Los light clients solo almacenan block headers, lo que les da acceso a datos mínimos de la blockchain (por ejemplo, timestamp del bloque, hash, dificultad de minado, etc.). Sin embargo, también pueden comunicarse con full nodes para obtener los datos necesarios y validar información (por ejemplo, verificar el estado de una transacción o consultar balances). Correr un light node requiere la menor inversión en hardware, costos operativos y conocimiento técnico.

Light Node
Full Node

Block Headers

Block Headers

Full Block State

Full Block State

Archive nodes

Los archive nodes almacenan la misma información que los full nodes, además de todos los estados anteriores de la blockchain. Correr un archive node requiere la mayor inversión en hardware, costos operativos, conocimiento técnico y experiencia. Los archive nodes construyen datos históricos de la blockchain de forma rápida y eficiente, y son útiles para consultar datos históricos arbitrarios, como el balance de un usuario en un bloque específico.

Los archive nodes requieren más espacio que otros nodos (ya que almacenan más datos), pero la inversión vale la pena en casos específicos. En la siguiente sección, exploramos cómo funcionan los archive nodes y en qué se diferencia su arquitectura de la de otros tipos de nodos.

¿Cómo funcionan los archive nodes?

Los archive nodes almacenan todos los estados históricos de una blockchain entre bloques. Un archive node básicamente contiene instantáneas (snapshots) de la red en distintos momentos.

¿Qué datos sincroniza un archive node?

Un archive node realiza una "sincronización completa" ("full sync"), que descarga los datos completos de los bloques desde el genesis block, incluyendo block headers, transacciones y receipts.

Como todos los nodos, un archive node debe "sincronizarse" con el estado actual de la blockchain para almacenar y verificar datos en la red. Sincronizar requiere recuperar datos de estado de otros pares, verificar transacciones y construir una instancia local de la blockchain.

Los archive nodes verifican todos los bloques descargados, vuelven a ejecutar todas las transacciones y escriben todos los estados intermedios en el disco. Esto último explica por qué los archive nodes ofrecen un "archivo" del estado de la blockchain en distintos momentos.

¿Cuánto tiempo toma sincronizar un archive node?

La estimación promedio para sincronizar un archive node varía, pero se puede esperar entre un mes y tres meses (o más si el proceso presenta problemas).

Los archive nodes tardan más en sincronizarse que los full nodes o los light clients comunes. Esto se debe simplemente a que un archive node recupera el conjunto completo de datos de la blockchain desde su origen.

Los full nodes y los light nodes requieren mucho menos tiempo para sincronizarse, ya que descartan (prune) datos históricos e innecesarios de la blockchain. Por ejemplo, un full node solo sincroniza hasta el último bloque y posiblemente algunos cientos de bloques anteriores a ese (los light clients solo sincronizan los block headers más recientes).

Esta baja velocidad de sincronización puede estancar proyectos de desarrollo, por lo que es recomendable usar un proveedor de nodos de blockchain. Los proveedores de nodos te permiten desplegar archive nodes totalmente sincronizados bajo demanda y te ahorran el esfuerzo de correr un archive node.

¿Cuál es el tamaño de un archive node?

Al momento de escribir esto, los archive nodes que corren los dos clientes principales (Geth y OpenEthereum) almacenan más de 10 TB de datos.

Como referencia, los full nodes que corren Geth solo almacenan poco más de 700 GB de datos de la blockchain. Ya explicamos la razón de esta diferencia: la necesidad de recuperar los datos de la blockchain desde el genesis con los archive nodes, a diferencia de los full nodes, que descartan datos antiguos periódicamente.

Gráfico que muestra el aumento histórico del tamaño promedio de un nodo de archivo de Ethereum.
Gráfico que muestra el aumento histórico del tamaño promedio de un nodo de archivo de Ethereum. [Fuente]

¿Por qué usar archive nodes?

Los archive nodes ofrecen una vía de acceso a información histórica de la blockchain. Esto es útil si necesitas datos más antiguos que los contenidos en los últimos 128 bloques (que estarían disponibles a través de full nodes).

Aquí hay dos casos de uso para los archive nodes de Ethereum:

1. Auditar información histórica de blockchains

Si estás construyendo un servicio para auditar una blockchain o recopilar datos históricos específicos, un archive node es ideal. Un buen caso de uso sería construir un explorador de blockchain (Etherscan), una herramienta de análisis on-chain (Dune Analytics) o una wallet de criptomonedas.

Estos servicios dependen de archive nodes para consultar y entregar datos de estado antiguos a los usuarios. Por ejemplo, puedes obtener información sobre el primer bloque minado en Ethereum usando Etherscan. De manera similar, Dune Analytics puede mostrarte el total de usuarios de Uniswap desde su origen.

2. Desarrollo de dapps

Correr tu propio nodo suele ser un requisito mínimo para construir una dApp. Un full node es útil si solo necesitas hacer cosas como enviar transacciones, analizar mempools de transacciones, escuchar eventos de smart contracts y consultar información reciente de la blockchain.

Sin embargo, llamar a cualquier información más allá de los primeros 128 bloques usando un full node arrojará un error. Los full nodes descartan datos de la blockchain y solo conservan los datos mínimos necesarios para verificar el estado de la red.

Tu proyecto de dApp necesita correr un archive node para consultar datos históricos de la blockchain rápidamente. Esto último es importante porque, si bien puedes construir datos históricos con full nodes, toma más tiempo hacerlo. Con un archive node, operaciones como obtener el balance de una cuenta en un número de bloque determinado son rápidas y sin complicaciones.

Ejemplos de apps que pueden necesitar acceso a un archive node incluyen:

  • Servicios de reputación on-chain (por ejemplo, DegenScore) que hacen seguimiento de la actividad de usuarios durante un largo período de tiempo.
  • Plataformas de gobernanza (por ejemplo, Tally, Snapshot) que permiten a los usuarios discutir y votar propuestas de gobernanza.

El hilo común que une estos ejemplos de dApps y otros similares es la necesidad de consultar datos históricos on-chain.

¿Cómo se corre un archive node?

Correr un archive node requiere un cliente de nodo y hardware más robusto en comparación con las necesidades de hardware de los full nodes o los light clients.

Los archive nodes son útiles para obtener datos de estado históricos sin depender de proveedores externos. Pueden darte control sobre tu información, especialmente si la necesitas para propósitos específicos (como el cumplimiento tributario). Pero debido a la enorme cantidad de información que necesitan almacenar y con la que necesitan interactuar, cumplir con los requisitos de hardware adecuados es una necesidad.

¿Qué es un cliente de archive node?

Un cliente de archive node es una implementación de la blockchain que puedes correr localmente. Los clientes permiten a los nodos (incluyendo los archive nodes) interactuar con otros pares y acceder a datos de la blockchain. Para correr un archive node de Ethereum sin problemas, necesitas un cliente de nodo confiable y de buen rendimiento.

¿Cuáles son algunos clientes populares de archive node?

Los clientes de archive node más populares y confiables son Go Ethereum (Geth), Erigon, Nethermind y Besu. Podemos entender mejor estos clientes si los revisamos con más detalle:

Archive node de Geth

Geth es una de las primeras implementaciones de cliente desarrolladas para la blockchain de Ethereum. También es el cliente principal usado por los nodos de Ethereum. Geth cuenta con un gran conjunto de herramientas y funciones para los usuarios. Está escrito en Go y está disponible públicamente bajo la GNU Lesser Public License. Conoce más sobre cómo correr un archive node con Geth.

Archive node de Erigon

Erigon es otro cliente de Ethereum basado en Go para usuarios de nodos. Erigon ofrece acceso a un almacenamiento de estado eficiente, tiempos de sincronización más rápidos, análisis mediante dashboard de Grafana y un útil daemon de JSON-RPC. Conoce más sobre cómo correr un archive node con Erigon.

Archive node de Nethermind

Nethermind es una implementación del protocolo de Ethereum construida usando el framework C# .NET. Nethermind afirma ser el cliente de Ethereum más rápido disponible y ofrece estabilidad, seguridad, confiabilidad e integridad de datos. Conoce más sobre cómo correr un archive node con Nethermind.

Archive node de Besu

Hyperledger Besu es un cliente de Ethereum diseñado para usuarios empresariales, aunque también puede funcionar para usuarios individuales. Besu está escrito en Java y ofrece funciones útiles, incluyendo tracing, GraphQL API y monitoreo extenso. Conoce más sobre cómo correr un archive node con Besu.

¿Qué hardware necesitas para correr un archive node?

Debido a que los archive nodes realizan más operaciones de lectura-escritura y usan más RAM y CPU que otros tipos de nodos, pueden exigir invertir en hardware especializado para compensar sus tareas de alto consumo computacional.

A continuación, una lista de requisitos para correr un archive node de Ethereum:

Sistema operativo: Windows, Linux o macOS

Procesador: Intel i7 o equivalente

Almacenamiento: Solid State Drive (SSD) con al menos 8-10 TB de espacio

RAM: RAM disk con al menos 16-32 GB

CPU: CPU con 4+ núcleos

Ancho de banda: velocidades de 25+ MB/s

Una vez que configures el hardware de tu nodo y el cliente, puedes empezar a trabajar con la blockchain de Ethereum usando librerías frontend (ethers.js/web3.js) y llamadas JSON-RPC. Por ejemplo, puedes intentar obtener el balance de una dirección antigua llamando a la función `eth_getBalance`.

Acceso gratuito a archive node en Alchemy

Como ya explicamos, correr un archive node de Ethereum requiere una inversión enorme. Esto sin contar el tiempo y la energía que necesitas para administrar el propio archive node, especialmente si se desincroniza. Pero puedes evitar todo esto conectándote a un endpoint de archive node administrado por un proveedor de nodos, como Alchemy.

Supernode de Alchemy admite solicitudes ilimitadas de datos de archivo y da acceso a toda la información histórica de la blockchain que necesites. ¿Lo mejor? Puedes conectarte a un archive node de forma gratuita.

Alchemy ofrece acceso sin restricciones a archive nodes incluso para usuarios en el nivel gratuito de Supernode. Esto significa que puedes obtener datos on-chain pasados e incluso hacer fork de toda la cadena desde el genesis, sin pagar cargos adicionales. Alchemy incluye acceso a archive nodes para Polygon, Ethereum y muchas otras cadenas populares.

Diagrama que muestra la diferencia entre correr un nodo propio y usar un proveedor de nodos como Alchemy.
Diagrama que muestra la diferencia entre correr un nodo propio y usar un proveedor de nodos como Alchemy.

¿Cómo conectarse a archive nodes completos en Alchemy?

Aquí tienes un proceso paso a paso para conectarte a archive nodes con Alchemy:

  1. Regístrate para obtener una cuenta (¡es gratis!) y crea tu primer proyecto.

  2. Crea tu Alchemy key. Este es el URL endpoint para conectarte a tu archive node.

  3. Empieza a enviar solicitudes desde la interfaz de línea de comandos a la blockchain de Ethereum para obtener datos de archivo.

Conclusión

Los archive nodes pueden almacenar estados pasados de la blockchain más allá de los últimos 128 bloques. Si tu dApp o servicio Web3 necesita acceder a datos históricos de la blockchain, correr un archive node es una decisión obvia. Pero ten en cuenta que las exigencias de correr un archive node completamente funcional pueden desalentar a los desarrolladores y estancar los planes de desarrollo.

Supernode de Alchemy resuelve este problema conectando a los usuarios con archive nodes que usan URL endpoints gratuitos. Con Alchemy, correr un archive node de Ethereum nunca ha sido tan fácil.

Background gradient

Construye magia blockchain

Alchemy combina los productos y herramientas de desarrollo Web3 más potentes con recursos, comunidad y un soporte legendario.