¿Qué es Flow? Una blockchain para DApps de alta velocidad

José Maldonado
24 JUN 2021
¿Qué es Flow? Una blockchain para DApps de alta velocidad
1.

Introducción

Un proyecto que ha captado la atención de muchos en la criptocomunidad es Flow, una blockchain pensada para DApps altamente dinámicas y el mundo DeFi (Finanzas Descentralizadas). De hecho, Flow se define como una plataforma integrable a cualquier aplicación que necesite del poder de una blockchain veloz a cualquier nivel. 

¿La clave para ello? Flow cuenta con innovaciones que la hacen una blockchain veloz. De hecho, posiblemente sea la blockchain en funcionamiento más veloz de todo el ecosistema cripto.

2.

Orígenes de Flow

La historia de Flow comienza en manos de una empresa muy conocida en el mundo cripto, Dapper Labs, los creadores de CryptoKitties. Dapper Labs comenzó a construir Flow poco después del lanzamiento de su NFT. La idea detrás del proyecto es superar las debilidades de Ethererum, las cuales CryptoKitties hizo patente, y que se han convertido hoy en día, en uno de los dolores de cabeza más recurrentes de los desarrolladores y usuarios de Ethereum.

El proyecto comenzó a desarrollarse oficialmente el 15 de agosto de 2019, momento en el que Dapper Labs realizó la primera venta privada de tokens FLOW. En dicha venta se colocaron un total de 112 millones de tokens FLOW, a un precio de 0,1 $ por token, para un total acumulado de 11,2 millones de dólares. Este primer capital captado serviría de semilla económica para desarrollar Flow. 

Los whitepaper base de Flow

El primer paso en ese sentido se hizo realidad en septiembre 2019 con la presentación de tres whitepaper. El primero, conocido como Flow: Separating Consensus and Compute, que sentaba las bases de una nueva forma de hacer funcionar a la tecnología blockchain. El segundo, conocido como Flow: Execution Verification, que explica cómo realizar la verificación de trabajo computacional en una red asincrónica y de roles divididos. Y, el tercero, conocido como Flow: Block Formation and Execution, que explica cómo usar la red asincrónica y de roles divididos para ser usada con un protocolo de consenso distribuido de alta velocidad para generar bloques, validar información y ejecutar instrucciones. 

Estos tres whitepaper ya dejaban muy en claro el nivel de innovación que Flow incluiría en su proyecto. Y, de hecho, ese nivel de innovación se hizo una realidad cuando en mayo de 2020, Dapper Labs lanzó la versión beta de Flow. ¿Resultado? Una red capaz de alcanzar 1000 TPS sin apenas esfuerzo, y lo mejor de todo, con una escalabilidad exponencial. De esa forma, Flow se perfilaba ya como uno de los proyectos blockchain más prometedores y eso lo llevó a un tremendo éxito en su segunda ronda de financiación, con un capital captado superior a los 20 millones de dólares. 

Actualmente, Flow se ha convertido en uno de los proyectos blockchain de mayor crecimiento en 2021. De hecho, su valor pasó de 1,5 $ (enero 2021) a más de 46 $ (abril 2021), con una corrección a 10 $ (en la actualidad), lo que aún sorprende por su grandioso crecimiento en tan poco tiempo. 

Relacionado con: La blockchain Flow de Dapper Labs da un gran paso hacia la mainnet

3.

¿Cómo funciona Flow?

Flow no funciona como la mayoría de las blockchain que conocemos. De hecho, lo único de su funcionamiento en común con otras blockchain es el uso de un protocolo de consenso y una red de nodos, del resto, bien podemos decir que Flow es un mundo alienígena. 

En primer lugar, Flow se aleja de las construcciones monolíticas y monotareas de los nodos. Por ejemplo, en Bitcoin, los mineros solo pueden minar bloques, su tarea es esa y nada más. Mientras que los nodos velan porque los bloques generados cumplan con las reglas generales del protocolo para que sean aceptados e incluidos en la blockchain. Este modelo ha sido probado y es seguro, pero tiene un problema: es lento. Para reconocer el problema basta con ver que Bitcoin y las blockchain derivadas que usan este modelo no son rápidas, e incluso, usando protocolos como PoS, la velocidad final es limitada.

 

https://lh3.googleusercontent.com/tKkkgRXHEtl5pXs9V_Rwcy7sJ-HQKtI0rUJhYZHg-hEBlwWZdgk2Kz4xW5hKG2GhR2aELa-i611HKBRzyDb9MvQ0lJPVfL01OmOkn2EpRHU3A5G8m3TRBMkegew6gw

Un cambio de paradigma

Sin embargo, Flow cambia radicalmente esto. Para ello, Flow crea nodos con roles muy específicos, y los une por medio de una red de comunicación asincrónica. De esta manera, los nodos pueden dedicarse a sus tareas específicas, enviar y recibir mensajes entre sí, y al terminar, generan un bloque, mientras continúan con la generación del siguiente.  El cambio con respecto al modo tradicional, es que los roles permiten a los nodos de Flow dividir el tratamiento de las transacciones. 

Así, la validación, ejecución y generación de bloques, se realizan en forma asincrónica en sus respectivos nodos, y cuando todo se ha completado, el bloque de transacciones se puede considerar como ejecutado, a la vez que no se abandona con el procesamiento de las próximas transacciones y bloques.

Una comparación muy sencilla para entender esta diferencia es la siguiente: imagina que intentas resolver 1000 ejercicios de matemáticas. Si usas el modelo tradicional blockchain, este te pedirá que realices ejercicio por ejercicio. Mientras que, si usas el modelo de Flow, puedes tomar esos 1000 ejercicios, dividirlos entre tus ayudantes, resolverlos en paralelo, y al final emitir sus resultados en orden.

Este modelo de red diseñado por Flow se conoce como red heterogénea de alta paralelismo, y es la clave de su altísima velocidad, rendimiento y escalabilidad prácticamente ilimitada. 

Nodos dentro de Flow

La heterogeneidad de Flow, proviene de los roles que sus nodos pueden ocupar. En tal caso, Flow ha creado los siguientes tipos de nodos:

Recolección

Los nodos de recolección tienen como tarea recopilar y administrar las transacciones que se realizan en la red. Esta es una tarea que exige un alto ancho de banda, ya que son los responsables de enviar y recibir mensajes a la red, y sincronizar el funcionamiento del resto de nodos para procesar las transacciones que tienen lugar en Flow. 

Para maximizar la eficiencia de esta tarea, los nodos de recolección son capaces de agruparse en subredes y cooperar entre ellos. Esto tiene un fin muy claro: hacer que las transacciones tratadas por un clúster, no sean tratadas por otro clúster, y se generan así, problemas como el doble gasto entre otros. En pocas palabras, los nodos de recolección clasifican las transacciones, las marcan con un hash y se aseguran de que las mismas solo puedan ser procesadas por el resto de nodos conectados a ese clúster en específico. 

Consenso

Los nodos de consenso tienen la tarea de formar y proponer bloques respetando las reglas del protocolo de consenso Flow. Para realizar esta tarea, los nodos de consenso conectados a un clúster de recolección, requieren a las mismas transacciones que están a la espera de ser procesadas. 

Una vez reciben estas transacciones, comienzan con el proceso de verificación y votación del bloque generado. Cuando el umbral de votaciones para aceptar el bloque es alcanzado, los nodos de consenso firman el bloque y emiten su veredicto como bloque finalizado. 

Ejecución

Los nodos de ejecución son los encargados de ejecutar las instrucciones que se encuentran dentro de las transacciones. La computación de estas instrucciones se hace en paralelo, aprovechando las ventajas del lenguaje de programación usado en los smarts contracts de Flow, y la libertad operacional que brinda el rol de nodo de ejecución. 

El trabajo de estos nodos depende en un principio de la información de los nodos de recolección y nodos de consenso. Si una transacción se encuentra aprobada por un nodo de recolección y pasa a un nodo de consenso para ser incluida en el próximo (o próximos bloques), entonces los nodos de ejecución comienzan a computar sus instrucciones para saber el estado final de esas instrucciones. Si las operaciones son válidas, entonces el estado final será válido, pero en caso de que falle o se viole alguna regla del sistema, el estado de la ejecución fallará. En todo caso, los nodos de ejecución sólo calculan estos estados sin que ellos modifiquen de alguna manera la información de la blockchain.

Una vez terminado el trabajo de los nodos de validación, el estado final de la ejecución se envía a los nodos de consenso, junto con una pequeña prueba de verificación que es incluida en la información de ese bloque, para que pase al último nivel.

Una ventaja de usar este sistema es que los nodos de ejecución son decisivos en la escalabilidad. De hecho, mientras más potente sea el hardware de un nodo de validación, más rápido computará las transacciones. Así, este modelo permite que Flow pueda escalar de forma exponencial, porque al agregarse nuevos nodos y estos sean más potentes, más rápida podrá ejecutar estas instrucciones y mayor velocidad tendrá la blockchain.

Validación

Los nodos de validación tienen una tarea muy sencilla y específica: revisar que el trabajo de los nodos de recolección, consenso y ejecución haya sido realizado de forma correcta. Para ello, los nodos de validación verifican los hashes generados por cada uno de los nodos anteriores y con la aceptación de los mismos, pueden estar seguros de que el trabajo ha sido realizado de forma correcta. En este punto, los nodos de validación envían a la red la notificación de un bloque recién generado, y se prosigue con la revisión del próximo bloque.

HotStuff, orquestando el funcionamiento de la red

El nombre de HotStuff es con el que se conoce al protocolo de consenso de Flow, y está construido de principio a fin, para ser muy rápido. HotStuff es un protocolo que comenzó su desarrollo en 2018, y que fue presentado finalmente en julio de 2019, por sus desarrolladores Maofan Yin, Dahlia Malkhi, Michael K. Reiter, Guy Golan Gueta y Ittai Abraha, todos estudiantes de la Universidad de Cornell. 

De hecho, si conoces Libra de Facebook y has leído sus whitepaper, verás que HotStuff es el protocolo de consenso usado para este proyecto. Dicho protocolo usa un un sistema de resolución del problema SMR (State Machine Replication) para su funcionamiento. Este problema indica que, un conjunto de máquinas debería ser capaz de resolver los “comandos” enviados a sus sistemas, de forma tal que ese conjunto de máquinas, tomen una pequeña parte del trabajo, lo computen, repliquen el mismo, y el resultado final, sea el trabajo completado sin errores en el proceso de verificación global del sistema. Esta es precisamente la base del funcionamiento heterogéneo y paralelo de la red Flow, y es completamente resistente a fallas bizantinas, asegurando así la seguridad de la red frente a distintos problemas. 

Pero cuando hablamos de que HotStuff es rápido, ¿A qué tan rápido nos referimos? Pues bien, HotStuff en Flow puede pasar de recolectar transacciones a comenzar su validación, en apenas 5 ms, y terminar el proceso de producción, en menos de 1 segundo. De hecho, 1 segundo es el tiempo de producción real, pero se ha llevado a 2,5 segundos para mantener una mejor sincronización a nivel de red. 

Cadence y smarts contracts en Flow

Cadence es el nombre con el que se conoce al lenguaje de programación para smart contracts de Flow. Este lenguaje es un derivado directo del lenguaje Move, el mismo que fue desarrollado por la empresa Facebook para su criptomoneda Libra. Su principal ventaja es que es un lenguaje dirigido a recursos, que es capaz de representar accesos a smarts contracts, propiedades o funciones on-chain de forma completamente nativa. 

Esto permite, por ejemplo, que Flow pueda crear smart contracts autoactualizables. Es decir, puedes enviar un smart contracts a la red Flow, y en caso de que quieras actualizarlo, puedes hacerlo gracias a un sistema de versiones incremental. Así, el desarrollador puede liberar en la red una versión, y en caso de corregir algún error, liberar la siguiente versión con la corrección, que rápidamente será asignada al resto de recursos que hacen uso de dicho smart contracts sin mayores problemas. Para aceptar los cambios, el usuario solo debe llamar al smart contract y si hay un cambio, será informado del mismo, pidiendo que autorice la nueva versión o, por el contrario, siga usando la versión anterior si lo desea. 

4.

Conclusiones

Queda claro que Flow es un proyecto con mucho futuro. De hecho, su actual beta pública deja entrever el potencial de su modelo, y muchos proyectos apuestan por el mayor desarrollo de esta tecnología. En todo caso, Flow es uno de los grandes proyectos de este 2021, y seguramente veremos mucho más de este proyecto en un futuro cercano.

Relacionado con: La capitalización de mercado diluida de Flow supera los $40,000 millones al ponerse a la venta tulipanes no fungibles