La Byzantine Fault Tolerance Spiegata

Condividi
Ascolta questo articolo
00:00 / 00:00

Dalla creazione di Bitcoin nel 2008, come sistema di moneta elettronica peer-to-peer, sono state lanciate molte altre criptovalute, ciascuna con un particolare meccanismo. Ma un elemento che quasi tutte le criptovalute hanno in comune è la blockchain come base centrale della propria architettura.

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?

In poche parole, il Problema dei Generali Bizantini è stato ideato nel 1982. Si tratta di un dilemma logico che illustra come un gruppo di generali bizantini potrebbe avere problemi di comunicazioni quando cerca di accordarsi sulla prossima mossa.

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

Possiamo definire un algoritmo di consenso come il meccanismo attraverso cui un network blockchain raggiunge il consenso. Le implementazioni più comuni sono la Proof of Work (PoW) e la Proof of Stake (PoS). Prendiamo come esempio il caso di Bitcoin.

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).

Sebbene il concetto di Proof of Work sia più vecchio delle criptovalute, Satoshi Nakamoto ha sviluppato una versione modificata creando un algoritmo che ha permesso la creazione di Bitcoin come sistema BFT.

E’ bene ricordare che l’algoritmo PoW non è Byzantine fault tolerant al 100%, ma grazie al costoso processo di mining e alle sottostanti tecniche crittografiche, la PoW si è dimostrata una delle implementazioni più sicure e affidabili per i network blockchain. In questo senso, l’algoritmo di consenso Proof of Work, progettato da Satoshi Nakamoto, è considerato da molti come una delle soluzioni più geniali al Problema dei Generali Bizantini.


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.

Loading