Professore ordinario di Informatica Università degli Studi di Cagliari
2. La tecnologia blockchain
Le valute digitali si basano sulle stesse tecnologie crittografiche della firma digitale: la crittografia asimmetrica e le “impronte” hash. La prima garantisce che il possesso della chiave privata di una coppia di chiavi (in pratica, due numeri interi molto grandi) sia unico e non falsificabile. In tal modo è garantito il possesso della valuta, o l'autenticità di una controparte contrattuale. L'impronta hash garantisce l'inalterabilità dell'informazione, in questo caso del registro di tutte le transazioni. In entrambi i casi, si tratta di tecnologie “forti”, che garantiscono su base matematica l'affidabilità dell'informazione. La probabilità di riuscire a violare tali tecnologie con un approccio “a forza bruta” non è zero ma è un
numero estremamente basso, dell'ordine di uno diviso per un numero di circa 80 cifre decimali, e quindi praticamente zero.
Un'altra tecnologia su cui si basano le valute digitali è la rete Internet e la computazione peer-to-peer (P2P) tra nodi. In pratica, esse si fondano su una rete di migliaia di “nodi” (calcolatori) tra loro collegati, che permettono il funzionamento del sistema. Chiunque può scaricare il software open source, connettersi alla rete e contribuire al suo funzionamento. Tale sistema funziona senza la presenza di uno o più nodi che controllano gli altri. In tal modo, non esistono autorità centrali e singoli punti di fallimento del sistema. Tutto funziona bene purché il numero di nodi connessi superi una data soglia (pari a qualche centinaio). L'incentivo a mantenere i nodi connessi e a effettuare i calcoli necessari al funzionamento del sistema è dato dall'attività di mining, che permette di guadagnare in cambio nuovi Bitcoin.
La vera innovazione di Bitcoin non è però l'uso delle tecnologie menzionate sopra, ma è soprattutto la tecnologia blockchain sottostante al suo funzionamento, di cui la disponibilità di una nuova valuta digitale è solo l'effetto più importante. La blockchain è un database distribuito, condiviso e la cui storia passata è inalterabile. La blockchain si basa sul sistema P2P delineato sopra, ed è aperta a chiunque voglia contribuire al suo funzionamento, installando sul proprio calcolatore una copia della stessa. Essa è provvista di meccanismi per arrivare al consenso tra tutti i nodi sulle informazioni da memorizzare, in modo che nessuno possa prenderne il controllo, nemmeno generando una massa di nodi fittizi. Ciò si ottiene a spese di un elevato costo computazionale, che è remunerato col mining. La sicurezza della tecnologia
blockchain è tale che, anche se rimanesse una sola copia della blockchain, da tale copia si potrebbe ripartire
ricostruendo tutte le operazioni passate; inoltre, se si volesse alterare la storia passata di tale unica copia, ciò richiederebbe comunque un numero proibitivo di calcoli. Non ci si dovrebbe quindi stupire se moltissime istituzioni e organizzazioni stiano attualmente studiando tutti i possibili usi di questa tecnologia anche per applicazioni diverse dalle valute digitali.
Le idee base su cui si fonda la prima criptovaluta, il Bitcoin, e poi tutte le altre, sono le seguenti:
• La moneta è una registrazione in un registro pubblico (blockchain), condiviso su Internet da migliaia di nodi e gestito in modo peer to peer, senza alcun controllore centralizzato.
• Ogni registrazione ha un indirizzo pubblico (derivato da una chiave crittografica pubblica). • Il proprietario della moneta possiede la chiave privata associata.
• Solo usando tale chiave privata si può trasferire (una sola volta!) la moneta verso un altro indirizzo pubblico.
La verifica delle transazioni e la creazione dei blocchi (gruppo di transazioni registrate insieme) ha un costo computazionale, che va remunerato. Infatti, per ogni transazione occorre verificare che chi l'attiva sia veramente il proprietario, che la moneta relativa non sia già stata spesa e che non vi siano altri errori. L'idea è che chiunque possa validare blocchi: la rete è democratica e anonima, e i nodi non danno informazioni sulla propria identità. Ogni blocco contiene la firma hash del blocco precedente, che ne viene così concatenato. Di qui il nome blockchain, cioè “catena di blocchi”.
Vi è però un problema: un attaccante potrebbe creare molti nodi anonimi (anche migliaia o milioni) apparentemente indipendenti, e prendere il controllo della rete. Tale attacco si chiama Sybil Attack. Ovviamente, un vincolo fondamentale è che il sistema debba funzionare anche in presenza di attacchi e tentativi di frode: non richiede di avere fiducia in tutti i partecipanti! Il problema del Sybil Attack è risolto rendendo la validazione dei blocchi computazionalmente costosa. Ciò si chiama Proof of Work (PoW). Per validare le transazioni, e i relativi blocchi, occorre avere hardware molto veloce e quindi che consuma energia.
La validazione non può essere effettuata prima di un dato tempo, circa 10 minuti per Bitcoin, meno per altre blockchain: occorre dimostrare di aver fatto del lavoro. La rete si auto-adatta alla potenza di calcolo disponibile in modo che tale ritardo sia approssimativamente costante. In tal modo, un attacco Sybil massiccio costerebbe troppo, diventando impraticabile. In effetti, il sistema ha dimostrato di funzionare. La validazione tramite PoW risolve anche un altro problema delle valute digitali: quello della creazione di valuta. Il primo nodo che riesce a validare il blocco corrente, lo inserisce nella blockchain e guadagna una quantità fissata di valuta digitale. Tutti i nodi accettano il blocco validato, smettono di computare su di esso, e passano al blocco successivo. In tal modo, si risolvono due problemi:
• La remunerazione del mining.
• La messa graduale in circolazione di nuova valuta.
Le valute digitali esistenti hanno tipicamente una quantità totale di valuta limitata, o che cresce ogni anno di una quantità fissa, in modo che la percentuale di aumento sia sempre minore, anno dopo anno. Il
Bitcoin è un esempio del primo approccio: il premio per validare un blocco si dimezza ogni quattro anni,
fino ad azzerarsi verso il 2040.
Le principali caratteristiche della tecnologia blockchain, mantenendo come esempio il Bitcoin, sono3: 1. Distribuzione: le informazioni sono memorizzate su più nodi, dando resilienza e sicurezza. 2. Disintermediazione: le transazioni sono gestite senza intermediari e senza un'autorità centrale
di gestione.
3. Trasparenza: tutte le transazioni sono memorizzate in modo inalterabile e in chiaro. Di ogni transazione si conosce l'importo in Bitcoin e gli indirizzi da cui sono prelevati e a cui va il trasferimento. In tal modo è possibile un tracciamento completo dei flussi di trasferimento di Bitcoin da un indirizzo a un altro.
4. Immutabilità: una transazione, una volta accettata e inserita nella blockchain, non può essere annullata per nessuna ragione.
5. Anonimato: nel sistema Bitcoin, i possessori dei fondi sono identificati solo da un indirizzo anonimo (un numero intero), cui è associata la chiave privata. Così, mentre il flusso di Bitcoin da un indirizzo a un altro è completamente trasparente, i possessori dei fondi sono individuati solo dal relativo indirizzo anonimo.
6. Protezione da double spending: tentando di spendere gli stessi fondi più di una volta, è accettata solo la prima transazione verificata, e le altre sono respinte.
7. Sicurezza: la transazione può essere attivata solo conoscendo la chiave privata relativa all'indirizzo di prelievo dei fondi. Se però tale chiave viene rubata o è persa, i fondi relativi sono perduti per sempre.
8. Programmabilità: si possono programmare azioni complesse, chiamate Smart Contracts (SC),