Difficulty Adjustment
Difficulty Adjustment
Difficoltà: intermedio
Argomento: tecnologia
DEFINIZIONE
La Difficulty Adjustment, o regolazione della difficoltà o retarget, è una correzione della difficoltà per il mining bitcoin, finalizzata a garantire che la difficoltà cambi in funzione dell'Hash Rate, ovvero la potenza di calcolo utilizzata dai miner, in modo che in media venga minato un bitcoin ogni 10 minuti.
L'algoritmo utilizzato viene chiamato DAA, difficulty adjustment algorithm.
La difficoltà viene regolata regolarmente in modo da mirare a un intervallo di blocco medio di 10 minuti, ma non tutti gli intervalli di blocco sono esattamente di 10 minuti.
La distribuzione dei blocchi nel tempo segue un processo statistico noto come processo di Poisson, secondo la quale eventi casuali si verificano con la stessa probabilità in ogni intervallo di tempo.
Di solito, l'Hash rate aumenta: si aggiungono nuovi miner alla rete Bitcoin, e vengono immessi sul mercato hardware di mining con maggiore potenza di calcolo. Questo fa in modo che i blocchi vengano minati più velocemente.
Ci sono anche dei casi nei quali l'Hash rate diminuisce: ad esempio nel 2021 i miner cinesi per motivi normativi hanno dovuto interrompere o spostare le loro attività, causando una forte diminuzione dell'Hash rate. Un altro motivo per la diminuzione dell'Hash rate può essere dovuto ad un Bear market o Crypto winter che rende meno profittevole il mining fino a compromettere i bilanci dei miner costringendoli a spegnere le loro macchine o addirittura a chiudere, ma in questo periodo nonostante qualcuno lo definisca come Bear market siamo vicino ai massimi.
L'aggiustamento della difficoltà anche se cerca di impostare un tempo medio di 10 minuti, non è però in condizioni di garantire tale tempo, e quindi tra un blocco il successivo possono passare pochi secondi o anche ore.
La verifica ed eventuale modifica della difficoltà avviene ogni 2016 blocchi, e poiché mediamente viene minato un blocco ogni 10 minuti, questa regolazione avviene circa ogni 2 settimane.
La difficoltà è il numero approssimativo di hash necessari per estrarre un singolo blocco.
Una sequenza di blocchi con la stessa difficoltà viene indicata come Difficulty Epoch.
Al 2.016° blocco della difficulty epoch, la difficoltà viene quindi ricalcolata. Se i blocchi sono stati minati in media più velocemente di 10 minuti, la difficoltà aumenta ovvero il target diminuisce. Se i blocchi vengono estratti più lentamente, la difficoltà diminuisce ovvero il target aumenta.
La semplice formula per calcolare il livello di difficoltà è la seguente:
Difficulty = Difficulty Target / Target attuale
Il Difficulty Target è l'obiettivo più alto possibile da raggiungere con l'hash di un blocco.
Target attuale è la difficoltà derivata dal numero di 256 bit nel Block header.
A questa formula vanno aggiunti dei limiti: la difficoltà non può essere modificata al di sopra o al di sotto di quattro volte il livello di difficoltà corrente. Il limite superiore per ogni difficulty epoch è una modifica del +300%, mentre quello inferiore è una modifica del -75%. Questa regola è stata introdotta per eliminare bruschi cambiamenti della difficoltà.
Se da un lato la Difficulty Adjustment garantisce la prevedibilità dell'offerta di Bitcoin, dall'altro è un:
- meccanismo di sicurezza fondamentale
- meccanismo di autoregolazione
- componente cruciale del consenso
In genere è un buon segno quando il mining di bitcoin diventa più difficile perché significa che è necessaria più potenza da parte dei miner, rendendo più difficile per un attaccante impegnare potenza di calcolo per produrre blocchi manomessi, migliorando la sicurezza della rete.
Nonostante l'aggiustamento della difficulty sia stata teorizzata in modo che si basi sui 2016 blocchi precedenti, in realtà un errore nel protocollo originale di Bitcoin fa sì che gli aggiustamenti del livello di difficoltà si basino sui 2015 blocchi precedenti.
L'algoritmo del Difficulty Adjustment è vulnerabile all'attacco di tipo timewarp, che è estremamente difficile da effettuare nella mainnet, mentre è più facile nella testnet.
- Vedi anche
- Difficulty Difficoltà
- Difficulty epoch
- Poisson process processo di Poisson
- Retarget
aggiornato il 2022-09-14