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 de riesgo Paradigm.

Aunque Monad aún no se ha lanzado, es esperado Estará disponible en su red de prueba pública a fines de 2024, y la implementación de la red principal está prevista para principios de 2025.

Monad es un proyecto de máquina virtual Ethereum (EVM) paralela y, al igual que proyectos similares como Aurora (basado en el protocolo Near) o Sei, intenta paralelizar la ejecución de instrucciones EVM para que la red pueda procesar múltiples transacciones simultáneamente. Esto permite gestionar 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 se pueden procesar simultáneamente. Monad presenta cuatro optimizaciones para mejorar el consenso, la ejecución y el almacenamiento de datos: MonadBFT, ejecución diferida, ejecución paralela y MonadDb.

MónadaBFT

MónadaBFT es un algoritmo tolerante a fallas bizantinas de dos fases diseñado para mejorar la escalabilidad y la eficiencia de la cadena de bloques. Es un derivado de 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 los 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 una confiabilidad decentes en implementaciones prácticas.

El algoritmo HotStuff es un protocolo de consenso diseñado para que los sistemas blockchain logren Tolerancia a fallas bizantinas (BFT)que es la capacidad de un sistema informático de seguir funcionando incluso si algunos de sus nodos actúan de forma maliciosa o presentan fallos.

Esta robustez se logra mediante una serie de rondas de comunicación entre los nodos para acordar el siguiente bloque de la cadena. HotStuff requiere tres rondas de comunicación para alcanzar 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 el consenso de tres a dos.

El mecanismo de consenso funciona en 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) de la ronda anterior. Un QC es una prueba de que un bloque ha sido aprobado por la mayoría de los validadores, lo que indica que están de acuerdo con la validez del bloque.

Por otro lado, un TC indica que el número requerido de validadores no alcanzó un consenso dentro de un período de tiempo determinado. Esto actúa como un mecanismo de respaldo para evitar que el sistema se detenga.

Los validadores votan el nuevo bloque propuesto por el líder. Si un número suficiente de validadores (dos tercios) lo aprueba, el bloque se finaliza en rondas posteriores y se emiten los 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 en un TC. Este TC se envía directamente al siguiente líder. Un bloque se finaliza cuando los validadores ven dos bloques certificados consecutivos.

Esta regla de confirmación de dos fases garantiza la finalización rápida de bloques y, al mismo tiempo, mantiene la seguridad de la red y la tolerancia a fallas. Como en todas las configuraciones de BFT asincrónicas, dos tercios de los nodos de validación de Monad deben ser no adversarios y tener un peso de participación de voto igual para mantener la seguridad.

Ejecución diferida

Ejecución diferida Desvincula 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 el consenso, el consenso de MonadBFT se centra únicamente en el orden de las transacciones.

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

Por lo tanto, los tiempos de bloque pueden llegar a ser bastante largos y se reduce la complejidad de los cálculos que la red puede manejar. El mecanismo de consenso de MonadBFT determina únicamente el orden de las transacciones y permite que la ejecución se realice de forma independiente después de que se alcanza el consenso.

Para garantizar que la ejecución se realice correctamente, Monad retrasa el acuerdo sobre la raíz de 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 las 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 nodo. Árbol de Merkle en el bloque ND.

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

Ejecución paralela

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

Monad emplea la ejecución optimista para lograr el procesamiento de transacciones paralelas. Este método es algo análogo al ejecución especulativa empleado 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 las transacciones anteriores, lo que aumenta el rendimiento general.

Sin embargo, esta estrategia, llamada control de concurrencia optimistapuede dar lugar a 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 total, esto solo añade 1,5 % de gastos generales. Monad también utiliza un analizador de código estático para predecir las dependencias entre transacciones con antelación. Este análisis estático permite a Monad identificar posibles conflictos antes de la ejecución y, aunque no evita todos los conflictos, ayuda a optimizar la programación inicial de las transacciones para lograr una ejecución paralela más eficiente y optimista.

Sei también emplea una paralelización optimista, asumiendo que las transacciones no entrarán en conflicto, pero persigue Un enfoque distinto para gestionar 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 vuelve a procesar las transacciones conflictivas de forma secuencial, de forma similar a Monad.

Sin embargo, el uso de un analizador de código estático por parte de Monad 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 dependencias, que son requerido para metodologías deterministas. En un enfoque determinista empleado por Sui y Solanalas transacciones deben declarar a qué partes del estado tendrán acceso antes de la ejecución.

Esta declaración previa 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 genera resultados consistentes y confiables.

Sin embargo, esta previsibilidad tiene un costo. Analizar dependencias y programar transacciones requiere algoritmos sofisticados, que deben tener en cuenta todas las interacciones potenciales entre transacciones e introducir una sobrecarga computacional, lo que genera 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 a la hora de escalar de manera eficiente. A medida que aumenta el número de transacciones, la complejidad del análisis de dependencias crece exponencialmente.

Base de datos de monad

Base de datos de monad 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 desempeño general. Para superar esta limitación, MonadDB emplea Operaciones de disco asincrónicas, que permiten que el sistema inicie múltiples operaciones de lectura y escritura simultáneamente sin esperar a que cada una de ellas se complete. 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 la ejecución optimista, la 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 las CPU, permite un alto rendimiento al procesar transacciones simultáneamente y volver a ejecutar transacciones conflictivas solo cuando es 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 de EVM paralelos como Sei y sistemas deterministas como Sui y Solana, el enfoque de Monad equilibra la eficiencia y la complejidad, brindando una solución sólida para grandes volúmenes de transacciones.

La introducción de MonadBFT, un algoritmo tolerante a fallas bizantinas de dos fases en canalización, garantiza aún más la rápida finalización de bloques y la seguridad de la red.

Mientras Monad se prepara para su red de prueba pública a fines 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.