La blockchain e la matematica dei minatori

Share on facebook
Share on twitter
Share on linkedin

Torniamo a parlare di blockchain, perché nonostante la crisi kazaka sia passata in secondo piano, l’impatto dell’estrazione di bitcoin sul nostro mondo sarà sempre crescente.

La blockchain, che possiamo tradurre come “catena di blocchi”, è una tecnologia complessa e pervasiva diventata famosa per il fenomeno finanziario legato ai bitcoin ma capace di andare ben oltre. Vista la promessa di rivoluzionare qualunque ambito della nostra vita, dalla burocrazia alle relazioni interpersonali, dalla musica al settore energetico, in molti l’hanno definita “il nuovo internet” pensando alla sua caratteristica di configurarsi come un registro di transazioni che le rende verificabili in ogni passaggio. Le origini della “catena” risalgono al 2009 con la pubblicazione di un articolo da parte di Satoshi Nakamoto, pseudonimo dietro cui si nascondono uno o più informatici la cui identità resta ancora segreta, che ha creato la criptomoneta bitcoin basandosi sulla tecnologia blockchain. Secondo le intenzioni di Satoshi, “una versione puramente peer-to-peer di denaro elettronico permetterebbe di spedire direttamente pagamenti online da un’entità a un’altra senza passare attraverso un’istituzione finanziaria”. Si tratta, insomma, dell’abolizione degli intermediari (le banche che certificano) che aumentano i costi di transazione, permettendo lo svolgimento di operazioni criptate completamente anonime e archiviando tutte le transazioni in un registro pubblico distribuito in rete. Se volessimo definire informalmente la blockchain, potremmo dire che è una sorta di libro mastro pubblico e decentralizzato che, sfruttando la tecnologia peer-to-peer, valida le transazioni tra due parti in modo sicuro, verificabile e permanente. Le tecnologie alla base del suo funzionamento sono tutte soluzioni informatiche già note e vanno dal file sharing alla crittografia, in particolare quella a chiave pubblica e privata (in cui chiunque può cifrare un messaggio usando la chiave pubblica del destinatario, ma tale messaggio può essere decifrato solo con la chiave privata del destinatario) e quella hash che, data una stringa di una qualsiasi lunghezza, ne produce una di una lunghezza definita da cui non è possibile risalire alla stringa originale. La rivoluzione è nata dalla loro unione nel formare quella che appunto viene chiamata “catena di blocchi”. Come funziona questo insieme di algoritmi matematici che lavorano su internet? La blockchain è un paradigma su cui si basano molti software scaricabili da internet e installabili sui propri computer. Una volta installati, si diventa un “nodo” collegato a tutti gli altri già in rete. Ciascun nodo è anonimo e univocamente identificato da un codice. Tra i diversi nodi possono avvenire transazioni e scambi di dati di diversa natura tramite i “blocchi” che registrano le operazioni. A rendere così particolare la blockchain sono due aspetti: una transazione non è certificata da un solo ente terzo ma, perché abbia successo, deve essere approvata da almeno la maggioranza assoluta di tutti i nodi della rete; dopo che una transazione è avvenuta, l’archivio storico e tutte le informazioni collegate vengono salvate e conservate su ogni singolo blocco della catena, che è pubblico e condiviso da tutti i nodi. Quando c’è necessità di modificare un’informazione, occorre aprire un nuovo blocco, dichiararlo e questo deve essere approvato. Come già detto, per attivare un nuovo blocco della catena è necessario il controllo delle transazioni contenute nel blocco stesso da parte dei nodi. Questo passaggio si risolve attraverso un complesso problema matematico che richiede un cospicuo impegno computazionale in termini di potenza e di capacità elaborativa. I nodi che procedono alla ricerca della soluzione sono detti “minatori” e il primo che riesce a risolvere il problema viene premiato con una quota di bitcoin generati proprio grazie a questo processo. Inizialmente la ricompensa era di 50 bitcoin per blocco ma, se tale ricompensa rimanesse sempre la stessa, la moneta in circolazione aumenterebbe infinitamente nel tempo e si verificherebbe una continua inflazione. Per evitare questo problema, il sistema è programmato per generare moneta secondo una serie geometrica, che serve per “tenere sotto controllo” il valore, fino a che il numero totale di bitcoin non raggiunge i 21 milioni. Il sistema bitcoin dimezza la ricompensa ogni 210 000 blocchi minati (ovvero ogni 4 anni circa); così facendo si ottiene:

Solo dopo l’accettazione da parte della maggioranza, il minatore vincitore riceve il premio. Da questo momento, tutte le transazioni contenute in quell’ultimo blocco generato vengono “incatenate” alla blockchain e diventano pubbliche; quindi, chi ha pagato una somma di bitcoin non li possiede più mentre il ricevente li possiede effettivamente. Il quesito matematico che i minatori devono affrontare viene chiamato proof of work e non si risolve ricorrendo alla logica: è un problema crittografico che richiede un enorme numero di tentativi e si supera con il metodo di forza bruta (ovvero con un algoritmo che consiste nel provare tutte le soluzioni teoricamente possibili fino a trovare quella adatta) che rende impossibile prevedere quale utente troverà la soluzione prima degli altri, a meno di non disporre di una potenza computazionale rilevante. Ogni blocco è diviso in due parti: l’header (di lunghezza predefinita) e i dati delle transazioni. Uno dei campi all’interno dell’header è detto Nonce (acronimo di number used once) rappresentato da una sequenza di 32 bit che devono essere riempiti in maniera casuale proprio dai minatori: se la stringa output è inferiore a un valore soglia stabilito (detto target), allora il blocco è valido. Più piccolo è tale valore e più difficile e costosa è l’operazione di generazione di un nuovo blocco. Formalmente, data una funzione hash crittografica H, la soluzione del problema si otterrebbe trovando un valore x tale che sia H(x)  T dove T è il target.

Questo valore è stabilito dal sistema per regolare automaticamente la velocità di creazione di un blocco e viene modificato ogni 2016 blocchi creati (circa due settimane) in modo che occorra una media di 10 minuti per incatenarne uno nuovo. Per risolvere il proof of work i minatori devono completare il messaggio in maniera tale che la stringa risultante riporti come prime cifre un valore minore del target T, dunque, essendo T un numero molto piccolo, i primi caratteri del codice devono essere una (lunga) sequenza di zeri. Affinché il valore target rispetti il tempo di ricerca di 10 minuti circa è necessario ricorrere a qualche calcolo. Poiché ogni valore hash è un numero di 256 bit, ci sono 2256 possibili valori hash e la probabilità di trovare un valore hash minore di T risulta p(T) =T/2256 e il numero di prove necessarie a trovarlo N(T) = 1/p(T) = 2256/T. Sia tm il tempo di generazione degli ultimi 2016 blocchi. Allora i minatori hanno lavorato a una velocità vm = N(T)/tm. Il nuovo valore target T’ deve essere regolato perché il tempo di creazione di un blocco sia pari a 600 secondi, quindi 600s = N(T’)/vm = tm∙T/T’, da cui T’ = T∙ tm /600s. È un processo che rende impossibili i tentativi di corruzione, truffa o furto. Infatti, se si volesse “truccare” la blockchain, non basterebbe intervenire su un singolo blocco per rendere questa modifica valida ma bisognerebbe intervenire su tutti i blocchi della catena e, per farlo, si stima che sarebbe necessaria la potenza di un computer 6000 volte più potente dei 500 super computer più veloci al mondo. Le applicazioni della blockchain non si limitano ai bitcoin. Negli ultimi anni sono stati avviati circa 80mila progetti basati su questa tecnologia (anche se il 92% di questi è fallito nei primi dodici mesi) in corso di sperimentazione presso banche, imprese e governi. Al momento, la capitalizzazione di tutte le blockchain esistenti al mondo è di 250 miliardi di dollari ed è in continua crescita. La compagnia Bitnation sta progettando una carta d’identità virtuale d’emergenza per migranti che potrebbe provare crittograficamente l’esistenza di una persona e le sue relazioni familiari registrate su una blockchain pubblica. Il World Food Programme delle Nazioni Unite ne ha riconosciuto il potenziale per aiutare le popolazioni che soffrono la fame: minori costi di transazioni consentirebbero che le offerte arrivassero non decurtate dai costi di commissione. La compagnia marittima danese Maersk sta sperimentando la blockchain con Ibm per migliorare efficienza e sicurezza del trasporto mercantile. Nel comparto agroalimentare, la blockchain permetterebbe di conoscere la storia di ogni prodotto, dalla nascita fino al consumatore finale. Nella sanità, le cartelle cliniche potrebbero essere condivise fra i medici in qualunque parte del mondo, attraverso un database che consenta di ricostruire l’intera storia clinica di un paziente. La blockchain permetterebbe agli artisti di controllare la distribuzione della propria opera e il relativo pagamento dei diritti di riproduzione. Un diploma digitale, dematerializzato e certificato con la blockchain, è al centro di una sperimentazione in alcuni licei romani. La tecnologia garantirà la tracciatura dell’iter formativo degli studenti con tutte le informazioni relative ai corsi e alle materie seguite anche a distanza. La soluzione migliore in tempi di Coronavirus.