Un ingrediente más para mejorar la escalabilidad en el ecosistema Blockchain: zkEVM

María Teresa Nieto Galán    30 agosto, 2022
Foto: Guerrillabuzz Crypto PR / Unsplash

Blockchain lleva estando muchos años en el punto de mira, con sus subidas y bajadas de ilusión. Probablemente, ahora tras el boom de los NFT y los distintos “crypto-crush” que han sucedido con ciertas criptomonedas, como en el caso de Terra con Luna, podíamos pensar que estamos en uno de los puntos con mayor desilusión de la historia de esta tecnología…pero, afortunadamente, para los que nos dedicamos a ella, no es así.

No obstante, las contribuciones y los avances relacionados con esta tecnología durante este año no se han centrado en el tema financiero, si no que han tratado de trabajar en torno a una de las características del trilema de Blockchain: la escalabilidad.

A modo de recordatorio, la escalabilidad es la capacidad que tiene un sistema a adaptarse cuando se produce un incremento significativo de usuarios. En otras palabras, un sistema escalable nos daría el mismo rendimiento en transacciones por segundo, ya haya cinco usuarios utilizándolo o cinco mil.

Si quieres profundizar un poco más en este tema, no puedes perderte este artículo donde hablamos sobre ello:

Aproximaciones para escalar Blockchain

Resumiendo, principalmente existen dos tipos de aproximaciones para escalar:

  • Soluciones Layer 1 (de primera capa o L1): Consisten en la modificación de la propia tecnología de la red como, por ejemplo, cambiar el tamaño de bloque o el algoritmo de consenso. Un ejemplo de ello fue la modificación del tamaño de bloque de Bitcoin, creando la red de Bitcoin Cash donde el tamaño era más grande. Además, este tipo de soluciones están teniendo bastante relevancia en estos días ya que la red de Ethereum está modificando el algoritmo de consenso de Proof of Work a Proof of Stake, una transición que ha sido nombrada como The Merge.
  • Soluciones Layer 2 (de segunda capa o L2): Consisten en crear soluciones alternativas que permitan mejorar el rendimiento sin la modificación de la tecnología, como, por ejemplo, la agrupación de las transacciones o el uso de redes completamentarias conocidas como sidechains. Sólo de tanto en cuando estas “nuevas redes” escriben en las redes de Layer 1 (e.g. Bitcoin o Ethereum), sin que esas escrituras penalicen el rendimiento de la sidechain.

Puesto que la tecnología Blockchain es descentralizada, las soluciones de L1 en ocasiones son difíciles de implantar, ya que, para aplicarlas a las redes existentes, la mayoría de la red tiene que ponerse de acuerdo para poder añadir esa modificación. Además, puede darse el caso de que ese acuerdo es, en ocasiones, imposible, pues diferentes grupos y consorcios lanzan nuevas redes con distinto alcance y naturaleza enfocadas normalmente en nichos verticales donde se soluciona el problema del rendimiento sin deudas con sistemas y redes previamente establecidas.

Por el contrario, las soluciones L2 al ser, en parte, independientes de la tecnología o red subyacente donde se registran ocasionalmente ciertas transacciones y datos, garantizan mucha más flexibilidad que las anteriores.

Rollups

Dentro de las soluciones del tipo L2 una de las que más están llamando la atención de todos los entusiastas de la tecnología son los rollups. Un rollup permite agrupar un conjunto de transacciones en una única transacción, que sería la que se almacenase en la red Blockchain principal (L1), consiguiendo así un aumento del rendimiento.

Si quieres profundizar en este concepto y sus diferentes alternativas te recomiendo encarecidamente que te leas el siguiente artículo:

Para que puedas seguir leyendo este post, el resumen que nos afecta es que existen dos tipos de rollups, los zk-rollups y los optimistic rollups. Todos ellos, cuando son calculados y se van a almacenar en una red Blockchain, incluyen lo que se conoce como prueba de validez. Esta prueba de validez permite comprobar que las transacciones que se han agrupado son válidas.

La principal diferencia entre ellos es que los optimistic rollups sólo comprueban su validez cuando alguien lo solicita, de ahí a que sean “optimistas”, mientras que los zk-rollups la validez se calcula siempre que se vaya a almacenar.

La sigla “ZK” de este tipo de rollups significa “Zero Knowledge” o traducido al castellano “Conocimiento Cero”. Este concepto proviene de un algoritmo de criptografía, el cual permite demostrar que un dato es válido sin revelar el dato en sí, ¿interesante verdad?

Aunque este concepto pueda parecer algo abstracto, no te preocupes, puedes indagar más sobre él leyendo este artículo:

¿Cómo aplica esto a la práctica?

Entre los muchos casos de uso de la tecnología Blockchain, dos de los más conocidos son las criptomonedas y los NFTs, y más aún después del boom que ha habido durante los últimos tiempos. No obstante, puede haber muchos casos de uso más, y los límites están prácticamente en nuestra imaginación gracias a los contratos inteligentes o smart contracts.

Por si desconocieses este término, un smart contract es simplemente un programa o aplicación que es ejecutado en los nodos de una red Blockchain de manera descentralizada. Además, al ser una aplicación, nos permite programar cualquier lógica de negocio, desde una cadena de suministro a un proceso de compra-venta de un objeto.

Ahora bien, como cualquier programa, los contratos inteligentes necesitan ejecutarse en lo que se conoce como entornos de ejecución. En concreto, en el ecosistema que se ha construido alrededor de la tecnología de Ethereum, los contratos inteligentes se ejecutan en lo que se conoce como Ethereum Virtual Machine (EVM).

Cada nodo Blockchain de la red de Ethereum o redes basadas en esta tecnología (como Polygon o cualquiera que implemente Hyperledger Besu), tienen una EVM para poder ejecutar los smart contracts y así, posteriormente, ejecutar los algoritmos de consenso para validar las transacciones.

Puesto que una red Blockchain es utilizada de manera global, podéis imaginar la de smart contracts que podrían ser ejecutados de manera instantánea y, por eso, lo ideal conseguir que una red Blockchain sea capaz de procesar miles (o millones) de transaccione por segundo.

Rollups de las ejecuciones de los smart contracts

La criptografía que hay detrás de los rollups, en concreto de los zk-rollups, no es precisamente sencilla y, esto, repercute en el alto coste computacional que supone generar las pruebas de validez.  Por esta razón, las aplicaciones que veíamos de los rollups hasta la fecha estaban muy orientadas a intercambios entre criptomonedas (o swaps) y transacciones con tokens fungibles, debido a que su implementación era más sencilla que una generalización que se pudiese aplicar a cualquier tipo de aplicación.

Sin embargo, recientemente, gracias a nuevas aportaciones realizadas de modo open source como la zkEVM de Polygon, está empezando a cobrar protagonismo el concepto de zkEVM  (Zero Knowledge Ethereum Virtual Machine) y las soluciones que se construyen entorno a él. No obstante, la de Polygon no es la única ya que hay otras como la de Scroll zkEVM o la Applied zkEVM.

Como bien indica su nombre, una zkEVM es una máquina virtual que permite ejecutar contratos inteligentes, como actualmente hace Ethereum u otras redes, y que es compatible con pruebas de conocimiento cero. En otras palabras, gracias a este tipo de solución, tras ejecutar un contrato inteligente en su entorno virtual la transacción resultante es agrupada de manera automática en un zk-rollup junto con otras transacciones.

A modo práctico, es necesario que exista otra red Blockchain (u otras redes Blockchain) donde cada nodo tuviera una zkEVM y en la que los desarrolladores de aplicaciones desplegarían las aplicaciones descentralizadas. Cada vez que se ejecutara alguna funcionalidad de esas aplicaciones, el resultado tendría asociado una prueba de conocimiento cero que sería agrupado en un rollup y enviado a una cadena principal, como Ethereum. En esta red principal es donde se garantizaría y se daría validez a la inmutabilidad de los datos generados con la transacción.

De esta manera, al mandar únicamente una única transacción con un resumen de una agrupación de muchas transacciones, conseguimos escalar la red principal.

¿Por qué es importante tener zkEVM?

Como ya veníamos adelantando, tratando con el tema de la escalabilidad de las redes Blockchain, el poder tener entornos de ejecución de aplicaciones compatibles con rollups permitirán mejorar el rendimiento de la tecnología.

Además, esta escalabilidad se conseguiría de manera segura, ya que la criptografía asociada a las pruebas de conocimiento cero es muy robusta.

Por otro lado, los costes de las transacciones serían más bajos debido a que, al reducir el número de transacciones en la red principal los nodos validadores no priorizarían las transacciones con mayor precio por gas, problema que actualmente sucede por el bajo rendimiento que este tipo de redes.

Asimismo, al almacenar pruebas de conocimiento cero donde el dato en sí no se revela, se crearía la posibilidad de poder dejar constancia de transacciones privadas en redes públicas, cosa que hasta la fecha no se ha podido conseguir.

Para terminar, la creación de este tipo de soluciones de escalabilidad es independiente e, incluso, complementario de las soluciones de capa 1, como la transición de Proof of Work a Proof of Stake en Ethereum. Desde luego, lo que sí está claro es que la solución final será una combinación de soluciones de L1 y L2.

Así que, como ya hemos visto, aunque se haya vaticinado el comienzo del famoso “crypto-winter”, son numerosas las soluciones que están haciendo que, por fin, se esté alcanzando el grado de madurez suficiente para que se pueda adoptar la tecnología Blockchain de manera masiva.

Deja una respuesta

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