Skip to content

Mastering Ethereum (Capítulo 3)

Published: at 15:44

⚠️ ¡Advertencia! El siguiente artículo es un resumen sobre Mastering Ethereum, en consecuencia, me tomé la libertad de quitar las partes que no me parecieron relevantes y profundizar en lo que sí. Si tenés alguna sugerencia o corrección, no dudes en contactarme.

Nodos y Clientes en Ethreum

Ethereum es una red distribuida de ordenadores (denominados nodos) que ejecutan software que puede verificar bloques y datos de transacciones. El software debe de ejecutarse en su ordenador para convertirlo en un nodo de Ethereum.

¿Qué es un nodo?

Un «nodo» es cualquier instancia del software de un cliente de Ethereum que está conectado con otros ordenadores que también ejecutan el software de Ethereum, formando una red. Un nodo necesita ejecutar dos clientes: un cliente de consenso y un cliente de ejecución.

Cliente de Ethereum

¿Qué es un cliente?

Es una pieza de software que sigue determinados lineamientos para implementar el protocolo de Ethereum, esto quiere decir que diferentes comunidades y equipos pueden desarrollar diferentes clientes, pero al mismo tiempo todas estas implementaciones son compatibles para interactuar entre ellas.

Cliente de ejecución: escucha las nuevas transacciones transmitidas en la red, las ejecuta en la EVM, y mantiene el estado más reciente y la base de datos de todos los datos actuales de Ethereum.

Cliente de consenso: implementa el algoritmo de consenso de la prueba de participación, que permite que la red alcance un acuerdo basado en datos validados del cliente de ejecución. También hay una tercera pieza de software, conocida como «validador» que se puede agregar al cliente de consenso, lo que permite que un nodo partícipe en la protección de la red.

¿Por qué es bueno tener diferentes implementaciones de los clientes?

Múltiples implementaciones de clientes pueden fortalecer la red reduciendo su dependencia de una sola base de código. El objetivo ideal es lograr la diversidad sin que ningún cliente tenga una posición dominante para reducir así los puntos únicos de error. La variedad de idiomas también invita a una comunidad de desarrolladores más amplia y les permite crear integraciones en su idioma preferido.

Lo que estas implementaciones de clientes tienen en común es que todas siguen una misma especificación. Estas especificaciones determinan cómo funcionan la red de Ethereum y las funciones de la cadena de bloques. Cada detalle técnico se define y se pueden encontrar especificaciones como:

Tipos de Nodos

Hay tres tipos principales de nodos en Ethereum: completos, de almacenamiento y ligeros, cada uno con sus propias características y funciones.

Full Node

Nodo de Almacenamiento

Nodo Ligero

Los nodos ligeros son un área de desarrollo activo en Ethereum, y se espera que su soporte se desarrolle rápidamente en el futuro cercano, lo que permitirá una mayor descentralización y accesibilidad a la red.

¿Por qué correr un full node?

Beneficios para uno

Privacidad y autonomía: Al ejecutar su propio nodo, puede utilizar Ethereum de manera privada y sin depender de terceros, verificando los datos.

Verificación de transacciones: El nodo verifica todas las transacciones y bloquea aquellas que infringen las reglas del consenso, lo que le permite evitar depender completamente de otros nodos.

Seguridad en el uso de wallets: Se puede utilizar wallets de manera más segura y privada al no tener que filtrar sus datos a intermediarios, ya que todo puede ser verificado con su propio cliente.

Conexión directa y baja latencia: Puede conectarse a su nodo utilizando IPC o reescribiendo el nodo para cargar su programa como un complemento, lo que otorga baja latencia y facilita el procesamiento rápido de datos.

Participación en la red y recompensas: Se puede participar directamente con ETH para asegurar la red y obtener recompensas (si tenemos el capital necesario para eso).

Beneficios para la red

Cumplimiento de reglas de consenso: Los full nodes hacen cumplir las reglas de consenso, lo que proporciona seguridad adicional a la red y evita que los validadores acepten bloques que no siguen dichas reglas.

Recuperación social en caso de ataque: En caso de un ataque, los full nodes pueden realizar una recuperación social eligiendo seguir la cadena honesta.

Diversidad y robustez de la red: Más nodos en la red conducen a una red más diversa y robusta, lo que permite un sistema resistente a la censura y de confianza.

Acceso a datos para clientes ligeros: Los nodos completos proporcionan acceso a los datos de la cadena de bloques para clientes ligeros, que pueden solicitar más información si la necesitan.

En resumen, ejecutar un nodo de Ethereum no solo brinda beneficios personales en términos de privacidad y seguridad, sino que también contribuye a la salud, seguridad y resiliencia operativa de la red en su conjunto.

Espero que el artículo haya sido informativo, yo todavía no estoy corriendo un full node, generalmente uso providers externos, pero si en algún momento me preocupara mi privacidad, sin duda me parece una buena idea, creo que además de eso es un buen proyecto de fin de semana para divertirse un poco.

Referencias

  1. Antonopoulos, A. M., & Wood, G. (2018). “Mastering Ethereum: Building Smart Contracts and DApps.” O’Reilly Media.
  2. Ethereum Developers Documentation. “Nodos y Clientes”. Recuperado de https://ethereum.org/es/developers/docs/nodes-and-clients/