Entendiendo el concepto de “rollup” para darle escalabilidad a la cadena de bloques

María Teresa Nieto Galán    7 marzo, 2022
Concepto de “rollup” para darle escalabilidad a la cadena de bloques

En artículos previos ya hemos comentado lo importante que es la escalabilidad en la tecnología Blockchain y cómo este ecosistema esta empezando a crear soluciones para poder conseguir redes públicas más rápidas y eficientes computacional y energéticamente hablando.

(Te recomiendo que si has llegado hasta aquí sin leer el artículo previo, que le dediques cinco minutos de tu tiempo 🙂 )

De todas las soluciones analizadas una de las más prometedoras son lo que se conocen como “rollups”. Este nuevo paradigma se espera que sea la piedra angular de la escalabilidad en Ethereum y está clasificado dentro de las soluciones de capa 2.

No obstante, antes de ponernos manos a la masa para entender en profundidad en qué consiste esta idea, hagamos un repaso de la magia matemática, también conocida como criptografía, que hay detrás de la tecnología de la cadena de bloques.

Empecemos por lo más básico: el hash

El concepto más básico por el que empezaremos es el llamado hash o función resumen. Este algoritmo matemático nos permite transformar cualquier dato (palabras, frases, documentos, etc) en una nueva serie de caracteres con una longitud fija. Por ejemplo, si hasheamos “¡Hola mundo!” obtendríamos lo siguiente: “239bdfaad79afdf9220349ddccd67b1e801aa275d757ac90c3977ac2f0a1f9e4”.

Una de las características de los hashes es que si modificásemos cualquier carácter del contenido que transformamos, el hash cambia completamente. Por ejemplo, si le quitamos una exclamación a la frase anterior y hasheamos “¡Hola mundo” el resultado sería: “48666287270d81108ea41339aa48316f92c52995690b6da6b4f86242b408f779”. Por eso, uno de los muchos casos de uso de este tipo de funciones criptográficas es el poder garantizar la integridad de documentos.

Finalmente hay que destacar que el hash, a diferencia del cifrado, una vez se ha generado no se puede volver hacia atrás. En otras palabras, si nosotros tenemos un hash, no podemos descifrar que había previamente a la ejecución del algoritmo.

Complicamos la teoría y añadimos un poco de botánica: Árboles de Merkle

Por otro lado, otro concepto a repasar es lo que se conoce como árboles de Merkle. Esto es una estructura de datos en forma de árbol binario, binario porque cada nodo solo tiene dos hijos.

Si nos fijamos en la siguiente figura, el árbol se construye de abajo a arriba, de manera que en el nivel 0 tendríamos los datos en bruto, en el nivel 1 los datos transformados a hash, en el nivel dos se haría hash con los dos nodos hijos y así sucesivamente hasta que se llegase al último nivel o a el nodo raíz del árbol.


Ilustración gráfica de un árbol de Merkle. David Göthberg

Este tipo de estructura de datos proporciona un método de verificación segura y eficiente de la información, ya que, si cambiásemos un dato de una de las hojas del nivel 0, al hacer los hashes hacia los niveles superiores, el resultado cambiaría drásticamente en el nodo raíz.

Actualmente, el mayor caso de uso de los árboles de Merkle es el almacenamiento seguro de las transacciones en una red blockchain.

Ahora bien, os preguntaréis, ¿por qué tanto concepto criptográfico si además esto ya está aplicado en esta tecnología? La respuesta es sencilla, los rollups también se basan en el concepto de los árboles de Merkle para poder agrupar las transacciones.

Ya tenemos todos los ingredientes listos…¿en qué consisten los rollups?

Un rollup es un conjunto de protocolos que combina los árboles de merkle, más criptografía de la que no entraremos en profundidad en este artículo y un contrato inteligente desplegado en una red blockchain.

Este contrato inteligente mantiene la raíz del estado del rollup, o, en otras palabras, almacena el contenido del nodo raíz del árbol de Merkle que contiene la información que ha sido comprimida. Esta información comprimida son un conjunto de transacciones, de manera, que, en lugar de realizar todas las transacciones en la red, estas pueden hacerse fuera y se subiría únicamente un resumen de todas ellas para realizar en su lugar únicamente una transacción.

Ilustración del funcionamiento de los rollups. Vitalik Buterin.

Este mecanismo no está restringido, si no que cualquier persona puede publicar una agrupación de transacciones, siempre que tenga en cuenta en el cálculo la raíz del estado anterior (muy similar a la manera en la que se encadenan los bloques en blockchain).

En el momento de dejar grabado el resultado de un nuevo lote de transacciones, el contrato inteligente comprueba que la raíz de estado del lote de transacciones anterior coincide con la raíz de su estado actual, porque todavía no ha sido actualizado. Si coincide, se actualizaría cambiando el estado a la nueva raíz como se puede apreciar en la siguiente imagen:

Ilustración del funcionamiento de los rollups. Vitalik Buterin.

Sin embargo, ¿qué pasaría si alguien hace un lote con transacciones que no han ocurrido realmente? Al final nos estamos basando en que el estado de la raíz anterior sea igual, pero en ningún momento se comprueba que las transacciones que se están agrupando son válidas.

Para esta validación tan necesaria, hay dos tipos de rollups:

  • Optimistic Rollup: Se asume que las transacciones que se agrupan son válidas por defecto. El contrato inteligente mantiene un registro de todo el historial de las raíces y el hash de cada lote. Si alguien descubre que el lote tenía una raíz de estado errónea se publica una prueba de fraude en la cadena. El contrato, tras esto, verifica esa prueba reconstruyendo el árbol y en caso de que efectivamente haya habido un fraude se revierte ese lote y los lotes posteriores.

En el caso de que no se presenten pruebas de fraude, este método es muy eficiente. Sin embargo, si hay muchas pruebas, hay que procesar toda la información para analizar su validez y, por tanto, se pierde eficiencia.

  • ZK-Rollup: se almacena una prueba de validez en el contrato siguiendo el protocolo de conocimiento cero (Zero Knowledge Proof) usando pruebas ZKSnarks, basadas en ello. De esta manera, se demostraría que el resultado de la raíz del nuevo estado es correcto sin tener que procesar todas las transacciones del lote. Con este fin, el contrato realizaría una comprobación de la validez de la raíz antes de almacenarla.

Finalmente, cabe destacar, que los rollups en ocasiones están muy relacionados con el uso de sidechains o cadenas alternativas. De esta manera las transacciones se realizarían en una cadena alternativa y cada cierto tiempo se irían generando rollups de conjuntos de transacciones que han sucedido con el objetivo de ser volcados en otra red.

En otras palabras, si quisiéramos hacer transacciones en Ethereum, pero esta red no nos diera el rendimiento necesario, se podrían hacer en una red alternativa y cada cierto tiempo se podrían ir volcando rollups en la red principal.

Soluciones de rollups en el mercado

Actualmente hay empresas que ya están empezando a utilizar este mecanismo para poder beneficiarse de esta mejora de escalabilidad en redes blockchain públicas.

Entre ellas podemos encontrar Polygon con Hermez que han creado una solución de zk-rollups de tipo open-source, con el objetivo de poder hacer transferencias de tokens de manera segura y con un coste más bajo.

También existe zkSync, un motor de escalamiento y privacidad para Ethereum. Esta implememtación permite realizar transferencias de bajo coste de ETH y tokens ERC20 en la red Ethereum o, incluso, swaps atómicos.

Y, por último, la solución de la empresa Consensys de zk-rollups, la cual será validada mediante una prueba de consenso junto con uno de los gigantes del mundo de los pagos, Mastercard.

Referencias:https://vitalik.ca/general/2021/01/05/rollup.html

Deja una respuesta

Tu dirección de correo electrónico no será publicada.