blockchain consenso bitcoin criptovalute

Cos’è e come funziona la blockchain, anima e “corpo” delle criptovalute

Nel primo di questa serie di articoli dedicati al mondo della criptoeconomia abbiamo provato a ripercorrere molto velocemente l’evoluzione del denaro, una delle divinità che regolano ed oliano le società avanzate ed i loro rapporti di forza interni.

Pur lasciando scoperti molti argomenti, questa digressione ci è servita a scoprire quali siano le caratteristiche desiderabili in una moneta e, sopratutto, ci ha permesso di salutarci introducendo le criptovalute e la blockchain. Ora che abbiamo guadagnato una certa confidenza -anche intellettuale- con le valute, siamo finalmente pronti ad addentrarci nel nuovo e per certi aspetti stravagante mondo di quelle virtuali.

Abbiamo già accennato al fatto che le criptomonete, al contrario delle valute tradizionali, sono decentralizzate, paritarie, trasparenti,anonime e hanno una curva di offerta predefinita e nota. Ognuno di questi termini meriterebbe una sua spiegazione approfondita ma, dato che sono state tutte implementate attraverso l’utilizzo della blockchain, preferiamo chiarire innanzitutto il funzionamento di questo elemento.

Cos’è e come funziona la blockchain, anima e “corpo” delle criptovalute

Prima di addentrarci nei dettagli della geniale intuizione resa pubblica nel 2008 da Satoshi Nakamoto (nome fittizio dietro al quale si nasconde il padre della blockchain e dei Bitcoin) immaginiamo per un momento un villaggio fantastico dove non esista moneta fisica ma tutte le transazioni siano per tradizione annotate su un’enorme sequoia secolare.

La valuta di questo paese, secondo le definizioni che abbiamo incontrato nello scorso articolo, sarebbe del tipo a corso legale e non differirebbe poi tanto da quelle che siamo abituati ad utilizzare: il suo valore di scambio si baserebbe unicamente sulla fiducia che tutti siano disposti ad accettarla volentieri e avrebbe valore intrinseco nullo. La vera differenza rispetto ai nostri Euro, di fatto, starebbe quindi nel sistema scelto per accertare l’eventuale credito: sulla Terra la proprietà della valuta si manifesta attraverso particolari pezzi di metallo e fogli di carta che possono essere scambiati direttamente, in quel mondo fantastico all’opposto si ci affida ad un gigantesco libro contabile.

libro mastro

Chi scrive sulla sequoia?

Naturalmente il compito di annotare sul grande albero tutte le ultime le transazioni è di importanza assoluta e richiede una certa prestanza fisica. Possiamo immaginare che le sagge tradizioni del villaggio abbiano previsto che tali annotazioni avvengano una volta al giorno e che l’onore spetti al cittadino che per primo, dopo il tramonto, abbia trovato una piuma di fenice, reperibile quasi esclusivamente in alta montagna e molto sensibile alla luce del sole.

È bene notare che questa scelta, che a prima vista potrebbe sembrare del tutto casuale, garantisce in realtà che solo i più allenati e disposti a impiegare tempo nella ricerca possano davvero sperare di trovare la piuma. Questa strana lotteria, inoltre, inserisce allo stesso tempo una certaaleatorietà e consente a tutti gli abitanti di avere una probabilità, per quanto bassa, di essere i prescelti. La sensibilità alla luce, infine, rende impossibile barare con l’utilizzo di piume trovate prima del tramonto.

Una volta trovata la piuma (che per inciso è tanto più difficile da trovare quanto più numerosi sono i cercatori: la fenice è un animale estremamente timido e tende a scappare se vede tanti esseri umani) il fortunato si occupa infine di trascrivere le transazioni avvenute fino a quel momento sulla sequoia, le firma con la sua piuma ed è autorizzato ad aggiungere al suo conto un valore direttamente proporzionale all’altezza a cui si trova l’annotazione.

miner bitcoin

Il funzionamento del sistema, detto in altre parole, è garantito da un processo competitivo (finanziato tramite il signoraggio o da apposite tasse) che rende impossibile ad un singolo di avere il controllo sulla sequoia e sulle informazioni contenute.

La rivoluzione della blockchain

I vantaggi del sistema adottato in quel mondo fantastico sono evidenti: il denaro non può essere falsificato, manipolato, non può subire “tosature”, non può essere sottratto con la forza e tutti possono in ogni momento leggere per intero la storia della singola unità di valore, una transazione dopo l’altra, dal momento dell’emissione al presente. Senza dimenticare poi la sua elevata democraticità, realizzata grazie alla distribuzione pseudo-casuale del signoraggio ai cercatori di piume e al fatto che non esiste un emittente centrale in grado di decidere le sorti della moneta: solo una maggioranza qualificata dei cittadini può riuscire nell’arduo compito di modificare le tradizioni su cui si basa il sistema.

D’altra parte l’approccio ha anche degli svantaggi, come la possibilità che qualcuno modifichi le registrazioni contabili (in modo ad esempio di annullare una transazione o spendere due volte gli stessi soldi) o che, in caso di incendio o altri disastri naturali, tutta le informazioni vadano perse. Gli abitanti di quel mondo farebbero bene a piantare tante altre sequoie su cui copiare i dati in modo da avere dei “backup” che aiutino a risolvere entrambi i problemi, ma tale scelta si rivelerebbe molto costosa da implementare.

blockchain database distribuito

Quel che è impegnativo nel mondo fisico, d’altra parte, può essere molto più semplice nel mondo virtuale. Il buon Nakamoto (chiunque egli sia) pensò dunque che fosse possibile creare una moneta basata su un database distribuito, in cui ogni utente (che da adesso chiameremo “nodo“) abbia la sua copia della sequoia, cioè dell’intero set di informazioni. Per seguire un approccio del genere, tuttavia, era necessario risolvere due problemi: evitare che qualcuno possa “dichiararsi un altro” e spendere il denaro non suo, ed evitare che si verifichino situazioni in cui sia possibile spendere due volte la stessa moneta. La soluzione, come avrete intuito, si chiama blockchain.

Le transazioni

Consideriamo innanzitutto il problema della proprietà, il più semplice dei due da risolvere. Nel suo articolo originale (Bitcoin: A Peer-to Peer Electronic Cash System) Nakamoto ha proposto una soluzione basata sull’utilizzo della crittografia asimmetrica. A livello intuitivo criptare un dato equivale a metterlo in cassaforte, e nella crittografia asimmetrica si ha la particolarità che la chiave che permette di vedere quello che c’è dentro la cassaforte è diversa da quella che consente di riempirla.

L’idea di base è che la moneta, utilizzando una delle chiavi (detta privata), possa essere chiusa dentro la cassaforte insieme ad un talloncino che ne identifichi il proprietario, e che l’altra chiave (che permette di vedere il contenuto) venga resa pubblica. Se immaginiamo uno scambio commerciale, questo processo permette di effettuare delle transazioni in modo efficiente: l’acquirente “inscatola” la moneta insieme al nome del venditore, che grazie alla chiave pubblica può verificare di esserne entrato in possesso (anche se non la può fisicamente manipolare). Chi ha ricevuto il pagamento, a sua volta, potrà poi inviare il denaro ad un terzo iterando il procedimento e chiudendo l’intera cassaforte (adesso diventata “moneta”) dentro una di dimensioni maggiori.

transazione bitcoin

Il sistema ideato è quindi molto simile a delle scatole cinesi, in cui l’unità di valore si sposta in contenitori sempre più grandi di transazione in transazione. A questo punto vi starete però chiedendo come possano avvenire pagamenti di multipli o frazioni dell’unità di conto, che sono naturalmente previsti da tutte le criptovalute. La soluzione proposta dal padre del Bitcoin prevede che la singola transazione possa “impacchettare” più input e output, cioè trasferire fondi da più indirizzi (chiavi pubbliche) e che, dato che i trasferimenti avvengono sempre per l’intero valore disponibile sull’indirizzo, sia possibile eseguire in automatico operazioni di “resto”.

La blockchain

Il sistema delle transazioni descritto sopra è vulnerabile alla possibilità che un nodo cerchi di effettuare una truffa creando più versioni della stessa moneta, cioè spendendola più volte. Nella vita comune questo problema è risolto dall’utilizzo di moneta fisica(i dati possono essere copiati facilmente, carta e metallo con grande difficoltà) e dall’esistenza di istituzioni centrali che, tracciando tutte le transazioni digitali, garantiscono il sistema. Nel caso delle criptovalute la soluzione passa invece dal rendere pubblico ogni movimento di valuta in modo che, tramite un set di regole e un processo competitivo (la piuma di fenice), il sistema possa scegliere e creare un consenso su quali transazioni siano valide e quali no.

La prima regola generale individuata, di assoluto buonsenso, è che la transazione da privilegiare e ritenere valida è quella avvenuta temporalmente prima. A questo punto è però necessario creare un servizio peer to peer di timestamp che ordini cronologicamente le transazioni.

Proof of work (PoW)

L’idea originaria di Nakamoto è quella del proof of work: ogni nodo interessato al mantenimento del sistema (e alla relativa ricompensa) raccoglie tutte le transazioni recenti non ancora processate e la “firmadell’ultimo blocco già creato e accettato per impacchettarli insieme ad un numero pseudo-casuale detto nounce. A quel punto processa i dati con una particolare funzione matematica -dettahash– e verifica che risultato risponda ad alcune caratteristiche.

In particolare è richiesto che l’output abbia un numero di zeri iniziali superiore ad un minimo, fissato da un parametro ufficiale -la difficulty- che varia per mantenere costante nel tempo la generazione di blocchi indipendentemente dalla potenza di calcolo dedicata al compito. In caso di esito negativo il nodo itera la procedura inserendo eventuali nuove transazioni nel blocco e cambiando il nounce, ma in caso contrario condivide con il resto della rete la sua scoperta che, ovviamente, contiene come prima transazione quella che gli assicura la ricompensa.

double spending

A questo punto i nodi restanti verificheranno che il blocco inoltrato sia in regola e, in caso di esito positivo dei controlli, ricominceranno la competizione utilizzando la firma del blocco appena creato. Nel caso in cui due blocchi vengano generati contemporaneamente, i nodi inizieranno a lavorare su due diramazioni separate della catena e continueranno su strade diverse fino a quando una delle due sequenze diventerà più lunga dell’altra. Da quel momento la biforcazione più corta verrà progressivamente abbandonata e diventando “orfana” non farà parte della sequenza principale. Le transazioni, naturalmente, sono ritenute valide solo quando il blocco in cui sono pubblicate fa parte della catena principale.

Questo processo può sembrare inutilmente costoso e complicato, ma ha il pregio di rendere estremamente difficili eventuali attacchi: dato che ogni blocco contiene l’hash del precendete, è impossibile modificare un anello senza invalidare tutti i blocchi successivi. Per far diventare una versione “adeguatamente ritoccata” della blockchain quella principale è necessario dunque essere più veloci del resto della rete nel creare nuovi blocchi, cioè possedere la maggior parte della potenza di calcolo dedicata al mining. Il potere “di voto”, cioè di influire sulla storia della valuta, in questo caso è quindi legato a doppio filo ai mezzi hardware impiegati per sostenere il suo funzionamento.

attacco double spend

Proof of stake (PoS)

Se nonostante le motivazioni esposte in chiusura allo scorso paragrafo pensate che il sistema PoW – con la sua corsa alle prestazioni e alla potenza di calcolo- sia inutilmente costoso, sappiate che nel campo delle criptovalute molti la pensano come voi. Come avrete capito il problema fondamentale nella gestione della blockchain è quello di trovare un sistema che garantisca il funzionamento della moneta nell’interesse degli utenti onesti, cioè che assegni a questi ultimi un “potere di voto” di maggioranza. Nel sistema ideato da Nakamoto i “voti” si misurano in hash al secondo (nell’articolo originale il creatore dei Bitcoin scriveva “one-CPU-one-vote”), ma altri sistemi sono possibili.

Data l’assenza di un’autorità centrale, d’altra parte, a chi dovrebbe spettare il ruolo di forgiare nuovi blocchi? Negli ultimi anni si è fatta largo l’idea che tale onore possa essere condiviso tra i nodi, con criteri di selezione (variabili da valuta a valuta) che includano un certo grado di aleatorietà, senza compromettere la sicurezza del sistema.

proof of work stake

Questo metodo per la messa in sicurezza del sistema è detto proof of stake e si basa spesso sul principio che gli utilizzatori della moneta saranno i più interessati al mantenimento dell’onestà del sistema. Il metodo PoS, di conseguenza, assegna maggior potere di voto ai nodi più ricchi, più attivi o con monete poco movimentate. Questi voti, a loro volta, a seconda dei sistemi scelti possono essere utilizzati come “peso” per la scelta pseudo-casuale del nodo “fabbro” (chi ha più stakes tenderà ad avere maggiore probabilità di essere scelto) o direttamente per votare dei rappresentanti (sistema utilizzato ad esempio dai BitShares). Le valute basate sul PoS, dato il minor costo energetico necessario alla creazione del blocco, non prevedono di solito l’assegnazione di premi (quindi di redditi da signoraggio) ma soltanto l’accredito di commissioni pagate dai nodi che hanno effettuato transazioni da validare nel blocco.

Risparmiare memoria

Per semplificare la struttura dei blocchi ed evitare una crescita eccessiva della memoria necessaria a memorizzare la “moneta”- cioè la catena di transazioni- si è scelto di affidarsi afunzioni di hash. Queste particolari operazioni matematiche hanno la caratteristica, infatti, di restituire un risultato non invertibile di lunghezza prefissata che “tenga traccia” dei dati iniziali. In una transazione la nostra chiave privata servirà dunque a criptare un hash che dipende dalla transazione precedente e dalla chiave pubblica della controparte a cui stiamo inviando la valuta, e il protocollo incollerà infine la chiave pubblica del nodo che invia il denaro al risultato ottenuto.

Il “cartellino” che consente il riconoscimento è dunque la chiave pubblica, che risulta tuttavia eccessivamente lunga per essere digitata da tastiera. Per ovviare al problema si è quindi scelto di creare gli indirizzi, generati tramite operazioni dihash dalle chiavi pubbliche del nodo ricevente, che sono utilizzati al posto di queste ultime nella generazione della transazione. Questa scelta, naturalmente, non modifica la struttura di base della catena.

blockchain

Con il tempo, infine, la sequenza di transazioni potrebbe diventare eccessivamente e inutilmente ingombrante: una volta accertata la validità di un anello, infatti, tutti quelli precedenti non sono più necessari. Nakamoto pensò dunque di associare ad ogni transazione il proprio hash e di creare con questi un merkle tree, cioè un albero in cui i valori generati vengono progressivamente uniti fino ad ottenere un unico hash totale. Questo valore, detto merkle root, fa parte dei dati necessari per il PoW, mentre le transizioni che fanno parte del blocco non vengono considerate nel processo di verifica (sono validate indirettamente tramite il merkle root) e, se sepolte da un numero sufficiente di transazioni successive, diventano inutili epossono essere cancellate senza invalidare la blockchain.

È interessante notare, da questo punto di vista, che le criptomonete in quanto tali non esistono: non c’è alcuna moneta, solo una serie di casseforti inscatolate come matrioske.

Perché la blockchain è tanto interessante?

Da quel che abbiamo visto finora la blockchain non è altro che un database distribuito in cui ogni nuovo blocco, legato ai precedenti grazie all’hash, può essere considerato accettato solo quando raggiunge il “consenso” della maggior parte dei nodi, basato sul rispetto di una serie di regole predefinite. Il fatto che questo enorme libro mastro sia stato pensato per contenere transazioni, d’altra parte, non implica che non possa essere utilizzato anche altre forme di dati.

In effetti lo stesso protocollo Bitcoin utilizza per processare le transazioni un linguaggio, lo Script, che con le sue istruzioni (circa 80) permette operazioni più complicate delle transazioni “standard” viste in questo articolo. Se la tecnologia utilizzata per la madre di tutte le criptovalute potrebbe gestire veri e propri contratti, d’altra parte, alcune valute virtuali di nuova generazione sono pensate esplicitamente per permettere smart contracts (Ethereum è l’esempio più famoso) per il trasferimento della proprietà di beni reali o virtuali, o addirittura hanno per scopo la creazione di mercati azionari e obbligazionari distribuitie paralleli a quelli ufficiali.Blockchain futuro

A questo punto dovrebbe inoltre essere chiaro che tutte le caratteristiche delle criptovalute elencate in apertura sono solo il riflesso della struttura alla base della blockchain: decentralizzate perché ogni nodo possiede una copia dell’intera catena, paritarie perché il potere di creare il nuovo blocco è assegnato tramite competizione, trasparenti perché tutte le transazioni sono pubbliche, anonime perché la generazione di indirizzi non richiede dati personali. Sul fronte della creazione di moneta, infine, questa è disposta dal set di regole che i nodi devono rispettare durante la creazione di un blocco affinché possa essere accettato e, in quanto tale, è nota e prevedibile.

[su_app]