Artículo 0: Nodos 101

Introducción

Si estás en el ecosistema crypto seguramente conoces esta frase, pero ¿sabes realmente qué significa?

‘Don’t trust, verify’ - “No confíes, verificá”

Una de las bases del ecosistema crypto es que no deberíamos confiar en terceras entidades o mismo en otras personas si no que deberíamos verificar por nuestra cuenta. Ya sea cuando querés invertir en algún proyecto y tenes que hacer tu propia investigación, como cuando querés subir un par de niveles y directamente tener tu nodo.

Ahora bien, ¿por qué querrías tener tu propio nodo de Ethereum? A lo largo de este artículo, profundizaremos en esta cuestión, pero en principio, debes saber que poseer tu propio nodo aporta más seguridad y contribuye a la descentralización de la red. Creemos que gran parte de la comunidad no tiene el suyo porque piensa que es muy difícil configurarlo y/o mantenerlo por lo que en este artículo compartiremos las bases para entender qué es un nodo, su importancia y por qué correr tu propio nodo puede ser una gran decisión.

Al final del camino vas a tener los conocimientos base para aprovechar la Guía completa de configuración, y así puedas animarte a contribuir directamente a la descentralización de Ethereum.

Nodos & Clientes

Un nodo es un pilar fundamental de la infraestructura de Ethereum. Es una computadora que ejecuta un software específico, conocido como cliente y que se conecta a otros nodos formando una red.

La responsabilidad principal de un cliente es la verificación de bloques y transacciones en la blockchain, contribuyendo así a la seguridad integral de la red. Al descargar una copia de la blockchain, el cliente verifica cada bloque y lo mantiene sincronizado con los nuevos bloques que se añaden con el tiempo. Este proceso puede ser realizado por cualquier computadora conectada a Internet y que cumpla con ciertos requisitos.

¿Por qué debería correr mi propio nodo?

Como mencionamos en un principio, hacerlo no solo incrementa tu seguridad personal, sino que también contribuye al fortalecimiento de la descentralización de la red. No obstante, hay más razones para considerarlo. Si pensamos en los beneficios que podrías tener personalmente, notarás que tendrás mayor privacidad ya que dejarías de compartir tu información personal con terceras entidades, basta de compartir tu IP y la dirección de tu wallet.

Además, gozarás de resistencia a la censura, ya que tener tu propio nodo te otorga el poder de emitir transacciones a la red cuando lo desees, sin depender de decisiones ajenas.

Sumado a esto, elevarás tu soberanía al adquirir una copia de la blockchain. Pero más allá de todo, se trata de tu participación. Correr un nodo te inserta en un movimiento global que persigue la descentralización del poder, dándote lugar como un participante activo y no solo como un observador.

Estos son solo los beneficios personales, pero la red también se beneficia de que corras tu nodo. Principalmente, la red se hace más descentralizada, lo que termina haciéndola más resiliente, y aún más cuando los nodos están distribuidos en diferentes localidades y operados por personas con backgrounds distintos. Imagínate un mundo con más nodos en la tierra de los campeones del mundo, la tierra de builders.

Si optas por gestionar un nodo completo, estarás haciendo cumplir las reglas de consenso. Estos nodos no pueden ser engañados para aceptar bloques que violen dichas reglas. Tal verificación adicional añade un nivel de seguridad adicional a la red. Si todos los nodos fueran ligeros y no ejecutarán una verificación completa, los validadores podrían realizar ataques a la misma.

En caso de un ataque que supere las defensas de la prueba de participación, los nodos completos pueden realizar una recuperación social al elegir seguir la cadena honesta. Si vos corres tu nodo, podes tomar vos tu decisión y no tener que seguir a alguien que tal vez no te convenza del todo.

Si ejecutas un nodo completo, toda la red de Ethereum se beneficia de ello. Veamos más sobre los distintos tipos de nodos a continuación para que entiendas porque.

Tipos de nodos:

Ya sabemos que es un nodo y por qué es tan importante que haya diversidad de los mismos. Ahora, ¿todos los nodos son iguales? ¿Todos cumplen la misma función?

La verdad es que no, existen distintas formas de sincronizar y tomar datos por lo que existen distintos tipos de nodos.

Veamos las características de cada uno para que decidas cuál se acerca más a tus necesidades:

Nodo completo

Un nodo completo podría tomarse como el almacén de conocimiento de Ethereum. En estos, reside una copia completa de la blockchain, aunque se recortan datos antiguos periódicamente para mantener el equilibrio. Este tipo de nodo se destaca en la validación de bloques, verificando cada detalle de los bloques y el estado.

Cada estado, incluso los más antiguos, puede ser extraído de un nodo completo, aunque algunos datos más antiguos se reconstruyen mediante solicitudes a nodos de archivo. Además de validar, también funciona como un servidor para la red, proporcionando datos a pedido.

Nodo ligero

Los nodos ligeros son como los exploradores veloces de Ethereum. En lugar de cargar con la totalidad de cada bloque, estos nodos sólo adquieren los headers del bloque, que contienen resúmenes precisos de la información. Cuando se necesitan más datos, los nodos ligeros simplemente la solicitan a un nodo completo. Esta información adicional es entonces contrastada por los nodos ligeros (verificando los state root), garantizando la seguridad. Con esta táctica, los nodos ligeros permiten la participación en la red sin requerir un hardware de alto rendimiento, por eso con el tiempo, podrían funcionar en celulares o dispositivos integrados.

Los nodos ligeros no participan en el consenso (es decir, no pueden ser validadores), pero pueden acceder a la blockchain con la misma funcionalidad y garantía de seguridad que un nodo completo.

Aún no se admite una gran cantidad de nodos ligeros en Ethereum, pero es un área que se espera que se desarrolle rápidamente en el futuro cercano.

Nodo de archivo

Pensá en los nodos de archivo como bibliotecas históricas en Ethereum. Todo lo que un nodo completo guarda se preserva, formando un archivo detallado de estados pasados. Si alguna vez deseas conocer el saldo de una cuenta en un bloque específico o probar tus transacciones sin minar, un nodo de archivo es el indicado. Pero tené en cuenta que contemplan terabytes de datos, haciéndolos menos accesibles para el usuario común, pero perfectos para exploradores de bloques, proveedores de billeteras y análisis de blockchains. Si decidis sincronizar clientes en cualquier modo que no sea el de archivo, se perderá parte de la cadena de bloques. Aun así, los nodos completos pueden reconstruir esta historia bajo demanda.

Tipos de clientes:

Como hay distintos tipos de nodos, hay distintos tipos de clientes según la funcionalidad que tendrá el software instalado en el nodo. A continuación veremos las características de los nodos de ejecución, consenso y validadores.

Cliente de ejecución

Imagina al cliente de ejecución como el orquestador detrás de la ejecución de transacciones en Ethereum. Este cliente no solo maneja la creación y difusión de transacciones, sino que también administra el estado y respalda la Máquina Virtual Ethereum (EVM). Sin embargo, su enfoque no radica en la construcción de bloques ni en la lógica de consenso, que es responsabilidad del cliente de consenso.

Este software crea las "cargas de ejecución", que son básicamente listas de transacciones, un trie de estado actualizado y otros datos relacionados con la ejecución. Estas cargas se incorporan en cada bloque por los clientes de consenso. Además, el cliente de ejecución ejecuta nuevamente las transacciones en bloques nuevos para verificar su validez, un trabajo realizado en su núcleo llamado la Máquina Virtual Ethereum (EVM).

Este cliente no solo trabaja detrás de escena; también ofrece a los usuarios una ventana a Ethereum a través de métodos RPC (Remote Procedure Call). Esto permite a los usuarios consultar la cadena de bloques, enviar transacciones e implementar contratos inteligentes. Estas interacciones pueden ser manejadas por bibliotecas como Web3js o Web3py, o interfaces de usuario como billeteras de navegador.

Cliente de consenso

Ahora, conoce al cerebro detrás de la sincronización en Ethereum: el cliente de consenso. Este se ocupa de mantener al nodo se mantenga sincronizado con la red. Su tarea abarca recibir bloques de pares y ejecutar algoritmos de bifurcación para garantizar que el nodo siempre siga la cadena más validada (ponderada por los saldos efectivos de los validadores).

Asimismo, el cliente de consenso no es un validador. El primero no valida ni propone bloques; esa tarea recae en el validador, un accesorio opcional. Sin un validador, un cliente de consenso se mantiene actualizado con la cabeza de la cadena, garantizando la sincronización. Esto permite a los usuarios realizar transacciones en Ethereum con confianza, sabiendo que están en la cadena correcta.

Validadores

Imagina a los validadores como los guardianes del orden en la red Ethereum. Aquellos que operan nodos pueden agregar validadores a sus clientes de consenso mediante un depósito de 32 ETH en el contrato de depósito. Estos validadores, pueden ser agregados en cualquier momento y se encargan de validar y proponer bloques. También tienen la responsabilidad de acumular recompensas o incluso enfrentar penalizaciones, conocidas como "slashing". Al ejecutar el software del validador, se hace elegible al nodo para proponer un nuevo bloque.

En resumen, el cliente de ejecución escucha las nuevas transacciones (gossip transactions) transmitidas en la red, las ejecuta en la Máquina Virtual de Ethereum (EVM) y mantiene el estado más reciente y la base de datos de todos los datos actuales de Ethereum. El cliente de consenso implementa el algoritmo de consenso de PoS, que permite que la red alcance un acuerdo basado en datos validados provenientes del cliente de ejecución.

The Merge habilitó que Ethereum hiciera la transición a Proof of Stake al conectar estas redes. Los clientes de ejecución y consenso trabajan juntos para verificar el estado de Ethereum.

Diversidad de clientes

Tanto los clientes de ejecución como los clientes de consenso tienen una variedad de lenguajes de programación desarrollados por diferentes equipos.

Múltiples implementaciones de clientes pueden fortalecer la red al reducir su dependencia en una sola base de código. El objetivo ideal es lograr diversidad sin que ningún cliente domine la red, eliminando así un posible punto único de fallo. La variedad de lenguajes también invita a una comunidad más amplia de desarrolladores y les permite crear integraciones en su lenguaje preferido.

Por esto es crítico que a la hora de elegir el proveedor de cliente, no elijamos al de mayor participación en la red, teniendo en cuenta que el objetivo es que cada cliente se mantenga en menos del 33%, más de esto ya es peligroso para la red y los mismos operadores de nodos. En otro artículo nos encargaremos de detallar más al respecto sobre la diversidad para que puedas elegir teniendo toda la información necesaria.

A continuación encontrarás los principales clientes tanto de ejecución como de consenso:

Execution clients
Consensus clients
Imagen tomada de clientdiversity.org
Imagen tomada de clientdiversity.org

Arquitectura de los nodos

Como vimos recientemente, un nodo de Ethereum está compuesto por dos clientes: un cliente de ejecución y un cliente de consenso.

Cuando Ethereum utilizaba Proof of Work, un cliente de ejecución era suficiente para ejecutar un nodo completo. Sin embargo, desde la implementación de Proof of Stake, el cliente de ejecución debe usarse junto con otro software llamado "cliente de consenso".

El diagrama a continuación muestra la relación entre los dos clientes de Ethereum. Los dos clientes se conectan a sus propias redes de pares (P2P) respectivas. Se requieren redes P2P separadas ya que los clientes de ejecución difunden las transacciones sobre su red P2P, lo que les permite gestionar su conjunto local de transacciones, mientras que los clientes de consenso difunden los bloques sobre su red P2P, permitiendo el consenso y el crecimiento de la cadena.

Imagen tomada de ethereum.org - Utiliza el logo de GETH para representar los clientes de ejecución.
Imagen tomada de ethereum.org - Utiliza el logo de GETH para representar los clientes de ejecución.

Para que esta estructura de dos clientes funcione correctamente, es crucial que los clientes de consenso sean capaces de transmitir paquetes de transacciones al cliente de ejecución. La ejecución de estas transacciones de manera local es esencial, ya que permite al cliente validar que dichas transacciones cumplen con todas las reglas establecidas por Ethereum y que las actualizaciones propuestas para el estado de Ethereum son precisas y legítimas.

Además, cuando un nodo es seleccionado para desempeñar el rol de productor de bloques, el cliente de consenso debe tener la capacidad de solicitar paquetes de transacciones provenientes del cliente de ejecución, con el propósito de incluirlos en el próximo bloque a ser generado. Posteriormente, el cliente de consenso debe llevar a cabo la ejecución de estas transacciones, lo que conlleva la actualización del estado global de Ethereum de manera precisa y coherente. Este proceso resulta esencial para el funcionamiento fluido de la red en su conjunto.

Rastreo de nodos en la red

Si querés conocer la actividad de los nodos, cuántos hay y en que zonas podes utilizar múltiples rastreadores que ofrecen una visión en tiempo real de los nodos en la red de Ethereum. Tené en cuenta que debido a la naturaleza de las redes descentralizadas, estos rastreadores sólo pueden proporcionar una vista limitada de la red y podrían informar resultados diferentes.

Conclusión

Con este artículo, nuestro objetivo es proporcionar la información necesaria para que encuentres la inspiración y la confianza necesarias para participar de manera activa en la red de Ethereum. Como mencionamos anteriormente, esta participación no solo nos beneficia a nosotros como individuos, sino que también contribuye al bienestar general de la red en sí.

Cuanto más amplia sea la comprensión de que correr un nodo no es un proceso abrumador, y que en realidad, con conocimientos técnicos básicos y un entendimiento de Ethereum, podemos establecer un nodo sin dificultades significativas, más diversidad se generará en la red. Esta diversidad, a su vez, proveerá una red más robusta y descentralizada.

Si estás en Web3, es probable que la soberanía y la resistencia a la censura sean conceptos importantes para vos. Quienes estamos contribuyendo al desarrollo del ecosistema y que formamos parte de la comunidad de Ethereum estamos en búsqueda constante de formas para fortalecer la red y salvaguardar nuestra privacidad. Tener un nodo se alinea perfectamente con esta misión.

Gracias al apoyo de la Ethereum Foundation, el equipo de SeedLatam y Layer2es tendrá un nodo completo ubicado en las sierras de Córdoba. Queremos que vos también formes parte de esta iniciativa y que encuentres la motivación para establecer tu propio nodo. Existen nodos para todos los gustos y necesidades. Si pensás en tener uno en tu propia casa, podés optar por un nodo completo (ya sea solo o validador) o incluso uno ligero. Lo importante es que nos animemos a dar este paso.

Unite al camino de la Descentralización y contribuí al futuro de Ethereum.

Subscribe to SEED Latam
Receive the latest updates directly to your inbox.
Mint this entry as an NFT to add it to your collection.
Verification
This entry has been permanently stored onchain and signed by its creator.