Al momento stai visualizzando Cosa vuol dire minare criptovalute e come funziona il processo di mining

Cosa vuol dire minare criptovalute e come funziona il processo di mining

Tempo di lettura: 3 minuti

Minare criptovalute, detto anche mining delle criptovalute, è quel processo in cui le transazioni tra gli utenti vengono verificate e aggiunte al registro, a quel grandissimo libro mastro, completamente pubblico, che è la blockchain.

Il processo di mining è uno degli elementi chiave che permettono

  • alle criptovalute di funzionare come una rete decentralizzata peer-to-peer, senza la necessità di un’autorità centrale terza
  • a nuove criptomonete di nascere

Bitcoin è l’esempio più popolare e consolidato di una criptovaluta minabile, e il mining di Bitcoin si basa su un algoritmo di consenso chiamato Proof of Work.

E non tutte le criptovalute sono minabili. Cerchiamo ora di capire, dal punto di vista tecnico, cosa vuol dire minare criptovalute e come funziona il processo di mining.

Indice

Cosa accade durante il processo di mining?

Un miner è un nodo della rete che raccoglie le transazioni e le organizza in blocchi.

Ogni volta che vengono fatte delle transazioni, tutti i nodi della rete le ricevono e ne verificano la validità. Gli efficentissimi nodi miner quindi raccolgono queste transazioni dal pool di memoria e iniziano ad assemblarle in un blocco (è quello che viene definito il blocco candidato).

La prima cosa che fa il nodo miner è quella di aggiungere una transazione in cui si invia la ricompensa del mining (ricompensa del blocco), e poiinizia a minare: la prima cosa che accade al blocco quando viene minato è che vengono hashate individualmente ognuna delle transazioni prese dal pool di memoria. La transazione con cui si ricompensa il miner viene chiamata transazione coinbase, ed è una transazione in cui le monete vengono create “dal nulla”. Nella maggior parte dei casi la transazione coinbase è la prima transazione ad essere registrata in un nuovo blocco.

Organizzazione nel Merkle Tree

Non appena ogni transazione è stata analizzata, gli hash sono organizzati in un Merkle Tree (albero di Merkle oppure anche albero di hash), che viene formato accoppiando gli hash delle transazioni a due a due e analizzandole. Gli output sono poi organizzati in altre coppie e sottoposte ad un ulteriore hash, e così poi ancora e ancora, fino a raggiungere “la cima dell’albero”. La cima dell’albero è anche chiamata root hash (o radice di Merkle) ed è fondamentalmente un singolo hash che rappresenta tutti gli hash precedenti che sono stati usati per generarlo.

La root hash insieme all’hash del blocco precedente e ad un numero casuale chiamato nonce viene quindi inserita nell’intestazione del blocco. L’intestazione del blocco viene poi sottoposta ad hash producendo un output basato su questi elementi (hash della radice, hash del blocco precedente e nonce) più alcuni altri parametri. L’output risultante è l’hash del blocco e servirà come identificatore del nuovo blocco generato (blocco candidato).
Per essere considerato valido, l’output (hash del blocco) deve essere inferiore ad un certo valore target che è determinato dal protocollo: l’hash del blocco deve iniziare con un certo numero di zeri.

Hashing difficulty, difficoltà di hashing

Il valore target – noto anche come hashing difficulty (difficoltà di hashing) – viene regolarmente regolato dal protocollo, assicurando che il tasso di creazione di nuovi blocchi rimanga costante e proporzionale alla quantità di potenza di hashing dedicata alla rete.

Ogni volta che nuovi minatori si uniscono alla rete e la concorrenza aumenta la difficoltà di hashing aumenterà, impedendo che il tempo medio del blocco diminuisca. Al contrario, se i minatori decidono di lasciare la rete, la difficoltà di hashing scenderà, mantenendo il tempo di blocco costante anche se c’è meno potenza di calcolo dedicata alla rete.

Il processo di mining richiede che i minatori continuino a fare l’hashing dell’intestazione del blocco più e più volte, iterando attraverso il nonce fino a quando un minatore della rete alla fine produce un hash del blocco valido. Quando viene trovato un hash valido il nodo fondatore trasmette il blocco alla rete. Tutti gli altri nodi controlleranno se l’hash è valido e, in caso affermativo, aggiungeranno il blocco nella loro copia della blockchain e passeranno all’estrazione del blocco successivo.
È già accaduto e a volte accade che due minatori trasmettano un blocco valido nello stesso istante, e la rete si è trovata con due blocchi in competizione. I minatori iniziano ad estrarre il blocco successivo basandosi sul blocco che hanno ricevuto per primo. La competizione tra questi blocchi continuerà fino a quando il blocco successivo sarà estratto sulla base di uno dei blocchi in competizione. Il blocco che viene abbandonato è chiamato un blocco orfano o blocco stantio. I minatori di questo blocco torneranno ad estrarre la catena del blocco vincitore.

Pool di minatori

Mentre la ricompensa del blocco è concessa al minatore che scopre per primo l’hash valido, la probabilità di trovare l’hash è regolata da una formula semplice: è uguale alla porzione di potenza totale di estrazione sulla rete. I minatori con una piccola percentuale della potenza di estrazione hanno una possibilità molto piccola di scoprire il prossimo blocco da soli. I pool di mining sono creati per risolvere questo problema. Significa mettere in comune le risorse dei minatori, che condividono la loro potenza di elaborazione su una rete, per dividere equamente la ricompensa tra tutti i membri del pool, in base alla quantità di lavoro che contribuiscono alla probabilità di trovare un blocco.