Monad è una nuova piattaforma di contratto intelligente di livello 1 che ha recentemente raccolto 225 milioni di dollari in finanziamenti dalla società di venture capital Paradigm. 

Sebbene Monad non sia ancora stato lanciato, si prevede che sarà attivo sulla sua testnet pubblica alla fine del 2024, con l’implementazione della mainnet prevista per l’inizio del 2025.

Monad è un progetto parallelo di Ethereum Virtual Machine (EVM) e, come progetti simili come Aurora (basato sul protocollo Near) o Sei, tenta di parallelizzare l'esecuzione delle istruzioni EVM in modo che la rete possa elaborare più transazioni contemporaneamente. Ciò consente di gestire un volume maggiore di transazioni, aumenta la produttività e riduce i costi.

La parallelizzazione comporta la suddivisione dell'esecuzione delle transazioni in task più piccoli e indipendenti che possono essere elaborati simultaneamente. Monad introduce quattro ottimizzazioni per migliorare il suo consenso, esecuzione e archiviazione dei dati: MonadBFT, esecuzione differita, esecuzione parallela e MonadDb.

MonadBFT

MonadBFT è un algoritmo Byzantine-fault-tolerant a due fasi pipelined progettato per migliorare la scalabilità e l'efficienza della blockchain. È un derivato dell'algoritmo HotStuff ottimizzato per funzionare in condizioni parzialmente sincrone.

Questa ottimizzazione è importante, poiché la maggior parte delle reti reali non mostra un comportamento perfettamente sincrono a causa dei tempi di recapito dei messaggi variabili causati dalla congestione della rete, dalla latenza e da altri fattori. Adattandosi a queste condizioni parzialmente sincrone, MonadBFT assicura prestazioni e affidabilità decenti nelle distribuzioni pratiche.

L'algoritmo HotStuff è un protocollo di consenso progettato per i sistemi blockchain per raggiungere la tolleranza agli errori bizantini (BFT), ovvero la capacità di un sistema informatico di continuare a funzionare anche se alcuni dei suoi nodi agiscono in modo dannoso o sono difettosi.

Ottiene questa robustezza attraverso una serie di round di comunicazione tra nodi per concordare il blocco successivo nella catena. HotStuff richiede tre round di comunicazione per raggiungere un consenso, il che può diventare un collo di bottiglia per scalabilità ed efficienza. MonadBFT migliora HotStuff riducendo i round di comunicazione richiesti per il consenso da tre a due.

Il meccanismo di consenso funziona in fasi. Un nodo leader propone i blocchi e i validatori li esaminano. In ogni round, il leader invia un nuovo blocco con un certificato di quorum (QC) o un certificato di timeout (TC) per il round precedente. Un QC è la prova che un blocco è stato approvato dalla maggioranza dei validatori, indicando che concordano sulla validità del blocco.

Un TC, d'altro canto, indica che il numero richiesto di validatori non ha raggiunto un consenso entro un dato lasso di tempo. Ciò funge da meccanismo di fallback per impedire al sistema di bloccarsi.

I validatori votano sul nuovo blocco proposto dal leader. Se un numero sufficiente di validatori (due terzi) approva, il blocco viene finalizzato nei round successivi e vengono emessi i QC.

Se i validatori non ricevono un blocco valido in tempo, inviano messaggi di timeout firmati, che possono essere aggregati in un TC. Questo TC viene quindi inviato direttamente al leader successivo. Un blocco è finalizzato quando i validatori vedono due blocchi certificati consecutivi.

Questa regola di commit in due fasi assicura una rapida finalizzazione dei blocchi mantenendo la sicurezza della rete e la tolleranza agli errori. Come in tutte le impostazioni BFT asincrone, due terzi dei nodi di convalida di Monad devono essere non avversari e avere un peso di voto uguale per mantenere la sicurezza.

Esecuzione differita

L'esecuzione differita separa l'esecuzione delle transazioni dal consenso. A differenza delle blockchain tradizionali come Ethereum, in cui i nodi devono eseguire le transazioni prima di stabilire il consenso, il consenso MonadBFT si concentra esclusivamente sull'ordine delle transazioni.

Su Ethereum, i nodi devono raggiungere un consenso sia sull'elenco delle transazioni nel blocco che sulla radice dell'albero Merkle per l'esecuzione post-transazione dello stato. Ciò significa che il leader del consenso deve eseguire le transazioni prima di inviare il blocco e tutti i nodi di convalida devono ripetere questa esecuzione prima di esprimere il proprio voto.

I tempi di blocco possono quindi diventare piuttosto lunghi e la complessità del calcolo che la rete può gestire è ridotta. Il meccanismo di consenso di MonadBFT determina solo l'ordine delle transazioni e consente l'esecuzione in modo indipendente dopo che è stato raggiunto il consenso.

Per garantire che l'esecuzione venga eseguita correttamente, Monad ritarda l'accordo sulla radice Merkle dello stato di D blocchi. D è un parametro di sistema che attualmente si prevede essere 10.

Questo design mitiga i rischi associati a un nodo malevolo che non esegue correttamente le transazioni. Una volta che la rete raggiunge un consenso sul blocco N con una maggioranza di due terzi, concorda anche sullo stato rappresentato dall'albero di Merkle nel blocco N-D.

Se un nodo scopre un errore durante l'esecuzione del blocco N-D, vota contro la proposta per il blocco N. Ciò innesca un rollback allo stato finale del blocco N-D-1, seguito dalla riesecuzione delle transazioni dal blocco N-D. Un nodo può verificare e correggere i risultati della sua esecuzione rispetto ad altri nodi nella rete controllando la propria radice Merkle. I nodi leggeri possono interrogare i nodi completi per le prove Merkle dei valori delle variabili di stato.

Esecuzione parallela

Le blockchain con esecuzione parallela più diffuse sono deterministiche o ottimistiche.

Monad impiega l'esecuzione ottimistica per ottenere l'elaborazione parallela delle transazioni. Questo metodo è in qualche modo analogo all'esecuzione speculativa impiegata dalle unità di elaborazione centrale (CPU), in cui i processori prevedono il percorso delle istruzioni di diramazione e le eseguono in anticipo.

Il motore di esecuzione di Monad inizia a elaborare le nuove transazioni prima ancora che l'esecuzione delle transazioni precedenti sia finalizzata, aumentando la produttività complessiva.

Tuttavia, questa strategia, chiamata controllo della concorrenza ottimistica, può portare a errori quando le transazioni successive sono interdipendenti. Se viene rilevato un conflitto (ad esempio, quando due transazioni tentano di modificare lo stesso saldo del conto), le transazioni interessate vengono rieseguite per correggere le discrepanze.

Nel caso peggiore, una transazione deve essere eseguita due volte, ma in totale, questo aggiunge solo l'1,5% di overhead. Monad impiega anche un analizzatore di codice statico per prevedere le dipendenze tra le transazioni in anticipo. Questa analisi statica consente a Monad di identificare potenziali conflitti prima dell'esecuzione e, sebbene non impedisca tutti i conflitti, aiuta a ottimizzare la pianificazione iniziale delle transazioni per un'esecuzione parallela più efficiente e ottimistica.

Sei impiega anche la parallelizzazione ottimistica, supponendo che le transazioni non siano in conflitto, ma persegue un approccio distinto per gestire i conflitti. Durante il processo di parallelizzazione, Sei traccia quali parti dello stato ogni transazione modifica. Se rileva che due transazioni sono in conflitto, il che significa che tentano di modificare la stessa parte dello stato, il sistema interrompe temporaneamente l'esecuzione e rielabora le transazioni in conflitto in sequenza, in modo simile a Monad.

Tuttavia, l’uso di un analizzatore di codice statico da parte di Monad consente una pianificazione delle transazioni più efficiente, riducendo così la possibilità di conflitti, mentre Sei affronta semplicemente i conflitti quando si presentano durante l’esecuzione.

L'esecuzione ottimistica elimina anche la necessità di algoritmi complessi di pianificazione e analisi delle dipendenze, che sono richiesti per le metodologie deterministiche. In un approccio deterministico impiegato da Sui e Solana, le transazioni devono dichiarare a quali parti dello stato accederanno prima dell'esecuzione.

Questa dichiarazione anticipata consente al sistema di pianificare le transazioni in modo da evitare conflitti durante l'esecuzione. Il vantaggio principale di questo metodo è la prevedibilità: poiché le dipendenze sono note in anticipo, il sistema può garantire che le transazioni non interferiscano tra loro, con conseguenti risultati coerenti e affidabili.

Tuttavia, questa prevedibilità ha un costo. L'analisi delle dipendenze e la pianificazione delle transazioni richiedono algoritmi sofisticati, che devono tenere conto di tutte le potenziali interazioni tra le transazioni e introdurre un sovraccarico computazionale, con conseguenti requisiti hardware più elevati.

La necessità di analisi e pianificazione in tempo reale aumenta ulteriormente la complessità, poiché il sistema deve monitorare e adattare costantemente l'ordine di esecuzione per evitare conflitti.

Inoltre, un approccio deterministico potrebbe incontrare delle sfide nel ridimensionamento efficiente. Man mano che il numero di transazioni aumenta, la complessità dell'analisi delle dipendenze cresce esponenzialmente.

MonadDB

MonadDB è un database personalizzato progettato specificamente per ottimizzare l'implementazione dell'esecuzione parallela. Nelle blockchain tradizionali come Ethereum, l'accesso input/output (I/O) diventa un collo di bottiglia significativo, principalmente perché questi sistemi si basano su operazioni I/O sincrone.

I processi devono attendere il completamento di ogni operazione di lettura o scrittura prima di passare alla successiva, il che limita notevolmente la produttività e le prestazioni complessive. Per superare questa limitazione, MonadDB impiega operazioni su disco asincrone, che consentono al sistema di avviare più operazioni di lettura e scrittura simultaneamente senza attendere il completamento di ciascuna. Ciò migliora la velocità complessiva dell'elaborazione delle transazioni, soprattutto se combinato con l'esecuzione parallela.

Conclusione

Monad rappresenta un significativo progresso nella tecnologia blockchain. Impiega tecniche innovative come l'esecuzione ottimistica, l'esecuzione differita e un database personalizzato, MonadDB, per migliorare la scalabilità e l'efficienza.

Il suo metodo di parallelizzazione ottimistica, simile all'esecuzione speculativa nelle CPU, consente un'elevata produttività elaborando le transazioni contemporaneamente e rieseguendo quelle in conflitto solo quando necessario.

In combinazione con l'analisi statica del codice, questo metodo ottimizza la pianificazione delle transazioni e riduce la probabilità di conflitti. Rispetto ad altri progetti EVM paralleli come Sei e sistemi deterministici come Sui e Solana, l'approccio di Monad bilancia efficienza e complessità, fornendo una soluzione solida per volumi di transazioni elevati.

L'introduzione di MonadBFT, un algoritmo Byzantine-fault-tolerant a due fasi e pipeline, garantisce ulteriormente la rapida finalizzazione dei blocchi e la sicurezza della rete.

Mentre Monad si prepara per la sua testnet pubblica alla fine del 2024 e per l'implementazione della mainnet all'inizio del 2025, si posiziona come un attore formidabile nella prossima generazione di piattaforme blockchain scalabili.