LEZIONE 01 – LA DIFFICOLTÀ DI MINING IN BITCOIN

Bitcoin possiede una difficoltà di mining dinamica in quanto la creazione di un nuovo blocco non ha sempre le stesse tempistiche. A volte la difficoltà è piu alta e a volte è piu bassa, anche se guardando lo storico dal 2009 il trend è sempre andato a salire.

Innanzitutto con il termine difficoltà si intende quanto sia difficile trovare un hash valido per il blocco successivo. Ovviamente l hash ottenuto per essere ritenuto valido deve soddisfare le caratteristiche necessarie della blockchain. Ogni blocco all interno della blockchain viene generato ad una velocità determinata dal protocollo che in media diciamo debba essere ogni 10 minuti (ma non necessariamente sempre così).

Utilizzando il nonce e l extra nonce , che non sono altro che numeri variabili, all interno dell operazione di mining , si deve ottenere un hash che soddisfi il modello cercato, vale a dire il target (cercherò di chiarirti meglio a breve questo concetto).

Un miner che ha a disposizione molta potenza di calcolo riuscirà a trovare un hash valido molto velocemente rompendo la media dei dieci minuti che si cerca. Qui Satoshi Nakamoto ha aggiunto uno dei suoi componenti più importanti vale a dire il riaggiustamento della difficoltà di mining.

In linea di massima se non ci fosse nel protocollo il riaggiustamento della difficoltà di mining i miner aumentando la loro potenza computazionale in breve tempo estrarrebbero tutti i blocchi rompendo la curva di emissione di bitcoin che è gia prestabilita nel protocollo (l’ultimo bitcoin verrà estratto nel 2140). Alla base del riaggiustamento del mining c’è l’aumento o la diminuzione della complessità nel trovare l’hash corretto del blocco in modo che di media ciò avvenga sempre ogni 10 minuti.

Questa regolazione avviene automaticamente ogni 2016 blocchi (circa due settimane) coinvolgendo ciascuno dei nodi della rete, come previsto dal protocollo. Vediamo ora in maniera più specifica questo processo. Prima di tutto è importante notare che la difficoltà è totalmente indipendente dal numero di transazioni presenti in un blocco, invece possiamo dire che è collegata alla potenza di hash della rete, all obbietivo dei miners e al tempo. Tutto ciò in che modo?

La rete bitcoin verifica il tempo reale impiegato per estrarre gli ultimi 2016 blocchi e lo confronta con 20160 minuti. Questo valore (20160) dipende dal fatto che poichè ogni blocco dovrebbe essere estratto in un tempo di circa 10 minuti, il tempo stimato per estrarre i blocchi è di 20160 minuti (ogni ora ha 60 minuti X 24 ore di un giorno X 14 giorni da come risultato 20160 minuti).

Viene calcolato il rapporto tra il periodo di tempo effettivo e il periodo di tempo desiderato e viene effettuata una correzione corrispondente (in su o giù) alla difficoltà. In termini semplici: se la rete trova blocchi più velocemente di ogni 10 minuti, la difficoltà
aumenta. Se la scoperta dei blocchi è più lenta del previsto, la difficoltà diminuisce.
L’equazione può essere riassunta in:


Nuovo target = Vecchio Target X (Tempo attuale degli ultimi 2016 Blocchi / 20160 minuti)

La difficoltà nella creazione di nuovi blocchi regola la produzione della moneta ad un tasso costante e predeterminato (inflazione controllata e prestabilita). Non è corretto dire che bitcoin non è inflazionabile ma piuttosto che ha un inflazione controllata e decrescente (vedremo in un prossimo articolo perchè intendo decrescente).

Quando per la legge della domanda/offerta il valore di bitcoin aumenta, i miner sono spinti ad unirsi alla rete e tentare di risolvere l hash del blocco prima degli altri al fine di ottenere come riconpensa nuovi bitcoin generati. Per fare ciò dedicheranno sempre più potenza di calcolo e per forza di cose la difficoltà deve adeguarsi per rimanere nel range dei dieci minuti. Inoltre essendoci molto tempo tra un blocco e l’altro i miner danno maggior sicurezza alla rete in quanto tutti i nodi possono verificare che tutti i blocchi soddisfino i requisiti.

Vediamo ora di capire come viene rappresentata la difficoltà di mining.

Prendendo in visione un qualsiasi blockexplorer e analizzando un blocco bitcoin ci troveremo di fronte a diversi parametri…tra questi ci sarà:

la difficoltà

il bits

Il primo valore è un numero decimale molto molto lungo che esprime in sostanza quanti hash (ossia quanti calcoli) sono stati necessari a raggiungere l’obbiettivo.

Il secondo valore , il bits, rappresenta una version compressa esadecimale del target.

Se analizziamo il blocco 607557 preso in esempio nella foto abbiamo i seguenti dati:

Difficoltà = 12876842089682 (vale a dire più di 12876 milardi )

Bits = 0X1715DBD2

L’ hash del blocco deve essere un valore inferiore al target stabilito e imposto dal protocollo, in quanto più piccolo è fissato quel valore e minore sarà la probabilità di trovarlo facilmente.

Ora verifichiamo:

Trasformando il bits in valore decimale otteniamo questo infinito numero:

2093644940525638357414324633411056914147713045789409280

Questo è il target sotto il quale si deve stare nel risultato ottenuto dal calcolo dell hash del blocco candidato.

Come ultimo passaggio non ci resta che prendere l’hash del blocco dal blockexplorer. In realtà questa è una verifica che stiamo facendo noi a posteriori mentre il miner deve farla per avere un riscontro sul blocco candidato del momento. Trasformando in numero decimale quell’hash noteremo che è inferiore al target indicato dal bits.

Il valore dell’ hash é minore del target

Ciò significa che il blocco candidato può ritenersi valido per la difficoltà programmata dal protocollo Bitcoin in quel momento specifico ed essere aggiunto alla blockchain.

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo di WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...

%d blogger hanno fatto clic su Mi Piace per questo: