Sapevi che estrarre un bitcoin non è sempre complicato? Un telefono cellulare (uno dei più economici) poteva estrarre rapidamente bitcoin nel 2009, ma oggi richiede enormi magazzini industriali pieni di migliaia di dispositivi specializzati in questo compito, generando milioni di milioni di operazioni al secondo per estrarre la stessa quantità di bitcoin. Scopri a che cosa è dovuto, apprendendo uno degli aspetti più importanti del mining: la "difficoltà".

Bitcoin possiede una complessità / difficoltà di mining dinamica. Ma cosa significa esattamente? In sostanza significa che la difficoltà per estrarre un blocco in Bitcoin non è sempre la stessa. A volte sale, a volte scende (anche se, attualmente, la tendenza a lungo termine sembra essere in salita).

Nel prossimo capitolo di Bit2Me Academy approfondirai uno degli aspetti più importanti delle criptovalute come Bitcoin. Entrarne nel vivo non è sempre facile ma, come sempre, vi spiegheremo questo concetto in modo semplice.

Il termine "difficoltà" indica un' unità di misura nel processo di mining di criptovaluta, che determina quanto sia difficile trovare l' hash del blocco.

Come abbiamo già spiegato nell'articolo dedicato a come vengono estratte le criptovalute, l'hash deve soddisfare le caratteristiche ricercate in quella  blockchain. Ogni blocco all'interno della rete viene generato a una velocità determinata dal protocollo blockchain; questo ritmo deve costantemente rimanete entro certi limiti.

Ecco una delle domande più importanti: perché la complessità del mining è variabile?

Bene, prendiamo Bitcoin come esempio. In Bitcoin è stato stabilito nel suo codice che un blocco deve essere estratto in media ogni 10 minuti. Per estrarre un blocco, bisognare trovare il nonce che all'interno dell'operazione di mining abbia un hash che soddisfi il modello cercato. Una persona con molta potenza di calcolo (ad esempio migliaia di ASIC, ovvero scoprendo un nuovo meccanismo per fare l'operazione più velocemente) riuscirà a trovare il nonce molto velocemente, rompendo la media dei 10 minuti che si cerca. È qui che Bitcoin ha aggiunto uno dei suoi componenti più importanti: il riaggiustamento delle difficoltà di mining.

Senza questo riaggiustamento, quel minatore estrarrebbe tutti i blocchi in breve tempo, rompendo la curva d'emissione di bitcoin prestabilita nel modello economico che sta alla base del protocollo Bitcoin. In altre parole, in breve tempo tutti i bitcoin verrebbero estratti. Per evitare ciò, entra in azione il riadattamento del mining, che aumenta la complessità del problema matematico ricercato e stabilizza nuovamente il tempo di ogni blocco a 10 minuti (in media).

Con che frequenza viene riadattata la difficoltà di mining in Bitcoin?

L'impostazione della difficoltà di mining dipende dalla programmazione e dai protocolli operativi di ciascuna blockchain e criptovaluta. Come abbiamo già spiegato, la difficoltà di mining in Bitcoin dovrebbe consentire ai miner di risolvere e generare un nuovo blocco ogni 10 minuti circa. Quando questa condizione non è soddisfatta, il grado di difficoltà viene aggiustato.

Questa regolazione avviene automaticamente ogni 2.016 blocchi (circa ogni due settimane), ovvero, in ciascuno dei nodi della rete bitcoin c'è già un pezzo di codice e nel suo codice sorgente che è stato preparato per questo. Pertanto, ogni volta che vengono raggiunti i 2.016 blocchi estratti, tutti i nodi verranno ricalcolati risultando in un nuovo livello di difficoltà per la prova di lavoro (PoW).

Come viene determinata la difficoltà di mining in Bitcoin?

Prima di tutto, è importante notare che la difficoltà di mining è totalmente indipendente dal numero di transazioni o dal valore delle transazioni. Tuttavia, è correlata alla potenza hash della rete e, quindi, all'obiettivo e al tempo di mining.

La formula per calcolare la difficoltà è la seguente:

difficoltà = difficoltà_1_target / current_target

Dove l'obiettivo è un numero a 256 bit. difficoltà_1_target può essere diversa a seconda del modo di misurare la difficoltà. Tradizionalmente, rappresenta un hash in cui i 32 bit iniziali sono zero e il resto è uno (questo è noto come "difficoltà di gruppo"o"pdiff"). Il protocollo Bitcoin rappresenta gli obiettivi come un tipo a virgola mobile personalizzato con precisione limitata. Di conseguenza, i client Bitcoin spesso approssimano la difficoltà in base a questo, "bdiff".

A sua volta, la rete Bitcoin verifica il tempo reale impiegato per estrarre gli ultimi 2.016 blocchi della catena e lo confronta con 20.160 minuti. Questo valore dipende dal fatto che poiché ogni blocco doveva essere estratto in un tempo di 10 minuti, il tempo stimato per estrarre i 2.016 blocchi è di 20.160 minuti. Quindi, utilizzando questi dati, viene calcolata la relazione tra l'intervallo di tempo effettivo e l'intervallo di tempo stimato; in questa maniera effettua gli aggiustamenti corrispondenti alla difficoltà in base ai risultati ottenuti, sia necessario aumentarla o diminuirla.

In cosa si traduce la difficoltà?

La difficoltà nella blockchain gioca un ruolo molto importante. Innanzitutto regola la produzione e l'attivazione della criptovaluta a un tasso costante e predeterminato. In secondo luogo, consente di mantenere i tempi di produzione dei blocchi della criptovaluta in modo uniforme evitando problemi di sicurezza ed evitando possibili frodi. In questo modo, quando il valore di una criptovaluta aumenta, i miner sono spinti a unirsi alla rete, aumentando così il suo potere di hashing e la difficoltà stessa si aggiusta ed aumenta. Pertanto, il tasso di emissione delle monete rimane costante.

Oltre a questo, essendoci molto tempo tra ogni blocco, i miner forniscono maggiore sicurezza alla rete, potendo verificare che tutti i blocchi soddisfino i requisiti.

Pertanto, questa funzione è importante in quanto garantisce che i blocchi vengano generati alla velocità predeterminata dal protocollo e dalla sicurezza della rete, rimanendo resilienti anche se si dovessero aggiungere più miner alla rete, aumentandone la potenza di hashing.

Come viene rappresentata visivamente la difficoltà del mining in Bitcoin?

Anche se sembra strano, la difficoltà del mining può essere rappresentata visivamente. Inoltre, a seconda della blockchain può essere raffigurata in modo diverso, però prendiamo Bitcoin per mostrare come è rappresentato. Per prima cosa, vediamo l'immagine che lasciamo in seguito (o apriamo il link), dove i dati blocco # 607557.

Guarda i dati bit e la difficoltà. La prima è una rappresentazione abbreviata in esadecimale del numero massimo che può essere raggiunto nell'hash del blocco. Il secondo valore è una rappresentazione decimale della difficoltà nel raggiungere tale obiettivo.

Ora, se prendiamo il valore bit (1715dbd2) e lo trasformiamo in un numero esadecimale completo otteniamo quanto segue:

bit = 0x00000000000000000015dbd20000000000000000000000000000000000000000

Ora trasformiamo questo valore in decimale:

bit = 2093644940525638357414324633411056914147713045789409280

Come puoi vedere bit, rappresenta un numero decimale molto grande e questo è il numero target massimo da raggiungere per l'hash del blocco. Tuttavia, come verifichiamo che l'hash del blocco lo rispetti?. È molto semplice, prendiamo l'hash del blocco e lo trasformiamo da esadecimale a decimale.

Block hash = 000000000000000000144758ca662636f4aa4089caaa776ea18cf53cbc8f5781

Trasformando questo risultato in una base decimale si ottiene il seguente numero:

Hash blocco = 1942313447480713367840564387969267204147459722176321409

Come puoi vedere, il numero di hash del blocco è inferiore al target indicato dai bit; ciò significa che il blocco è valido per la difficoltà programmata dal protocollo Bitcoin in quel momento specifico.

Come fatto curioso possiamo menzionare che il valore dell'hash e del target sono espressi in numeri esadecimali, vale a dire, in un insieme di numeri e lettere, ma sempre di un numero si tratta. Mentre la difficoltà è espressa in numeri interi, con i quali siamo più familiari.

Cos'è una difficoltà elevata?

La difficoltà massima della rete Bitcoin può essere espressa come: maximum_target/1. Il numero 1 viene utilizzato perchè quando Bitcoin fu lanciato sul mercato la difficoltà della rete era a quel livello. Questo valore non può essere 0 poiché darebbe un risultato infinito. Pertanto, il calcolo di maximum_target/1 risulterà in un numero enormemente elevato, circa 2 ^ 224.

La difficoltà è solo per il protocollo di consenso PoW?

La difficoltà di mining in una criptovaluta è applicabile a diversi protocolli di consenso come PoW, PoS, DPOSo PoA ma Sono le blockchain che utilizzano il sistema Proof of Work (PoW), che utilizzano questi dati come un punto importante per la loro sicurezza e funzionamento. In una rete blockchain PoW, ai miner viene chiesto di eseguire un test crittografico la cui difficoltà aumenta con l'aumentare della potenza della rete.

Ciò significa che trovare la soluzione giusta richiede milioni di hash al secondo su tutta la rete. L'algoritmo di Proof of Work implica l'hashing delle intestazioni del blocco e la generazione di un numero casuale. Per questo, viene generalmente utilizzato l'algoritmo crittografico SHA-256, fino a quando non si trova una soluzione che si adatti a un determinato schema.

Tutto questo processo fa sì che vengano create apparecchiature informatiche più potenti, come FPGA, CPU, GPU o ASIC per generare soluzioni sufficienti ed essere in grado di verificare le transazioni. Pertanto, la difficoltà della rete viene regolata per garantire la velocità di generazione del blocco.

Tutto questo processo non viene ripetuto in altri protocolli perché il loro funzionamento è diverso e focalizzano la loro capacità di fornire sicurezza su altri meccanismi meno esigenti in ​​termini d'energia e risorse computazionali.

La difficoltà di mining è variabile e si adatta alla concorrenza in Bitcoin?

Sì, la difficoltà di mining in Bitcoin è variabile e si adatta alla concorrenza all'interno della rete. Questa difficoltà di mining è fornita da un algoritmo. Questo algoritmo garantisce che la difficoltà abbia il valore ideale, in modo che i miner possano produrre un nuovo blocco ogni 10 minuti circa.

Se lo osserviamo ci rendiamo conto che si tratta dià uno scenario estremo, in cui il prezzo del Bitcoin scende a valori estremamente bassi, in cui il mining non sarebbe affatto redditizio; di conseguenza tanti minatori lascerebbero la rete. Ma poiché la difficoltà è regolabile in base alla potenza hash che la rete ha in un certo momento, questa diminuirebbe e si aggiusterebbe automaticamente. Così facendo, aprirebbe le porte ai minatori più piccoli, che potrebbero, almeno per un po ', tornare a estrarre bitcoin come all'inizio: da desktop o laptop.

Quanto sai, Cryptonuta?

La difficoltà può essere facilmente manipolata dai minatori?

FALSO!

Sebbene ci siano modi per manipolare la difficoltà di una blockchain, questi attacchi sono tutt'altro che facili da eseguire, specialmente su reti molto grandi e decentralizzate. Da qui l'importanza di decentralizzare le reti per mantenere la loro sicurezza in tutte le circostanze.

Perché la difficoltà del mining a volte aumenta e talvolta diminuisce?

La difficoltà di mining funziona come un parametro dinamico che viene costantemente regolato in base alle condizioni della rete. Ricorda che l'obiettivo del mining è scoprire e generare un nuovo blocco secondo la programmazione della rete; in questa maniera la difficoltà è regolata dallo stesso sistema. Tutto questo tenendo conto della potenza di hashing della rete in un dato momento.

Prendiamo il seguente esempio, se la rete Bitcoin sta generando nuovi blocchi in meno dei 10 minuti stabiliti, la stessa rete regolerà la difficoltà a un livello più alto, vale a dire, poiché i blocchi vengono generati più velocemente di quanto desiderato, la difficoltà di mining aumenterà. Al contrario, se la rete genera nuovi blocchi in un tempo maggiore di 10 minuti, la difficoltà di mining sarà ridotta, poiché i blocchi si starebbero generando più lentamente.

Un altro aspetto molto influente nel grado di difficoltà della rete Bitcoin è il costo dell'elettricità e il valore di Bitcoin nel mercato, questo in relazione alla valuta fiduciaria che viene utilizzata per coprire le spese di gestione della rete. Quindi, il prezzo di un chilowattora in bitcoin è un fattore molto importante nella difficoltà.

Ma quando il prezzo di un bitcoin è alto, il mining diventa redditizio; al contrario, se il prezzo di Bitcoin è basso, alcuni minatori lasceranno la rete perché i loro profitti non coprono le loro spese operative. Pertanto, quando il mining è redditizio, maggiore è il numero di miner collegati alla rete e quindi maggiore è la potenza hash e maggiore è il grado di difficoltà. D'altra parte, quando il mining non è redditizio, la potenza di hashing diminuisce e con essa la difficoltà.

Come conoscere l'attuale difficoltà di una blockchain?

Questo è un altro punto relativo alla parte tecnica e ai protocolli della blockchain. Ad esempio, per conoscere l'attuale difficoltà della rete Bitcoin, puoi visitare un block explorer Bit2Me Explorer, che ti mostri la difficoltà di Bitcoin e della sua testnet Bitcoin Testnet e semplicemente sfogliando l'ultimo blocco generato, puoi vedere gli ultimi blocchi quie guardare i dettagli del blocco che desideri.

Allo stesso modo, se hai un client Bitcoin, puoi scoprire la difficoltà inserendo il comando OP_GETDIFFICULTY nel client di Bitcoin Core.