Con alcune eccezioni, le blockchain sono progettate intenzionalmente per essere decentralizzate, operando come un registro digitale mantenuto da un network distribuito di computer nodi. Per questa ragione, la tecnologia blockchain ha reso possibile la creazione di sistemi economici trustless, in cui transazioni finanziarie trasparenti e affidabili possono essere eseguite senza necessità di intermediari. Le criptovalute vengono adottate come valida alternativa ai sistemi bancari e di pagamento tradizionali, i quali dipendono fortemente dalla fiducia.
Come in gran parte dei sistemi informatici distribuiti, i partecipanti del network di una criptovaluta devono concordare regolarmente sull’attuale stato della blockchain, ovvero devono raggiungere il consenso. Tuttavia, raggiungere il consenso all’interno di network distribuiti in modo sicuro non è certo un compito facile.
Quindi, come può un network distribuito di computer nodi concordare su una decisione se alcuni dei nodi potrebbero fallire o agire in modo disonesto? Questa è la domanda fondamentale del cosiddetto problema dei Generali Bizantini, il quale ha dato vita al concetto di Byzantine fault tolerance.
Cos’è il Problema dei Generali Bizantini?
Il dilemma suppone che ciascun generale abbia la propria armata e che ciascun gruppo sia situato in diverse posizioni intorno alla città che intendono attaccare. I generali devono decidere se attaccare o ripiegare. Non importa se attaccano o ripiegano, purché tutti i generali raggiungano il consenso, ovvero che tutti concordino su una decisione comune per eseguirla in modo coordinato.
Quindi, possiamo considerare i seguenti obiettivi:
Ciascun generale deve decidere: attaccare o ripiegare (si o no);
Una volta presa la decisione, non può essere cambiata;
Tutti i generali devono concordare sulla stessa decisione ed eseguirla in modo sincronizzato.
I problemi di comunicazione menzionati sopra sono legati al fatto che un generale è in grado di comunicare con un altro soltanto tramite messaggi, recapitati da un messaggero. Di conseguenza, la sfida centrale del Problema dei Generali Bizantini è che questi messaggi possono arrivare in ritardo, essere distrutti o smarriti.
Inoltre, anche se un messaggio viene consegnato, uno o più generali potrebbero decidere (per qualsiasi ragione) di agire in modo disonesto e inviare un messaggio falso per confondere gli altri generali, portando a un totale fallimento.
Se applichiamo il dilemma al contesto della blockchain, ciascun generale rappresenta un nodo del network e i nodi devono raggiungere il consenso sull’attuale stato del sistema. In altre parole, la maggioranza dei partecipanti di un network distribuito devono concordare ed eseguire la stessa azione al fine di evitare un completo fallimento.
Di conseguenza, l’unico modo per raggiungere il consenso in questi tipi di sistemi distribuiti è avere almeno ⅔ o più nodi affidabili e onesti. Questo significa che se la maggioranza del network decide di agire in modo disonesto, il sistema è suscettibile a errori e attacchi (come il 51% attack).
Byzantine Fault Tolerance (BFT)
In poche parole, la Byzantine fault tolerance (BFT) è la proprietà di un sistema che riesce a resistere alla classe di fallimenti derivata dal Problema dei Generali Bizantini. Questo significa che un sistema BFT è in grado di continuare ad operare anche se alcuni nodi falliscono o agiscono in modo disonesto.
Esiste più di una soluzione al Problema dei Generali Bizantini e, di conseguenza, più di un modo per costruire un sistema BFT. Allo stesso modo, ci sono vari approcci diversi per una blockchain che intende ottenere la Byzantine fault tolerance e questo ci porta ai cosiddetti algoritmi di consenso.
Algoritmi di Consenso Blockchain
Mentre il protocollo Bitcoin stabilisce le regole primarie del sistema, l’algoritmo di consenso PoW è ciò che definisce il modo in cui queste regole vengono seguite per raggiungere il consenso (per esempio, durante la verifica e la convalida delle transazioni).
Conclusione
Il Problema dei Generali Bizantini è un dilemma interessante che ha eventualmente dato origine ai sistemi BFT, i quali vengono applicati ampiamente in diversi scenari. Oltre al settore della blockchain, alcuni casi d’uso dei sistemi BFT includono aviazione, industria spaziale e energia nucleare.
Nel contesto delle criptovalute, avere una comunicazione network efficiente insieme a un valido meccanismo di consenso è vitale per qualsiasi ecosistema blockchain. Proteggere questi sistemi è uno sforzo costante e gli algoritmi di consenso esistenti non sono ancora riusciti a superare determinati limiti (come la scalabilità). Nonostante questo, la PoW e la PoS sono approcci molto interessanti come sistemi BFT, e le potenziali applicazioni stanno sicuramente ispirando un’innovazione diffusa.