Questo articolo è liberamente ispirato da Explaining Blockchain with Pokemon Cards, scritto per Medium da Jack Dossman di cryptobeginners.info
Per partire da una definizione, la Blockchain è una rete digitale aperta, decentralizzata, concatenata in ordine cronologico, irreversibile e a prova di manomissione. Detta così, appare un po’ complessa. Partiamo quindi da un esempio che ci può facilitare a comprenderne meglio i vari aspetti.
Pensiamo a due ragazzini, seduti nel cortile della scuola, a giocare con le carte dei Pokemon (se siamo un po’ più avanti con l’età, possiamo pensare a delle carte di Magic). Questi due amici decidono di scambiarsi due carte approssimativamente dello stesso valore. Non c’è niente di particolarmente complicato in questo scambio. Sono entrambi d’accordo sul fatto che lo scambio sia equo. Non c’è stato bisogno di chiedere all’insegnante di supervisionare questo scambio e assicurarsi che le carte siano scambiate correttamente. È ovvio che ognuno dei due possieda fisicamente ogni carta, nei rispettivi mazzi. Si possono vedere. Si possono toccare. Sono tutti d’accordo sul fatto che la transazione abbia avuto successo, senza particolari problemi.
Leggi le ultime news sulla tecnologia Blockchain
Lo scambio di beni immateriali
Fin qui, tutto facile. Allora complichiamo un po’ le cose. Immaginiamo cosa succederebbe se lo scambio riguardasse carte Pokemon digitali.
Facciamo finta che uno dei due abbia la carta più preziosa del gioco (di cui ne esiste solo una copia) e che la voglia dare all’altro.
Come si può essere sicuri che il “venditore” non abbia fatto una copia sul proprio computer prima inviarla all’altro, rendendo così la carta molto meno preziosa? E se avesse fatto 1.000 copie e le avesse vendute tutte come se fossero l’unica?
Il problema della doppia spesa
Non ci sarebbe modo di assicurarsi che chi cede la carta non si comporti in questo modo. Inoltre, proprio a causa di questa impossibilità, al venditore di fatto conviene adottare questo comportamento, che danneggia allo stesso tempo sia il ricevente che la comunità delle carte Pokemon. Questo è quello che è stato definito il problema della doppia spesa.
Quando si scambiano beni digitali, come facciamo a essere certi che qualcuno non abbia inviato la stessa risorsa a due persone contemporaneamente? Come possiamo assicurarci che la carta Pokemon digitale non sia stata duplicata?
Il problema del libro mastro
Potremmo usare un libro mastro: una registrazione di tutte le transazioni, per tracciare il nostro commercio. Nintendo (l’azienda creatrice dei Pokemon) dovrebbe controllare questo libro mastro in modo da sorvegliare e monitorare ogni scambio e assicurarsi così che nessuno duplichi le carte.
Questo approccio ha un problema, tuttavia. Se introduciamo una terza parte, un intermediario, nel nostro commercio, saremo costretti a passare sempre da lei per qualsiasi scambio. Non si tratta più solo di due bambini nel cortile della scuola; si rende necessario riporre la fiducia in questa terza parte. E qui sorge un altro problema.
Come possiamo essere sicuri che la carta rara non sia già stata duplicata in segreto da un dipendente Nintendo per darla al suo fratellino? Ancora una volta, non possiamo essere sicuri al 100% che nessuno abbia manomesso il registro.
Le copie del libro mastro
Ma ecco un’idea geniale: cosa succederebbe se, invece di tenere il libro mastro su un computer al quartier generale della Nintendo, abbiamo dato una copia del libro mastro a ogni commerciante di carte Pokemon?
Ci sono migliaia e migliaia di fan in tutto il mondo, quindi se tutti loro custodissero una copia del libro mastro, riceverebbero una notifica quando qualcuno scambia la carta rara. E i registri mostrano che esiste solo una di queste carte. Quindi, se venisse duplicata in modo illecito, la copia del libro mastro del falsificatore non corrisponderebbe a quella di tutti gli altri e, di conseguenza, sarebbe rifiutata in quanto non valida. E qui si arriva al punto cruciale della blockchain: come farebbe l’intera rete a verificare e convalidare lo scambio?
I nodi della blockchain
Diciamo che ci sono 1.000 computer, che chiamiamo nodi, che partecipano a questa rete commerciale. Tutti questi nodi hanno una copia del libro mastro condiviso e tutti eseguono un software che consente loro di dialogare con altri computer sulla rete. Lo scopo è di convalidare in maniera indipendentemente ogni scambio.
Questi nodi devono concordare ciò che il libro mastro condiviso dice sulle transazioni che avvengono sulla rete. Se due persone effettuano uno scambio, questo viene inserito in una “coda” temporanea di transazioni non confermate che devono attendere la validazione. Una parte dei nodi concorre alla convalida di tutte le transazioni non confermate in un dato periodo (per esempio, 10 minuti).
La verifica delle transazioni
Questi nodi sono chiamati miners (letteralmente, minatori) e, in un certo senso, gareggiano per essere i primi a convalidare il gruppo (o blocco) di transazioni. Questo perché lo sforzo della macchina viene ricompensato. Nel caso dei Bitcoin, i minatori possono guadagnare 1 BTC. Nel nostro esempio iniziale, potrebbe corrispondere a un mazzo di carte Pokemon. Abbiamo detto “possono”, perché il guadagno dei miners non è garantito, ma viene elaborato, come estratto a sorte, da un algoritmo. Quello che ci interessa, per il momento, è che tutte le operazioni sono memorizzate come una catena di questi blocchi (blockchain appunto) che costituisce il nostro libro mastro condiviso.
Successivamente, i minatori competono per essere i primi a convalidare un nuovo blocco. Lo fanno utilizzando enormi quantità di potenza di calcolo che servono per “sbrogliare” complesse stringhe crittografate. Il sistema è creato appositamente affinché la convalida dei blocchi sia un “duro lavoro” di elaborazione per le macchine, in modo da scoraggiare le falsificazioni. Se la falsificazione è particolarmente “costosa”, non ha neanche senso provarci.
La propagazione dei blocchi convalidati
Una volta che un minatore ha “risolto” il suo compito crittografico che consente di convalidare un blocco, questo blocco viene firmato digitalmente (per dimostrare che il blocco è verificato) e lo annuncia alla rete di nodi. Il minatore distribuisce quindi il blocco verificato a tutti gli altri per aggiornare i loro registri con le nuove transazioni.
Entrando un po’ più nel tecnico, ogni nodo raccoglie tutte le transazioni non confermate di sua conoscenza in un “blocco candidato”, cioè un file che, tra le altre cose, contiene un hash crittografico (la firma) del precedente blocco valido conosciuto a quel nodo. Prova poi a riprodurre un hash di quel blocco con determinate caratteristiche. Questo è un compito che richiede in media una quantità definibile di prove da dover effettuare. Quando un nodo trova tale soluzione, la annuncia al resto della rete. I nodi che ricevono il blocco ne controllano la validità prima di accettarlo, poi lo aggiungono alla catena.
I nodi non effettuano mai una convalida reciproca (cioè, non l’uno con l’altro). Anzi, ogni volta che viene trasmesso un nuovo blocco, ogni nodo controlla tutte le transazioni nel blocco rispetto alla cronologia delle transazioni precedenti. In questo modo, si verifica che le transazioni siano genuine e si evita il problema della doppia spesa. Ecco come la rete dei nodi ottiene la concordanza dei blocchi convalidati.
Una questione di tempo
Ma, tornando all’esempio iniziale, ipotizziamo che uno dei due ragazzini ceda una delle sue carte rare in cambio di qualcosa appartenente al mondo reale, diciamo la merenda dell’altro. Cosa succede se, dopo aver concluso questo scambio, chi ha ricevuto la carta prova subito a venderla a un altro? La rete non sa che c’è stato uno scambio fisico, quindi individuerebbe 2 copie della stessa carta. Come fa a decidere qual è la carta originale? Quella valida?
Entrambe finiscono nel gruppo delle transazioni non confermate. Queste sono generalmente selezionate per essere aggiunte in un blocco in ordine cronologico, ma non sempre.
Una verifica cronologica
La blockchain effettua verifiche in maniera cronologica. Vale a dire, più una transazione è indietro nella catena, più è sicura. Se il primo invio è convalidato per primo, quella è la transazione reale agli occhi dei titolari del libro mastro, mentre la seconda rappresenterebbe un caso di doppia spesa.
Cosa bisogna fare per evitare di rimanere senza carta e senza merenda? L’opzione migliore è aspettare. È impossibile che la rete accetti entrambe le spese, quindi una delle due sarà sempre respinta. È solo questione di tempo, per vedere quale sarà inclusa nel prossimo blocco. Se si aspetta per, diciamo, almeno 10 minuti, è possibile verificare che la transazione sia andata a buon fine.
Come la blockchain previene le frodi
Ma cosa succederebbe se una persona maliziosa decidesse di non giocare secondo le regole? Cosa impedisce a qualcuno di tornare più tardi nel libro mastro e di rimuovere dal registro quel particolare blocco prima che il destinatario della transazione utilizzi nuovamente quei fondi?
Quel trade è memorizzato in un blocco di informazioni, e i blocchi sono collegati linearmente nel tempo, quindi è probabilmente sepolto dietro un mucchio di blocchi ormai. Se sono stati aggiunti nove blocchi più recenti dallo scambio, si può trovare il decimo blocco (dove è registrato lo scambio) ed eliminarlo.
Ma ricordate la firma digitale che viene messa su ogni blocco? Viene generata in base alle informazioni contenute nel blocco. Di conseguenza, la modifica dei dati (ad esempio la rimozione di una transazione) modifica automaticamente anche la firma. Per di più, ogni firma di ogni blocco successivo è parzialmente determinata anche dalla firma del blocco precedente. Quindi, se cambia la firma di un blocco, cambiano anche le firme dei blocchi successivi. Ricapitolando, un trader malizioso dovrebbe correggere non solo la firma sul decimo blocco, ma anche sui nove blocchi successivi della catena.
I vantaggi della decentralizzazione
Per complicare la vita a un eventuale truffatore, si consideri che la modifica sopra ipotizzata viene effettuata sul suo libro mastro, mentre tutte le copie degli altri nodi concordano felicemente su ciò che è già successo. Quindi, per concludere, un trader truffaldino dovrebbe modificare tutti gli ultimi 10 blocchi su più del 50% dei computer della rete, in modo da ottenere il consenso della maggioranza e farsi convalidare la sua transazione fasulla.
Una eventualità piuttosto complessa da attuare. Anche perché, non dimentichiamoci che ogni computer deve impiegare una gran quantità di potenza di calcolo per generare quelle firme digitali. Ricalcolare le firme per più blocchi attraverso la maggior parte della rete richiederebbe una quantità di energia gigantesca: parliamo di molte webfarm piene di server impilati fino al soffitto, in funzione 24 ore su 24, 7 giorni su 7. E più la rete si ingrandisce, più diventa sicura.
In conclusione
Ecco quindi spiegato come è stato possibile creare una rete digitale aperta, decentralizzata, irreversibile e a prova di manomissione, che può essere utilizzata per lo scambio di beni preziosi.
Questa è una versione semplificata di come funziona la tecnologia blockchain, su cui sono basate diverse criptovalute, di cui la più famosa è sicuramente il Bitcoin. Ma i suoi utilizzi non si limitano allo scambio di denaro, proprio grazie alla sua stabilità e alla sua sicurezza.
Avere una rete decentralizzata significa che i dati vengono replicati su migliaia (o milioni) di computer in tutto il mondo. Questo evita di dipendere da pochi server centralizzati, che per quanto possano essere protetti e ridondati, sono certamente più soggetti a guasti e attacchi informatici.