El corazón de Ethereum es su Virtual Machine, la EVM, y de hecho el nombre "Ethereum" remite a lo etéreo, lo inmaterial.
Eso es porque buena parte del valor reside en que Ethereum funciona como una gran computadora descentralizada a nivel global, sin ubicarse en ningún punto específico ni estar bajo control de una sola entidad, sino compartida por múltiples participantes.
Sin embargo, esa esencia "virtual" tiene su contraparte concreta: los procesos donde los 0 y 1 se transforman en transacciones, contratos inteligentes y dapps ocurren literal y efectivamente en máquinas concretas ejecutando programas específicos. Llegamos así a hablar de los nodos.
¿Qué es un nodo?
Los distintos aspectos de los procesos que ocurren en Ethereum son ejecutados en capas distintas de la red: la capa de Ejecución y la capa de Consenso. Estas capas "viven" en la red gracias a los clientes, programas informáticos especializados que, instalados en cientos de miles de ordenadores a lo largo y ancho del mundo, interactúan permanentemente llevando adelante el funcionamiento de la red.
Si se me permite una metáfora: los nodos son como las células de este gran cuerpo que es la blockchain.
Para decirlo de manera sencilla: un nodo es una computadora que, conectada a una red junto a otros nodos y ejecutando cierto software específico, verifica bloques, mantiene consenso y almacena información.
Tipos de nodos
Nodos completos (full nodes)
Este nombre puede ser un poco engañoso, ya que estos nodos no guardan una copia completa de toda la historia de la red, pero sí almacenan información suficiente para llevar adelante de manera completa las acciones tanto de ejecución como de consenso. Para ello, deben ejecutar ambos clientes especializados en estas tareas.
Son los nodos más comunes. Probablemente, quien diga "tengo un nodo de Ethereum" se refiera a este tipo.
Nodos de archivo (archive nodes)
Estos sí guardan una copia completa de toda la información de la blockchain desde su génesis. Existen en mucha menor cantidad, ya que tienen requerimientos considerablemente mayores de hardware, especialmente en almacenamiento. Son de gran importancia para conservar la historia completa de la red, aunque para el correcto funcionamiento de la red actual no es estrictamente necesaria esa conservación (sí lo es para otros fines como la trazabilidad y la transparencia).
Nodos ligeros (light nodes)
Hay varios proyectos trabajando en su desarrollo, pero este tipo de nodos aún no están en pleno funcionamiento. Desde la teoría, manejan una información muy resumida de los bloques, condensada en sus encabezados, y con eso pueden realizar ciertas tareas limitadas pero útiles. Si necesitan acceder a mayor información de la red, deben recurrir a los datos de nodos completos.
Ahí está probablemente el cuello de botella: la necesidad de que haya full nodes disponibles de manera pública y configurados de manera compatible con los light nodes. Una prestación que, por el momento, está siendo difícil de encontrar.
Nodos validadores
Estos son nodos completos, pero con más funciones. Aparte de ejecutar los clientes de Ejecución y de Consenso, tienen la capacidad de proponer bloques y de votar los bloques propuestos por otros validadores.
Son los nodos para los que se requiere el depósito (stake) de ETH: desde la actualización Pectra, el monto es variable entre 32 y 2048 ETH. A mayor stake, mayores chances de proponer bloques y, por lo tanto, de recibir recompensas.
¿Por qué ejecutar un full node si solo los validadores ganan recompensas?
La pregunta que muchos se hacen: si solo los validadores reciben recompensas económicas, ¿por qué alguien invertiría dinero y tiempo en sostener otros tipos de nodos?
Hay bastantes razones, tanto para uno mismo como para la red.
Privacidad y seguridad
Correr mi propio nodo me permite mayor privacidad y, en consecuencia, mayor seguridad. Al realizar una transacción desde mi wallet, me estoy comunicando con un nodo ajeno. Lo más probable es que ese nodo pertenezca a una empresa privada que concentra gran cantidad de ellos. Por ejemplo, Metamask usa por defecto el servicio de Infura.
Esto no tiene por qué ser malo. Es un servicio que permite que la mayoría de las personas podamos transaccionar sin poseer un nodo ni conocer los datos técnicos para configurar la wallet. Pero si nos ponemos finos en temas de privacidad, vamos a encontrar que esos proveedores están recibiendo información como mi IP relacionada a mi número de cuenta.
En la época de la big data, que algún actor malintencionado cruce cientos de miles de datos vinculados a mi IP no tiene buena pinta. Correr mi propio nodo me permite enviar transacciones directamente sin esa vinculación.
Resistencia a la censura
Un nodo ajeno podría, por algún motivo, elegir no ejecutar transacciones provenientes de cierta cuenta. Con mi propio nodo no tengo que pedir permiso a nadie para usar la red. Ni siquiera el gobierno más poderoso del mundo podría evitar que realice una transacción (salvo que tire mi puerta abajo, claro está).
Robustez de la red
La diversidad de nodos también es buena para la red. Hay un punto interesante acá: la red es resiliente incluso ante un ataque de los propios encargados de su seguridad. Si bien es prácticamente imposible, si dos tercios de los validadores se unieran para validar bloques falsos, los operadores de nodos completos detectarían ese comportamiento y podrían rechazar esa versión, decidiendo continuar con una versión que solo contenga transacciones que cumplieron realmente las reglas del protocolo.
El argumento de la descentralización real
Hoy muchos nodos de Ethereum están sostenidos por empresas e instituciones tecnológicas. Esto tiene un lado positivo: suelen contar con la infraestructura necesaria para mantenerlos encendidos, actualizados y disponibles. Pero también plantea una preocupación: si demasiados nodos están en pocas manos, perdemos diversidad y con ella, parte de la descentralización que queremos defender.
Otro aspecto preocupante es la concentración geográfica: más nodos en ciertos lugares centrales que en otros más periféricos. Lo que sí está en nuestras manos es promover que más personas, desde distintos lugares y contextos, puedan correr sus propios nodos.
¿Qué se necesita para correr un nodo?
¿Puedo usar mi computadora personal?
En teoría, sí. En la práctica, correr un nodo completo desde una computadora que se usa todos los días para otras tareas puede volverse inviable. La carga de trabajo constante, el almacenamiento requerido y el hecho de que debería estar encendida y conectada a internet 24/7 hacen que la experiencia no sea ideal.
Lo más habitual es dedicar una máquina exclusivamente a esa tarea. Existen incluso equipos específicos diseñados para correr nodos de Ethereum, ya optimizados en términos de hardware.
Requisitos técnicos mínimos
- Almacenamiento: mínimo 2 TB de disco SSD.
- Memoria RAM: 16 GB.
- Conexión a internet: estable, sin caídas frecuentes y con buen ancho de banda y baja latencia.
El tipo exacto de equipo depende del cliente que se elija, y de si se va a correr la red principal o una testnet (que requiere menos recursos).
¿Y si no tengo ese hardware?
Si no se cuenta con los recursos o el entorno técnico para correr un nodo desde casa, hay alternativas. Muchos nodos se ejecutan actualmente en servicios de nube como Google Cloud o Amazon Web Services. No es la opción más descentralizada, pero puede ser una buena forma de involucrarse en el funcionamiento de la red sin depender de infraestructura doméstica.
También existen herramientas que simulan redes Ethereum de forma local, como Ganache, Hardhat Network o Anvil. Estas simulaciones no impactan en la red real, pero son ideales para aprender y experimentar antes de correr un nodo real. Yo empecé por ahí.
¿Y el software?
Para correr un nodo se necesita ejecutar dos programas específicos llamados clientes: uno para ejecución y otro para consenso. Cada cliente tiene características propias que influirán en la elección. En una próxima entrada voy a profundizar en los distintos clientes, sus diferencias y por qué la diversidad entre ellos importa tanto como la diversidad de nodos.
Recursos para ir más lejos
- Ethereum.org — Nodos y clientes
- Ethereum.org — Correr un nodo
- Mapa de nodos por Etherscan
- Ethernodes por Bitfly
- Nodewatch de Chainsafe, nodos de consenso rastreados