In estrema sintesi il Bitcoin Mining si può riassumere in:
“indovinare un numero random che risolve una complessa equazione matematica”!
Per quanto possa risultare assurdo e allo stesso tempo banale, questa è la semplice verità.
Non ci credete? Allora seguitemi nella spiegazione di come funziona il Bitcoin Mining.
Quando abbiamo parlato di cosa è il Bitcoin (e le criptovalute in generale) ho illustrato la tecnologia sottostante che ha permesso la sua nascita e rapida diffusione, e cioè ho parlato di Blockchain.
Abbiamo visto che la Blockchain, essendo un archivio digitale distribuito su un numero infinito di nodi, per poter registrare ed aggiungere un nuovo blocco, necessita di una notevole capacità di calcolo, per le complesse formule matematiche che devono essere eseguite e risolte (formule scritte da Satoshi Nakamoto, il fantomatico inventore del Bitcoin).
Per rendere praticamente invunerabile il sistema, Satoshi ha inserito all’interno dell’algoritmo che regola il funzionamento del Bitcoin ben tre differenti metodi di crittografia per garantire: l’anonimato, la “firma” dell’esecutore della transazione e la decentralizzazione del “digital ledger”, cioè il registro digitale decentralizzato su cui vengono registrate tutte le transazioni fatte in bitcoin.
“Crittografia è un insieme di complesse formule matematiche utilizzate per codificare e decodificare qualunque tipologia di informazione rendendola incomprensibile a tutti tranne che al mittente e al legittimo destinatario. Per poter eseguire queste complicate formule matematiche servono enormi capacità di calcolo, capacità che crescono in maniera esponenziale se la variabile tempo entra in gioco. Al momento ci sono codici di crittografia che per essere decifrati, sarebbero necessari migliaia di anni di calcoli eseguiti dai computer più potenti esistenti al mondo.”
Uno dei sistemi di sicurezza implementati da Satoshi è quello dell’algoritmo SHA-256 (Secure Hash Algorithm), che uno dei più usati in ambito di crittografia per criptovalute, che è inventato dalla NSA-National Security Agency degli Stati Uniti nel 2001. Il sistema di crittografia genera un numero alfanumerico di 256 bits (o in modo equivalente un numero esadecimale di 64 caratteri) chiamato “HASH”. Questo numero è univoco e direttamente correlato alle informazioni codificate, nel senso che ogni volta che si riproduce la codifica con le medesime informazioni/dati, si ottiene sempre lo stesso HASH. Altra caratteristica fondamentale dell’HASH, è che se invece i dati da codificare cambiano anche in modo marginale (es. l’eliminazione di una virgola in un testo di 1.000.000 di parole) il risultato che si ottiene dopo la codifica è un nuovo HASH totalmente differente da quello ottenuto con i dati iniziali (questo è dovuto all’ “avalanche effect” o “effetto valanga” della funzione di Hash, proprietà molto usata nei sistemi di codifica e verifica di dati).
Questa caratteristica dell’algoritmo di codifica è fondamentale per evitare che un malintenzionato possa, attraverso tecniche di “reverse enginnering”, risalire ai dati originali analizzando i diversi valori dell’Hash.
A rendere le cose ancora più complesse, nel caso in cui quanto sopra espresso non fosse già abbastanza, Satoshi ha stabilito inoltre che NON tutti gli HASH sono però “validi”: il processo di codifica crittografica deve calcolare un valore di HASH pre-determinato (per esempio, il valore dell’Hash deve risultare essere inferiore ad un predeterminato livello).
Affinchè si possa trovare un valore dell’HASH rispondente alle condizioni appena esposte, è stata inserita nell’algoritmo di codifica una “speciale” variabile, chiamata NONCE (è l’acronimo di “Number Used Only Once”) il cui valore viene cambiato proprio per cercare l’HASH valido. Il Nounce è un numero di 32 bit (unsigned, cioè senza segno) il cui valore varia da 0 a 4 M.di (cioè può assumere 4 miliardi di valori distinti).
Quindi, il “minatore” per coniare un nuovo blocco, sceglie in modo causale un valore del Nonce ed esegue i complessi calcoli matematici della codifica crittografica, ottenendo un valore risultante per l’HASH.
Se il risultato non è quello previsto (cioè il valore dell’HASH non soddisfa le condizioni imposte dall’algoritmo del Bitcoin), il “minatore” (miner) ricomincia il processo utilizzando un nuovo valore random del Nonce ed ricalcolando e verificando nuovamente l’Hash e così via, fino a quando non si riuscirà a trovare il Nonce fortunato (golden nounce”) che permette di generare un Hash valido.
Infografica #1: Informazioni e dati che vengono codificati all’interno di ogni blocco della Bitcoin blockchain
Una volta che il miner ha identificato questo numero magico (il Nonce), lo inserisce nel campo previsto (campo 2 nell’infografica di sopra) e con tutti gli altri dati già inseriti (campi 1, 3, 4 e 5) effettua la codifica dell’intero blocco ottenendo il relativo nuovo HASH.
Una volta codificato, questo nuovo blocco vienne immediatamente spedito a tutti gli altri nodi della rete per eseguire il controllo dei calcoli fatti. Se almeno il 50%+1 degli altri nodi certifica che i calcoli sono esatti, il blocco viene ufficialmente approvato e viene immediatamente aggiunto alla blockchain con la contestuale registrazione ed aggiornamento di tutti i registri digitali (digital ledger) che sono duplicati su ogni nodo della rete. A questo punto il processo è terminato e la blockchain si “allunga” di un nuovo blocco.
Ed ecco spiegata la mia affermazione di inizio articolo: il Bitcoin Mining è la ricerca causale di un numero di 32 bit che permette di calcolare un valido valore dell’HASH. Il Bitcoin Mining è una sorta “guessing game”: chi per primo riesce a trovare (o meglio dire “indovinare”) questo numero fortunato ottiene il “diritto” di coniare il nuovo blocco e collegarlo alla blockchain e come premio si porta a casa una bella e corposa ricompensa.
Ma cosa ci guadagnano i miner a fare tutto cio?
Il miner che riesce per primo ad identificare questo “numero random” riceve come premio un pagamento di 6,5 bitcoin.
Ora se moltiplicate 6,5 per il valore del Bitcoin che al 9 di ottobre 2021 era di $55.000,
il miner vincitore si porta a casa l’incredibile cifra di 6,5*55.000= $357.500!!!!
Adesso capite perchè c’è stata negli ultimi anni una specie di “corsa all’oro”, che è appunto la corsa al “Bitcoin Mining”!
A parte la sostanziale ricompensa che riceve il miner vincente, anche tutti gli altri “miners” vengono comunque ripagati per il lavoro (e soprattutto per gli investimenti) che fanno per far funzionare tutto il processo e la blockchain. Queste ricompense sono chiamate “transaction fees”, sempre pagate in Bitcoins che permettono a tutti i miners di avere comunque dei guadagni (anche sostanziali soprattutto se il valore del Bitcoin continua a crescere in modo così sostenuto). Queste transaction fees sono equivalenti ai “gas-fees” degli NFT (di questi ne parlerò in un prossimo articolo).
Ma allora se è così “semplice” guadagnare Bitcoin, chiunque può farlo?
Beh, anche se in effetti c’è stata e continua ad esserci una corsa pazzesca al “nuovo Klondike”, l’effettiva possibilità che i miners, vecchi e nuovi, hanno di guadagnare così facilmente i bitcoins, è molto limitata.
Infatti, il buon Satoshi Nakamoto, prevedendo tutto questo ha creato un sistema che va a modificare la “complessità” del calcolo matematico che deve essere eseguito per “coniare nuovi coins” in funzione dell’effettiva “potenza di calcolo” della rete che cresce in modo proporzionale con il numero di macchine hw/sw che vengono sempre di più collegate. Come è illustrato nel grafico sottostante, la rete blockchain “adatta” la complessità del calcolo matematico necessario per il “mining” in funzione dell’effettiva potenza di calcolo. Questo “aggiustamento” viene eseguito ogni due settimane.
Fig. 1: Relazione Capacità Calcolo Rete Bitcoin Vs Complessità Calcolo Bitcoin Mining
La capacità di calcolo della rete Bitcoin è costituita dalla somma delle capacità di calcolo di tutti i pc, server, macchine, ASIC-Application Specific Integrated Circuit, etc.. collegati alla rete.
Questa capacità viene espressa e misurata in HASH-RATE (H/s) cioè quante operazioni al secondo una rete è in grado di eseguire.
Per esempio un Hash-Rate di 10 TH/s indica una capacità di calcolo di 10 trilioni di calcoli al secondo.
Oggi siamo arrivati ad oltre i 150 M di TH/s: cioè oltre 150 milioni di trilioni di operazioni al secondo!
I due grafici sottostanti, forniti dal sito www.blockchain.com, evidenziano in modo inequivocabile la diretta correlazione tra la impressionante crescita esponenziale della potenza di calcolo della rete dei Bitcoin e l’equivalente incremento esponenziale della complessità di calcolo.
Fig. 2: Andamento storico complessità di calcolo del Bitcoin Mining
Fig. 3: Andamento storico capacità di calcolo rete Bitcoin
Ma perchè Satoshi Nakamoto ha progettato questo tipo di funzionamento?
Innanzitutto per contenere i potenziali effetti inflazionistici: infatti come ho spiegato sopra e come i grafici dimostrano, negli ultimi anni c’è stata una crescita impressionante di persone che intravedendo l’opportunità di guadagni relativamente semplici (in fondo come ho spiegato sopra si tratta solo di indovinare un numero random prima degli altri 😉) si è letteralmente buttata a fare il lavoro del “minatore digitale”.
Infatti, come abbiamo visto, per ogni nuovo blocco codificato, la rete riconosce un premio in Bitcoin al fortunato miner. Questo è anche il modo in cui la rete Bitcoin “immette” nuova moneta nel sistema.
Ora, se i blocchi venissero prodotti in un tempo sempre più breve, sempre più velocemente nuovi Bitcoin verrebbero immessi nel sistema, generando appunto un effetto inflazionistico. Per prevenire questo effetto collaterale negativo, Satoshi ha progettato allora che il sistema regoli il tempo minimo necessario per codificare un nuovo blocco in ca. 10 minuti (tempo medio per eseguire tutti i calcoli necessari per l’inserimento di un nuovo blocco all’interno della rete). In questo modo, mantenendo “costante” il numero di nuovi blocchi che possono essere codificati all’interno di uno specifico arco temporale (1 nuovo blocco ogni 10 minuti -> 6,5 bitcoin ogni 10 minuti), il sistema progettato da Satoshi ha evitato che vi fosse un’inondazione di nuovi bitcoin nel sistema e rendendo di fatto i bitcoin una risorsa limitata (esattamente come l’oro). Questa “scarsità” ha invece generato effetti speculativi, visto la crescita esponenziale delle quotazioni del Bitcoin, crescita che sembra non volersi fermare (anche se continua ad avere brusce e repentine “ritirate”).
Fig. 4: Bitcoin new block creation 10m time delay
Oggi, la complessità dei calcoli è diventata molto elevata e i singoli “miners” non riescono più da soli a riuscire a risolvere i complessi calcoli matematici sottostanti. Così negli ultimi anni molti di loro hanno iniziato a cooperare arrivando addirittura ad unirsi in gruppi, unioni o addirittura a costituire intere società di “minatori”. Queste aggregazioni si chiamano “mining pools”. Grazie ai mining pools, anche il singolo minatore con attrezzatura limitata può partecipare al mining, venendo poi remunerato in funzione dei risultati ottenuti dal gruppo (pool) di appartenenza e dal contributo in termini di potenza di calcolo da lui fornita.
Fig. 5: Bitcoin Main Mining Pools (by BTC.com)
Di come funzionano i “mining pools”, dei loro vantaggi e svantaggi e se oggi vale ancora la pena diventare un “minatore digitale”, ne parleremo in un successivo articolo.
Quindi: stay tuned! 😉