La gara dei miners consiste nel sigillare per primi il loro blocco con l’Hash.
Prima abbiamo visto che il calcolatore on-line calcola un Hash in una frazione di secondo. Ma allora come mai i miners ci mettono circa 10 minuti a sigillare il blocco? Semplice: perché l’Hash che viene chiesto loro di trovare è un Hash “vincolato” ovvero un Hash che deve verificare una condizione, e cioè deve iniziare con un certo numero di zeri.
In pratica il miner deve trovare un nonce, ovvero una stringa per il suo Blocco, tale che:
HASHn = S.H.A. 256 ( HASHn-1 & nonce & BLOCCO ) inizi con gli zeri minimi richiesti
Ma è più facile a farsi che a dirsi: torniamo sul calcolatore on-line: calcolatore SHA256 , e calcoliamo l’Hash di “pippo”. Probabilmente non inizia con 0 e tanto meno inizia con 2 o 3 o più zeri di fila.
Proviamo ora ad anteporre a “pippo” una stringa alfanumerica qualunque e proviamo a vedere se così inizia con 0. Probabilmente ancora una volta non inizia con 0. Dovremo fare molti tentativi prima di trovare un nonce e cioè una stringa casuale tale che anteposta a “pippo” dia un Hash che inizi con zero.
Inasprendo il vincolo, ovvero aumentando il numero minimo di zeri iniziali che deve avere l’Hash, aumenterà esponenzialmente anche il numero dei tentativi necessari a trovare un nonce valido. In altre parole la difficoltà per trovare la soluzione aumenta e quindi aumenta il tempo necessario per trovarla.
Quindi il Protocollo Bitcoin “aggiusta” periodicamente la difficulty (e cioè varia il numero di zeri necessari) in modo tale che i miner impieghino mediamente sempre 10 minuti per risolvere il problema e sigillare il blocco. Se i miner investono in nuovi processori per aumentano la loro potenza di calcolo allora i tempi medi di risoluzione del problema si riducono e quindi il protocollo aumenterà la difficoltà. Viceversa se i miner “spostano” parte della loro potenza di calcolo su un’altra blockchain, ad es. su quella di bitcoin cash perché in quel momento risulta avere un rapporto prezzo/difficoltà più conveniente…, allora il protocollo diminuirà la difficoltà per minare i bitcoin…
Il 99,99% del lavoro dei miners è costituito dal lavoro frenetico dei loro processori che in continuazione estraggono stringhe casuali e calcolano Hash. Per questo lavoro vengono impiegati processori dedicati, ovvero hardwares prodotti esclusivamente per calcolare Hash. La potenza di calcolo di questi processori si misura ormai in terahash al secondo: 1 terahash = 1.000 gigahash = 1.000.000 megahash = 1.000.000.000 kilohash = 1.000.000.000.000 hash. La potenza di calcolo complessiva di un miner (la somma della potenza dei suoi processori) viene detta hashing power.
Quando un miner trova finalmente un nonce, lo divulga immediatamente nella rete Bitcoin assieme al suo blocco affinché tutti gli altri miner possano calcolarne l’Hash e verificare che abbia gli zeri iniziali minimi richiesti dal Protocollo. Il nonce, associato alle transazioni del blocco, è la Proof of work (Pow), ovvero la prova che il miner ha svolto realmente un lavoro che gli è costato attrezzature ed energia elettrica.
Come immaginabile, il lavoro alla base della la Proof of work non è per nulla “ecologico”. Si stanno studiando dei metodi alternativi, ed alcune criptovalute li hanno già adottati, come Proof of stake (Pos) e Proof of interest (Poi), che non hanno bisogno di “lavoro reale”. Per approfondire l’argomento, qui c’è un breve articolo al riguardo: Pow_Pos_Poi
Come già visto la verifica del nonce è un lavoro che richiede una frazione infinitesima di secondo; è un operazione che viene svolta automaticamente dai softwares che ciascun miner utilizza per il mining, e cioè non vi è alcun intervento o “arbìtrio” umano.
Quindi non appena il 50% + 1 dei miners ha verificato che quel nonce è valido:
- gli ordini di pagamento presenti in quel blocco diventano transazioni “confermate”;
- il protocollo assegna al miner vincitore la reward in bitcoin + le fee sulle transazioni del blocco;
- il blocco appena sigillato viene acquisito da tutti i nodi ed aggiunto alla loro copia della Blockchain.
Nel paragrafo successivo vedremo come il numero delle conferme di una transazione ne misurino la sicurezza: