Traduzione italiana di “How Ouroboros Leios will change the Cardano Consensus”
Traduzione italiana a cura di Lordwotton di RIOT Stake Pools. Se apprezzi queste traduzioni, per favore valuta di supportare il mio lavoro delegando i tuoi ada a RIOT entra nel nostro gruppo Telegram
Cardano utilizza il consenso PoS, che al momento in cui scriviamo è in grado di elaborare 300 transazioni semplici al secondo. Si tratta di un numero quasi 50 volte superiore al consenso PoW utilizzato da Bitcoin. Tuttavia, per il sistema finanziario globale, questo è ancora insufficiente. Il team di IOG sta lavorando a una nuova versione di PoS che ha chiamato Ouroboros Leios.
Il trilemma della blockchain
Il team di sviluppatori di qualsiasi rete blockchain bilancia tre caratteristiche chiave: sicurezza, decentralizzazione e scalabilità. Il trilemma della blockchain si riferisce alla convinzione diffusa che le reti decentralizzate possano fornire solo due dei tre vantaggi in qualsiasi momento. La sicurezza è una caratteristica incondizionata che non può essere compromessa. Le squadre si bilanciano principalmente tra decentralizzazione e scalabilità. Tuttavia, preferire la scalabilità alla decentralizzazione non è la soluzione migliore, poiché la decentralizzazione è una caratteristica fondamentale del settore blockchain. Inoltre, con la diminuzione della decentralizzazione, diminuisce anche il coefficiente di Nakamoto e la sicurezza.
Creare una rete blockchain che raggiunga un’elevata scalabilità senza sacrificare la decentralizzazione e la sicurezza è ancora una sfida tecnologica per l’industria blockchain. Cardano è attualmente una delle reti più decentralizzate, con oltre mille operatori di pool che producono blocchi. È indispensabile che Cardano mantenga la sua attuale decentralizzazione e non chiuda la porta a un’ulteriore crescita. Tuttavia, anche l’aumento della scalabilità è essenziale per la missione che Cardano sta cercando di compiere.
Ouroboros Leios è un’importante estensione dell’attuale consenso PoS che aumenterà significativamente la scalabilità e manterrà l’attuale livello di decentralizzazione. Diamo un’occhiata ai dettagli finora noti.
Capacità di trasmissione
Le reti blockchain utilizzano i blocchi come raccolta di transazioni e scritture su cui si verifica il consenso della rete. Dal punto di vista della rete, non è efficiente prendere decisioni a livello globale per ogni singola transazione. È più efficiente prendere più transazioni contemporaneamente e prendere una decisione (consenso) sull’intera collezione.
Un blocco è un’unità di base utilizzata per passare a un nuovo stato a livello di libro mastro. Se la maggioranza della rete considera valido il blocco proposto, il nuovo blocco sarà memorizzato per sempre nella blockchain e diventerà il punto di partenza per la successiva transizione di stato.
Due parametri influenzano il throughput delle reti blockchain. Sono la dimensione del blocco e il tempo del blocco.
La dimensione del blocco definisce la dimensione massima di un blocco, che influisce sul numero di transazioni e script che vi possono essere inseriti. Se la dimensione del blocco è di 88 kB (90,112 B) e una semplice transazione ha una dimensione di 300 B, 300 transazioni possono essere inserite nel blocco.
Il tempo di blocco definisce l’intervallo di tempo tra l’aggiunta di nuovi blocchi. Cardano ha impostato il tempo di blocco a 20 secondi. Ciò significa che in 1 minuto Cardano può elaborare 900 transazioni semplici. In 10 minuti, 9000 transazioni, ecc.
Può accadere che, se il numero di utenti che vogliono utilizzare la rete inizia a crescere, la rete non sia in grado di inserire tutte le nuove transazioni in un nuovo blocco. Pertanto, alcune transazioni devono attendere nel mem-pool il blocco successivo.
Ad esempio, ciò accadrebbe se 400 utenti volessero inviare una semplice transazione entro 20 secondi, e ciò si ripeterebbe per un’ora. 400 transazioni sono più delle 300 che Cardano può facilmente gestire. Ogni 20 secondi, 100 transazioni rimangono fuori dal nuovo blocco, quindi devono rimanere nel mem-pool.
Si può pensare a un mem-pool come a un deposito temporaneo di transazioni sui nodi della rete. Quando un produttore di blocchi diventa leader di uno slot, cioè ottiene il diritto di creare un nuovo blocco in un determinato slot, prende le transazioni pre-validate dal mem-pool e le inserisce nel blocco. Quindi propaga il blocco alla rete. Con ogni nuovo blocco aggiunto, lo spazio del mem-pool aumenta, poiché le transazioni già presenti nella blockchain possono essere eliminate. Tuttavia, le nuove transazioni sono sempre in arrivo.
Se il numero di transazioni è costantemente superiore a quello che la rete può gestire, è necessario impedire che il mem-pool si riempia oltre il limite richiesto. La rete è costretta a rifiutare le nuove transazioni. Gli utenti devono attendere più a lungo il regolamento delle transazioni già presenti nel mem-pool. Gli utenti che non sono riusciti a inviare una transazione devono riprovare. Entrambe le cose sono poco piacevoli per l’utente. Gli utenti si aspettano che il regolamento sia breve e che la rete non abbia problemi di throughput.
Il mem-pool è in grado di assorbire picchi a breve termine, ma non ha senso che sia molte volte più grande della dimensione del blocco. Se ci fossero abbastanza transazioni nel mem-pool per, ad esempio, 100 blocchi in avanti, significherebbe che le transazioni appena inviate non entrerebbero nel blocco per un tempo relativamente lungo. Idealmente, il mem-pool dovrebbe essere il più piccolo possibile e la rete dovrebbe scalare sufficientemente in modo che le transazioni non rimangano nel mem-pool solo perché non si adattano a un blocco.
La rete decentralizzata è in grado di propagare le transazioni in modo relativamente veloce ed è teoricamente limitata solo dalla larghezza di banda di Internet. Internet ha un throughput più elevato rispetto alle reti blockchain, poiché le blockchain sono limitate dalla dimensione e dal tempo dei blocchi. In altre parole, le reti blockchain non sono attualmente in grado di utilizzare il throughput di Internet quando si tratta di produrre blocchi. Ciò che frena le reti blockchain è la lentezza del consenso, limitata anche dalla dimensione dei dati in un determinato intervallo. Anche se le transazioni potrebbero fluire attraverso la rete blockchain in modo relativamente veloce, l’unico risultato è che il mem-pool si riempirebbe.
Esistono soluzioni apparentemente semplici, come l’aumento della dimensione del blocco o la riduzione del tempo di blocco. Entrambe le soluzioni consentono di aumentare il throughput, in quanto un maggior numero di transazioni può essere inserito in un blocco e un nuovo blocco viene prodotto più frequentemente. Purtroppo, la modifica di questi parametri potrebbe avere un impatto negativo sulla sicurezza e sulla decentralizzazione. Ad esempio, più grande è il blocco, più tempo impiega a propagarsi nella rete Peer-to-Peer (aumento del ritardo). Più breve è la dimensione del blocco, maggiore è il rischio di creazione di fork, poiché il produttore del blocco potrebbe non ricevere in tempo l’ultimo blocco prodotto (e utilizzare quello precedente).
Con l’aumentare del numero di nodi nella rete, può crescere il numero di hop attraverso cui i dati devono passare nella rete. Poiché ogni nodo convalida i dati prima di inviarli (per evitare di inviare in rete dati non validi), la distribuzione dei dati rallenta.
Come aumentare il throughput
Come abbiamo detto, attualmente le reti blockchain non utilizzano la maggior parte della larghezza di banda di comunicazione. Per la maggior parte del tempo, i nodi restano in attesa. Rispettivamente, ricevono, prevalidano e distribuiscono ulteriormente le nuove transazioni e gli script. La verifica delle nuove transazioni in arrivo non è un compito computazionalmente impegnativo per i nodi. Hanno solo un po’ di lavoro in più da fare quando ricevono un nuovo blocco o sono incaricati di produrre un nuovo blocco.
Se il tempo di blocco è impostato a 20 secondi, possiamo dire che il nodo svolge un lavoro minimo per 19 secondi e convalida o crea un nuovo blocco una volta ogni 20 secondi. In termini di utilizzo della larghezza di banda della rete, la situazione è simile. Ci sono molte piccole transazioni che vengono inviate continuamente attraverso la rete, ma una volta ogni 20 secondi deve essere distribuito un blocco relativamente grande, il che richiede molto più tempo rispetto alle transazioni.
Per aumentare la scalabilità, è necessario utilizzare la potenza di calcolo dei nodi e sfruttarla appieno. Non ha senso utilizzare la potenza di calcolo e la larghezza di banda della rete solo quando deve essere prodotto un nuovo blocco. In parole povere, più lungo è il tempo del blocco, meno vengono utilizzate la potenza di calcolo e la larghezza di banda della rete.
Non bisogna confondere il compito del PoW, che consiste principalmente nell’estrarre il produttore del blocco successivo e nel garantire la sicurezza contro la sovrascrittura della cronologia, con la convalida delle transazioni. Nel contesto della scalabilità di Bitcoin, la rete rimane inattiva per 10 minuti mentre i minatori cercano di risolvere un problema crittografico ad alta intensità di calcolo.
Pertanto, è necessario utilizzare le risorse disponibili. Le transazioni e gli script convalidati devono essere accettati e memorizzati nella blockchain il prima possibile. In altre parole, è necessario inserire i risultati della convalida nel blocco il prima possibile, indipendentemente dalla loro quantità.
Come aumentare il throughput mantenendo la sicurezza e la decentralizzazione? Non ci devono essere cambiamenti sostanziali nel numero di nodi della rete. La rete deve rimanere aperta, in modo che un nuovo nodo possa aggiungersi in qualsiasi momento.
La soluzione deve essere indipendente dai parametri di dimensione e tempo dei blocchi. È necessario utilizzare l’intero throughput del collegamento di comunicazione per poter elaborare rapidamente il maggior numero possibile di nuove transazioni e script. I nodi possono sfruttare meglio la loro potenza di calcolo in attesa della creazione di un nuovo blocco. Il team IOG ha trovato una soluzione.
È necessario separare la convalida delle transazioni e l’esecuzione degli script dalla produzione dei blocchi. Ouroboros Leios divide i compiti relativi alla convalida e alla produzione di blocchi in due gruppi di nodi. Tuttavia, ogni nodo può svolgere entrambi i compiti.
Input endorsers
Cardano divide il tempo in slot. La durata di uno slot è di un secondo. Il protocollo è impostato in modo che ogni 20 secondi circa, un nodo scelto a caso diventi il leader dello slot. Il leader dello slot ha il diritto di inserire le transazioni in un nuovo blocco e di pubblicarlo. La dimensione dello stake influisce sulla frequenza con cui un nodo può diventare slot leader. Lo slot leader selezionato è anche un produttore di blocchi se utilizza il diritto e produce un nuovo blocco.
Nell’immagine sottostante si può vedere il tempo diviso in slot. Negli slot 20 e 40 vengono sorteggiati i nuovi slot leader, che sono i nodi contrassegnati con 11 e 3. Questi nodi possono produrre un nuovo blocco. Questi nodi possono produrre un nuovo blocco e pubblicarlo.
Ci sono entità nella rete (operatori di stake pool) che godono della fiducia dei delegatori e questo può essere sfruttato. Oltre ai produttori di blocchi, ci sarà un secondo gruppo chiamato “endorser di input”. Pertanto, all’interno di uno slot, è possibile selezionare casualmente non solo i leader dello slot, ma anche un endorser di input (teoricamente più endorser di input).
Il ruolo degli slot leader è invariato e hanno il compito di produrre un nuovo blocco. Gli endorser di input hanno il compito di approvare l’input da inserire nel blocco. Parleremo in seguito del contenuto degli input approvati. Gli endorser di input possono essere considerati come un secondo livello che preelabora le transazioni e gli script prima che vengano inseriti nel blocco da uno slot leader selezionato a caso.
Gli endorser di ingresso saranno selezionati in modo casuale con un meccanismo simile a quello con cui vengono selezionati i leader delle slot. La differenza è che gli endorser di input possono essere selezionati in ogni singolo slot (un endorser di input al secondo) prima che venga selezionato il leader dello slot (circa ogni 20 secondi). L’input preparato da un endorser di input sarà accettato dal leader della slot solo se è stato verificato crittograficamente che l’endorser di input ha ottenuto il diritto di preparare l’input.
Tra due blocchi, vengono selezionati in modo casuale più endorser di input per preparare gli input. Una volta scelto il leader dello slot, ci saranno più input avallati che potranno essere inseriti nel blocco. Invece di inserire nel blocco le transazioni e gli script selezionati, come fa ora, il leader dello slot inserirà nel blocco i riferimenti agli input convalidati.
I blocchi e gli ingressi vidimati sono distribuiti in modo indipendente nella rete. Ogni blocco può contenere da 0 a N ingressi convalidati.
Nell’immagine sottostante è possibile vedere ancora una volta la suddivisione del tempo in slot. Ogni 20 secondi circa viene sorteggiato un nuovo leader di slot. Inoltre, in ogni slot viene sorteggiato un sostenitore dell’ingresso, al quale viene dato il diritto di produrre un nuovo ingresso. In questo modo, due estrazioni avvengono in parallelo nello stesso momento.
La convalida degli input è possibile solo perché Cardano utilizza il modello Extended-UTXO. È possibile convalidare transazioni e script a livello locale, indipendentemente dall’ambiente circostante (senza stato globale). La convalida delle transazioni e l’esecuzione degli script avvengono localmente a livello degli endorser degli input, cioè al di fuori della catena principale che rimane sotto il controllo degli slot leader. La responsabilità della ricerca dei conflitti di doppia spesa rimane in capo ai leader degli slot selezionati. Tuttavia, diventa un processo leggero che deve basarsi solo sull’individuazione e la risoluzione dei conflitti nel grafo UTXO.
La stessa transazione può essere contenuta in più input vidimati. Questo può accadere se chi avalla l’input non conosce l’aspetto degli input precedenti. Nel caso in cui una transazione sia presente in modo multiplo nella blockchain, la sua prima occorrenza sarà solo la sua posizione canonica nel libro mastro.
Nell’immagine sottostante si può vedere come ogni secondo venga creato un nuovo input avallato. Non appena viene sorteggiato un nuovo slot leader, ci saranno più input avallati pronti per essere utilizzati. Lo slot leader esegue il processo di convalida e può inserire tutti gli input selezionati nel nuovo blocco.
Vediamo cosa succede dall’invio della transazione all’inserimento nel blocco.
Quando un nodo riceve una nuova transazione, la convalida. Tutte le transazioni valide vengono inserite nel mem-pool. Se un nodo ottiene il diritto di creare un input approvato in un determinato slot, includerà le transazioni pre-convalidate nel nuovo input. Verrà creato un lotto di transazioni. Si può pensare a questo come a un nuovo tipo di blocco. Gli input approvati (blocchi) sono distribuiti nella rete Peer-to-Peer. Oltre al mem-pool per le transazioni, ci sarà un mem-pool per gli input approvati. I nodi conserveranno più input avallati nel mem-pool dedicato per essere pronti a produrre un nuovo blocco nel caso in cui diventino leader dello slot.
I nodi non solo conservano gli input convalidati, ma ne provano localmente la validità attraverso i certificati Mithril, che sono prove crittografiche della validità di gruppi di transazioni.
Una volta selezionato il leader di un nuovo slot, seleziona gli ingressi vidimati dal mem-pool e verifica che non si siano verificati doppi sprechi. Quindi inserisce i riferimenti di tutti gli input approvati selezionati nel nuovo blocco. Il nuovo blocco viene quindi distribuito alla rete e la convalida da parte degli altri nodi viene eseguita in modo simile a quello attuale. Durante la distribuzione del nuovo blocco, i nodi possono prelevare dai loro mem-pool gli input convalidati utilizzati.
Nella figura seguente si può vedere come un nodo riceva nuove transazioni e anche nuovi input avallati dalla rete Peer-to-Peer. Entrambi sono memorizzati in mem-pool dedicati. Il nodo è stato fortunato ed è stato eletto leader dello slot, quindi ha prodotto un nuovo blocco.
Si noti che questo concetto delega la convalida delle transazioni e l’esecuzione degli script a tutti i nodi e non grava il nodo di questo lavoro nel momento in cui viene eletto come leader dello slot. Ciò consente di utilizzare la potenza di calcolo dei nodi durante il periodo di “inattività”, quando tutti i nodi attendono un nuovo slot leader.
Le transazioni e gli script vengono elaborati dalla rete essenzialmente per tutto il tempo, quindi la creazione di un nuovo blocco è un processo relativamente veloce. Poiché vengono utilizzati riferimenti agli input convalidati, la dimensione del blocco può rimanere la stessa di oggi, anche se il volume di dati elaborati può essere molte volte maggiore. In altre parole, ogni ingresso vidimato può contenere, ad esempio, 1000 transazioni. In questo modo, la distribuzione del blocco non sarà rallentata dalle dimensioni. Allo stesso tempo, però, i nodi hanno accesso a tutti i dati necessari a cui si fa riferimento nel nuovo blocco.
Questo concetto può assomigliare a soluzioni L2 come ZK Rollups e Optimistic Rollups, o ad altre soluzioni come Lightning Network. Tuttavia, il vantaggio è che non c’è una seconda rete con una propria infrastruttura. Tutto sarà sotto il controllo degli attuali operatori di staking pool all’interno della rete Cardano. Gli utenti non noteranno il cambiamento, se non per le migliori prestazioni. Non è necessario utilizzare ponti o indirizzi diversi, quindi l’esperienza dell’utente non ne risentirà in modo negativo.
Conclusione
Al momento in cui scriviamo, tutti gli appassionati sono in attesa di ulteriori dettagli da parte dei team IOG. Probabilmente la domanda più grande per noi è dove e come verranno archiviate le transazioni e gli script, dato che il blocco farà riferimento solo ai dati. Poiché Cardano scalerà molto meglio, genererà anche più dati che dovranno essere archiviati da qualche parte. La soluzione ideale sarebbe lo sharding, in modo che i nodi non debbano memorizzare tutti i dati, ma solo una parte di essi. Vediamo come il team IOG risolve questo problema.
È prematuro affermare che il trilemma della blockchain sia un problema risolto. Tuttavia, Ouroboros Leios rappresenterà un significativo passo avanti, in quanto il throughput della rete non sarà limitato dai parametri di dimensione e durata dei blocchi. Al momento non è noto quanto sarà elevata la scalabilità di Cardano, ma è più che probabile che ci si sposterà di almeno un ordine di grandezza. In precedenza si era detto che la blockchain è un database lento. Ouroboros Leios invalida questa tesi e potrebbe riscrivere la storia del consenso di rete.