En el artículo anterior vimos todo el proceso de creación de una transacción. Tu Dapp te prepara todo y cuando vos tocás “swap” le manda una “raw transaction” a tu wallet. La raw transaction es un string de texto (números y letras) que contiene toda la datita de lo que vos hiciste. Así que estamos viendo en qué te patinas el aguinaldo. O mejor dicho, las cripto que compraste con el aguinaldo. Luego la wallet agrega la firma, saca el hash y lo manda a la red. Hoy vamos a ver que significa realmente esto de “la red”.

¿Qué es exactamente un Nodo?

Un Nodo de Ethereum simplemente es una computadora que corre el software necesario para conectarse a la red de Ethereum. Ok, ¿pero qué es la red? Es una red de computadoras conectadas. Tan simple como eso. Es como jugar al Age of Empires o al Counter Strike online. Para que la partida sea posible, tiene que haber varias personas conectadas. Mientras más personas se conecten, más divertida y descentralizada es la partida. Nada mejor que jugar al Age en línea con la filosofía de Satoshi.

Ahora…. para poder estar ahí meta flechas y castillos, cada jugador tiene que comprarse el Age of Empires y descargarse el Steam. Bueno, esa combinación de programitas que vos ejecutás en tu compu (Age + Steam) tiene incorporadas una serie de instrucciones que le permiten a tu computadora conectarse con otras y jugar partidas juntas en tiempo real. Si lo pensás es una locura. Hace 50 años Argentina no había ganado ninguna compa del mundo y no se nos ocurría ni soñar con caballos y snipers en tiempo real, mucho menos con una máquina infinita que nos permite reconstruir todos los sistemas jamás construídos, y, mucho más importante, descubrir nuevos. Hay una frase de Cortazar que me gusta mucho:

“Procuremos inventar pasiones nuevas, o reproducir las viejas con pareja intensidad.”

Pero no tiene nada que ver con nodos de Ethereum así que acá les dejo una foto para compensar.

Clientes, clientes everywhere

Bueno en eso estamos, pero volvamos a los nodos. Cada nodo mantiene su propia copia de la blockchain y verifica que su propia copia se idéntica a la de los demás nodos. Exactamente lo mismo que pasa en el Age of Empires. Tu compu ejecuta tus comandos, tus ataques y retiradas y al mismo tiempo habla con la compu de tu amigo para validar que ambos hayan obtenido los mismos resultados. Como todo está programado, si no hicieron nada raro, ambos nodos, ambos jugadores de Age, deberían tener siempre lo mismo que los demás participantes.

Si un hacker se inventa una transacción, cuando quiera comparar con los otros nodos de la red, las cosas no van a coincidir y la transacción maliciosa del hacker va a quedar a la vista de todo el mundo, como un hincha de river infiltrado en plena bombonera con la 10 del Burrito Ortega en la espalda.

Los programas que ejecutan los nodos para poder participar de la red y convertirse efectivamente en nodos son los clientes. Y hablo en plural porque desde el Merge los nodos de Ethereum corren 2 clientes: uno para la execution layer y otro para la consensus layer. Volviendo al Age, imaginate que necesitas un programa para conectarte con tu amigo y otro para ejecutar el juego. A no… pará, no tenés que imaginartelo. Usás un programa para ejecutar tus batallas y otro distinto para conectar con tus amigos.

Siguiendo los pasos de ese swap del que te vas a arrepentir

Muy lindo todo esto de los nodos, pero ¿como funcionan realmente? Si vos estás corriendo tu propio nodo, el nodo le envía las transacciones que ejecutaste a la red. Ahora, la mayoría de los usuarios usa una wallet para conectarse a Ethereum. Lo que muchos no saben es que las wallets a su vez están conectadas a un nodo que es lo que les permite hablar efectivamente con la blockchain. Sí, sino quedó claro aún, la única forma de hablar con la blockchain es a través de un nodo.

Concretamente, el nodo recibe la transacción firmada, valida que esté ok, y luego se la comparte a los demás nodos. Es muy fácil detectar transacciones incorrectas y rechazarlas. Este es un elemento fundamental de la seguridad de la blockchain. Los nodos son los que permiten que las transacciones se propaguen. Es decir, el nodo A recibe una transacción del nodo B, y si todo está ok, se la manda a todos sus nodos amigos, el nodo C, D, y E. Luego esos nodos hacen lo mismo con sus propios amigos y así es como la compu de Santi en Bosnia llega a conectarse a la compu de Mick Jagger que está en Australia dando un concierto.

Si un hacker quiere enviar transacciones falsas a la blockchain, debe montar su propio nodo y aún así, le sería muy dificil propagar sus transacciones porque nadie las “reenviaría”.

Pero me estoy extendiendo y nos queda una parte clave. Dijimos que los nodos son la única forma de hablar con la blockchain. Y tanto las dapps como las wallets necesitan hablar con la blockchain, ver que está pasando, saber cual es el balance de Santi, cuanto colateral tiene Pipo Gorosito y preguntar como están los tíos.

Algunas dapps y algunas wallets levantan sus propios nodos. Esto les permite tener acceso directo e inmediato. Pero muchas veces genera costos y problemas técnicos. Pensemos que no es lo mismo enviar una transacción cada tanto para procesar un swap falopa, que tener que gestionar miles de transacciones cada hora. Los nodos son las puertas a la blockchain, y, al igual que sucede en la vida real, las puertas se saturan cuando hay mucha gente queriendo pasar.

Va fotito, cortesia de QuickNode, un Node provider.

Node providers: infraestructura (centralizada?) para hacernos la vida más fácil

Para facilitar el acceso a la blockchain, aparecen los node providers. Son empresas que se dedican a levantar nodos y ofrecerlos a las wallets y dapps para que hablen con la blockchain. Además de QuickNode y Alchemy, cuyas fotos usamos hoy, algunos ejemplos son Infura, SenseiNode, Chainstack, dRPC y hay varios más.

Ok, osea que ….¿Una vez que la wallet firma la transacción? Se envía el string de la transacción firmada al nodo para que este lo difunda por toda la red.

¿Cómo se envía? Usando RPC, o “Remote Procedure Calls”. De hecho muchas veces estos Node Providers son llamados RPC provider. El RPC es un protocolo de comunicación. No me quiero meter en detalles técnicos, pero conceptualmente es similar a lo que hace tu compu para conectarse con tu amigo para jugar al Age o a lo que hace whatsapp para que tus mensajes le lleguen a esa personita que conociste en el boliche y no te acordás el nombre.

Hagamos un ejercicio. Andá a Metamask / settings / security & privacy. Te vas a encontrar con varias configuraciones, una de ellas es tu “network provider”:

Metamask usa por defecto Infura, ya que son productos de la misma empresa, Consensys. Si le das a “Add custom network” te lleva a una pestaña que seguro usaste para agregar redes nuevas:

Ese famoso “RPC URL” es el link que conecta tu wallet al RPC provider. En otras palabras, es la URL del nodo que vas a usar para hablar con la red. Lo más común es agregar redes nuevas a Metamask usando RPC que encontramos en Internet. Estos son nodos públicos que empresas crean por diversos motivos. Cuando se satura la red y tu influencer favorito te recomienda que cambies el RPC, es porque ese nodo público está reventado de gente queriendo pasar, entonces vos lo que hacés conceptualmente es buscar otra puertita que esté más tranqui.

Node providers y la centralización

Acá hay un temita muy interesante. Si todos los usuarios cripto usamos la misma puerta…. ¿no le estamos dando demasiado poder al que tiene la llave? La respuesta es sí. La centralización de los node providers es efectivamente un problema. Si bien su aporte es ENORME, también genera un nuevo vector de ataque.

Lo ideal es que cada persona que usa la red corra su propio nodo. O que las dapps o wallets usen RPC providers descentralizados. Pero es un camino que se está recorriendo de a poco. Cada vez aparecen más soluciones a este problema, que iremos explorando de a poco. Mientras tanto, basta estar al tanto.