Blockchain: cosa è e come funziona la nuova ‘rivoluzione’ tecnologica
12 min letturaIl tormentone dell’estate 2018 sono le discussioni su Blockchain. Chi non ne vuol sapere troppo e godersi indisturbato le vacanze può passare direttamente al post scriptum.
Negli ultimi mesi sembra che Blockchain sia diventata la nuova lotteria tecnologica che spazzerà via tutti i problemi del mondo. La raccontano come l’antidoto alle notizie false, la cura per eliminare le lungaggini burocratiche, la soluzione per comprare i biglietti della metro o per creare nuove forme di confronto.
Peccato, perché alzare le aspettative e crearne di irrealistiche può avere un effetto negativo sulla fiducia verso questa tecnologia. Blockchain - inteso come tecnologia e insieme di regole che la governano - ha delle potenzialità notevoli, che però sono accompagnate, come sempre, da condizioni di applicabilità e limiti.
Blockchain in sintesi
Blockchain è un “registro distribuito e aperto che permette di annotare le transazioni tra due parti in maniera verificabile e permanente”. Insomma, è qualcosa di estremamente noioso per i più: un sistema per gestire dati distribuiti tra molti computer. Ma in alcuni ambiti applicativi può creare delle soluzioni non praticabili fino a poco fa (per alcuni rivoluzionarie), da qui tutta l’attenzione che sta ricevendo.
Semplificando (molto), Blockchain è un libro mastro, replicato su molteplici computer, dove registrare gli scambi conclusi tra utenti. Blockchain è disegnata per assicurare che ogni transazione avvenga regolarmente e che nessuno possa modificare quelle informazioni in futuro.
Blockchain consente di condividere informazioni relative alle transazioni in maniera distribuita (senza alcun attore centrale che faccia da intermediario unico), trasparente (ogni nodo della rete mantiene una copia del database comune a tutti) e tuttavia sicura da manomissioni (nessuno può modificare una transazione già registrata e validata sulla Blockchain).
Come è nata e alcuni concetti base
Blockchain originariamente è stata sviluppata come tecnologia alla base di Bitcoin e ha progressivamente conquistato interesse e spazi anche oltre le criptovalute.
Leggi anche >> Come ti spiego i Bitcoin al Cenone di Natale
Nella Blockchain – tradotto letteralmente: "catena di blocchi" – un insieme di transazioni sono raggruppate in un blocco, che il sistema valida e aggiunge agli altri precedentemente creati. Ogni blocco è collegato tramite un codice di riferimento a quelli precedenti, in modo che la sequenza di tutti i blocchi formi una catena, da cui in inglese "Blockchain". Questa catena è trasmessa e conservata a tutti i computer che compongono il sistema.
I computer che decidono di far parte di una Blockchain sono chiamati “nodi” e contribuiscono a validare e trasmettere le singole transazioni all’interno del network. Quando un nuovo nodo si aggiunge alla rete riceve una copia completa della Blockchain (che va dalla prima transazione effettuata fino all’ultima).
È una rivoluzione?
Quando vendiamo o acquistiamo una casa, la transazione è registrata dal notaio nel Registro Immobiliare (il catasto). Chi volesse verificare la proprietà dell’immobile deve consultare quel registro. La stessa cosa succede per i conti correnti (i dati sono gestiti dalla singola banca), la residenza e altri dati anagrafici (gestiti dal Comune), la situazione pensionistica (gestita dall’ente di previdenza). Siamo immersi in un sistema in cui, per molti aspetti della nostra quotidianità, un soggetto terzo (catasto, banca, comune) tiene traccia di informazioni che ci riguardano e le garantisce. Questo soggetto terzo centralizza la raccolta e lo scambio delle informazioni assumendo il ruolo di intermediario e garantendone l’autenticità.
Uno dei motivi per cui ci si rivolge a degli intermediari è per aumentare la fiducia dei contraenti nell’affidabilità della transazione. Se il venditore fosse l’unico soggetto a mantenere traccia degli estremi della transazione, potrebbe essere tentato di alzare il prezzo di vendita concordato e chiedere più soldi; simmetricamente, se l’acquirente fosse l’unico depositario dei termini dell’accordo, potrebbe cercare di abbassarne il prezzo. Se invece i dati sono trascritti e mantenuti da un soggetto terzo, i contraenti confidano ragionevolmente che i termini dell’accordo vengano registrati e conservati senza alterazioni.
Su questo aspetto Blockchain è estremamente innovativo: rende possibile progettare sistemi aperti in grado di registrare, verificare e conservare transazioni senza l’intervento di alcun intermediario. Bastano le due parti della transazione. Il meccanismo è basato su un sistema non centralizzato ma distribuito: i dati sono conservati da molti nodi piuttosto che da uno solo. I contraenti spostano la loro fiducia dagli intermediari al sistema, perché confidano (a ragione) che Blockchain registrerà e conserverà inalterati i dati della loro transazione.
Allora è Blockchain stesso a fare da intermediario? La risposta breve è sì, ma con alcune precisazioni. La principale riguarda la natura stessa dell’intermediazione. Mentre con gli intermediari tradizionali ci si fida che una persona o un’organizzazione si comporterà secondo le nostre aspettative, con Blockchain ci si fida della bontà del sistema e non dell’operato di un singolo soggetto. Blockchain, infatti, non è una persona né un’organizzazione, ma un sistema codificato per gestire informazioni. Mi fido di come funziona il sistema e delle norme che lo regolano, sapendo che le azioni eseguite da Blockchain sono automatiche e non soggette a decisioni di individui o organizzazioni*.
Dove si usa Blockchain?
Blockchain si basa su un modello di gestione dei dati che rende possibile qualcosa che prima era difficile anche solo immaginare: rendere sicure transazioni tra soggetti distribuiti geograficamente senza l’uso di intermediari centrali. All’interno di questi confini, Blockchain è una tecnologia rivoluzionaria. Tuttavia quelle stesse caratteristiche la rendono adatta a un ristretto numero di scenari d’uso.
Molte delle applicazioni di Blockchain sono ancora in fase di sperimentazione, mentre già sono molti gli esempi di programmi falliti. R3 è un progetto lanciato nel 2014 con ambiziosi piani per sviluppare una piattaforma Blockchain per un consorzio delle più grandi banche mondiali. Nonostante enormi investimenti, ad oggi, quelle promesse non sono state soddisfatte: R3 ha più volte rimodellato le proprie ambizioni e voci sempre più insistenti descrivono l’azienda in forte crisi.
Non è un caso che ad oggi la larga maggioranza delle applicazioni Blockchain si concentri nel mondo della finanza o delle criptoavlute da cui trae origine (con il chiaro dominio di Bitcoin come ambito di applicazione). Stanno lentamente anche emergendo casi d’uso interessanti per distribuire voucher alimentari a popolazioni in difficoltà da parte del World Food Program o esempi di sistemi per sostituire le attività di registrazione e di attestazione della proprietà su dei beni o per garantire la tracciabilità di alcuni scambi (dai generi alimentari alla trasparenza sulle donazioni).
Caso d’uso nelle criptovalute: Bitcoin
Quando invii un bonifico bancario, stai dando mandato alla banca di prendere 10 Euro dal tuo conto corrente e di aggiungerli a quello del ricevente. La banca registrerà nel proprio database (sistema di raccolta e gestione dei dati) quella transazione. Se tutto funziona correttamente, dopo qualche giorno avrai un’operazione in uscita (segno -) e la controparte una in entrata (segno +). Tutti i dati di questa transazione sono conservati e garantiti dalla banca. Per questo ci sono molteplici sistemi di protezione dei dati bancari: occorre garantire che i dati delle transazioni rimangano intatti anche in caso di malfunzionamento, errore o attacco informatico.
Con Blockchain i dati delle transazioni non sono conservati su un unico computer. Sono invece mantenuti su un gran numero di computer distribuiti per il mondo (a Luglio 2018 si contano 9650 nodi che fanno parte della Blockchain di Bitcoin). Ogni computer ha la stessa importanza degli altri (sistemi peer-to-peer) e su ognuno sono registrati esattamente gli stessi dati e le stesse transazioni. Ogni nodo conserva un registro con tutti i trasferimenti di Bitcoin conclusi dal 2009 fino ad oggi. Questo vuol dire che chi volesse attaccare o manomettere le transazioni registrate non potrebbe limitarsi ad entrare in un solo computer per modificare i dati ma dovrebbe entrare quasi simultaneamente in tutti i 9650 nodi (in realtà basterebbe controllarne la maggior parte, ma in questo articolo adotteremo questa semplificazione*). Inoltre, poiché ogni blocco di transazioni è legato al blocco di transazioni precedenti (catena di blocchi), non è possibile modificare una transazione passata senza andare a manipolare tutti i blocchi aggiunti successivamente. Su tutti i 9650 computer.
Facciamo un esempio. Ipotizziamo che il 26 Aprile 2018 intorno alle 10 di mattina Giovanna abbia pagato a Carlo 229 bitcoin. Quella transazione è stata registrata nel blocco numero #520000 (un blocco è un contenitore che raccoglie un insieme di transazioni). Dopo quattro giorni Carlo vuole provare a manomettere quella transazione aggiungendo uno zero per essere più ricco. Il 30 Aprile, mentre cerca un modo per truffare il sistema, si accorge che nel frattempo sono stati aggiunti 550 blocchi (si è arrivati al #520550). Ogni blocco ha un legame con il precedente. Quindi se Carlo vuole modificare anche solo uno spazio o uno zero del blocco #520000, dovrà manomettere anche il blocco successivo (#520001) altrimenti il legame sarebbe spezzato e il sistema si accorgerebbe della manomissione. Ma ovviamente se manomette il #520001 dovrà modificare anche quello successivo (#520002) e tutti gli altri che sono stati creati nel frattempo. Quindi Carlo, per truffare il sistema dopo 4 giorni, deve manomettere 550 blocchi (e deve farlo in fretta prima che ne vangano aggiunti altri). Non solo, ma deve farlo in maniera pressoché simultanea per tutti i 9650 nodi distribuiti nel mondo. Conclusione: Carlo rimarrà felicemente con i suoi 229 bitcoin senza aggiungere alcuno zero.
Caso d’uso nella logistica di prodotti alimentari: Carrefour
Un esempio di Blockchain usato nella logistica è quello che sta portando avanti la catena della grande distribuzione Carrefour. A inizio 2018 Carrefour ha introdotto in Francia la Blockchain per tracciare la filiera di alcuni generi alimentari, iniziando dal pollo d’Auvergne e il pomodoro Marmande. In Italia da Settembre la Blockchain permetterà di tracciare digitalmente, in maniera trasparente e consultabile anche dal consumatore finale, il pollo allevato all’aperto e senza antibiotici da 29 allevamenti, 2 mangimifici e 1 macello. I clienti (tramite un QR code) potranno accedere a tutti i dati della filiera alimentare, dall’origine fino al punto vendita. Le caratteristiche delle Blockchain garantiranno l’immutabilità di quei dati.
Se da una parte queste iniziative sono rivolte ad aumentare la fiducia del consumatore, rimane una questione aperta. L’immutabilità dei dati risolve un problema (la possibilità di modificarli ex-post quando conviene) ma non garantisce sull’attendibilità e veridicità dei dati immessi in ogni passaggio della filiera. Ovvero se inserisco un dato non veritiero, Blockchain incorporerà nel sistema senza filtri quell'informazione non accurata o falsa: semplicemente non consentirà di modificarlo successivamente.
Le Blockchain sono tutte uguali?
Possiamo definire diversi tipi di Blockchain in base al loro grado di apertura. È definita “permissionless” (senza permesso) quella in cui chiunque può partecipare al processo di verifica dei blocchi senza dover avere un’autorizzazione ex-ante per poter aggiungere la propria capacità computazionale a quella del sistema. Bitcoin è una Blockchain permissionless: ogni computer può diventare parte del sistema (full node) senza ricevere alcuna autorizzazione preventiva purché rispetti le regole stabilite per ogni nodo della catena stessa. Al contrario, una Blockchain di tipo “permissioned” (con permesso) è quella in cui un’autorità centrale o un consorzio seleziona preventivamente i nodi che possono verificare le transazioni.
Spesso le Blockchain con o senza permesso preventivo vengono confuse con quelle di tipo pubblico o privato. In una Blockchain pubblica ognuno può avere accesso ai dati conservati nella catena, avendo quindi la possibilità sia di leggere sia di sottomettere le transazioni. In una Blockchain privata, invece, l’accesso ai dati (così come la sottomissione di nuove transazioni) sono ristrette solo agli attori scelti dall’autorità centrale (spesso quindi l’accesso alla Blockchain privata è ristretto ai membri di una singola organizzazione o di una associazione).
La differenza tra queste due categorizzazioni è sottile (e in realtà ancora in divenire): persmissionless/permissioned si riferisce a un problema di autorizzazione – COSA può fare un nodo e se per farlo ha bisogno o meno di un’autorizzazione preventiva; public/private si riferisce a un problema di autenticazione – CHI può accedere ai dati. Nei casi concreti quasi sempre una Blockchain pubblica è anche permissionless (come nel caso di Bitcoin) in modo da ridurre l’esigenza di un intervento di terze parti e autorità intermediatrici. Simmetricamente le Blockchain private sono quasi sempre permissioned perchè le organizzazioni che le gestiscono hanno interesse a restringere accesso e uso solo ai loro membri.
Alla fine è una rivoluzione o no?
Blockchain funziona al meglio in un sistema distribuito aperto (che quindi vuole o deve far a meno di nodi centrali) dove la priorità è garantire la non modificabilità delle transazioni concluse. In tutti gli altri scenari Blockchain presenta molte inefficienze rispetto alle tradizionali soluzioni centralizzate.
Quindi per capire se Blockchain può essere innovativa in un certo ambito ci dobbiamo chiedere: il sistema in questione deve essere distribuito e aperto? La priorità del sistema è la conservazione e la non modificabilità dei dati registrati? Se la risposta a una di queste domande è negativa, allora una combinazione di tradizionali sistemi di gestione di dati e crittografia può spesso bastare senza dover ricorrere a Blockchain, che per design è – a parità di condizioni - più costosa e lenta. Blockchain è inefficiente per sua stessa natura, ed è questa sua inefficienza a garantirne la robustezza in contesti distribuiti e aperti.
Un altro elemento spesso sottostimato in fase di disegno dei sistemi Blockchain riguarda i nodi: la struttura della catena è forte solo se può contare sulla partecipazione di numerosi nodi autonomi e indipendenti. Ma i nodi devono avere un interesse o una motivazione per investire parte delle loro risorse nella sicurezza del sistema. Nella Blockchain di Bitcoin questa motivazione deriva dalla possibilità di ricevere come ricompensa i nuovi bitcoin generati nel blocco. In molte altre sperimentazioni il problema del numero di nodi è sottostimato, finché ci si accorge che una Blockchain con 3 nodi è un inutile spreco di risorse.
Cosa c’è in un blocco?
Ogni blocco della Blockchain è caratterizzato da almeno quattro parti:
1. Dati sulle transazioni: le informazioni di tutte le transazioni raccolte nel blocco stesso.
2. Timestamp: data e ora in cui il blocco è stato generato.
3. Hash: un numero che identifica in maniera univoca il singolo blocco.
4. L’hash del blocco precedente: in questo modo ogni blocco è legato in maniera diretta al blocco precedente. Ipotizziamo per esempio che il blocco #99 abbia come valore dell’hash la stringa 6f49c2f. Il blocco successivo #100 che ipotizziamo con hash a09db6f, dovrà avere nel campo “hash del blocco precedente” lo stesso valore 6f49c2f.
Come fanno i diversi nodi a concordare quali blocchi aggiungere alla catena?
Nella Blockchain di Bitcoin i full node (in italiano “nodi completi”) sono nodi che hanno convalidato l’intera catena Blockchain in modo indipendente ed autonomo e applicano tutte le regole di Bitcoin (es. ogni blocco può creare solo un certo numero di nuovi bitcoin, attualmente 12.5; ogni transazione deve rispettare il formato di dati stabilito; ogni transazione deve contenere le firme corrette per poter spendere i bitcoin, etc.). Solo i full node possono aggiungere un nuovo blocco alla Blockchain. Per farlo devono raggiungere un “consenso” con gli altri nodi completi. Il consenso viene raggiunto quando un full node condivide con gli altri il così detto proof-of-work (POW) e gli altri lo verificano e lo accettano. Il POW consiste in una sorta di puzzle matematico difficile da risolvere, ma la cui soluzione è facile da verificare.
Quindi i full node devono impiegare consistenti risorse computazionali per risolvere il problema, ma una volta trovata la soluzione questa è facilmente verificabile dagli altri nodi. Ad oggi servono in media 10 minuti per creare nuovo blocco nella catena Bitcoin. Il primo full node che risolve il puzzle può aggiungere il nuovo blocco e ottenere come ricompensa i nuovi bitcoin creati nel blocco . Questa ricompensa funge da incentivo economico per motivare i full node a contribuire alla catena di Bitcoin. Sebbene il POW sia uno dei meccanismi più diffusi per raggiungere il consenso, ne esistono anche molti altri tra cui il proof-of-activity o il proof-of-stake.
Come funziona l’hash e la risoluzione dei problemi per generare i blocchi?
Un nodo può generare un blocco quando risolve un puzzle. Come dire che se voi riuscite a decodificare la seguente stringa (cioè trovare il messaggio al suo interno), avrete diritto ad una ricompensa:
9105888CFA30DE00D70E800BE55451413C4CCDA27FA4B198212247C3687DFB34
In questa stringa è stato crittografato un messaggio usando un algoritmo chiamato SHA-256 (Secure Hash Algorithm). Questo algoritmo genera degli hash (quasi-)unici a lunghezza fissa di 256-bit con la caratteristica di consentire una “facile” criptazione di un messaggio mentre la sua decodifica è (oggi) praticamente impossibile. Nella stringa criptata sopra, il messaggio è: “Visto come è facile verificare la correttezza di questo hash?”. Esistono molti generatori online di SHA-256 hash (qui un esempio) da provare per vedere quanto è facile criptare un messaggio che nessuno riuscirà decodificare (scrivete nello spazio di testo il messaggio che volete codificare, notando come ad ogni carattere che inserite l’hash cambi completamente). Allo stesso tempo con i generatori online è facile controllare che la soluzione che vi ho proposto al puzzle sia corretta. Basta inserire la risposta (“Visto come…” ecc) nel campo testo e controllare che l’hash del puzzle sia quello che avevo indicato sopra (9105…etc.). Nella Blockchain di Bitcoin i nodi cercano la soluzione al puzzle e, quando la trovano, la comunicano a tutti gli altri nodi che così possono controllare facilmente (come avete fatto voi con la stringa qui sopra) che la soluzione trovata sia effettivamente corretta.
P.S. Se siete in vacanza e volete tagliare corto la conversazione con l’ennesima persona che vi chiede se sapete cosa sia Blockchain, impostate una faccia annoiata e rispondete rapidi: “Blockchain è disegnato per garantire la sicurezza di un sistema distribuito aperto anche in presenza di un modello avversario con tolleranza bizantina ai guasti”. Poi allontanatevi tranquilli, non verrete più disturbati.
*Rimandiamo ad un altro momento la spiegazione di dettaglio ed esaustiva di altri aspetti di Blockchain (come vulnerabilità, attacco 51%, Sybil-resistance, meccanismi per far evolvere la catena, smart contract, problemi di governance, impatto e modelli organizzativi, etc.) che costringerebbe la gran parte dei lettori ad utilizzare immediatamente la formula consigliata nel post scriptum. Per chi volesse intanto approfondire, un buon punto di partenza non tecnico è Tapscott e Tapscott (2016).
Altra iniziativa da seguire è l’Osservatorio e Forum sulla Blockchain dell’Unione Europea che presenta anche una mappa (in crowdsourcing) delle iniziative basate su questa tecnologia.
Immagine in anteprima via pixabay.com