Bitcoin Mining Difficulty - What is it And How Does it Work?

Updated on: May 2nd, 2020
This content has been Fact-Checked.
Bitcoin Mining Difficulty - What is it And How Does it Work?

Prima ancora di iniziare a capire cosa significa la difficoltà di mining bitcoin, dobbiamo sapere come funziona il mining. Abbiamo affrontato questo argomento in dettaglio prima, quindi ti daremo solo una piccola panoramica prima di entrare nelle diverse sfumature di difficoltà. Successivamente, vedremo come viene calcolata la difficoltà mineraria e come cambia per soddisfare le esigenze della rete.

Come funziona l'estrazione mineraria? Quanto tempo ci vuole per estrarre 1 Bitcoin?

La rete di Bitcoin ha diversi nodi specializzati chiamati «minatori» che utilizzano attrezzature specializzate per risolvere enigmi crittograficamente duri. Se hanno successo, avranno l'opportunità di aggiungere blocchi alla blockchain BTC con successo. Ecco come funziona:

Il minatore raccoglie le transazioni in attesa nel mempool e le hash.

Aggiungono un valore esadecimale casuale alla parte anteriore dell'hash e hash l'intero valore.

Questo hash deve essere inferiore a un particolare valore, che si chiama «difficoltà».

Cosa determina la difficoltà di estrazione di bitcoin? Perché la difficoltà BTC aumenta?

#1 Per mantenere l'integrità della rete

Il livello di difficoltà di estrazione di Bitcoin aumenta o diminuisce in base alla facilità di estrazione all'interno del protocollo. Ricorda, Bitcoin deve avere un tempo di blocco costante di 10 minuti. In altre parole, il nuovo BTC può essere iniettato nell'alimentazione circolante ogni 10 minuti. Per assicurarsi che questa tempistica non cambi il protocollo Bitcoin:

Aumenta la difficoltà di rete quando diventa più facile per i minatori.

Riduci la difficoltà di rete quando diventa più difficile per i minatori.

La rete Bitcoin ha una difficoltà di blocco universale. Tutti i blocchi validi devono avere un hash sotto la destinazione. I pool minerari hanno anche una difficoltà di condivisione specifica del pool che fissa un limite inferiore per le condivisioni.

#2 Relazione con tasso di hash

Una delle metriche critiche nel giudicare l'integrità di una rete proof-of-work è la frequenza hash. In poche parole, l'hashrate ti mostra quanto sono potenti i minatori all'interno della rete. Più alto è il tasso di hashrate della rete bitcoin, più alto è la sicurezza e la velocità complessiva. Tuttavia, queste reti devono mantenere il loro tasso di hashrate sotto controllo per una produzione coerente di blocchi. Questo è il motivo per cui, quando l'hashrate diventa alto, la difficoltà bitcoin alla fine diventa anche più alta, rendendo più difficile per i minatori estrarre facilmente all'interno della rete.

Anche l'inverso è vero.

Se il tasso di hashrate di Bitcoin diminuisce, anche la difficoltà di rete si ridurrà. Hashrate può diminuire a causa dei seguenti motivi:

Bitcoin ha attualmente un'alta difficoltà, motivo per cui i minatori stanno avendo un momento difficile nel mining nel sistema.

Il prezzo del BTC è sceso, motivo per cui molti minatori hanno smesso di estrarre.

Per capire la correlazione tra i due, diamo un'occhiata ai loro grafici. Prima di tutto, abbiamo il tasso di hash.

Dopodiché, abbiamo il grafico di difficoltà bitcoin:

Come potete vedere, c'è una correlazione molto stretta tra i due. Intorno al 26 marzo, la difficoltà di rete è diminuita del 16%, passando da 16,55 trilioni a 13,9 trilioni. Questo è stato il più grande incidente in difficoltà di rete dall'inizio del 2013. Per capire perché questo è successo questa volta, guarda come è sceso anche l'hashrate appena prima della caduta della difficoltà bitcoin. Questo calo si è verificato a causa del crollo dei prezzi di Bitcoin, che ha costretto molti minatori a chiudere le operazioni.

In che modo Bitcoin calcola la difficoltà?

La difficoltà di rete di Bitcoin cambia ogni blocco 2016. La formula utilizzata dalla rete per calcolare la difficoltà è così:

difficoltà = difficulty_1_target/current_target

Nella formula di cui sopra:

target è un numero a 256 bit. Come per il protocollo di Bitcoin, gli obiettivi sono un tipo a virgola mobile personalizzato con precisione limitata. Clienti Bitcoin approssimano difficoltà in base a questo fatto. Questo valore è noto anche come bdiff.

difficulty_1_target può essere diverso a seconda di come si sceglie di misurare la difficoltà. Tradizionalmente, rappresenta un hash in cui i 32 bit principali sono zero e il resto sono uno. In realtà, questo valore è noto anche come difficoltà piscina o pdiff.

Ogni singolo blocco memorizza una rappresentazione imballata di difficoltà bitcoin nei loro blocchi chiamati «bit». Questo target di solito appare come 0x1b0404cb (memorizzato in ordine little-endian: cb 04 1b).

Un blocco calcola il valore di destinazione tramite una formula predeterminata. Ad esempio: Con il target compresso indicato sopra, cioè 0x1b0404cb. Il target esadecimale è:

0x0404cb * 2** (8* (0x1b - 3)) = 0x00000000000404cb0000000000000000000000000000000000000000000000000000

Ora calcoliamo bdiff e pdiff.

Il target più alto possibile (difficulty_1_target) è definito come 0x1d00ffff o, in forma esadecimale:

0x00ffff * 2** (8* (0x1d - 3)) = 0x00000000FFFF0000000000000000000000000000000000000000000000000000000000000000

Ora che conosciamo questo valore, possiamo usarlo per calcolare il nostro bdiff usando la formula difficulty = difficulty_1_target/current_target

Ora, come abbiamo definito nella sezione precedente, il current_target è 0x1b0404cb o 0x00000000000404cb0000000000000000000000000000000000000000000000000000000000000000.

Quindi, per calcolare la difficoltà attuale:

0x00000000FFFF00000000000000000000000000000000000000000000000000000000/

0x00000000000404CB0000000000000000000000000000000000000000000000000000

= 16307.420938523983

Quindi, bdiff è 16307.420938523983.

Ora, calcoliamo il pdiff. I pool di mining tendono a utilizzare destinazioni non troncate che mettono difficulty_1_target a 0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF.

Se questo è il caso allora per lo stesso current_target, il nostro pdiff sarà:

0x00000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff

0x00000000000404CB0000000000000000000000000000000000000000000000000000

= 16307.669773817162

Ecco un codice di programma preso dal wiki di Bitcoin che si basa sui log per semplificare il calcolo delle difficoltà:

#include iostream

#include cmath

float in linea fast_log (float val)

{}

int * const exp_ptr = reinterpret_cast int * (e val);

int x = *exp_ptr;

const int log_2 = ((x 23) e 255) - 128;

x e = ~ (255 23);

x += 127 23;

*exp_ptr = x;

val = (-1.0f/3) * val + 2) * val - 2.0f/3;

ritorno ((val + log_2) * 0.69314718f);

}

difficoltà float (bit int non firmati)

{}

statico doppio max_body = fast_log (0x00ffff), scaland = fast_log (256);

restituisce exp (max_body - fast_log (bit e 0x00ffffff) + scaland * (0x1d - ((bit e 0xff000000) 24));

}

int main ()

{}

std: :cout difficoltà (0x1b0404cb) std: :endl;

ritorno 0;

}

Come si imposta una difficoltà mineraria?

I minatori utilizzano hardware ASIC specializzato per estrarre Bitcoin. Queste macchine sono estremamente veloci e producono tetrahash ogni singolo secondo. Sarà estremamente poco pratico per un sistema controllare scrupolosamente ognuno di loro per vedere se soddisfa tutte le condizioni necessarie, o no. Questo è esponenzialmente vero per i pool minerari. Non possono controllare tutti gli hash prodotti da un minatore bitcoin ogni singolo secondo. Questo è il motivo per cui i pool di mining utilizzano un concetto chiamato «Share Time».

Quindi, immaginiamo che il tuo pool di mining bitcoin abbia impostato un tempo di condivisione di 5 secondi. Ciò significa che, in media, il pool minerario richiederà ai minatori di inviare una quota ogni 5 secondi.

Come si fa esattamente?

Il tuo pool di mining bitcoin imposterà un valore chiamato Condividi Difficoltà per ogni minatore. La difficoltà di condivisione di un minatore è direttamente proporzionale al loro tasso di hashrate individuale. Come tale, più alto è il tasso di hashrate del minatore, più alto il loro livello di difficoltà di condivisione. L'idea è che il minatore utilizzerà le proprie attrezzature per generare tonnellate di hash. Nel momento in cui trovano un hash che soddisfa il target Condividi Difficoltà, invieranno l'hash al pool.

Come vengono premiati i minatori?

I minatori del pool vengono premiati in base al «Paga per azione» (PPS). In questo sistema, i minatori vengono premiati per le azioni che inviano. I valori delle azioni dipendono interamente da quanto sia stato difficile scoprire la quota.

Facciamo un esempio per vedere come funziona:

Supponiamo di essere un minatore con un hashrate individuale di 50 TH/s.

Il pool minerario a cui hai aderito ha impostato la tua Difficoltà Condividi a 1.000.000.

Nel momento in cui otterrai azioni superiori a 1.000.000, verrai ricompensato dalla piscina.

Il pool potrebbe cambiare la tua difficoltà per assicurarti di non inviare le tue azioni troppo rapidamente.

Ora, se acquisti nuove attrezzature e aumenti il tasso di hashrate a 150 TH/s, il pool aumenterà la tua difficoltà a 3.000.000. Invierai azioni alla stessa tariffa che avevi precedentemente inviato. Tuttavia, otterrai 3 volte la ricompensa che stavi ricevendo in precedenza per le azioni che inviavi.

Il motivo per cui i pool raccomandano difficoltà maggiori per l'hardware più veloce consiste nel ridurre il carico di rete sia sul sistema del minatore che sul pool. Riduce inoltre il ritardo di riavvio per l'hardware di mining mentre si prepara per l'unità di lavoro successiva. Allo stesso tempo, la piscina deve fare attenzione a non impostare la difficoltà troppo alta che si tradurrà in un sacco di azioni obsolete.

NOTA: Obiettivo Condividi = 1/Difficoltà Condividi

L'importanza della difficoltà nel consenso di Nakamoto

Per capire quanto sia critica la difficoltà per l'ecosistema di Bitcoin, è necessario sapere come funziona il consenso di Nakamoto. Per una rete di ampia area senza entità centralizzata, i protocolli di consenso sono l'unico modo per mantenere qualsiasi forma di governance. Gli algoritmi di consenso tradizionali come Raft non sono ideali per mantenere un protocollo crittoeconomico ad ampia area. Questo è il motivo per cui Satoshi Nakamoto, il creatore di Bitcoin, ha trovato il consenso di Nakamoto. Il principio centrale del consenso di Nakamoto è che per partecipare al sistema bisogna pagare un prezzo. Nel caso della prova del lavoro (POW), cioè il consenso di Bitcoin, i minatori pagano un prezzo con «lavoro». Il lavoro, in questo caso, è la pesante quantità di energia computazionale che un minatore deve spendere per estrarre un Bitcoin. È qui che entra in gioco la difficoltà. La difficoltà è la metrica che rende difficile l'estrazione di Bitcoin, inoltre, questo è ciò che il consenso di Nakamoto sfrutta per risolvere il problema della doppia spesa.

Cos'è la doppia spesa?

La doppia spesa è la ragione per cui tutti i tentativi di creare una criptovaluta decentralizzata avevano fallito miseramente prima di Bitcoin. In termini semplici, è un difetto che può consentire a un Bitcoin di essere speso più di una volta allo stesso tempo. Non abbiamo mai riscontrato questo problema mentre si trattava di contanti fisici. Dopotutto, se stai acquistando qualcosa con una banconota da $10, non puoi acquistare contemporaneamente qualcos'altro con quella stessa nota, giusto?

Tuttavia, un token digitale ha file digitali che possono essere facilmente duplicati, portando a inevitabile doppia spesa. Come potete immaginare, la doppia spesa può avere diversi effetti devastanti sull'economia dell'ecosistema:

In primo luogo, gonfia l'offerta totale delle monete all'interno dell'ecosistema, il che mette fuori controllo l'equazione offerta e domanda.

In secondo luogo, se qualcuno, ovunque può spendere la stessa moneta senza restrizioni, ridurrà la fede del popolo nella santità di quella moneta.

Bitcoin richiede che tutte le transazioni siano incluse nella blockchain, senza fallo. Questo fa sì che chiunque nella rete possa tracciare ogni singolo diritto Bitcoin alla sua stessa fonte. Un livello di trasparenza così elevato garantisce che nessuno sarà in grado di raddoppiare la spesa senza che l'intera rete se ne accorga. Tuttavia, pensiamo a qualcosa di più diabolico. Supponiamo che qualcuno decida di dirottare la blockchain biforcendo e cercando di raddoppiare tutti i Bitcoin.

E allora cosa succedera'?

Bene, si scopre che a causa della difficoltà di rete, la quantità di risorse e denaro che l'attaccante dovrà prendere in consegna la catena sarà esponenziale. In quanto tale, semplicemente non ne varrà la pena economicamente di agire contro gli interessi del sistema. Questo è il modo in cui la difficoltà di rete conferisce a Nakamoto Consensus la potenza di fuoco di cui ha bisogno per mantenere la sicurezza e l'integrità della rete.

Conclusione - Difficoltà di Bitcoin Mining

Speriamo che tu abbia trovato molto valore in questo articolo. Se avete qualche dubbio, non esitate a contattarci in qualsiasi momento.

Ameer Rosic
#SerialEntrepreneur, Investor, #Digitalmarketing Adviser and Cofounder of @Blockgks a #blockchain innovation hub

Like what you read? Give us one like or share it to your friends and get +16

0
Hungry for knowledge?
New guides and courses each week
Looking to invest?
Market data, analysis, and reports
Just curious?
A community of blockchain experts to help

Get started today

Already have an account? Sign In