Cos’è la blockchain? Distributed Ledger Technology (DLT), Registro e Consenso (Parte 2)

Dopo aver fatto una panoramica sulle tipologie di sistemi informatici nel precedente articolo, è giunto il momento di affrontare la categoria delle  Distributed Ledger Technology (DLT),  dalla quale deriva la tecnologia Blockchain, ricordando sempre che la Blockchain è una DLT, ma non tutte le DLT sono Blockchain.

Parleremo anche del ledger o registro, peculiarità di questa tecnologia, il tutto a regia del meccanismo del consenso

Distributed Ledger Technology

Una Distributed Ledger Technology o DLT è un sistema distribuito che grazie ad un meccanismo detto del consenso, coinvolge tutti i nodi del sistema (i partecipanti alla rete) allo scopo di garantire l’univocità, la persistenza e la condivisione dei dati presenti in un repository detto registro o ledger (libro mastro).

Il registro, presente in ogni nodo di un sistema DLT, non è altro che un database, distribuito su tutti i nodi della rete, in cui le informazioni sono organizzate (in genere) in tabelle correlate, che consentono ricerche e aggiornamenti incrociati.

La funzione principale di una DLT, che ne rappresenta la potenzialità principale, è il  meccanismo del consenso, ovvero un algoritmo in grado di garantire che su ogni nodo della rete sia sempre presente una copia identica del registro, assicurando la coerenza tra i nodi

Spesso si utilizza erroneamente il termine protocollo al posto di algoritmo quindi approfittiamo per fare un po di chiarezza.

  • Protocollo: Un insieme di regole da rispettare
  • Algoritmo: Il meccanismo attraverso cui far rispettare le regole di un protocollo. In informatica un algoritmo è definito come quella sequenza di istruzioni, finita, espresse in un linguaggio non ambiguo al dispositivo elettronico che le deve eseguire e tali da produrre uno o più risultati in output elaborando dei dati di input (es. algoritmo, una ricetta di cucina; sequenza finita di istruzioni: procedimento; dati input: ingredienti; dati output: torta/pasticcini).

Nel caso delle DLT possiamo dire che, in generale:

  • Il Protocollo è quell’insieme di regole necessarie a Garantire che su un nodo del sistema sia sempre presente una versione del registro identica a quella presente sui restanti nodi
  • Il meccanismo del consenso invece è l’algoritmo con cui si deve garantire il rispetto del protocollo. È la soluzione al problema maggiormente studiato per tali sistemi, quello della coerenza tra i nodi.

Più in dettaglio, un algoritmo del consenso deve essere in grado di garantire :

  • La corretta esecuzione dello stesso meccanismo del consenso, coinvolgendo tutti i nodi della rete.
  • Il salvataggio dei dati nel ledger presente su di un nodo e la successiva replicazione della copia del ledger ai restanti nodi della rete.

Questo consente la propagazione e la sincronizzazione automatica dell’ultima copia aggiornata su tutti i nodi. 

Figura 1. DLT – il ledger distribuito su ogni nodo del sistema

Eviteremo, per ora, di illustrare la logica di elaborazione di tali algoritmi o il codice sorgente che ne implementano le soluzioni, sarebbe prematuro, ma per facilitare la comprensione di sistemi siffatti, preferiamo continuare con un paragone tra due sistemi distribuiti, noti.

Il sistema distribuito di Facebook, è in grado di trasmettere “istantaneamente”, a (potenzialmente) due miliardi di utenti, il contenuto pubblicato da un utente: è evidente che  risulterebbe impossibile centralizzare un tale sistema per problematiche legate a prestazioni e capacità di memorizzazione delle informazioni.

Facebook infatti, utilizza  decine di migliaia di nodi di calcolo, distribuiti per il globo, a cui ciascun utente può collegarsi trovando sempre la stessa “visione” del mondo (rappresentata dallo “stato” dei post), in modo indipendente dal nodo fisico a cui effettivamente è collegato.

Quindi capirete che mantenere coerente lo “stato” dei post tra tutti i nodi di calcolo è un problema non banale, studiato ormai da quasi cinquant’anni e che va sotto il nome del “problema del consenso”.

In pratica, gli algoritmi di consenso hanno l’obiettivo di far sì che un insieme di nodi “si concordino” circa lo stato complessivo del sistema in ogni istante. 

Come promesso, per analogia, considereremo il sistema distribuito di Bitcoin, in cui lo “stato” è rappresentato dalla versione del registro o ledger in cui sono trascritte tutte le transazioni avvenute tra individui che si sono scambiati dei bitcoin. In tale sistema, i nodi devono organizzare una complessa “coreografia” per mantenere la coerenza della storia delle transazioni (il registro).

La differenza fondamentale tra Facebook e Bitcoin è che nel secondo il meccanismo del consenso è decentralizzato, ovvero nessun nodo ha un ruolo “primario” diverso dagli altri nodi. Questa fu la novità introdotta dall’autore di Bitcoin “Satoshi Nakamoto” che determinò l’affermazione della criptovaluta come il metodo di pagamento digitale più sicuro, ancora ad oggi, oscurando tutti i precedenti tentativi di realizzazione di una moneta elettronica (e-gold, liberty-dollar ecc.), rappresenta la prima tecnologia ad aver eliminato un’ autorità centrale, necessaria a gestire l’integrità e la sicurezza di transazioni a cui è associato un valore economico (es. coin, token, asset) tra due o più individui.

Il meccanismo del consenso

Per comprendere il funzionamento del meccanismo del consenso, analizzeremo un semplice workflow (un flusso decisionale), il cui processo decisionale consensuale venga sottoposto a discussione in un gruppo di partecipanti, presupponendo che essi siano concordi nel procedere nel seguente modo:

  1. Si fissa un “Ordine del giorno” o elenco di argomenti da discutere e per cui prendere una decisione consensuale.
  2. Si concordano le regole per la discussione degli argomenti.
  3. Si discute punto per punto ogni argomento dell’ordine del giorno. 

Per ogni argomento da discutere, si procede con il seguente processo:

  1. Discussione dell’ argomento:
    Si individuano pareri e informazioni sull’argomento. Durante la discussione si individuano le potenziali proposte di azione e chi tra i partecipanti avrà potere decisionale.
  2. Si individua una proposta di soluzione per l’argomento:
    In base alle info raccolte tra i partecipanti, ai pareri ascoltati durante la discussione, si formula una soluzione al problema in discussione.
  3. Verifica del consenso:
    Per ogni argomento in discussione si sceglie un facilitatore tra i partecipanti, che attende il consenso di tutti  alla soluzione proposta.  Ogni partecipante deve mostrare al gruppo il suo accordo con un determinato gesto, non ambiguo, che indichi la sua volontà.
  4. Non si raggiunge il consenso:
    se non si raggiunge il consenso, ogni partecipante dissenziente espone le proprie obiezioni alla soluzione proposta.
  5. Si modifica la soluzione proposta:
    In base alle obiezioni esposte dai dissenzienti, viene modificata la soluzione proposta, si ritorna alla verifica del consenso, fino al suo raggiungimento.

Come già avrete intuito, i partecipanti di cui si parla, sono i nodi del sistema. La partecipazione di ogni nodo ha lo scopo di ottenere, per ogni “discussione”, il consenso da parte di tutta la rete.

Il processo decisionale è implementato dall’algoritmo del consenso:  ad ogni richiesta di aggiornamento del registro, ogni nodo esegue l’algoritmo esprimendo il voto di consenso per garantire che la maggioranza sia d’accordo. A consenso raggiunto, è possibile automaticamente aggiornare il database distribuito su tutti i nodi.

Dunque è possibile classificare i vari sistemi di Distributed Ledger, in base a tre caratteristiche:

  • Tipologia di rete (il tipo di sistema informatico)
  • Meccanismo di consenso (la modalità con cui si aggiorna il registro)
  • Struttura del registro 

Possiamo ora formulare una definizione molto concisa e semplice di Blockchain, dicendo che:

La Blockchain è una particolare DLT, dotata di un particolare registro, chiamato ‘blockchain’ realizzato con una struttura dati particolare, la ‘catena di blocchi’

Tuttavia non si deve trascurare un particolare molto importante di queste tecnologie: la sicurezza. Per garantire la sicurezza e l’immutabilità del registro, le Distributed Ledger e le Blockchain fanno un ampio utilizzo della crittografia, argomento complesso che affronteremo in modo semplice nei prossimi articoli.

Potreste pensare che per completare la comprensione basterebbe specificare in dettaglio la struttura a blocchi del registro “blockchain”: sfortunatamente ciò che si nasconde dietro la parola Blockchain è molto di più. 

Quando abbiamo parlato dei sistemi distribuiti, abbiamo anche detto che i nodi utilizzano un particolare software ed è dunque necessario capire quali sono le caratteristiche principali di quest’ultimo e le garanzie che fornisce alla rete. Tale software di solito è open source e può essere utilizzato su un’ampia gamma di dispositivi digitali, inclusi laptops e cellulari, rendendo questa tecnologia facilmente accessibile. Ricordiamo infine che nodi di una blockchain comunicano tra loro tramite internet utilizzando uno specifico protocollo (anche se sono possibili anche altri network di trasporto).

Nel prossimo articolo analizzeremo in dettaglio le componenti necessarie per il funzionamento della tecnologia blockchain.