La blockchain, da sola, non è immutabile (parte 2 di 2)

decentralizzazione e consenso, da soli, non bastano a sostenere un livello adeguato di immutabilità senza l’aiuto di un cryptoasset

Marcello Paris
12 min readOct 26, 2018
la voce immutabile nel Vocabolari Treccani (versione online)

In questo seconda parte (qui la prima) l’articolo continua il suo discorso esaminando più da vicino il caso della blockchain e, dalla necessità del lavoro di mining, proverà a trarre delle osservazioni sul livello di immutabilità che può essere raggiunto in una blockchain e sulla opportunità (e, forse, a ben vedere, necessità) dell’esistenza di un cryptoasset associato alla blockchain.

Immutabilità per la blockchain

La blockchain si trova nella stessa identica situazione svolta nella prima parte di questo articolo: le (allo stato solo intuite) possibilità di robustezza che possono essere offerte da un registro distribuito, decentralizzato e replicato su più nodi, devono ora essere scaricate a terra in un meccanismo di funzionamento pratico che renda possibile convivere con la (pesante) ipotesi di lavoro che abbiamo precedentemente illustrato: che solo al massimo una minoranza dei nodi possa essere cattiva (o disonesta o indotta in tale stato da un attacco) e che, contemporaneamente, ci sia sempre una maggioranza (possibilmente variabile) dei nodi che sia onesta, pronta a fare solo proposte valide e a controllare che tutto si svolga virtuosamente secondo le specifiche del registro, contribuendo (collettivamente) alla sua sicurezza ed integrità.

Per la blockchain, come dice il nome stesso, il libro mastro è formato, in ognuna delle sue repliche, da una catena di blocchi, dove il blocco è l’unità di scrittura su questo tipo di registro. In particolare, il libro mastro registra ab ovo tutte le scritture impacchettate in blocchi incatenati uno all’altro (a partire dal primo genesis block contenuto nel codice).

La blockchain di Bitcoin

Ricordiamo la situazione in Bitcoin (non è importante entrare troppo nel dettaglio, giusto il minimo che serve al ragionamento).
Come sapete Bitcoin parla di transazioni, e i blocchi sono blocchi di transazioni (non importa scandagliare nel dettaglio il motivo per cui una certa quantità di transazioni siano radunate in blocchi, è legato al mining di cui parleremo poco più avanti); possiamo benissimo pensare ad un blocco come ad una unità di aggiornamento o scrittura per il libro mastro (come può essere una riga in una tabella, ad esempio).

Legami tra i blocchi Ad ognuno dei blocchi è assegnato un identificativo (per dare un’idea concreta: sono 32 bytes, ottenuti applicando SHA256, un algoritmo di hashing, su una parte del blocco stesso, la sua intestazione o header). Una caratteristica distintiva (e famosa) della blockchain è che ogni suo blocco contiene (nel suo header) l’identificativo di riferimento del suo parent, il blocco che è immediatamente lo precede nella catena (per questo si dice che la blockchain è back-linked).
Ogni blocco può avere quindi 1 solo parent, ma lo stesso parent può avere, in linea di principio, più children (ovvero, più blocchi che lo nominano come loro parent, come blocco che li precede; da notare che, in questo modo, la catena non è necessariamente completamente sequenziale e totalmente ordinata, ma si può biforcare restando parzialmente ordinata).

Il network di Bitcoin La rete dei nodi nella blockchain di Bitcoin è una rete di peers dove ogni nodo (se vuole) può svolgere tutte le 4 funzioni strategiche del registro (un nodo che fa tutto si chiama un full node):

  • mantenere un replica dell’intera blockchain (la funzione che abbiamo discusso nella prima parte),
  • agire come propagatore di messaggi (sia propri che di altri nodi) all’interno del network (anche questo è un lavoro importante che, per necessità di infrastruttura, è spesso preso specialmente in carico dai nodi che sono situati in punti strategici del network, che, di solito, fanno solo questo)
  • agire come da miner: un ruolo importantissimo che discuteremo immediatamente, il cuore del meccanismo di clearing decentralizzato, l’attività che mette realmente in sicurezza tutto il sistema, permettendo che l’ipotesi di relegare sempre ad un minoranza ogni comportamento fuori dalle specifiche, diventi una ipotesi sufficientemente sostenibile; nel network di Bitcoin possiamo trovare (molti) nodi completamente specializzati su questo ruolo
  • mantenere un wallet (lo includo per completezza; in questo discorso non servirà dettagliare su questo ruolo)

Proposte di scrittura sul registro e mining

Ora, se si vuole che il network di peers possa, in qualche modo, mantenere sotto controllo (e risolvere) tutte le proposte di scrittura che i diversi nodi possono avanzare, non credo sembrerà così strano immaginare di dover probabilmente partire con una qualche scrematura a monte delle proposte, di modo che le proposte che arrivano a tutto il network siano poche e molto ragionevoli.
Inoltre, in linea con alcuni principi, qualcuno potrebbe trovare desiderabile incentivare la migliore diversità tra i proponenti, di modo che le proposte di scrittura non arrivino sempre dai soliti nodi saputelli, ma includano la maggiore diversità possibile tra i partecipanti al network.

Miners Tutti hanno sentito parlare dei miners per la blockchain di Bitcoin e, forse proprio per l’utilizzo di questo termine nella descrizione di questo ruolo, l’accento è caduto di più sull’analogia con i cercatori d’oro, equivocando molto spesso questo ruolo nel network di Bitcoin come quello di chi è preposto ad estrarre il nuovo oro digitale. Ecco, questo aspetto (la creazione di nuovi Bitcoin, come ricompensa al lavoro di mining) è un’altro ottimo esempio di questione che non è possibile isolare, separandola dal contesto. Vediamo perché, illustrando in cosa consiste il ruolo di un miner.

Le proposte di scrittura in questo registro sono la proposta di aggiungere un nuovo blocco alla catena (ad ogni sua replica, per la precisione).
Parlando di proposte per il nuovo blocco della catena, si capisce che l’impianto è simile ad un sistema di voto; ma, attenzione, è un voto tra computer, tra algoritmi, non tra esseri umani. Abbiamo appena ricordato che è comunque desiderabile che il sistema riceva poche e buone proposte e dalla migliore diversità di partecipanti al network. Come fare ad ottenere questo in un sistema di proposte tra algoritmi ?
A questo scopo Bitcoin usa richiedere una proof of work (un puzzle, un enigma) e le regole del sistema sono che solo chi (ovvero, il nodo che) risolve questo enigma, può avanzare nuove proposte di scrittura.
I miners sono appunto i nodi che competono (cfr. poco più avanti sul perché) per risolvere l’enigma richiesto dalle regole del sistema e poter poi, così, formulare una proposta di aggiunta di un nuovo blocco al network.

Hashcash L’enigma di cui parliamo è un enigma crittografico, che cambia ogni volta che si può fare una nuova proposta (e la cui difficoltà è crescente nel tempo): ha la interessante particolarità di essere disegnato appositamente per non selezionare i nodi più smart o dotati di algoritmi particolari ma solo i nodi più computazionalmente potenti e fortunati (l’enigma crittografico si chiama hashcash ed è formulato in modo tale che la migliore strategia per risolverlo è provare a caso; in questo modo, un nodo smart non ha un vantaggio competitivo rispetto ad un nodo che prova solo a risolvere l’enigma rispondendo continuamente a caso).

Mining I miners svolgono così il lavoro computazionale richiesto dal protocollo per risolvere l’enigma. Attualmente, il lavoro computazionale richiesto è notevole e l’infrastruttura generata a livello globale per il lavoro di mining lo è altrettanto.
Per dare un’idea, allo stato attuale, l’enigma crittografico viene risolto circa ogni 10min (il tempo di soluzione può naturalmente variare, perché non esistono altri metodi più smart che provare a caso) e oramai è comunissimo l’uso di hardware (ASICs o FPGA) specificatamente progettati per questi lavoro.
Non è quindi un terreno sul quale si può immaginare che il proprio notebook di casa possa risultare competitivo; per dare un’idea, la potenza di ‘prove a caso’ installata per Bitcoin è oggi nell’ordine di 50 miliardi di miliardi di tentativi al secondo, mentre il vostro notebook potrà al più provare a risolvere l’enigma con, tipicamente, circa 10 milioni di tentativo al secondo, contribuendo in termini risibili rispetto alla potenza globale installata: capite bene che non avete molte possibilità di essere proprio voi i solutori dell’enigma crittografico (ma, naturalmente, potete ritentare subito dopo).

Fees, rewards e costi Ma perché i miners competono tra loro per formulare la proposta di scrittura ? Qui sta un punto di indiscutibile genialità finanziaria, prima che informatica.Qualunque sia la propria opinione su Bitcoin o sul sistema delle cryptoassets in generale, sarà difficile ammettere che quella che segue non è un’idea degna di nota.
Sulla blockchain sono registrate transazioni, ovvero, riassegnazioni di diritti a spendere certe quantità di un asset (che non serve specificare, è sufficiente sapere che la sua proprietà rappresenta un diritto a spenderlo).
Ognuna di queste transazioni contiene, implicitamente, delle fees; più precisamente, di fatto, queste fees non sono mai nominate esplicitamente all’interno della transazione: la transazione nomina dei riferimenti a degli input (da dove prendere la quantità di asset che si vuole trasferire) e degli output (dove riassegnare il diritto di spendere l’asset in questione e in che quantità); le fees sono deducibili dalla differenza degli input rispetto agli output.

Ora, le regole di Bitcoin assegnano, a chi risolverà l’enigma, il diritto di incassare tutte le fees presenti in tutte le transazioni del nuovo blocco che verrà proposto (ovvero, il diritto a spenderle) e di poter essere il destinatario di una transazione particolare che è presente in ogni blocco (la coinbase transaction) che crea un certo amount di Bitcoin dal nulla (ovvero un diritto a spendere che non viene da una altro, come per le altre transazioni; per dare un’idea, attualmente l’amount stabilito è di 12.5 BTC, ma questo valore è parte di una politica monetaria con una regola stabilita e che lo vedrà decrescere, dimezzandosi fino a scomparire; stime, ad esempio, su https://www.bitcoinblockhalf.com/).
Da notare che partecipare a questa competizione costa (primariamente il consumo di elettricità, poi, chiaramente, l’equipaggiamento di hardware) e non poco: per poi, alla fine, avere 1 solo vincitore e tanti altri che, di fatto, hanno sprecato il loro lavoro.

Ma non perdiamo di vista il nostro ragionamento. Abbiamo appena visto che fare una nuova proposta sul network di Bitcoin non è affatto facile, anzi è decisamente difficile: serve molta potenza computazionale e molta fortuna (con ognuna di queste 2 componenti che aiuta l’altra).
Quando un miner vince la competizione, avrà l’onore e l’onere di formare un nuovo blocco e di inoltrare la proposta di aggiunta del nuovo blocco a tutto il network (a questo fine il network userà un protocollo di gossip, che provvederà a girare il messaggio in modo efficiente a tutti i partecipanti). Ogni nodo che lo riceverà dovrà naturalmente verificarlo e validarlo prima di aggiungerlo alla sua propria replica della blockchain.

Forking Ora, naturalmente, i nodi sono sparsi geograficamente e il gossip interno alla rete prende del tempo (inoltre, qualche nodo può anche operare mentre è momentaneamente disconnesso). Ad ogni modo, può benissimo succedere che 2 o più nodi aggiungano quasi simultaneamente la loro proposta di nuovo blocco alla loro replica locale della catena in maniera del tutto indipendente (sia consapevolmente che, più spesso, ignorando la situazione negli altri nodi). E c’è chiaramente la possibilità che i blocchi proposti non siano tutti identici.
Tanto è possibile questa situazione che ogni replica della blockchain su ogni nodo prende sempre in considerazione questa eventualità, mantenendo in storage sia la main chain che un suo eventuale fork (salvo poi scambiarne i ruoli nel caso il cui il fork accumuli un lavoro di mining superiore a quello accumulato dalla main chain, cfr. poco più avanti).
Qui deve quindi entrare un qualche criterio per stabilire quale sia il blocco buono (per tutti i partecipanti) con cui la blockchain deve continuare.
Il criterio usato in Bitcoin è il seguente: ogni nodo deve continuare, sulla propria replica, la parte della blockchain che ha richiesto la più grande quantità di lavoro per essere mined (ogni blocco porta con sé anche il calcolo del lavoro fatto per essere mined); spesso questo criterio viene riportato dicendo che la catena deve proseguire dalla parte dove è più lunga (ma così come enunciato vale anche per catene con una semplice biforcazione o forking, risolvendo il forking dalla parte della catena con più lavoro).

Ora che il lavoro dei miners è stato illustrato come difficile e costoso, ma possibilmente remunerativo, dovrebbe essere chiaro in che senso essi rappresentano il cuore di questa clearinghouse decentralizzata.
La loro costosa attività permette al sistema di minimizzare le possibilità che chiunque possa destabilizzarlo con proposte e validazioni fittizie.
Se l’attività di tenere in sicurezza tutto il sistema è una attività utile (perché permette di migliorare la probabilità (diminuendola) di un ‘attacco della maggioranza’), allora significa che deve essere costosa (in ogni senso).
Non è strano quindi che Bitcoin abbia, a fondamento del suo cryptoasset, questo sistema di incentivi economici (fees + reward) per chi contribuisce al buon funzionamento del sistema, salvaguardando l’immutabilità della blockchain.

Ci sarebbe naturalmente molto altro da dettagliare sul funzionamento della blockchain in Bitcoin (sia in informatica parlando dei pool, sia in finanza parlando dell’importante gestione dell’inflazione in Bitcoin), ma quanto esposto dovrebbe essere sufficiente a formulare alcune osservazioni, a mio avviso importanti, a riguardo del livello di immutabilità che può essere raggiunto in una blockchain.

Cryptoassets e livello di immutabilità

Come potete notare, il meccanismo della blockchain, preso in isolamento, di per sé rimate fondamentalmente vulnerabile ad una ribellione o al malfunzionamento di una maggioranza dei suoi nodi partecipanti
(in particolare, se il numero dei nodi partecipanti è relativamente basso e, insieme, la loro diversità).
Non c’è nulla, a livello di registro distribuito e decentralizzato che possa impedire ad una maggioranza di nodi di coalizzarsi e procedere secondo altre regole. Non c’è nulla che possa ostacolare il formarsi di una maggioranza così alta da arrogarsi il diritto di scrivere, senza ostacoli, una nuova parte della catena o anche di riscrivere parti già esistenti della catena (in caso di violazione dell’immutabilità, anche cambiare il passato è una opzione possibile).
La blockchain presa da sola, isolando il suo meccanismo informatico e separandolo dal sistema di incentivi economici costituito dal mining, non può garantire alcuna immutabilità del suo contenuto in dati (dal punto di vista teorico e, quindi, tantomeno dal punto di vista pratico).
Non possiamo assumere che i partecipanti ad un registro distribuito e decentralizzato formeranno sempre e comunque maggioranze comportamentalmente oneste, che non possano mai muovere contro le specifiche del registro. Similmente, non possiamo pensare di controllarli, né possiamo immaginare di contrastarli (praticamente anzitutto, ma, poi, sulla base di quale autorità, dato che il sistema non ne riconosce alcuna).

Ad oggi, il solo approccio che resta, a mio avviso, almeno, plausibile è proprio l’approccio originale (fornito da Bitcoin, ad esempio, ma seguito anche da altri): quello dell’esistenza di un cryptoasset nominato nel registro, nella blockchain, e di un sistema (potenzialmente) complesso di incentivi economici che, sperabilmente, possa servire contrastare nel tempo le spinte all’autodestabilizzazione che sono sempre presenti in ogni network.
Più specificatamente, nell’esempio di Bitcoin: come abbiamo visto, la possibilità di proporre nuove scritture è direttamente legata alla potenza computazionale, e non c’è nulla che possa ostacolare l’aggregarsi di una potenza computazionale sufficiente a introdurre scritture e a validarle o a cambiare il passato; tuttavia, l’investimento ora necessario per guadagnare una reale share nelle attività di mining (difficile da stimare, ma, probabilmente, misurabile almeno in centinaia di mln di USD), è realisticamente al di là della portata di un comune individuo o di una azienda di medie dimensioni. Il meccanismo funziona da quasi 10 anni (con alti e bassi) e, ad oggi, nonostante i pesanti ribassi, consegna una notevole capitalizzazione in USD (cfr. su https://coinmarketcap.com/).

E’ chiaro che anche Bitcoin può ben finire da un momento all’altro (sia per problemi tecnologici, sia perché le cifre in ballo sono alte, ma non troppo alte per grandi aziende o, magari, per lo stesso governo cinese, per dirne una).
Ma, la mia osservazione è: se questo è vero anche per Bitcoin, allora come è possibile che tutto ciò possa funzionare anche meglio per una blockchain sprovvista di un cryptoasset ?
Se nemmeno gli incentivi economici in Bitcoin riusciranno nell’intento di mettere completamente in sicurezza la blockchain (consegnando in pieno il suo valore di immutabilità), come si può pensare che, in assenza di questi incentivi, la blockchain, soltanto come community, possa farcela da sola ?
Se, anche a ragione, si può mettere in discussione anche l’intero impianto di Bitcoin a riguardo sulla governabilità e della effettiva immutabilità garantibile dal sistema, come si immagina che sia così facile affermare altrettanto per una blockchain sprovvista di una economia ?
(vorrei far notare che qui Bitcoin è usato solamente perché, nel suo caso, la sua blockchain è un tutt’uno con il suo cryptoasset; si sarebbero potuti fare altri esempi, ma mi è sembrato ragionevole non disperdere il confronto).

Quindi, in conclusione: la blockchain, come costruzione informatica, non ci consegna alcuna immutabilità. A mio avviso, inoltre, non è nemmeno chiaro come l’informatica da sola possa consegnare un livello adeguato di immutabilità: non è improbabile che un livello usabile di immutabilità possa essere garantito solo da un sistema di incentivi economici sui partecipanti e, inevitabilmente, dalla creazione di un cryptoasset.

E questo cryptoasset, se davvero serve a presidio dell’immutabilità di una blockchain o di un registro più generale, e riveste per molti (anche fuori dal network) un ruolo fondamentale di importanza pratica, allora deve avere un valore, perché rappresenta il valore di un bene durevole (matematico) importantissimo, l’immutabilità.

Riferimenti

Marcello Paris is currently at UniCredit, R&D dept.
email: marcello.paris@gmail.com
LinkedIn: https://www.linkedin.com/in/marcelloparis/
Twitter: https://twitter.com/marcellop71

Disclaimer The content of this article is solely the responsibility of the author.
The views expressed here are those of the author and strictly personal,
and do not necessarily reflect in any way the views of the UniCredit Group.

--

--