Cos'è il mining di bitcoin in termini profani?
Ogni transazione nello schema bitcoin rappresenta il trasferimento di bitcoin da un utente ad altri. Una transazione può corrispondere all'acquisto di una tazza di caffè, una nuova automobile, o il trasferimento di grandi quantità di azioni da un portafoglio ad un altro. Sia l'acquirente che il venditore devono avere la garanzia che il numero corretto di bitcoin si sia trasferito da un conto bitcoin a un altro. Questo si ottiene incorporando la transazione nel libro mastro della blockchain, cosa che avviene quando diventa parte di un blocco appena creato.
Ogni transazione è rappresentata con un indirizzo numerico, tranne che ogni transazione è rappresentata con un numero binario di 256 cifre usando l'algoritmo SHA-256 invece di un numero decimale di 5 cifre usando l'hash giocattolo.
Ogni 10 minuti in media un pacchetto di transazioni è criptato in un blocco che viene aggiunto alla blockchain. I minatori di Bitcoin raggruppano le transazioni in un blocco facendo l'hashing delle transazioni in un albero di Merkle e risolvendo un cosiddetto puzzle "proof-of-work". Sono in corso nuovi tentativi di usare misure "proof of stage" che potrebbero aiutare a superare alcuni dei problemi della proof of work.
Come esempio della creazione di un albero Merkle, immaginiamo di avere 4 transazioni da hashare, A1, A2, A3 e A4. Quindi combineremmo i primi due indirizzi di 256 cifre A1 e A2 in un indirizzo B1 con un hash, e analogamente A3 e A4 producono B2. Poi B1 e B2 si hashano in C1. Quindi C1 è la radice dell'albero di Merkle e rappresenta il fascio di 4 transazioni.
Ora arriva la parte difficile per il minatore, il puzzle proof-of-work, descritto come segue: Prendi tre numeri: l'indirizzo del blocco precedente (P), l'hash della radice Merkle del blocco corrente (M) e un numero scelto arbitrariamente chiamato nonce (N). Combina i tre numeri con SHA-256 per creare un hash risultante (R). Se l'hash risultante R inizia con un numero specificato di 0, il minatore ha risolto il puzzle e un nuovo blocco viene creato e aggiunto alla catena con un nuovo indirizzo dato dall'hash della radice di Merkle e dal nonce. Per qualsiasi dato nonce è facile fare l'hash P, M e N per ottenere R. Tuttavia, è molto improbabile che il risultato sia un numero con il numero richiesto di 0, quindi il minatore dovrà provare un gran numero di nonce prima di avere successo.
La difficoltà del puzzle proof-of-work è regolata ogni due settimane per dare un tasso medio di creazione del blocco di sei volte all'ora. Il livello di difficoltà nel luglio 2016 era impostato a circa 20 zeri e si è stimato che un minatore avrebbe avuto bisogno in media di 2×1017 hash per trovare un nonce di successo.
Una volta che un minatore risolve il suo puzzle proof of work, i risultati (l'indirizzo del blocco precedente, l'insieme delle transazioni nel blocco e il nonce) sono pubblicati sulla rete per la verifica. Gli altri nodi controllano automaticamente se i risultati sono validi, il che avviene quasi istantaneamente perché l'hashing di una serie di numeri è facile. Se i risultati sono validi, gli altri nodi aggiungono il blocco alle loro copie della catena dei blocchi. Il miner che ha avuto successo riceve la ricompensa dei bitcoin appena creati ed eventuali suggerimenti transazionali. Poi inizia un nuovo round di creazione dei blocchi. Ogni minatore crea un nuovo albero di Merkle dalle transazioni valide non utilizzate (il che avviene quasi istantaneamente perché l'hashing di una serie di numeri è facile), e ricomincia la ricerca di un nonce di successo.
Quando viene creato un nuovo blocco, tutti i minatori che non hanno avuto successo non ricevono alcuna ricompensa per i loro sforzi: hanno sprecato le loro energie. Così, per avere successo nel mining di bitcoin, gli utenti hanno riconosciuto entro il primo anno che i minatori dovevano unire i loro sforzi. Sono stati creati pool di minatori dove le ricompense sono condivise tra i membri. Tuttavia, la concorrenza è cresciuta rapidamente al punto che oggi le operazioni di mining di bitcoin più redditizie utilizzano grandi banche di computer con hardware progettato su misura, programmato in parallelo, in luoghi in cui l'energia per il funzionamento e il raffreddamento è quasi gratuita, come il Tibet e l'Islanda.