Difficolta di Mining

Da BitcoinWiki.
Questa è la versione approvata di questa pagina, non è la più recente. Visualizza la versione più recente.


bitcoin mining difficoltà

La difficoltà è un valore usato per mostrare quanto sia difficile trovare un hash che sarà più basso di target definito dal sistema.

La rete Bitcoin ha una difficoltà di blocco globale. I blocchi validi devono avere un hash sotto di questo obiettivo. I mining pool hanno anche una difficoltà che è specifico per pool difficoltà fissazione di un limite inferiore per le azioni.

Difficoltà di mining di bitcoin

Nella rete Bitcoin c'è difficoltà globale impostata per tutti i blocchi. Affinché il blocco sia considerato legittimo, deve avere un valoredella funzione di hash più basso di target.

Le difficoltà cambiano ogni 2016 blocchi. Questo viene calcolato utilizzando la seguente formula:

Le difficoltà = Le difficoltà_1_target / target _ attuale 

Dove il target è un numero di 256 bit.

Le difficoltà_1_target può prendere vari valori. Tradizionalmente si tratta di una funzione hash prima 32 bit di cui sono uguali a 0 mentre tutti gli altri sono 1 (è anche chiamato pdiff o difficoltà della piscina). Il protocollo Bitcoin fornisce l'obiettivo come tipo con virgola mobile e precisione limitata. Diversi client Bitcoin spesso determinano difficoltà di criptovaluta in base a questi dati.

Memorizzazione delle difficoltà di crittografia in blocchi

Ogni blocco contiene una versione imballata (chiamata "Bits") di target esadecimale.

Utilizzando la seguente formula target può essere ottenuto da qualsiasi blocco. Ad esempio, se un obiettivo imballato in un blocco appare come 0xb0404cb la sua versione esadecimale apparirà come segue:

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

Il valore massimo di questo campo è 0x7fffff, mentre il minimo è 0x008000.

L'obiettivo massimo possibile (con difficoltà pari a 1) è definito come 0x1d00 che appare come segue in esadecimale numerazione:

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

Il prossimo è un modo semplice di calcolo delle difficoltà. Utilizza una versione modificata della serie Taylor per logaritmo e si affida ai log per trasformare il calcolo delle difficoltà.

Difficoltà massima, attuale e minima

La difficoltà attuale può essere trovata utilizzando la riga di comando Bitcoin 'getdifficulty'.

A causa della funzione di destinazione che non ha valore minimo la difficoltà massima può essere calcolata solo approssimativamente come segue: maximum_target / 1 (come 0 porterebbe l'equazione ad essere infinitamente grande) che è un numero incoscievable (~2 al 224).

La difficoltà minima è pari a 1.

Modifiche delle difficoltà

La difficoltà viene cambiata ogni blocco 2016 in base al tempo necessario per scoprire i blocchi precedenti 2016. Se un blocco viene trovato ogni 10 minuti (come inizialmente previsto per le emissioni pari) trovare blocchi 2016 richiederà esattamente 2 settimane. Se i blocchi del 2016 precedenti sono stati trovati in più di due settimane la difficoltà di estrazione della crittocurrency sarà abbassata, e se sono stati minati più velocemente allora che sarà sollevata. Più (o meno) tempo è stato speso per trovare i blocchi precedenti 2016, più difficoltà sarà abbassato (sollevato).

Per estrarre un blocco hash deve essere inferiore al bersaglio (prova di lavoro). Hash è un numero casuale compreso tra 0 e 2 * 256-1.

Shift per difficoltà 1: 0xffff * 2**208
per difficoltà D: (0xffff * 2**208)/D
Quantità di hash-funzioni da risolvere per un blocco da trovare in difficoltà D: D * 2**256 / (0xffff * 2**208)
O semplicemente: D * 2**48 / 0xffff

La difficoltà è impostata come se avessimo trovato blocchi 2016 precedenti alla velocità di un blocco per 10 minuti

Secondo questo stavamo calcolando (D * 2**48 / 0xffff) hash ogni 600 secondi.
L'hashrate della nostra rete per i precedenti blocchi 2016 è stato: D * 2**32 / 0xffff / 600.
Senza una significativa perdita di precisione possiamo semplificarla fino a: D * 2**32 / 600.
In difficoltà di 1 che è circa 7 Mhash / s.

Il tempo medio di ricerca di un singolo blocco può essere calcolato usando questa formula: tempo = difficoltà * 2**32 / hashrate dove ' difficoltà 'è l'attuale livello di difficoltà di crittocorrenza della rete di difficoltà BTC e' hashrate ' è la quantità di hash che un minatore trova al secondo.

Qual è la massima difficoltà?

Non esiste un obiettivo minimo. La difficoltà massima è approssimativamente: maximum_target / 1 (dato che 0 si tradurrebbe in infinito), che è un numero ridicolmente enorme (circa 2^224). [Questo non è corretto, l'obiettivo può essere zero, ma la maggior parte delle funzioni hash producono tutti gli zeri ad una frequenza così bassa che è praticamente impossibile, non in realtà impossibile]

La difficoltà massima effettiva è quando current_target=0, ma non saremmo in grado di calcolare la difficoltà se ciò accadesse. (fortunatamente non lo sarà mai, quindi stiamo bene.)

La difficoltà della rete può diminuire?

Si, puo

Qual è il minimo di difficoltà BTC?

La difficoltà minima, quando l'obiettivo è al valore massimo consentito, è 1.

Quale tasso di hash di rete si traduce in una certa difficoltà?

La difficoltà è regolata ogni blocco 2016 in base al tempo necessario per trovare i blocchi precedenti 2016. Alla velocità desiderata di un blocco ogni 10 minuti, i blocchi 2016 richiederebbero esattamente due settimane per trovare. Se i precedenti blocchi 2016 hanno richiesto più di due settimane per trovare, la difficoltà è ridotta. Se hanno impiegato meno di due settimane, la difficoltà è aumentata. Il cambiamento di difficoltà è in proporzione alla quantità di tempo superiore o inferiore a due settimane che i blocchi precedenti del 2016 hanno preso per trovare.

Per trovare un blocco, l'hashish deve essere inferiore al bersaglio. L'hash è effettivamente un numero casuale tra 0 e 2**256-1. L'offset per difficoltà 1 è

0xffff * 2**208

e per difficoltà D è

(0xffff * 2**208)/D

Il numero atteso di hash che dobbiamo calcolare per trovare un blocco con difficoltà D è quindi

D * 2**256 / (0xffff * 2**208)

o solo

D * 2**48 / 0xffff

La difficoltà è fissata in modo tale che i blocchi precedenti 2016 sarebbero stati trovati alla velocità di uno ogni 10 minuti, quindi stavamo calcolando (D * 2**48 / hash in 600 secondi. Questo significa che il tasso di hash della rete era

D * 2**48 / 0xffff / 600

rispetto ai precedenti blocchi 2016. Può essere ulteriormente semplificato a

D * 2**32 / 600

senza molta perdita di precisione.

In difficoltà 1, cioè circa 7 hash al secondo.

Al momento della scrittura, la difficoltà è 22012.4941572, il che significa che rispetto alla precedente serie di blocchi 2016 trovato il tasso medio di hash della rete era

22012.4941572 * 2**32 / 600 = circa 157 Ghashes al secondo.

Tra quanto dovrei pensare di generare un blocco?

Il tempo medio per trovare un blocco può essere approssimato calcolando:

tempo = difficoltà * 2**32 / hashrato

dove la difficoltà è la difficoltà attuale, hashrate è il numero di hash il vostro minatore calcola al secondo, e il tempo è la media in secondi tra i blocchi che si trovano.

Ad esempio, usando Python si calcola il tempo medio per generare un blocco utilizzando un impianto minerario di 1Ghash/s quando la difficoltà è di 20000:

$ python -c "print 20000 * 2**32 / 10**9 / 60 / 60.0"

23.85

Vedere anche su BitcoinWiki