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 peer-to-peer de computadoras. 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.

Aunque los nodos pueden interactuar con otros pares en la blockchain, tienen distintas capacidades y casos de uso. Por ejemplo, los archive nodes —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 overview cubre los archive nodes en detalle 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.

Un diagrama que muestra cómo se conectan e interactúan los nodos peer-to-peer en una red blockchain.
Un 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, hasta llegar al genesis block, o el primer bloque creado. Cubrimos todos los tipos de nodos en profundidad en nuestra guía sobre blockchain nodes, 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/servir datos de la blockchain. También pueden acceder a algunos datos históricos (mediante tracing), pero son ineficientes para esta tarea.

Light nodes (también llamados “light clients”)

Los light clients solo almacenan los 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 interactuar 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 previos 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 tipos de 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 contiene, en esencia, snapshots de la red en distintos momentos en el tiempo.

¿Qué datos sincroniza un archive node?

Un archive node realiza un “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 tu disco. Esta última parte explica por qué los archive nodes proveen 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 espera entre un mes y tres meses (o más si el proceso presenta problemas).

Los archive nodes tardan más en sincronizar que los full nodes o light clients regulares. Esto se debe simplemente a que un archive node recupera el dataset completo de la blockchain desde su creación.

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

Esta baja velocidad de sincronización puede frenar proyectos de desarrollo, por lo que es recomendable usar un proveedor de blockchain nodes. Los proveedores de nodos te permiten desplegar archive nodes totalmente sincronizados bajo demanda, ahorrándote el esfuerzo de correr un archive node tú mismo.

¿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 un poco más de 700GB de datos de la blockchain. Ya explicamos la razón de esta disparidad: la necesidad de recuperar datos de la blockchain desde el genesis en los archive nodes, a diferencia de los full nodes, que eliminan datos antiguos regularmente.

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

¿Por qué usar archive nodes?

Los archive nodes ofrecen una puerta de entrada para acceder a información histórica de la blockchain. Esto puede ser ú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 archive nodes de Ethereum:

1. Auditar información histórica de blockchains

Si estás construyendo un servicio para auditar una blockchain o recopilar piezas específicas de datos históricos, un archive node es ideal. Un buen caso de uso sería si estuvieras construyendo un blockchain explorer (Etherscan), una herramienta de análisis on-chain (Dune Analytics), o una billetera 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 forma similar, Dune Analytics puede mostrarte el total de usuarios de Uniswap desde su creación.

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, consultar cualquier información más allá de los primeros 128 bloques usando un full node arrojará un error. Los full nodes eliminan 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 antiguos de la blockchain rápidamente. Esta última parte 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 rastrean la actividad de usuarios durante un período extenso.
  • Plataformas de gobernanza (por ejemplo, Tally, Snapshot) que permiten a los usuarios discutir y votar propuestas de gobernanza.

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

¿Cómo corres un archive node?

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

Los archive nodes sí son útiles para recuperar 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 cumplimiento tributario). Pero debido a la enorme cantidad de información que necesitan almacenar y con la que deben interactuar, cumplir con los requisitos de hardware adecuados es una necesidad.

¿Qué es un archive node client?

Un archive node client es una implementación de la blockchain que puedes correr localmente. Los clients 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 node client confiable y con buen rendimiento.

¿Cuáles son algunos archive node clients populares?

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

Archive node con Geth

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

Archive node con Erigon

Erigon es otro client de Ethereum basado en Go para usuarios de nodos. Erigon ofrece acceso a 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. Aprende más sobre cómo correr un archive node con Erigon.

Archive node con Nethermind

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

Archive node con Besu

Hyperledger Besu es un client de Ethereum diseñado para usuarios empresariales, aunque también funciona para individuos. Besu está escrito en Java y ofrece funciones útiles, incluyendo tracing, GraphQL API, y monitoreo extensivo. Aprende 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 requerir invertir en hardware especializado para compensar sus exigencias de cómputo.

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-32GB

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 client, 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 nodes en Alchemy

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

La Node API de Alchemy soporta solicitudes ilimitadas de datos de archivo y te da acceso a toda la información histórica de la blockchain que necesitas. ¿Lo mejor? Puedes conectarte a un archive node de forma gratuita.

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

Un diagrama que muestra en qué se diferencia correr un nodo de usar un proveedor de nodos como Alchemy.
Un diagrama que muestra en qué se diferencia correr un nodo de usar un proveedor de nodos como Alchemy.

¿Cómo conectarte a full archive nodes en Alchemy?

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

  1. Regístrate para crear 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 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 que van 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 frenar los planes de desarrollo.

La Node API 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.