Blockchain | Il problema dei generali bizantini rivoluziona l’economia

Blockchain | Il problema dei generali bizantini rivoluziona l’economia

Problema-dei-generali-bizantini-blockchain-matteo-gallone-blog-antifragile

Lo scopo di questo articolo è quello di andare ad illustrare e analizzare da un punto di vista tecnologico-informatico le fondamenta che costituiscono la cosiddetta “catena di blocchi”, o meglio nota come Blockchain.

Successivamente, dopo aver illustrato come realmente funziona la rete sulla quale viaggiano le criptovalute, andremo a vedere l’impatto economico che questa tecnologia porterà all’interno delle nostre società.

La rivoluzione del Distributed Ledger

La Blockchain è una tecnologia che permette la creazione e gestione di un grande database distribuito per la gestione di transazioni condivisibili tra più nodi di una rete. Si tratta, per la precisione, di un database strutturato in blocchi (block), anche chiamati nodi, che sono tra loro collegati e congiunti (chain). In questo modo ogni transazione avviata sulla rete dovrà esser validata dalla rete stessa.
Quindi, in parole semplici: la blockchain è rappresentata da una catena di blocchi che contengono e gestiscono più transazioni. Attraverso i nodi si può vedere, controllare e approvare tutte le transazioni creando una rete che permette la tracciabilità di tutte le transazioni.

Il punto fondamentale, perno della rivoluzionaria tecnologia della blockchain, è il cosiddetto Distributed Ledger (un libro mastro distribuito). Tramite questa logica distribuita si identifica nella blockchain la totale assenza di entità di intermediazione, ovvero non esiste più nessun centro di controllo e il ruolo di governance è costruito attorno ad un nuovo concetto di fiducia tra tutti i soggetti della rete. Nessuno potrà, in alcun modo, prevalere nel processo decisionale nel corso di una transazione.

Quindi, la blockchain è un sistema intrinsecamente decentralizzato, composto da diversi attori che agiscono in funzione di determinati incentivi personali e in base alle informazioni a loro disposizione. Ogni volta che una nuova transazione viene trasmessa alla rete, i nodi hanno la possibilità di includere quella transazione nella copia del loro “libro mastro distribuito” o semplicemente di ignorarla. Solo quando la maggioranza degli attori che compongono la rete decidono di intervenire su una singola transazione, si raggiunge un consenso.

Cosa si intende per “consenso”?

Ecco che qui sorge il problema relativo al calcolo distribuito e ai sistemi multi-agente: ottenere l’affidabilità generale del sistema in presenza di numerosi processi difettosi. Per far funzionare questa equazione, spesso, si richiede ai processi di concordare sul valore di alcuni dati necessari a svolgere i calcoli.
Questi processi di concordanza vengono definiti in gergo informatico con il termine “consenso”.

Qui potrebbero sorgere due quesiti più che leciti:

  1. Cosa succede quando un attore decide di non seguire le regole e prova a manomettere lo stato del suo libro mastro?
  2. Cosa succede quando questi attori manomissori sono una grande parte della rete, ma non la maggioranza?

Per aggirare queste due problematiche, si è dovuto strutturare un protocollo di consenso sicuro che sia tollerante ai “guasti”.

Si presume che chi legga questo articolo, ammenochè non ci siano esperti di informatica tra i lettori di questo blog, potrebbe non sapere che il concetto di rete decentrata che può raggiungere il consenso/accordo senza alcuna autorità di controllo centrale, era un problema informatico irrisolvibile denominato “Problema dei due Generali”.
L’evoluzione di tale problema prederà poi il nome di “Problema dei Generali Bizantini” e permetterà il raggiungimento di un consenso in situazioni in cui è possibile la presenza di errori. Il problema consiste nel trovare un accordo, comunicando solo tramite messaggi, tra componenti diversi nel caso in cui siano presenti informazioni discordanti. Il teorema alla base del problema sopra citato è parte integrante della infrastruttura tecnologica della blockchain.

In primo luogo parleremo brevemente del problema irrisolvibile dei “due generali”. Poi lo estenderemo al problema dei generali bizantini e discuteremo brevemente della tolleranza ai guasti bizantini nei sistemi distribuiti e decentralizzati. Infine, discuteremo di come tutto ciò si riferisce alle transazioni che avvengono tramite la blockchain.

Rete distribuita vs sistemi centralizzati/decentralizzati

Prima di iniziare, cerchiamo di chiarire qui cosa vuol dire “rete distribuita” e quali sono le differenze tra i sistemi centralizzati e decentralizzati. Questa è una differenziazione fondamentale per capire come funziona il sistema blockchain.

sistema-distribuito-blockchain-bitcoin-matteo-gallone-blog-antifragile

  • Nei sistemi centralizzati esiste un’autorità o un server centrale e tutti gli altri nodi si comportano come client o entità che accettano il messaggio e di conseguenza eseguono l’ordine.
  • Nei sistemi decentralizzati ci sono più server che ricevono messaggi da un server centrale. I singoli nodi sono connessi ai server secondari. Tuttavia, in alcuni sistemi, tutti i server possono essere uguali in gerarchia senza server centrale.
  • Nei sistemi distribuiti non esiste un’autorità centrale. Ogni nodo è connesso a tutti gli altri nodi e ha esattamente la stessa autorità. Ovviamente, in termini di sistemi distribuiti di calcolo, la potenza di elaborazione di ciascun nodo potrebbe variare in misura enorme.

Il problema dei due generali

Questo problema (pubblicato per la prima volta nel 1975) descrive uno scenario in cui due generali si trovano a dover attaccare un nemico comune. Il Generale 1 è considerato il leader dell’operazione, il Generale 2 viene definito “il seguace”.
L’esercito di ciascun generale da solo non è abbastanza potente per riuscire a sconfiggere l’esercito nemico con successo, quindi dovranno cooperare e cercare di attaccare nello stesso istante il nemico in due punti diversi.

Fino a qui non sembrano esserci complicazioni, ma abbiamo tralasciato un dettaglio fondamentale:

Per poter comunicare e decidere in quale esatto momento attaccare il nemico, il Generale 1 dovrà inviare un messaggero attraverso il campo nemico che comunicherà al Generale 2 l’ora esatta in cui entrambi dovranno attaccare. Tuttavia, c’è la possibilità che il messaggero venga catturato dai nemici e quindi il messaggio non verrà consegnato. Questo potrebbe far sì che, il Generale 1 attaccherà nell’ora stabilita mentre l’esercito del Generale 2 rimarrà fermo alla base in attesa dell’ordine.

Anche se il primo messaggio riesce a giungere a destinazione, il Generale 2 dovrà riconoscere di aver ricevuto il messaggio, quindi ordinerà al messaggero di tornare indietro con la risposta di ricevuta conferma. Così facendo, si può andare a ripetere lo scenario iniziale dove il messaggero può esser catturato. I generali non riusciranno mai a trovare un accordo sulle tempistiche dell’attacco.

Problema-dei-generali-bizantini-blockchain-matteo-gallone-blog-antifragile-2

Non c’è alcun modo di poter garantire il requisito secondo cui ogni generale riesca ad avere la sicurezza che l’altro abbia accettato il piano di attacco. Entrambi i generali rimarranno sempre con il dubbio se il loro ultimo messaggero sia passato senza esser catturato.

Il problema dei due generali è stato definito irrosolvibile.

Il problema dei generali bizantini

Questo problema viene ripreso dalle tematiche del problema dei due generali ma con delle svolte. Lo scenario è lo stesso, il numero dei protagonisti cambia. Ora ci sono più di due generali che si trovano a dover concordare sul momento preciso in cui attaccare il nemico comune su più fronti.

La complicazione aggiunta qui è che uno o più generali potrebbe essere un traditore, nel senso che uno o più generali potrebbe mentire sulle risposte di conferma (ad esempio comunicano di esser d’accordo ad attaccare alle 8.00 ma invece non lo fanno).

Il paradigma leader-seguace descritto nel problema iniziale dei due generali viene trasformato nella configurazione di comandante – tenente. Per raggiungere il consenso in questo scenario, il comandante e ciascun luogotenente dovranno concordare sulla stessa decisione: attaccare o ritirarsi.
L’esercito ha numerose divisioni e ogni divisione ha un generale.
Anche qui, i generali e i luogotenenti all’interno della loro divisione comunicano unicamente attraverso messaggeri. Tutti i generali e i comandanti devono concordare su uno dei due piani di azione: l’ora esatta in cui attaccare tutti assieme o se di fronte a una forte resistenza nemica, ritirarsi tutti in una volta.

E’ logico che se tutti i generali e/o i messeggeri fossero affidabili, la soluzione al problema risulterebbe banale. Tuttavia, alcuni di essi sono traditori o spie nemiche. Ci sarà quindi un’alta probabilità che non seguano gli ordini o trasmettano il messaggio sbagliato. Il livello di fiducia nell’esercito sarà quindi molto basso.

Problema-dei-generali-bizantini-blockchain-matteo-gallone-blog-antifragile 3.jpg
1 Comandante, 2 Luogotenenti e 2 tipologie di messaggio

Consideriamo il caso in cui abbiamo 1 comandante e 2 luogotenenti e solo due tipi di messaggi: “Attacco” e “Ritirata”.
Nella Figura 1 – Il tenente 2 è un traditore che cambia intenzionalmente il messaggio che deve essere passato al tenente 1. Ora il tenente 1 ha ricevuto due messaggi e non sa quale prendere in considerazione. Supponiamo che il tenente 1 segua il comandante a causa della rigida gerachia nell’esercito. Tuttavia, 1/3 dell’esercito è più debole rispetto al nemico, in quanto il tenente 2, essendo un traditore, crea scompiglio e confusione nelle procedure di attacco.

Tuttavia, cosa succede se il comandante è un traditore (come spiegato in figura 2)? Adesso 2/3 dell’esercito totale ha seguito l’ordine sbagliato e il fallimento è certo.

Problema-dei-generali-bizantini-blockchain-matteo-gallone-blog-antifragile 3.jpg
1 Comandante, 3 Luogotenenti e 3 tipologie di messaggio

Nella figura 3 e 4, abbiamo appena aggiunto un altro tenente e un altro tipo di messaggio (supponiamo che il terzo messaggio sia “Non sicuro”). Immediatamente aumenta la complessità operativa nel trovare un consenso tra tutti i Luogotenenti e il Comandante. Ora immaginiamo l’aumento esponenziale di tale complessità quando ci sono centinaia di Luogotenenti.

Questo è il problema dei generali bizantini ed è applicabile a tutte le reti distribuite. Infatti, nella rete Bitcoin, è ancora più complesso in quanto non esiste un vero “Generale”. Tutti i partecipanti o nodi (che corrispondono ai tenenti) hanno esattamente la stessa gerarchia.

Tutti i nodi partecipanti dovranno concordare ogni messaggio che viene trasmesso tra i nodi. Se un gruppo di nodi è corrotto o il messaggio che viene trasmesso è errato, allora la rete nel suo complesso non dovrebbe esserne influenzata e dovrebbe riuscire a resistere a questo attacco. Quindi, la rete nella sua interezza deve concordare ogni messaggio trasmesso nella rete stessa. Questo accordo prende il nome di consenso.

Qual è il teorema alla base del problema?

Teorema: per ogni m , l’algoritmo OM(m) raggiunge il consenso se ci sono più di 3(m) generali e al massimo m traditori.
Ciò implica che l’algoritmo può raggiungere il consenso fintanto che i 2/3 degli attori sono onesti. Se i traditori sono più di 1/3, il consenso non viene raggiunto, gli eserciti non riescono a coordinare l’attacco e il nemico avrebbe la meglio.

Definizione formale del problema: Dato un numero N di processi, si richiede che al termine dell’algoritmo tutti i processi corretti impostino la variabile di decisione sullo stesso valore. Questo valore deve essere quello fornito dal processo comandante nel caso in cui questo sia corretto. I processi non corretti possono non inviare messaggi oppure inviarne con contenuto arbitrario. I messaggi non sono firmati.

Nell’articolo originale di Lamport, Shostak e Pease è dimostrato che non esiste soluzione al problema se, dati f processi non corretti, il numero totale di processi è N \leq 3f.

Vediamo un paio di esempi:

Il primo lo vediamo dal punto di vista del Luogotenente 2.
{C sta per comandante, L sta per tenente, V è il messaggio}

Problema-dei-generali-bizantini-blockchain-matteo-gallone-blog-antifragile 5
OM (1): Il terzo Luogotenente è un traditore – Situazione osservata dal punto di vista di L2
  1.  L3 è un traditore
  2.  Il comandante invia v a tutti i Luogotenenti
  3.  L1 invia v a L2 | L3 invia x a L2
  4.  L2 ← maggioranza (v, v, x) = v

La decisione finale è il voto di maggioranza da L1, L2, L3 e come risultato è stato raggiunto un consenso.

La cosa importante da ricordare è che l’obiettivo ultimo deve esser quello di far concordare la maggioranza dei tenenti sulla stessa decisione, non una specifica.

Esaminiamo il caso in cui il comandante è un traditore:

Problema-dei-generali-bizantini-blockchain-matteo-gallone-blog-antifragile 6
OM (1): il comandante è un traditore
  1. Il comandante invia x, y, z a L1, L2, L3 rispettivamente
  2. L1 invia x a L2, L3 | L2 invia y a L1, L3 | L3 invia z a L1, L2
  3. L1 ← maggioranza (x, y, z) | L2 ← maggioranza (x, y, z) | L3 ← maggioranza (x, y, z)

Hanno tutti lo stesso valore e quindi si raggiunge il consenso. Riflettendo attentamente possiamo vedere che anche se x, y, z sono tutti diversi il valore della maggioranza (x, y, z) è lo stesso per tutti e 3 i Luogotenenti. Nel caso in cui x, y, z fossero comandi totalmente diversi, potremo presumere che essi agiscano sul ritiro delle loro opzioni.

Quindi: Il Problema dei Generali Bizantini è un protocollo che permette ai Generali Bizantini, notoriamente non affidabili, di prendere una decisione corretta nonostante la presenza di generali sabotatori. Questo protocollo prevede che la decisione della maggioranza venga ascoltata da tutti i generali, anche quando non tutti sono in grado di comunicare direttamente con gli altri. La BlockChain risolve il problema utilizzando la potenza computazionale dei nodi come sistema di voto.

Curiosità sull’origine del nome del problema

Nel 1982, quando il problema venne formulato, l’autore Leslie Lamport cercò di renderlo semplice da comprendere e ricordare scegliendo una nazionalità reale per i generali protagonisti della storia. Per evitare di causare malumori optò inizialmente per la definizione generali albanesi, supponendo che questo avrebbe avuto la minor probabilità di generare offese, ma successivamente decise il nome di generali bizantini, così da avere la certezza che nessun popolo potesse sentirsi direttamente chiamato in causa.


L’impatto economico della BlockChain

Credo che dovremo ignorare il prezzo di Bitcoin. Credo anche che dovremo ignorare Bitcoin come denaro mentre, dovremo comprenderlo come tecnologia, invenzione e rivoluzione. Quando il valore economico intrinseco di BTC andrà a decadere, ci limiteremo a partire con un’altra valuta digitale. Ma l’invenzione di Bitcoin, la tecnologia che la rende possibile, non potrà mai essere de-inventata.

Bitcoin ha generato innovazione e hanno reso l’ambiente del fintech decisamente più maturo. Non si tratta solo di una moneta o mezzo di pagamento. E’ prima di tutto una tecnologia. Sì, il valore è aumentato a dismisura nel corso del tempo, ma ciò non è un elemento primario nell’affermarsi di tale innovazione. Se BTC domani crolla, la tecnologià rimarrà lì e sarà ancora rivoluzionaria. Proprio come se un sito internet o un’app non riesce ad aver successo su Internet, non vuol dire che Internet scompare.
Idem nel rapporto tra Bitcoin e Blockchain.

Concludiamo con le parole di Andreas Antonopoulos, principale sviluppatore Bitcoin: “Ho scoperto Bitcoin per la prima volta nel 2011 e, da quando c’è Internet, finora non avevo più sentito questa sensazione di essere completamente sopraffatto dalle possibilità che vedevo. Ero lì all’alba di Internet all’inizio degli anni ’90, prima che diventasse un prodotto commerciale. E vedevo che avrebbe cambiato il mondo, ma non potevo dirlo a nessuno intorno a me, perché nessuno mi credeva. E ho la stessa identica sensazione con i Bitcoin”.

Quante volte abbiamo desiderato di liberarci dagli intermediari?
Idealmente l’intermediario garantisce che una transazione sia effettuata con il massimo livello di sicurezza e attendibilità per entrambe le parti. Generalmente l’intermediario richiede una percentuale di pagamento rilevata dalla transazione per garantire l’affidabilità dello scambio. Blockchain ha il potenziale per poter rimuovere l’intermediario e al tempo stesso fornisce una transazione blindata assai più sicura.

Lascia un commento