Sapevi che estrarre un bitcoin non è sempre così complicato? Un telefono cellulare (uno dei più economici) poteva estrarre rapidamente bitcoin nel 2009, ma oggi per questo compito sono necessari enormi magazzini industriali pieni di migliaia di dispositivi specializzati, che generano milioni di milioni di operazioni al secondo per estrarre la stessa quantità di bitcoin. Scopri perché questo accade imparando 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).
In questo articolo di Bit2Me Academy approfondirai uno degli aspetti più importanti delle criptovalute come Bitcoin. Approfondire questi aspetti tecnici non è sempre facile ma, come sempre, ti spiegheremo questo concetto in modo semplice.
Il termine "difficoltà" è usato come a unità di misura nel processo di mining di criptovaluta, che determina Come 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 esso blockchain. Ogni blocco all'interno della rete viene generato a una velocità determinata dal protocollo blockchain. E questo ritmo deve rimanere, per quanto possibile, costante.
Scarica gratuitamente la guida di base sull'estrazione mineraria
Ricevi nella tua email il PDF con le informazioni di base.
Quanto tempo ci vuole per estrarre un bitcoin?
En 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 trova un hash che soddisfa il modello cercato. Una persona con molta potenza di calcolo (ad esempio migliaia di ASIC, o applicare un nuovo meccanismo per eseguire l'operazione più velocemente) sarai in grado di trovare il nonce molto velocemente e romperebbe la media di 10 minuti fissata dal protocollo. È qui che Bitcoin ha aggiunto uno dei suoi componenti più importanti: il riaggiustamento delle difficoltà di mining.
Senza questo riaggiustamento, quel miner minerebbe tutti i blocchi in pochissimo tempo, rompendo la curva di emissione bitcoin prestabilita nel modello economico alla base del protocollo Bitcoin. Cioè, in breve tempo tutti i bitcoin sarebbero estratti.
Per evitare ciò, entra in azione il riadattamento minerario, che aumenta la complessità del problema matematico ricercato. In questo modo il tempo di ogni blocco si stabilizza nuovamente a 10 minuti (in media).
Con quale frequenza viene ripristinata la difficoltà di mining di 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 diverso per vari modi 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 clienti Bitcoin spesso approssimano la difficoltà in base a questo, che è noto come "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 guardiamo a questo in uno scenario estremo, in cui il prezzo del Bitcoin scende a valori estremamente bassi, il mining non sarebbe affatto redditizio. Così tanti minatori lascerebbero la rete. Ma poiché la difficoltà è regolabile in base alla potenza di hash che la rete ha in un dato momento, diminuirebbe e si regolerebbe automaticamente. Aprendo così le porte ai miner più piccoli, che potrebbero, almeno per un po', minare bitcoin di nuovo come all'inizio: da computer desktop o laptop.
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 moneta fiduciaria che serve a coprire le spese di esercizio della rete. Pertanto, il prezzo di un kilowattora in bitcoin è un aspetto molto importante della 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 la difficoltà attuale 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 Esplora Bit2Me, che ti mostri la difficoltà di Bitcoin e della sua testnet BitcoinTestnet 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_GETDIFFICOLTY nel client di Bitcoin Core.