¿Cómo escala Monad el EVM mientras preserva la descentralización? MonadBFT es el algoritmo de consenso utilizado en Monad, es la primera implementación resistente a tailfork de Hotstuff (¿qué significa eso?) Así es como MonadBFT puede escalar a miles de validadores mientras es eficiente 🧵
1/7 Mecanismos de Consenso El mecanismo que utilizan las blockchains para asegurarse de que los nuevos bloques sean acordados por la mayoría de los validadores. Los algoritmos de consenso hasta ahora no son capaces de escalar más allá de unos pocos cientos de validadores, ya que la complejidad aumenta en función del cuadrado del número de validadores (en la mayoría de los casos). Dado que cada validador se comunica con todos los demás validadores para acordar los bloques: n validadores x n mensajes = mensajes al cuadrado. Por lo tanto, la complejidad aumenta significativamente con el número de validadores.
2/7 Hotstuff es un algoritmo de consenso que puede escalar linealmente (proporcional directamente al número de validadores) al evitar la mensajería de todos a todos y permitir que un único "líder" se comunique con todos los validadores para el consenso. Así, Hotstuff puede escalar de manera más eficiente que el consenso PBFT tradicional, pero es vulnerable a ataques de tailforking. MonadBFT es la primera implementación resistente a tailfork de Hotstuff.
3/7 ¿Qué es el tailforking? El tailforking ocurre cuando el siguiente líder (validador que propone el siguiente bloque), intencional o accidentalmente, no incluye el QC del bloque válido del líder anterior en su propuesta para el nuevo bloque. (QC significa certificado de quórum, que es una prueba de que todos los validadores han acordado el bloque anterior) Como resultado, el bloque anterior, a pesar de ser válido y tener el apoyo de la mayoría, queda sin confirmar y eventualmente es huérfano o reemplazado por un bloque diferente en la misma altura. Esto interrumpe el mecanismo de incentivos: los proponentes honestos pueden no recibir recompensas por bloque o tarifas si su bloque es omitido, lo que fomenta comportamientos desleales y debilita la seguridad de la red.
4/7 ¿Cómo funciona MonadBFT? → Un líder (Alice) transmite una propuesta de bloque firmada a todos los demás nodos (distribución), quienes reconocen su validez enviando una atestación firmada al siguiente líder Bob (recepción). → Bob agrega las atestaciones en un "Certificado de Quórum" (QC) → Bob transmite el QC a todos los nodos, quienes atestiguan haberlo recibido enviando un mensaje al tercer líder (Charlie) que agrega esas atestaciones. Dado que las atestaciones son sobre un QC, llamamos a este nuevo QC un QC-sobre-QC. → Charlie envía el QC-sobre-QC a todos. Al recibir el QC-sobre-QC, todos saben que el bloque de Alice ha sido finalizado.
5/7 Pipelining En la historia anterior, Bob y Charlie solo están enviando QCs o QCs-sobre-QCs, pero en realidad las propuestas están en tubería: el mensaje de Bob contiene tanto el QC para el bloque de Alice como también el contenido de un nuevo bloque. El mensaje de Charlie contiene el QC para el bloque de Bob (que es un QC-sobre-QC para el bloque de Alice) y también contiene las transacciones para un nuevo bloque. Cuando los validadores envían una atestación para el mensaje de Bob, están atestiguando tanto la validez del bloque de Bob como la validez del QC. Este pipelining aumenta el rendimiento de la red, ya que cada vez que se produce un nuevo bloque, se utiliza un nuevo slot.
6/7 Raptorcast: Protocolo de propagación de bloques de Monad MonadBFT requiere que el líder envíe propuestas de bloques a cada validador. Sin embargo, los bloques pueden ser bastante grandes: 10,000 transacciones/s * 200 bytes/tx = 2 MB/s. Enviar directamente a 200 validadores requeriría 400 MB/s. Idealmente, los validadores no deberían tener un ancho de banda de subida tan alto. Aquí es donde entra Raptorcast. → Los bloques son codificados por el líder (La codificación de borrado significa que el mensaje se descompone en un conjunto de fragmentos, y se puede decodificar a partir de un subconjunto lo suficientemente grande de estos fragmentos) → El líder distribuye un conjunto diferente de fragmentos a todos los validadores en la red (los validadores con mayor participación reciben proporcionalmente más) → Cada validador retransmite sus fragmentos a todos los demás validadores en la red De esta manera, se utiliza todo el ancho de banda de la red para propagar las propuestas de bloques.
30,63K