Saltar al contenido
0%

¿Qué es un nodo de Ethereum?

Alchemy team headshot

Escrito por Alchemy

Publicado el 18 de abril de 20226 min de lectura

Definición y aplicación

Un nodo de Ethereum es simplemente cualquier computadora que ejecuta el software necesario para conectarse a la red de Ethereum. Los nodos se conectan entre sí para enviar y recibir información con el fin de validar transacciones y almacenar datos sobre el estado de la blockchain.

Aunque los términos suelen usarse indistintamente, estas computadoras conectadas son los nodos, y el software que ejecutan se llama cliente.

‍

¿Por qué son importantes los nodos para Web3?

Animación de nodos blockchain conectándose en la red de Ethereum

Los nodos conforman la red blockchain y son la única forma de acceder a ella.

Cada nodo mantiene su propia copia de la blockchain y se encarga de verificar que esta copia coincida con las de todos los demás nodos. Cada vez que se realiza cualquier acción y se necesita agregar un nuevo bloque a la blockchain, todos los nodos de la red deben procesarlo.

Animación de nodos blockchain alcanzando consenso sobre un nuevo bloque

Cada nodo decide aceptar o rechazar el bloque más reciente según la validez de sus firmas y transacciones. Si el bloque es aceptado, se sigue compartiendo con otros nodos hasta alcanzar un consenso y que todos queden sincronizados. Los nodos pueden rechazar rápidamente bloques inválidos e identificar nodos maliciosos que intentan romper las reglas. Es esta red de nodos comunicándose constantemente la que permite prescindir de una única fuente de verdad y de todos los problemas que esto conlleva.

Este consenso entre distintos nodos es lo que hace que las redes blockchain sean descentralizadas y constituye la base de Web3. Cuantos más nodos estén en funcionamiento, más fuerte se vuelve la blockchain.

‍

¿Cuáles son los diferentes tipos de nodos?

Existen tres tipos de nodos:

  • nodos ligeros (light nodes)
  • nodos completos (full nodes)
  • nodos de archivo (archive nodes)

Un nodo ligero descarga únicamente los encabezados de bloque, que son los datos mínimos que necesita para transaccionar en la red. Un nodo ligero puede validar una transacción porque es capaz de regenerar el bloque específico que necesita revisar usando estos datos.

Esto permite que los nodos ligeros interactúen con la red de forma eficiente y ahorren megabytes de ancho de banda y gigabytes de almacenamiento. Por esto, los nodos ligeros pueden ejecutarse en dispositivos comunes con recursos de memoria limitados, como smartphones y laptops.

Pero los nodos ligeros también tienen sus limitaciones. A veces necesitan solicitar a nodos completos los datos a los que no tienen acceso, lo que puede tardar más que si un nodo completo validara la transacción directamente.

Si bien un nodo ligero es la forma más sencilla de ejecutar un nodo, igual toma tiempo y conocimiento instalar el cliente, configurar variables, descargar los encabezados de bloque y verificar que todo funcione correctamente.

Light Node
Full Node

Block Headers

Block Headers

Full Block State

Full Block State

Un nodo completo tiene todo lo necesario para verificar que los bloques de la red son correctos. Puede interactuar con cualquier smart contract y desplegar los suyos propios.

El uso y almacenamiento completo de datos hace que los nodos completos requieran muchos más recursos de cómputo y ancho de banda. Un nodo completo descarga, almacena y verifica el estado completo de la blockchain: todo desde el bloque cero hasta el más reciente (+10M y contando), lo que puede tardar semanas en sincronizarse.

Un nodo de archivo va un paso más allá que un nodo completo. Mientras que un nodo completo elimina entradas que ya no necesita para verificar las interacciones más recientes con la cadena, el nodo de archivo mantiene todo (terabytes de datos adicionales). Estos detalles son útiles para consultar información de forma más eficiente y resultan prácticos en algunas aplicaciones, pero son excesivos en la mayoría de los casos.

‍

¿Por qué es difícil ejecutar un nodo?

Poner un nodo en funcionamiento puede ser un proceso largo y desafiante. Esto es especialmente cierto si eres nuevo en el mundo de Web3 y no cuentas con la experiencia técnica necesaria (al menos, todavía no).

Solo las semanas que puede tomar sincronizar un nodo completo con los más de 10M de nodos para obtener el estado actual de la blockchain pueden desanimar a muchos de construir en este espacio.

Los costos también son un factor, y pueden acumularse rápidamente. Estos incluyen la alta inversión inicial para comprar hardware y los costos continuos de electricidad y hosting de servidores. Al operar un nodo, también hay que asegurarse de que esté en funcionamiento constante. Una conexión a internet lenta, cortes de electricidad o problemas de hardware pueden provocar tiempo de inactividad costoso.

Si bien las actualizaciones de cliente ayudan a mejorar constantemente la escalabilidad, seguridad y sostenibilidad de Ethereum, estos cambios pueden generar problemas inesperados. Y los problemas realmente comienzan cuando intentas construir algo más grande.

‍

¿Cuáles son algunos problemas al escalar nodos de Ethereum?

Los nodos de Ethereum nunca fueron realmente diseñados para escalar a este nivel de solicitudes y pueden presentar desafíos particulares.

Confiabilidad

Algunas solicitudes le piden al nodo que consulte desde el log cero hasta el bloque actual y pueden agotar el tiempo de espera. Estas "consultas de la muerte" pueden hacer que un nodo se caiga, y pueden ocurrir en cualquier momento del día. Incluso si un nodo tiene una confiabilidad del 72%, como un nodo estándar, eso significa que una aplicación puede estar fuera de línea por más de cien días al año.

Escalabilidad

Escalar la infraestructura de nodos puede ser complicado. Imagina que la aplicación que estás construyendo se vuelve viral de la noche a la mañana en Twitter, pero los nodos existentes que estás ejecutando no pueden seguir el ritmo del repentino aumento en tráfico y volumen de transacciones.

No puedes simplemente levantar nuevos nodos rápidamente porque tardan semanas en sincronizarse. Además, la nueva demanda podría saturar tus nodos existentes y hacer que fallen. Esto podría resultar en tiempo de inactividad, durante el cual nadie puede usar tu aplicación, y en usuarios insatisfechos que sienten que no pueden confiar en lo que construiste.

Consistencia de datos

En Web2, los sitios pueden sortear estos problemas de escalabilidad usando balanceadores de carga, una capa de red que se ubica por encima y distribuye el tráfico entre servidores indistinguibles entre sí. Esto no es posible con los nodos porque la blockchain es asíncrona. Aunque dos nodos deberían eventualmente compartir el mismo último bloque, en un momento dado uno puede estar rezagado respecto al otro.

El balanceo de carga podría generar dos resultados muy diferentes porque el tráfico se enruta a través de distintos nodos con distintas vistas sobre el último bloque. Imagina comprar ese NFT que tanto deseabas y luego actualizar la página para descubrir que parece haber desaparecido.

Diagrama de nodos blockchain con balanceo de carga devolviendo datos inconsistentes

Intentar evitar este tipo de inconsistencias de datos lleva a los equipos de desarrollo a armar soluciones alternativas complejas que inevitablemente causan errores y hacen que su aplicación falle. Todos estos problemas significan que, al trabajar con nodos, los desarrolladores a menudo deben elegir entre escalar, mantener la confiabilidad o garantizar la consistencia de los datos, lo que resulta en una experiencia poco óptima para todos.

‍

¿Cuándo usar node-as-a-service?

Si todo esto parece abrumador, no te preocupes. Ya sea que estés recién comenzando o sientas que estás gastando demasiado tiempo y dinero en problemas de nodos, node-as-a-service podría ser la solución para ti.

Proveedores de nodos como Alchemy ejecutan los nodos para que puedas concentrarte en desarrollar tu aplicación. Integrar la mayoría de los proveedores es sumamente sencillo: muchas veces basta con una API para empezar a leer y escribir en la blockchain.

Eso significa que, en lugar de tener que pagar por acceso a servidores, cumplir con requisitos de hardware y mantener el estado por tu cuenta, puedes usar Alchemy's Node API...

Diagrama de la infraestructura de Alchemy Node API para acceso escalable a nodos de Ethereum

... con una sola línea de código.

Fragmento de código conectándose a Ethereum con una clave de API de Alchemy

El motor Cortex de Alchemy garantiza la exactitud y confiabilidad de los datos a través de un sistema dedicado y distribuido que escala junto con tu aplicación.

"Usar tu propio nodo o un servicio propenso a errores significa desperdiciar cientos de horas valiosas de ingeniería en problemas que no tienen nada que ver con tu empresa. Nada se compara con el increíble nivel de confiabilidad, velocidad y soporte de Alchemy." - Alex Atallah, CTO de OpenSea

Empresas y proyectos blockchain líderes como OpenSea, Dapper Labs, 0x, Royal, Axie Infinity, y cientos más, eligen Alchemy por nuestra altísima confiabilidad, un servicio al cliente legendario y una excelente suite de productos que hace que construir en Web3 sea más accesible que nunca.

Logos de empresas que construyen sobre Alchemy, incluyendo OpenSea y Dapper Labs

Regístrate para obtener una cuenta de Alchemy y comienza a construir de inmediato sin tener que preocuparte por los nodos. Si te interesa aprender más sobre cómo Alchemy puede ayudarte en tu camino para construir en Web3, consulta nuestra documentación Getting Started With Alchemy o visita el centro de soporte de Alchemy.

Background gradient

Construye magia blockchain

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