Algoritmo di Mining

Avatar di Tom's Hardware

a cura di Tom's Hardware

 

L'attività di mining è come una competizione per il primo minatore che trova la risposta ad un problema matematico che risolva il blocco attuale. Un problema matematico di natura crittografica, la cui soluzione richieda una grande potenza di calcolo. Sono particolarmente indicate le GPU e chip progettati apposta detti ASIC.

Leggi anche Farsi la pensione con Bitcoin e simili, perché no?

Facciamo un esempio molto semplice per capire meglio...

  1. partiamo applicando la funzione SHA-256 al messaggio "compra tot bitcoin" ottenendo un determinato hash a 64 caratteri
  2. si aggiunge al messaggio un valore finale che prende il nome di Nonce e si ricalcola la funzione SHA-256, ottenendo un nuovo hash
  3. vince chi trova per primo un nuovo hash inferiore o uguale a un certo target che in questo caso è un hash che inizi con 0

Strategia:

one round of sha 256 t[1]

Dobbiamo partire da un nonce pari ad 1 ed incrementarlo fino a che non troviamo un hash che soddisfa il target Quindi:

  1. compra tot bitcoin1... calcolo hash
  2. Compra tot bitcoin2... calcolo hash...
  3. e proseguo fino a che non raggiungo l'obiettivo.

Il nostro giochino è molto più semplice del vero algoritmo di mining, data anche l'enorme mole di dati, nel vero algoritmo di mining i passaggi sono:

  1. prendo l'header del blocco (formato da: numero di blocco, Hash del blocco precedente, Hash del MerkleRoot, il tempo, il Bits ed il Nonce) in input
  2. cambio Nonce
  3. applico due volte la funzione Hash (SHA-256)
  4. verifico che l'Hash sia inferiore al target, in caso affermativo si riparte dal punto 1 altrimenti dal punto 2

Difficoltà variabile

La vera differenza sta nel target, che è un numero estremamente grande, a 256 bit; può rappresentare 2256 informazioni diverse ed è espresso solitamente in scala esadecimale. Qualcosa come 0000000000000000DB9900000000000000000000000000000000000000000000.

Leggi anche Cos'è Blockchain, oltre le criptovalute

Il protocollo Bitcoin prevede che il tempo teorico necessario per minare 1 blocco sia pari a 10 minuti, di conseguenza per minare 2016 blocchi sono necessarie teoricamente 2 settimane (il tempo effettivo può essere più o meno veloce, infatti se i minatori sono bravi e veloci il prossimo target si diminuirà rendendo la prova più difficile o in caso contrario viceversa).

A scopo informativo inserisco il significato di difficoltà ovvero la misura di quanto sia complicato trovare un hash al di sotto di un certo target, siamo partiti dal valore 1 ed il 20/11/2017 siamo arrivati ad una difficoltà di 1 364 422 081 125.1475.