Dalla nascita di Bitcoin come sistema di cassa elettronico peer-to-peer nel 2008, sono gradualmente emerse molte altre valute digitali e ciascuna valuta digitale ha il proprio meccanismo specifico. Ma quasi tutte le valute digitali hanno una cosa in comune, ovvero l’architettura centrale della blockchain.

Nella maggior parte dei casi, le blockchain sono progettate per essere decentralizzate, registri elettronici gestiti da una rete distribuita di nodi. I sistemi Blockchain consentono quindi di eseguire le transazioni finanziarie in modo completamente trasparente e affidabile senza intermediari. Le valute digitali stanno gradualmente sostituendo i tradizionali sistemi di pagamento bancari che richiedono un’elevata affidabilità.

Come con la maggior parte dei sistemi informatici distribuiti, i partecipanti a una rete di valuta digitale devono discutere e concordare regolarmente lo stato attuale della blockchain. Questo è ciò che chiamiamo consenso. Tuttavia, raggiungere il consenso in modo sicuro ed efficiente in una rete distribuita non è un compito facile.

Quindi, come può una rete distribuita di nodi informatici concordare decisioni in situazioni in cui alcuni nodi potrebbero non funzionare correttamente o comportarsi in modo disonesto? Questa è la radice del cosiddetto problema dei generali bizantini, che ha dato origine al concetto di tolleranza agli errori bizantini.


Qual è il problema dei generali bizantini?

In poche parole, nel 1982, il problema dei generali bizantini era considerato un dilemma logico che illustrava i problemi di comunicazione che un gruppo di generali bizantini poteva avere quando cercava di concordare un'opinione unificata sulla mossa successiva.

Il dilemma presuppone che ogni generale abbia il proprio esercito, ciascuno situato in un luogo diverso intorno alla città che intende attaccare. Questi generali devono concordare se attaccare o ritirarsi. Non importa se si tratti di un attacco o di una ritirata, purché tutti i generali raggiungano un consenso, cioè una decisione coordinata da eseguire insieme.

Possiamo quindi considerare le seguenti condizioni:

  • Ogni generale deve prendere una decisione: attaccare o ritirarsi (sì o no);

  • Una volta presa una decisione, non può essere modificata;

  • Tutti i generali devono concordare una decisione unitaria ed eseguirla simultaneamente.


Il problema di comunicazione di cui sopra implica il fatto che un generale può comunicare con un altro generale solo tramite messaggi inviati da agenti dei servizi segreti. Pertanto, la sfida principale del problema dei generali bizantini è che le informazioni possono in qualche modo essere ritardate, danneggiate o perse.

Inoltre, anche se il messaggio viene recapitato con successo, uno o più generali possono scegliere di agire in modo dannoso (per qualsiasi motivo) e inviare messaggi fraudolenti per confondere altri generali, causando il fallimento dell'operazione.

Se mappiamo questo dilemma sulla blockchain, ogni generale rappresenta un nodo della rete e i nodi devono raggiungere un consenso sullo stato attuale del sistema. In altre parole, la maggioranza dei partecipanti ad una rete distribuita deve essere d’accordo ed eseguire le stesse azioni per evitare il fallimento.

Pertanto, l’unico modo per ottenere il consenso in questi tipi di sistemi distribuiti è avere almeno due terzi dei nodi della rete che siano affidabili e onesti. Ciò significa che il sistema è vulnerabile a guasti e attacchi (come gli attacchi del 51%) se la maggior parte dei nodi della rete decide di agire in modo dannoso.


Tolleranza ai guasti bizantini (BFT)

In poche parole, la tolleranza ai guasti bizantini (BFT) è una proprietà del sistema in grado di resistere a una serie di guasti causati dal problema dei generali bizantini. Ciò significa che un sistema bizantino tollerante agli errori può continuare a funzionare anche se alcuni nodi falliscono o si comportano in modo dannoso.

Esistono molte soluzioni possibili al problema dei generali bizantini e, pertanto, ci sono molti modi per costruire un sistema bizantino tollerante agli errori. Allo stesso modo, le blockchain hanno vari modi diversi per ottenere la tolleranza agli errori bizantina, che è ciò che chiamiamo algoritmi di consenso.


Algoritmo di consenso blockchain

Possiamo definire un algoritmo di consenso come il meccanismo attraverso il quale una rete blockchain raggiunge il consenso. Gli esempi più comuni sono Proof of Work (PoW) e Proof of Stake (PoS). Qui prendiamo Bitcoin come esempio.

Il protocollo Bitcoin stabilisce le regole principali del sistema e l'algoritmo di consenso proof-of-work spiega come queste regole vengono seguite per raggiungere il consenso (ad esempio, durante la verifica e la verifica delle transazioni).

Sebbene il concetto di prova di lavoro sia antecedente alla valuta digitale, Satoshi Nakamoto ha modificato la versione originale e sviluppato un algoritmo di prova di lavoro migliorato in grado di generare Bitcoin come un sistema bizantino di tolleranza agli errori.

Tieni presente che questo algoritmo di prova di lavoro non è completamente resistente agli errori bizantini, ma a causa del processo di mining ad alto costo e della tecnologia di crittografia sottostante, la prova di lavoro ha dimostrato di essere uno dei metodi più sicuri e affidabili in reti blockchain. In questo senso, l’algoritmo di consenso proof-of-work progettato da Satoshi Nakamoto è considerato da molti una delle soluzioni più sofisticate alla tolleranza agli errori bizantina.

Insomma

Il problema dei generali bizantini è un dilemma interessante che alla fine ha dato origine ai sistemi bizantini Fault Tolerant, ampiamente utilizzati in una varietà di scenari. Oltre al settore blockchain, alcuni casi d'uso per i sistemi Byzantine Fault Tolerance includono anche i settori dell'aviazione, dell'aerospaziale e dell'energia nucleare.

Nel campo della valuta digitale, avere una comunicazione di rete efficiente e un buon meccanismo di consenso sono cruciali per qualsiasi ecosistema blockchain. Mettere in sicurezza questi sistemi richiede sforzi continui e ci sono limitazioni (come la scalabilità) che gli algoritmi di consenso esistenti non sono stati in grado di superare. Tuttavia, la prova di lavoro e la prova di posta in gioco sono metodi efficaci per i sistemi bizantini tolleranti agli errori e le loro potenziali applicazioni ispireranno maggiore innovazione.