Il problema dei generali Bizantini e la soluzione di Bitcoin
Bitcoin

Il problema dei generali Bizantini e la soluzione di Bitcoin

By Matteo Gatti - 4 Ago 2019

Chevron down

Il problema dei generali bizantini è un problema informatico che consiste nel trovare un accordo comunicando tramite messaggi fra le diverse componenti del network. Ma Bitcoin lo ha risolto.

Read this article in the English version here.

Si tratta di un problema che è stato teorizzato dai matematici Leslie Lamport, Marshall Pease e Robert Shostak nel 1982, i quali crearono la metafora dei generali. Quello dei generali bizantini è un caso di studio molto noto nell’ambito dei sistemi distribuiti.

La blockchain di Bitcoin nasce con lo scopo di eliminare la fiducia verso terze parti durante una transazione. L’obiettivo è far sì che tutti siano concordi sull’ordine cronologico delle transazioni e quindi è fondamentale introdurre un algoritmo di consenso, che permetta appunto, di mettere d’accordo i diversi attori del network.

La metafora

Diversi generali, durante un assedio, sono sul punto di attaccare una città nemica. Essi sono dislocati in diverse aree strategiche e possono comunicare solo mediante messaggeri al fine di coordinare l’attacco decisivo.

Tra questi messaggeri però è altamente probabile, se non addirittura certo, che vi siano dei traditori. I traditori mandano messaggi che vanno contro la strategia dell’esercito. Questo problema risiede, dunque, nella facoltà di portare avanti l’attacco in modo efficace nonostante il rischio di tradimento. Ciò è conosciuto come consenso decentralizzato.

Il messaggio che può arrivare può essere nel migliore dei casi coordinato: attaccare o ritirarsi.

bitcoin generali bizantini

Oppure, come è più logico che avvenga, il messaggio non sarà coordinato, quindi arriveranno entrambi gli ordini: attaccare e ritirarsi.

Il problema che affligge i generali bizantini è lo stesso che devono affrontare i sistemi di elaborazione distribuiti. Come raggiungere un consenso su una rete distribuita in cui alcuni nodi possono essere difettosi o volontariamente corrotti?

Il caso di Bitcoin

Nel caso specifico di Bitcoin, il sistema deve essere in grado di mantenere la sua affidabilità nel caso in cui una minoranza dei componenti invii informazioni errate o dannose per eludere la verifica della doppia spesa (double spending).

Questo problema è molto difficile da risolvere, ma Satoshi Nakamoto, con la blockchain di Bitcoin, ha offerto una soluzione pratica e funzionale combinando crittografia asimmetrica, sistemi peer to peer e Proof of Work, facendo in modo che tutti i partecipanti della rete possano concordare e condividere in modo rapido e sicuro ogni messaggio trasmesso.

La soluzione di Nakamoto

generali bizantini bitcoin

Nelle sue e-mail Nakamoto spiega come la chain della proof of work offra una soluzione al problema dei generali bizantini e illustra come un certo numero di generali pronti ad attaccare debbano coordinarsi sull’istante in cui sferrare l’attacco. Non è importante quale istante scegliere in particolare, ma è determinante che l’attacco avvenga in modo sincronizzato.

Si è stabilito che una volta deciso da uno dei generali il momento dell’attacco esso verrà ritenuto valido per tutti. Ma siccome il network non è istantaneo, può succedere che due generali annuncino due differenti orari per l’attacco in modo simultaneo. Con il risultato che alcuni recepiranno il primo orario e altri il secondo.

Per risolvere questo problema si utilizza la catena della prova di lavoro. Quando un generale riceve un messaggio deve risolvere un problema estremamente difficile. Il primo che lo risolve, lo comunica agli altri partecipanti. Se qualcuno stava lavorando su un orario di attacco diverso, dovrà sostituirlo con quello che ha appena ricevuto, perché questa catena è quella più lunga e dunque ritenuta valida.

La blockchain

La catena di blocchi, quindi, fa sì che un insieme di nodi appartenenti alla stessa rete, lavorino insieme, gestendo in sincronia ed in modo efficace il network. La soluzione di Nakamoto è innovativa ma per essere tale prevede il consumo di una certa quantità di energia ed introduce un ritardo necessario tra la generazione di due blocchi.

Un conseguenza di un sistema trustless funzionale e sicuro, a cui si sta cercando di porre rimedio sviluppando nuovi tipi di algoritmi di consenso.

Matteo Gatti
Matteo Gatti

Ingegnere informatico appassionato di tecnologia e di tutto ciò che vi ruota attorno. Segue con interesse il mondo delle criptovalute e lo sviluppo della tecnologia Blockchain. Scrive anche di Linux su LFFL.

Utilizziamo i cookie per essere sicuri che tu possa avere la migliore esperienza sul nostro sito. Se continui ad utilizzare questo sito noi assumiamo che tu ne sia felice.