Dalla creazione di Bitcoin nel 2008 come sistema di cassa elettronico peer-to-peer, sono state create molte altre criptovalute, ciascuna con un meccanismo specifico. Ma l’unico elemento a cui sono associate quasi tutte le criptovalute è la blockchain come elemento principale della loro architettura.

Salvo alcune eccezioni, la blockchain è deliberatamente progettata per essere decentralizzata, operando come un registro digitale gestito da una rete distribuita di nodi informatici. Per questo motivo, la tecnologia blockchain ha permesso la creazione di sistemi economici affidabili in cui transazioni finanziarie trasparenti e affidabili possono essere eseguite senza la necessità di intermediari. Le criptovalute sono percepite come una valida alternativa ai sistemi bancari e di pagamento tradizionali, che si basano fortemente sulla fiducia.

Proprio come la maggior parte dei sistemi di elaborazione distribuita, i partecipanti a una rete di criptovalute devono concordare regolarmente sullo stato attuale della blockchain, e questo è ciò che chiamiamo raggiungimento del consenso. Tuttavia, raggiungere il consenso su una rete distribuita in modo sicuro e affidabile è tutt'altro che facile.

Come fa una rete distribuita di nodi informatici a concordare una soluzione, e cosa succede se alcuni nodi, teoricamente, falliscono o agiscono in modo disonesto? Questa è la domanda fondamentale del cosiddetto Problema dei Generali Bizantini, che ha dato origine al concetto di tolleranza bizantina.


Qual è il problema dei generali bizantini?

In poche parole, il problema dei generali bizantini fu concepito nel 1982 come un dilemma logico che illustra come un gruppo di generali bizantini potrebbe avere difficoltà a comunicare quando cerca di concordare la mossa successiva.

Il dilemma presuppone che ogni generale abbia il proprio esercito e che ogni gruppo si trovi in ​​punti diversi della città, con l'intenzione di attaccarla. I generali devono concordare se attaccare o ritirarsi. Non importa se attaccheranno o si ritireranno, purché tutti i generali raggiungano un consenso, ovvero prendano una decisione comune e la eseguano di concerto.

Possiamo quindi considerare i seguenti obiettivi:

  • Ogni generale deve decidere: attaccare o ritirarsi (sì o no);

  • Una volta presa una decisione, non è possibile modificarla;

  • Tutti i generali devono concordare, prendere la stessa decisione e attuarla in sincronia.

I problemi di comunicazione sopra menzionati sono legati al fatto che un generale può comunicare con gli altri solo tramite messaggi inviati tramite corriere. Pertanto, il problema principale dei generali bizantini è che i messaggi possono in qualche modo essere ritardati, persi o distrutti.

Inoltre, anche se il messaggio viene recapitato con successo, uno o più generali potrebbero agire (per qualsiasi motivo) in modo doloso e inviare un messaggio fraudolento per confondere gli altri generali, causando un fallimento generale.

Applicando questo dilemma al contesto di una blockchain, ogni generale è un nodo di rete e questi nodi devono raggiungere un consenso sullo stato attuale del sistema. In altre parole, la maggior parte dei partecipanti a una rete distribuita deve concordare ed eseguire la stessa azione per evitare un fallimento totale.

Pertanto, l'unico modo per raggiungere il consenso in questi tipi di sistemi distribuiti è che almeno i ⅔ o più dei nodi della rete siano affidabili e onesti. Ciò significa che se gran parte della rete decide di agire in modo dannoso, il sistema è soggetto a errori e attacchi di vario tipo (ad esempio, l'attacco del 51%).


Tolleranza ai guasti bizantini (BFT)

In poche parole, la Byzantine Fault Tolerance (BFT) è la capacità di un sistema di resistere a una serie di guasti causati da problemi di tipo Byzantine Generals. Ciò significa che un sistema BFT può continuare a funzionare anche se alcuni nodi si guastano o agiscono in modo doloso.

Esiste più di una possibile soluzione al problema dei generali bizantini, e quindi diversi modi per costruire un sistema BFT. Allo stesso modo, esistono diversi approcci alla blockchain per raggiungere la tolleranza ai guasti bizantini, e questo ci porta ai cosiddetti algoritmi di consenso.


Algoritmo di consenso blockchain

Possiamo definire un algoritmo di consenso come un meccanismo attraverso il quale una rete blockchain raggiunge il consenso. I più comuni sono la Proof of Work (PoW) e la Proof of Stake (PoS). Ma prenderemo Bitcoin come esempio.

Mentre il protocollo Bitcoin prescrive le regole di base del sistema, l'algoritmo di consenso PoW determina come queste regole verranno seguite per raggiungere il consenso (ad esempio, durante la verifica e la conferma delle transazioni).

Sebbene il concetto di Proof of Work sia più antico della criptovaluta stessa, Satoshi Nakamoto ha sviluppato una versione modificata dell'algoritmo che ha consentito la creazione di Bitcoin come sistema BFT.

Si noti che l'algoritmo PoW non è tollerante al 100% ai difetti bizantini, ma grazie al costoso processo di mining e ai metodi crittografici sottostanti, si è dimostrato uno dei più sicuri e affidabili per la blockchain. In questo senso, l'algoritmo di consenso Proof of Work sviluppato da Satoshi Nakamoto è considerato da molti una delle soluzioni più ingegnose ai difetti bizantini.


Conclusione

Il problema dei generali bizantini è un dilemma intrigante che ha portato alla nascita di sistemi BFT ampiamente utilizzati in vari settori. Oltre al settore blockchain, diversi casi d'uso dei sistemi BFT includono l'aviazione, lo spazio e l'energia nucleare.

Nel contesto delle criptovalute, una comunicazione di rete efficiente e un valido meccanismo di consenso sono vitali per qualsiasi ecosistema blockchain. La sicurezza di questi sistemi è un impegno continuo e gli algoritmi di consenso esistenti presentano ancora diverse barriere da superare (come la scalabilità). Tuttavia, PoW e PoS rappresentano approcci molto interessanti alla BFT e certamente ispirano applicazioni potenzialmente interessate ad adottare queste tecnologie innovative su larga scala.