Come funziona il mining di Bitcoin? La guida per scoprirne i meccanismi alla base.
- Mining: un termine fuorviante
- La gara: lanciare dadi digitali
- Proof-of-Work e aggiustamento della difficoltà
- Sicurezza della rete
Mining: un termine fuorviante
Il termine mining in Bitcoin può essere fuorviante. Non indica la ricerca di materiali preziosi, ma un processo il cui compito è quello di scrivere i blocchi della blockchain e di fornirli ai nodi della rete, mettendo contemporaneamente quest’ultima in sicurezza. L’emissione di nuova valuta è il modo studiato per compensare economicamente l’attività del minatore.
Le transazioni appena eseguite vengono posizionate dai nodi in un’area chiamata mempool. I miner raccolgono queste transazioni e le inseriscono in un gruppo di informazioni chiamato blocco candidato. Oltre a queste transazioni, il miner inserisce anche la coinbase transaction, una transazione speciale che assegna i nuovi bitcoin emessi insieme al nuovo blocco a se stesso.
- I miner ricevono e verificano le transazioni non confermate, inserendole nella mempool;
- Costruiscono il blocco candidato selezionando le transazioni dalla mempool;
- Inseriscono la coinbase transaction, auto-assegnandosi la ricompensa in bitcoin;
- Inizia la gara per trovare la corretta Proof-of-Work e aggiungere il blocco alla blockchain.
La gara: lanciare dadi digitali
I miner di tutto il mondo competono tra di loro per guadagnarsi il diritto di scrivere il proprio blocco sulla blockchain e, di conseguenza, incassare la coinbase transaction insieme alle commissioni di tutte le transazioni presenti nel blocco.
Questa gara digitale può essere paragonata a un continuo lancio di dadi. Se il requisito da rispettare è un numero inferiore al 12 e in mano abbiamo due dadi con 6 quadranti, con molta probabilità basterà un solo lancio per trovare un risultato vincente. Se il requisito è un numero inferiore al 3, allora molto probabilmente serviranno più lanci.
- I miner prendono l’hash del blocco precedente, un codice univoco che funge da numero identificativo;
- Aggiungono un numero casuale, chiamato nonce, all’hash;
- Applicano l’algoritmo SHA-256 al risultato, ottenendo un nuovo hash;
- Verificano se il nuovo hash soddisfa il requisito specifico dettato dai nodi;
- Se non soddisfa il requisito, cambiano il nonce e ripetono il processo fino a quando non trovano un numero valido;
- Quando un miner trova un hash compatibile con il requisito trasmette il risultato alla rete, la quale può verificare crittograficamente l’avvenuto mining del blocco e aggiungerlo alla blockchain. Da questo momento parte la gara per il blocco successivo.
Proof-of-Work e aggiustamento della difficoltà
Nel mining di Bitcoin la difficoltà del processo è attentamente regolata, con l’obiettivo di garantire che un nuovo blocco venga trovato mediamente ogni 10 minuti. Come funziona questo processo?
Anche se ogni tentativo produce un risultato casuale, la probabilità di qualsiasi risultato può essere calcolata in anticipo. L’aggiustamento della difficoltà avviene fornendo ai miner un obiettivo da raggiungere. Questa difficoltà viene aggiustata ogni 2.016 blocchi – circa due settimane – e ogni nodo la aggiorna indipendentemente basandosi sul tempo impiegato per minare i precedenti 2.016 blocchi. In breve: più è la potenza di calcolo presente nella rete, più è alta la difficoltà e viceversa. I server specializzati nel mining, chiamati ASIC, sono in grado di produrre fino a 250 TH/s (TeraHash al secondo), ovvero 250 mila miliardi di tentativi ogni secondo.
La Proof-of-Work è la dimostrazione crittografica che un miner ha eseguito il lavoro necessario per trovare l’hash compatibile con la difficoltà fornita dai nodi. L’hash vincente diventa l’hash del blocco minato e verrà utilizzato come base per trovare la Proof-of-Work del blocco successivo. Questo crea una catena (chain), dove l’hash di ogni blocco è ottenuto dall’hash del blocco precedente, più il nonce (e il Merkle tree root).
Sicurezza della rete
La sicurezza di Bitcoin è garantita dalla stessa potenza computazionale impiegata per trovare la Proof-of-Work dei blocchi. Maggiore è la difficoltà richiesta per minare ogni blocco, più la rete è sicura. Più hash, più sicurezza. Per modificare l’hash di un blocco, bisognerebbe cambiare l’hash di tutti i blocchi successivi fino all’ultimo della catena, il che è praticamente impossibile. Questo rende la blockchain di Bitcoin estremamente sicura.