Cos’è e come funziona il mining di criptovalute

Cos’è e come funziona il mining di criptovalute

Il mining consiste in un insieme di attività finalizzate alla corretta e costante registrazione delle transazioni che avvengono nel sistema. Tali attività si basano sulla risoluzione di un proof-of-work (prova di lavoro), una sorta di compito da far svolgere al proprio calcolatore che richiede tempo di elaborazione. In particolare Bitcoin impone la risoluzione di una algoritmo crittografico molto simile alla funzione hashcash, un sistema di prova di lavoro proposto da A. Back nel 1997, utilizzato per rendere costoso in termini di tempo di elaborazione, e quindi di energia consumata, l’invio di spam via e- mail. Il problema ha la caratteristica di essere difficile e dispendioso da risolvere, ma una volta trovata la soluzione verificarne la validità è molto facile.

Cos'è e come funziona il mining di criptovalute

Tale compito consiste nel sottoporre ad hashing una serie di dati specifici componenti il block header; l’hash risultante per essere valido deve rispettare dei criteri.

I campi di informazione da sottoporre ad hashing sono elencati qui di seguito:

Il merkle root è l’hash che sintetizza la lista di transazioni ricomprese nel blocco, compresa la coinbase. Minare un blocco contenente una sola transazione non rende il mining più veloce, per cui i minatori saranno incentivati a includere un numero ampio di transazioni, in modo da far proprie le relative commissioni.

Il bits è la codifica del target, un numero di 256 bit. L’hash del nuovo blocco per essere ritenuto valido deve essere inferiore o uguale al target. In altri termini il minatore deve trovare un hash che inizi con tanti zeri (da sinistra a destra) almeno quanti quelli con cui inizia il target; il lavoro che dovrà compiere il processore sarà esponenziale al numero di zeri che compongono il target. Il parametro del target esprime dunque quello della difficoltà del mining, parametro di riferimento che misura appunto lo sforzo computazionale richiesto per la risoluzione di un blocco; la difficoltà è legata in maniera inversamente proporzionale al target.

Il nonce (number used once) è un parametro che viene modificato ogniqualvolta l’hash ottenuto è maggiore del target (in genere il parametro parte da 0 e viene incrementato progressivamente). Per le proprietà dell’hashing, una piccola modifica di un solo dato in input, comporterà un hash in output totalmente diverso dal precedente. Inoltre l’informazione nonce è inclusa anche nella coinbase (extraNonce), per cui una modifica del nonce comporta anche una modifica del merkle root.

Per fare un esempio, senza considerare la reale lunghezza (bit) delle stringhe che caratterizzano tali informazioni, se il target corrente fosse di 00000111, e dopo aver sottoposto il block header ad hashing il risultato è 003e84n4, il minatore non avrebbe trovato una soluzione valida, perché il target ha 5 zeri iniziali e il risultato solo 2; il minatore deve aumentare progressivamente il nonce ad ogni nuovo tentativo, finché il risultato non inizia con almeno 6 zeri.
Trovare un hash che rispetti il target equivale a vincere una lotteria, poiché ad ogni nuovo tentativo (ad ogni incremento del nonce) la probabilità di risolvere il blocco rimane sempre la stessa. Il mining è un problema che va risolto per brute-force, cioè per continui tentativi fino a che non si trova una soluzione accettabile.

Questo sistema di regole che i minatori devono rispettare per produrre un nuovo blocco è necessario affinché le tempistiche prestabilite (10 minuti) siano rispettate. In sintesi il mining può essere scomposto nelle seguenti fasi:

  1. Le transazioni sono trasmesse ai nodi grazie alla tecnologia p2p;
  2. Ogni nodo colleziona le transazioni e procede alla produzione di un nuovo blocco, elaborando il merlke root di quella specifica lista a cui va aggiunta la prossima coinbase, e costruendo la tabella di input (block header) che andrà sottoposta ad hashing;
  3. L’hardware è sottoposto alla prova di lavoro, che può esser considerata risolta quando l’hash è inferiore al target. La soluzione viene comunicata agli altri nodi che stavano contemporaneamente lavorando alla soluzione del medesimo blocco;
  4. I nodi controllano che il nuovo blocco non comprenda transazioni inconsistenti, e convalidano il blocco utilizzandone l’hash per procedere alla produzione del blocco seguente, continuando lo sviluppo della blockchain.

Solo-mining, pool-mining e cloud-mining

Attualmente è possibile partecipare al mining mediante tre principali alternative:

  1. Solo-mining: l’attività di mining è svolta individualmente, allo scopo di far proprie la ricompensa e la somma delle commissioni delle transazioni incluse nel nuovo blocco. L’elevata competitività attuale del mining richiede per questa specifica alternativa degli importanti investimenti in potenza computazionale. Maggiore è la potenza di cui si dispone, maggiore è la probabilità di risolvere dei blocchi e ottenere dei profitti. Il solo-mining tuttavia non garantisce flussi di cassa continui, e può trascorre molto tempo tra un’entrata e l’altra.
  2. Pool-mining: invece che minare individualmente è possibile farlo collettivamente, unendosi ad una mining pool, in cui più soggetti mettono a disposizione la propria potenza di calcolo e si suddividono i profitti proporzionalmente al contributo fornito. Il pool-mining permette di partecipare al mining anche se non si dispone di un’elevata capacità di calcolo, necessaria invece per il solo-mining. Generalmente questa seconda alternativa garantisce flussi di entrate di bitcoin minori ma continui.
  3. Cloud-mining: è possibile partecipare all’attività di mining senza possedere materialmente i dispositivi hardware necessari, eliminando i problemi relativi alla manutenzione e alla collocazione fisica di tali apparecchiature. Attraverso il cloud- mining è possibile prendere a noleggio in un determinato ammontare di potenza computazionale e farne propri i profitti in cambio di un canone di locazione.

Pubblicato da Vito Lavecchia

Lavecchia Vito Ingegnere Informatico (Politecnico di Bari) Email: [email protected] Sito Web: https://vitolavecchia.altervista.org

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *