Monad es una nueva plataforma de contratos inteligentes de capa 1 que recientemente recaudó 225 millones de dólares en financiación de la firma de capital riesgo Paradigm. 

Aunque Monad aún no se ha lanzado, se espera que esté disponible en su red de prueba pública a finales de 2024, y su implementación en la red principal está prevista para principios de 2025.

Monad es un proyecto paralelo de Máquina Virtual Ethereum (EVM) y, al igual que proyectos similares como Aurora (basado en Near Protocol) o Sei, intenta paralelizar la ejecución de instrucciones EVM para que la red pueda procesar múltiples transacciones simultáneamente. Esto permite manejar un mayor volumen de transacciones, aumenta el rendimiento y reduce los costos.

La paralelización implica dividir la ejecución de transacciones en tareas más pequeñas e independientes que pueden procesarse simultáneamente. Monad introduce cuatro optimizaciones para mejorar su consenso, ejecución y almacenamiento de datos: MonadBFT, ejecución diferida, ejecución paralela y MonadDb.

MonadBFT

MonadBFT es un algoritmo bizantino tolerante a fallas de dos fases diseñado para mejorar la escalabilidad y eficiencia de blockchain. Es un derivado del algoritmo HotStuff optimizado para funcionar en condiciones parcialmente sincrónicas. 

Esta optimización es importante, ya que la mayoría de las redes del mundo real no muestran un comportamiento perfectamente sincrónico debido a tiempos de entrega de mensajes variables causados ​​por la congestión de la red, la latencia y otros factores. Al adaptarse a estas condiciones parcialmente sincrónicas, MonadBFT garantiza un rendimiento y confiabilidad decentes en implementaciones prácticas.

El algoritmo HotStuff es un protocolo de consenso diseñado para que los sistemas blockchain alcancen la tolerancia a fallas bizantinas (BFT), que es la capacidad de un sistema informático para continuar operando incluso si algunos de sus nodos actúan de manera maliciosa o tienen fallas.

Logra esta solidez a través de una serie de rondas de comunicación entre nodos para acordar el siguiente bloque de la cadena. HotStuff requiere tres rondas de comunicación para llegar a un consenso, lo que puede convertirse en un cuello de botella para la escalabilidad y la eficiencia. MonadBFT mejora HotStuff al reducir las rondas de comunicación necesarias para lograr el consenso de tres a dos.

El mecanismo de consenso funciona por fases. Un nodo líder propone bloques y los validadores los revisan. En cada ronda, el líder envía un nuevo bloque con un certificado de quórum (QC) o un certificado de tiempo de espera (TC) para la ronda anterior. Un control de calidad es una prueba de que un bloque ha sido aprobado por la mayoría de validadores, lo que indica que están de acuerdo con la validez del bloque.

Un TC, por otro lado, indica que el número requerido de validadores no alcanzó un consenso dentro de un plazo determinado. Esto actúa como un mecanismo alternativo para evitar que el sistema se bloquee.

Los validadores votan sobre el nuevo bloque propuesto por el líder. Si un número suficiente de validadores (dos tercios) lo aprueban, el bloque se finaliza en rondas posteriores y se emiten controles de calidad.

Si los validadores no reciben un bloque válido a tiempo, envían mensajes de tiempo de espera firmados, que pueden agregarse a un TC. Luego, este TC se envía directamente al siguiente líder. Un bloque finaliza cuando los validadores ven dos bloques certificados consecutivos.

Esta regla de confirmación de dos fases garantiza una rápida finalización del bloque al tiempo que mantiene la seguridad de la red y la tolerancia a fallos. Como en todas las configuraciones asincrónicas de BFT, dos tercios de los nodos validadores de Monad deben ser no conflictivos y tener el mismo peso de participación en la votación para mantener la seguridad.

Ejecución diferida

La ejecución diferida desacopla la ejecución de transacciones del consenso. A diferencia de las cadenas de bloques tradicionales como Ethereum, donde los nodos deben ejecutar transacciones antes de establecer un consenso, el consenso de MonadBFT se centra únicamente en el orden de las transacciones.

En Ethereum, los nodos deben llegar a un consenso tanto sobre la lista de transacciones en el bloque como sobre la raíz del árbol Merkle para el estado de ejecución posterior a la transacción. Esto significa que el líder del consenso debe ejecutar las transacciones antes de enviar el bloque, y todos los nodos de validación deben rehacer esta ejecución antes de emitir su voto.

Por lo tanto, los tiempos de bloque pueden volverse bastante largos y se reduce la complejidad del cálculo que la red puede manejar. El mecanismo de consenso de MonadBFT determina sólo el orden de las transacciones y permite que la ejecución se realice de forma independiente una vez que se alcanza el consenso.

Para garantizar que la ejecución se realice correctamente, Monad retrasa el acuerdo sobre la raíz Merkle del estado en bloques D. D es un parámetro de todo el sistema que actualmente se espera que sea 10.

Este diseño mitiga los riesgos asociados con un nodo malicioso que no ejecuta transacciones correctamente. Una vez que la red alcanza un consenso sobre el bloque N con una mayoría de dos tercios de los votos, también acuerda el estado representado por el árbol Merkle en el bloque N-D.

Si algún nodo descubre un error al ejecutar el bloque N-D, vota en contra de la propuesta para el bloque N. Esto desencadena una reversión al estado final del bloque N-D-1, seguido de la reejecución de las transacciones del bloque N-D. Un nodo puede verificar y corregir sus resultados de ejecución con respecto a otros nodos en la red verificando su propia raíz de Merkle. Los nodos ligeros pueden consultar nodos completos para pruebas Merkle de valores de variables de estado.

Ejecución paralela

Las populares cadenas de bloques de ejecución paralela son deterministas u optimistas.

Monad emplea una ejecución optimista para lograr el procesamiento de transacciones en paralelo. Este método es algo análogo a la ejecución especulativa empleada por las unidades centrales de procesamiento (CPU), donde los procesadores predicen la ruta de las instrucciones de bifurcación y las ejecutan con anticipación. 

El motor de ejecución de Monad comienza a procesar nuevas transacciones incluso antes de que finalice la ejecución de transacciones anteriores, lo que aumenta el rendimiento general.

Sin embargo, esta estrategia, denominada control de concurrencia optimista, puede provocar errores cuando las transacciones posteriores son interdependientes. Si se detecta un conflicto (por ejemplo, cuando dos transacciones intentan modificar el mismo saldo de cuenta), las transacciones afectadas se vuelven a ejecutar para corregir las discrepancias.

En el peor de los casos, una transacción debe ejecutarse dos veces, pero en conjunto, esto sólo añade un 1,5% de gastos generales. Monad también emplea un analizador de código estático para predecir las dependencias entre transacciones con anticipación. Este análisis estático permite a Monad identificar conflictos potenciales antes de la ejecución y, aunque no previene todos los conflictos, ayuda a optimizar la programación inicial de transacciones para una ejecución paralela más eficiente y optimista.

Sei también emplea una paralelización optimista, suponiendo que las transacciones no entrarán en conflicto, pero sigue un enfoque distinto para manejar los conflictos. Durante el proceso de paralelización, Sei rastrea qué partes del estado modifica cada transacción. Si detecta que dos transacciones entran en conflicto, lo que significa que intentan modificar la misma parte del estado, el sistema detiene temporalmente la ejecución y reprocesa las transacciones en conflicto de forma secuencial, similar a Monad.

Sin embargo, el uso de Monad de un analizador de código estático permite una programación de transacciones más eficiente, reduciendo así la posibilidad de conflictos, mientras que Sei simplemente aborda los conflictos a medida que surgen durante la ejecución.

La ejecución optimista también elimina la necesidad de algoritmos complejos de programación y análisis de dependencia, que son necesarios para las metodologías deterministas. En un enfoque determinista empleado por Sui y Solana, las transacciones deben declarar a qué partes del estado accederán antes de la ejecución.

Esta declaración inicial permite al sistema programar transacciones de manera que se eviten conflictos durante la ejecución. La principal ventaja de este método es la previsibilidad: dado que las dependencias se conocen de antemano, el sistema puede garantizar que las transacciones no interfieran entre sí, lo que da como resultado resultados consistentes y confiables.

Sin embargo, esta previsibilidad tiene un costo. El análisis de dependencias y la programación de transacciones requieren algoritmos sofisticados, que deben tener en cuenta todas las interacciones potenciales entre transacciones e introducir una sobrecarga computacional, lo que resulta en mayores requisitos de hardware.

La necesidad de análisis y programación en tiempo real también aumenta la complejidad, ya que el sistema debe monitorear y ajustar continuamente el orden de ejecución para evitar conflictos.

Además, un enfoque determinista puede enfrentar desafíos para escalar de manera eficiente. A medida que aumenta el número de transacciones, la complejidad del análisis de dependencia crece exponencialmente.

MonadDB

MonadDB es una base de datos personalizada diseñada específicamente para optimizar la implementación de la ejecución paralela. En las cadenas de bloques tradicionales como Ethereum, el acceso de entrada/salida (E/S) se convierte en un cuello de botella importante, principalmente porque estos sistemas dependen de operaciones de E/S sincrónicas. 

Los procesos deben esperar a que se complete cada operación de lectura o escritura antes de pasar a la siguiente, lo que limita gravemente el rendimiento y el rendimiento general. Para superar esta limitación, MonadDB emplea operaciones de disco asíncronas, que permiten al sistema iniciar múltiples operaciones de lectura y escritura simultáneamente sin esperar a que se completen cada una. Esto mejora la velocidad general del procesamiento de transacciones, especialmente cuando se combina con la ejecución paralela.

Conclusión

Monad representa un avance significativo en la tecnología blockchain. Emplea técnicas innovadoras como ejecución optimista, ejecución diferida y una base de datos personalizada, MonadDB, para mejorar la escalabilidad y la eficiencia. 

Su método de paralelización optimista, similar a la ejecución especulativa en CPU, permite un alto rendimiento al procesar transacciones simultáneamente y volver a ejecutar transacciones conflictivas solo cuando sea necesario.

Combinado con el análisis de código estático, este método optimiza la programación de transacciones y reduce la probabilidad de conflictos. En comparación con otros proyectos EVM paralelos como Sei y sistemas deterministas como Sui y Solana, el enfoque de Monad equilibra la eficiencia y la complejidad, proporcionando una solución sólida para grandes volúmenes de transacciones.

La introducción de MonadBFT, un algoritmo bizantino tolerante a fallas de dos fases, garantiza aún más la rápida finalización del bloque y la seguridad de la red.

Mientras Monad se prepara para su red de prueba pública a finales de 2024 y el despliegue de su red principal a principios de 2025, se posiciona como un actor formidable en la próxima generación de plataformas blockchain escalables.