Glossario / Mining e consenso
Aggiustamento della difficoltà
Noto anche come Retarget.
- Che cos'è l'aggiustamento della difficoltà?
- L'aggiustamento della difficoltà è la regola che ridefinisce ogni 2.016 blocchi quanto è difficile il mining, riportando il tempo medio tra i blocchi verso i dieci minuti al variare dell'hashrate.
Bitcoin non ha un pianificatore, quindi l'unico modo per mantenere l'emissione al ritmo previsto è rendere la ricerca più difficile quando arrivano i miner e più facile quando se ne vanno. Il ricalcolo avviene ogni 2.016 blocchi, punta a 1.209.600 secondi di tempo trascorso e può variare al massimo di un fattore quattro. Per questo i tempi di conferma resistono a un boom del mining o a un crollo.
Come funziona
L'aggiustamento della difficoltà è aritmetica, non una decisione, e ogni nodo lo esegue in modo indipendente.
Alla fine di ogni finestra di 2.016 blocchi, un nodo legge due timestamp: quello nel primo blocco della finestra e quello nell'ultimo. Divide i secondi trascorsi per 1.209.600, il numero di secondi in due settimane, e moltiplica il vecchio target per quel rapporto. I blocchi arrivati in fretta producono un rapporto inferiore a uno, che abbassa il target e rende più difficile la finestra successiva. I blocchi arrivati lentamente producono un rapporto superiore a uno, che alza il target e rende più facile la finestra successiva. Il risultato è limitato a entrambi gli estremi: il tempo trascorso viene trattato come non inferiore a 302.400 secondi e non superiore a 4.838.400 secondi, quindi un singolo ricalcolo non può mai variare di più di quattro volte in nessuna delle due direzioni.
In questo calcolo c'è un famoso errore di uno. Una finestra di 2.016 blocchi contiene solo 2.015 intervalli tra loro, e il codice misura i timestamp senza correggerlo. L'effetto è piccolo e permanente: la rete punta a un blocco ogni 9,9950 minuti invece che ogni 10, quindi l'orologio di bitcoin va leggermente avanti rispetto a un semplice calendario di dieci minuti. Non è mai stato corretto, perché correggerlo richiederebbe un hard fork senza alcun beneficio reale.
I timestamp sono l'input debole, e le regole che li riguardano sono volutamente permissive. Il timestamp di un blocco deve solo essere maggiore della mediana degli undici blocchi precedenti e non più di due ore avanti rispetto all'orologio del nodo che lo riceve. I miner hanno quindi un piccolo margine per influenzare un ricalcolo, che è la base del teorico attacco di distorsione temporale (time warp attack) e il motivo per cui continuano a tornare le proposte di irrigidire le regole sui timestamp.
Il primo aggiustamento è avvenuto il 30 dicembre 2009 al blocco 32.256, quando la difficoltà è salita da 1 a 1,18. Tutto ciò che è seguito è la stessa breve operazione aritmetica, applicata all'incirca ogni due settimane.
Perché questo conta quando compri bitcoin
L'aggiustamento della difficoltà è il motivo per cui un prelievo di bitcoin ha un tempo di attesa prevedibile, e per cui le offerte di mining vanno lette con sospetto.
Tra un ricalcolo e l'altro, la difficoltà resta congelata mentre l'hashrate si muove liberamente, quindi gli intervalli tra i blocchi variano. Se una grande parte della rete si spegne, i blocchi rallentano, e un prelievo che normalmente si completa in mezz'ora richiede sensibilmente più tempo finché il ricalcolo successivo non ripristina il ritmo. Non è l'exchange che ti sta bloccando. È la rete che funziona al di sotto dell'hashrate per cui era stata impostata la difficoltà attuale, e si corregge da sola entro 2.016 blocchi.
Limita anche quanto danno può fare un singolo governo. Quando la Cina ha dichiarato illegale il mining nel 2021, più della metà della rete si è spenta nel giro di settimane, e il protocollo l'ha assorbito senza una riunione: la difficoltà è scesa, i blocchi hanno accelerato di nuovo e le macchine sono state spedite in Kazakistan, negli Stati Uniti e altrove. Le guide per paese di questo sito mostrano il lato politico della stessa storia, in cui un divieto cambia chi mina e dove puoi comprare legalmente, ma mai se i blocchi continuano ad arrivare.
Infine, diffida di qualsiasi prodotto che prometta rendimenti di mining fissi. La difficoltà è andata aumentando in quasi ogni periodo pluriennale, il che significa che i bitcoin guadagnati da una data macchina calano nel tempo anche se nient'altro cambia. Un contratto di cloud mining che promette un pagamento giornaliero costante promette qualcosa contro cui il protocollo lavora.
Il ricalcolo di luglio 2021, la maggiore caduta mai registrata
Il blocco 689.472, minato il 3 luglio 2021, ha portato il maggiore aggiustamento al ribasso nella storia di bitcoin: la difficoltà è scesa del 27,94 per cento in un solo passaggio.
La causa è stata politica, non tecnica. Il divieto di mining in Cina aveva trascinato la media dell'hashrate su sette giorni da circa 136 exahash al secondo a metà giugno a circa 85 exahash, una caduta di circa il 35 per cento. Poiché la difficoltà era stata impostata per la rete più grande, i blocchi di quella finestra sono arrivati molto in ritardo rispetto al calendario. Il ricalcolo ha ridotto il requisito di quasi il 28 per cento, i tempi dei blocchi sono tornati di colpo verso i dieci minuti e l'emissione è proseguita sulla stessa curva. Quattro aggiustamenti negativi consecutivi in quel periodo hanno rimosso in totale circa il 45 per cento della difficoltà, e la rete non si è mai fermata.
Quell'episodio è la singola motivazione più solida a favore del meccanismo. Nessun comitato ha votato, nessuna patch di emergenza è stata rilasciata e nessun utente ha dovuto fare assolutamente nulla.
Aggiustamento della difficoltà vs difficoltà
La difficoltà è il numero; l'aggiustamento della difficoltà è l'evento che lo cambia. La difficoltà è un semplice rapporto che dice quanto è più difficile la ricerca attuale rispetto a quella più facile consentita dalle regole, e non varia da sola. L'aggiustamento è il ricalcolo che imposta un nuovo valore per i successivi 2.016 blocchi. I grafici etichettati "difficulty" sembrano una scala proprio per questo motivo: il valore è piatto all'interno di un'epoca e si muove a gradini solo in occasione di un ricalcolo.
Aggiustamento della difficoltà vs halving
L'aggiustamento della difficoltà cambia quanto è difficile trovare un blocco; l'halving cambia quanto paga trovarne uno. Funzionano con orologi separati, 2.016 blocchi contro 210.000 blocchi, e non si coordinano mai. Un halving taglia da un giorno all'altro i ricavi dei miner, e le eventuali chiusure che seguono compaiono come difficoltà più bassa qualche settimana dopo, ma le due regole non si vedono tra loro nel codice. Da questa confusione nasce l'espressione «halving della difficoltà», e un evento del genere non esiste.