Come abbiamo avuto modo di approfondire qualche giorno fa, ci sono tre modi per guadagnare criptovalute:

1) facendo mining

2) comprando cripto da qualcun altro in cambio di denaro fiat

3) ricevendo pagamenti in criptovalute in cambio di beni e servizi.

In questo approfondimento ci soffermeremo sul primo metodo, il mining. Cerchiamo di comprendere come funziona!

Una agguerrita competizione: le similitudini con il gioco d’azzardo

Il mining di criptovalute proof-of-work è come un gioco d’azzardo, con diversi concorrenti che giocano allo stesso tempo. Per capirlo in modo semplice, proviamo a fare un esempio.

Immagina un gioco dove ci sono diverse tazze capovolte, una delle quali nasconde una palla.

Girare una tazza costa un dollaro e, dunque, partecipare non è gratis. Tuttavia, se il giocatore indovina correttamente quale tazza contiene la palla, vince un premio. Se non c’è nessuna palla sotto la tazza rovesciata, il giocatore non ottiene nulla e perde il costo di partecipazione. Ma se il premio è abbastanza grande – diciamo una pepita d’oro! – allora il giocatore sarà ben felice di giocare ripetutamente, perché le sue non comuni grandi vittorie supereranno le sue frequenti piccole perdite.

Ora, immaginiamo questo gioco di tazze e palline su scala massiccia, con un milione di tazze che nascondono mille palline. Questa versione estesa ha anche una caratteristica in più: ci sono molti altri giocatori che partecipano allo stesso tempo, e solo il primo giocatore che trova una pallina vince il premio. L’aggiunta di altri giocatori significa che il gioco d’azzardo è diventato competitivo, in cui la strategia ottimale per trovare una palla prima di chiunque altro (e quindi vincere il premio) è quella di diventare il più veloce possibile nel girare le tazze.

Purtroppo per te, anche tutti gli altri giocatori lo sanno. E tutti i giocatori girano furiosamente le tazze il più velocemente possibile, cercando disperatamente di trovare il proverbiale ago nel pagliaio. Alcuni girano le tazze più velocemente di altri, con i giocatori veloci che intuibilmente hanno maggiori possibilità di vincere la partita rispetto a quelli lenti. Tuttavia, anche chi gira le tazze più lentamente potrebbe avere qualche fortuna.

Alla fine, dopo molte ricerche frenetiche, qualcuno troverà una tazza con una palla. E, una volta trovata, probabilmente sarà così entusiasta da farla vedere a tutti, con entusiasmo. Anche se infastiditi, tutti gli altri partecipanti dovranno riconoscere che chi l’ha trovata deve effettivamente ricevere il premio. Una volta trovata la prima palla, tutte le tazze e le palle vengono rimescolate e il gioco ricomincia con chi vuole continuare a giocare.

Non solo. C’è un’altra cosa da aggiungere per rendere completa l’analogia con il crypto mining proof-of-work: il direttore del gioco non vuole dare troppi premi e, quindi, regola il gioco. Ogni tanto, il direttore del gioco misura la velocità con cui si vince il gioco. Se i giocatori vincono troppo in fretta, riduce il numero di palline in gioco. Per esempio, potrebbe ridurre il numero totale di palline da 1.000 a 500 mantenendo il numero di tazze a 1 milione, aumentando così la difficoltà. O se è già troppo difficile, e i giocatori stanno perdendo interesse, il direttore del gioco può distribuire più palline nelle tazze e rendere il gioco più facile.

Come funziona il Crypto Mining

Al termine di questa lunga introduzione sul gioco delle tazze e delle palle, possiamo ora entrare nel dettaglio di ciò che accade nel crypto mining.

Più volte sul nostro sito abbiamo descritto la crittografia come un libro mastro condiviso e decentralizzato. Questo libro mastro ha naturalmente bisogno di essere aggiornato nel tempo man mano che le persone effettuano transazioni su di esso. Ma come avviene tale aggiornamento?

Nel sistema finanziario tradizionale, questo lavoro lo fa il banchiere. Ma nella crittografia non c’è un banchiere o altro intermediario e, dunque, il protocollo software fa sì che i miner ricorrano al “gioco d’azzardo competitivo” che abbiamo descritto nel precedente paragrafo per conquistare il privilegio di svolgere, per certi versi, il ruolo di banchiere.

Proprio come il primo che trova una palla sotto una tazza ottiene il premio dal direttore del gioco, solo il primo miner di criptovalute che vince la competizione può aggiornare il libro mastro e ricevere la ricompensa. Ora, la ricompensa sui blocchi è ciò che i miner possono ricevere se vincono il gioco d’azzardo competitivo (ricorda, è l’equivalente della pepita d’oro nel gioco della palla e della tazza).

Ciò premesso, la ricompensa a blocchi varia tra i diversi token di criptovalute ma, di questo, parleremo in un altro approfondimento.

Cosa fanno i miner per vincere la ricompensa

A questo punto è il momento di diventare un po’ più tecnici e, dunque, introdurre alcuni concetti che ti permetteranno di avere una comprensione almeno base dell’hashing e dell’esadecimale. Questa è certamente una delle parti meno gradevoli del mining ma… proviamo a occuparcene nel modo più semplice possibile.

Iniziamo con l’hashing. L’hashing è un processo crittografico che trasforma qualsiasi lunghezza di dati in un numero esadecimale di lunghezza fissa. Ora, l’esadecimale è in base 16 ma gli esseri umani hanno maggiore familiarità con la base 10, ovvero con le cifre da 0 a 9. L’esadecimale aggiunge 6 cifre in più, rappresentate da lettere:

  • A = 10
  • B = 11
  • C = 12
  • D = 13
  • E = 14
  • F = 15

Anche per questo motivo, un hash Bitcoin di lettere e numeri corrisponde un numero estremamente grande. Per esempio, il numero esadecimale 7DE81 è l’equivalente di 515.713 in base 10.

Bitcoin utilizza un algoritmo di hashing chiamato SHA-256 per trasformare gli input di testo in output di hash esadecimale. Nota che:

  1. L’input può essere di qualsiasi lunghezza, ma la lunghezza dell’output rimane la stessa. È possibile tradurre una parola o un intero libro – indipendentemente, e l’output SHA-256 sarà ancora lungo 64 caratteri
  2. Cambiando anche una sola cifra nell’input si crea un output completamente diverso
  3. L’hash è un processo a senso unico. È facile prendere un dato input e trovare il suo output hash, ma è computazionalmente impossibile andare nell’altra direzione e prendere l’hash e cercare di decodificare il messaggio
  4. È anche computazionalmente impossibile creare un hash con determinate caratteristiche. Prima di mettere l’input attraverso l’algoritmo di hashing, non c’è modo di dire nulla su ciò che uscirà dall’altra parte come output.

Ora, torniamo ai miner di criptovalute che partecipano al gioco d’azzardo competitivo. In ogni blocco, il protocollo di rete stabilisce un numero massimo di soglia. Poi chiede ai miner di prendere i dati delle transazioni di tutti coloro che operano all’interno della rete e usarli come input per creare un output esadecimale di hash (che, ricorda, è anche un numero).

Quindi, i miner devono controllare se il numero di output esadecimale dell’hash che hanno trovato è inferiore al numero di soglia massima della rete. Se il numero di output del minatore è inferiore al numero di soglia, hanno effettivamente “trovato una palla” (ricordi l’esempio di qualche riga fa?) e possono reclamare il loro premio (la ricompensa del blocco). In caso contrario, hanno “trovato una tazza senza palla” e devono continuare a provare.

Mettiamola in un altro modo usando una spiegazione con i più familiari numeri decimali in base 10.

È un po’ come se la rete Bitcoin stesse dicendo ai miner: “Trasforma tutte le transazioni degli ultimi 10 minuti in un output di hash, che deve essere inferiore a un certo numero di soglia massima”.

Se 50 milioni è il numero di soglia massima, allora un miner Bitcoin deve trovare un hash output con tutte le transazioni inferiore a 50 milioni. Se ci riesce vince il privilegio di creare il prossimo blocco nella blockchain, e raccoglie la ricompensa. Se l’hash output è superiore a 50 milioni, non potrà che riprovare.

Questo è, in sintesi, ciò che fanno i miner. I miner raccolgono i dati delle transazioni di tutta la rete negli ultimi 10 minuti e li trasformano in un numero esadecimale di uscita dell’hash. I messaggi collettivi dell’intera rete vengono aggregati insieme, sottoposti a hash e controllati rispetto al numero di soglia.

I miner continuano dunque a regolare l’input usando qualcosa chiamato nonce, che è un singolo numero non collegato a nessuna transazione. L’aggiunta di questo nonce, tuttavia, cambierà l’intero output dell’hash: come abbiamo visto prima – cambiare una singola cifra dell’input cambia completamente l’output dell’hash.

Non c’è modo per i miner di trovare un numero di hash in uscita che sia al di sotto del numero di soglia della rete se non per puro tentativo ed errore, proprio come nel gioco della palla e della tazza. Più velocemente il processore del computer può generare hash, più supposizioni possono fare – ma è ancora un gioco di supposizioni. È computazionalmente impossibile per un computer bypassare la necessità di giocare a indovinare!

Così i miner continuano a fare l’hashing, milioni di volte, cercando un risultato di hashing al di sotto del numero massimo di soglia che il protocollo richiede – come cercare le palle sotto le tazze. Se le congetture di un miner trovano una soluzione, quel minatore trasmette la sua soluzione a tutta la rete (un po’ come tenere una palla in alto e gridare: ho vinto!). Il miner vincente raccoglie la sua ricompensa in blocco, il libro mastro viene aggiornato e il gioco ricomincia.

Poi, ogni tanto, il protocollo della rete crittografica regola il numero di soglia in alto o in basso per rendere il gioco più facile o più difficile per i miner, assicurando così che il gioco non venga vinto troppo velocemente o troppo lentamente, proprio come il direttore del gioco aggiunge o rimuove le palle dal gioco per regolare la difficoltà.

Man mano che più miner si uniscono alla rete, infine, trovare un hash output vincente diventa più difficile. Ricorda che il crypto mining è un gioco a somma zero: non importa quanti miner cerchino di estrarre Bitcoin: c’è una certa ricompensa fissa per ogni blocco, e quando un nuovo minatore si unisce, irrigidisce la competizione per tutti gli altri.