Los validadores de Ethereum. El ágora ateniense. Los cónsules romanos. El parlamento británico, las cortes monárquicas y las juntas revolucionarias. Todos mecanismos de coordinación. La diferencia es que en vez de togas, escarapelas o pelucas, los validadores de Ethereum usan software. Y no tiene esclavos, por lo menos los que yo conozco.
Repasemos lo que dijimos en el anterior artículo:
¿Un emperador romano o una compu?
Un validador de Ethereum es simplemente una máquina que está corriendo un nodo validador. Un nodo validador consta de 3 piezas mágicas: execution client, consensus client y validator client. Ojo, el validator client se activa dentro del consensus client. Es una especie de “feature extra”. Como activarle las macros a Excel, abrir la ventana del techo del Lambo que te compraste en el último bull market o habilitar trucos en el Age of Empires.
En la foto se ve mejor.
Ahora…¿qué hacen exactamente los validadores? Un validator tiene 2 roles principales: proponer bloques y crear attestations. Proponer bloques consiste en juntar transacciones, verificar que estén ok, armar un bloque y mandárselo a los demás validadores para que te den el ok.
Las attestations son justamente ese ok. Verificar que el bloque que te mandó fulanita esté bien y firmarlo. Como una especie de referendum. O como una demanda colectiva. En realidad no tengo ni idea como será una demanda colectiva. Y seguro vos tampoco. Pero suena bastante parecido, se arma un documento y todos los involucrados lo firman para dar su conformidad. Si algún abogado o abogada me quiere corregir son más que bienvenidos. Lo importante es que quede clara la idea de attestations. Igual ahora lo vemos con más detalle.
Las attestations son como firmas. Es un “dale para adelante” blockchainero.
El tiempo, la angustia existencial y los slots
El tiempo es una dimensión que creamos los seres humanos para darle orden a un universo incierto y confuso. Aumentar la predictibilidad de nuestras vidas es una excelente forma de reducir (en apariencia al menos) la incertidumbre y mitigar (en apariencia al menos) su agonizante impacto existencial. Pero cuando salimos de nuestros angustiados corazones, el tiempo no existe. En la blockchain, por ejemplo, no hay tiempo. No hay un segundero que avance de forma constante pero irascible hacia un porvenir perdido en el mañana. Solo hay bloques. Bloque 1, bloque 2, bloque 3. Sabemos que el bloque 1 viene antes del 2 y este antes del 3 porque así lo convenimos. Cada blockchain tiene una serie de reglas para que podamos convenir cuál es el 1, cuál el 2 y cuál el 3. De eso se trata el consenso justamente. De eso y de atrapar hackers haciendo cositas chingonas con tu guita.
En Ethereum el tiempo se representa con slots y epochs. Cada epoch contiene 32 slots. Los slots están separados por 12 segundos:
- 1 slot: 12 segundos
- 1 epoch: 12 segundos x 32 = 6 minutos con 24 segundos.
Comités, roleplaying y más demandas colectivas
¿Y los bloques?¿y las attestations?¿y Candela? Los bloques están dentro de los slots. El objetivo es que cada slot tenga un bloque. Esto significa que habría 1 bloque cada 12 segundos y 32 bloques por epoch. Ojo igual, puede haber slots vacíos; es decir que no tengan ningún bloque asociado; por lo que el tiempo promedio de bloque es un poco mayor a 12 segundos.
Ok, bien. Ahora pasemos a lo que aquí nos congrega. Los validadores. Se suele decir que en Proof-of-Stake se elige un validador al azar que arma el bloque y lo envía al resto de los nodos de la red. La realidad, como casi siempre, es un poco más compleja.
Lo que sucede es que durante cada epoch, los validadores se dividen en 32 comités (uno por slot). Osea, si hay 32 mil validadores, va a haber 1.000 por comités. Si hay 320 mil validadores va a haber 10.000 por comité. Si hay 38801321038 validadores, nose cuantos comités va a haber, pero van a ser muchos.
La asignación de comités es aleatoria y cambia cada epoch. Como esos profesores de gimnasia medio vagos que armaban los equipos del handbol, el volley o el fulbito con el famoso equipo 1, equipo 2, equipo 1, equipo 2 y así. Entonces… cada slot tiene su propio comité de validadores, que deben ponerse de acuerdo para crear el bloque correspondiente a su slot. Pero además, cada slot va a tener un proposer asignado. Una especie de roleplay. Si fuésemenos un grupo de niños jugando a hacer una demanda colectiva, habría seguramente alguno al que le toque hacer de abogado. Esto es igual.
Block proposer y una elección emocionante
El block proposer simplemente tiene que elegir las transacciones que le gusten (o que le dejen más cashhhhh), armar su bloque y proponérselo a los demás para que le den el ok. ¿Cómo lo hacen? Ya lo sabemos, a través de las “attestation”. La attestation es simplemente una firma. Pero metamos una analogía para divertirnos.
Corre el año 2023; Argentina tiene que elegir un presidente. Hay 3 candidatos: Tini, el estafador de Tinder y Leo Messi. Cada argentino/a arma su boleta con la información de su elección, la pone en un sobre y la manda a la urna. Hay un sistema de gente que junta esos votos y luego varias formas de comunicar a la gente quién fue el ganador.
En Ethereum pasa lo mismo. Los validadores envían su “attestation” a un grupo de “aggrupators” que “agregan” la información y la propagan a la red. Finalmente, todas las attestation agregadas llegan al “block proposer” para que las incluya en el bloque.
Si bien parece un detalle banal dentro del complejo circuito de idas y venidas y profes de gimnasia y abogados, las attestations son un elemento fundamental en la forma en que fue diseñado Ethereum. Las firmas agregadas van a parar a la blockchain. Por lo que mientras menos firmas mejor. Al mismo tiempo, las firmas son la forma en las que Ethereum genera finalidad. Es diferente de, por ejemplo, Bitcoin, que no tiene finalidad. En Bitcoin, en ningún momento una transacción se da por válida al 100%, sino que nos basamos en la idea de la cadena más larga y la baja probabilidad de que aparezca una cadena aún más larga que aquella que contiene nuestras transacción. Ethereum tiene un mecanismo de consenso híbrido que busca el equilibrio justo entre un sistema con miles de firmas que genera una blockchian pesadísima y un sistema sin firmas que dificulta la finalidad definitiva. Parte del roadmap de Ethereum es justamente mejorar algunos de sus elementos a medida que haya nuevos descubrimientos en la tecnología usada para agregar las firmas. Ok, me fui de tema. Solo quería dejar este ratito random.
El que abandona no tiene premio. El validador, sí
Llegamos al momento mágico. Del swap, al bloque creado y firmado por toda la banda. Listo. Ahora solo queda disfrutar el premio. Ethereum paga a todos sus validadores por su participación en esta fascinante ceremonia. El premio no es lineal, depende de varios factores, pero conceptualmente lo importante es:
- coincidir con el resto de la red (en la metáfora esto sería votar a Messi, obviamente).
- mandar la attestation rápido (sí, el que vota a las 8:01 gana más).
Tanto el block proposer como los aggregators son elegidos al azar de entre los validadores que forman parte del comité de cada slot y reciben “premio extra” por su participación destacada.
Ojo. Aclaremos algo. Los validadores no reciben rewards por stakear sus ETH. Es mucho más profundo que eso. Los validadores reciben rewards por ayudar a que el mundo logre una nueva verdad. Porque en definitiva de eso se trata. Las blockchains son máquinas de verdad. State machines. Como la piedra rosetta o el código Hammurabi. No te voy a mentir, tuve que googlear Hammurabi. Y eso que lo escribo bastante seguido. No te voy a mentir, suelo robar bastante con eso. Queda re culto de repente tirar “código de Hammurabi” en un post random.