Vedi anche: target
Cosè la “difficoltà”?
La difficoltà è una misura di quanto sia difficile trovare un hash sotto un target specificato.
La rete Bitcoin ha una difficoltà di blocco globale. I blocchi validi devono avere un hash al di sotto di questo obiettivo. I pool di mining hanno anche una difficoltà di condivisione specifica del pool che imposta un limite inferiore per le condivisioni.
Con che frequenza cambia la difficoltà di rete?
Ogni Blocchi 2016.
Qual è la formula per la difficoltà?
difficoltà = difficoltà_1_target / current_target
(lobiettivo è 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 gli altri sono uno (questo è noto come “difficoltà del pool” 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 (questo è noto come “bdiff”).
Come viene memorizzata la difficoltà nei blocchi?
Ogni blocco memorizza una rappresentazione compressa ( chiamato “Bits”) per la sua destinazione esadecimale effettiva. Il target può essere derivato da esso tramite una formula predefinita. Ad esempio, se lobiettivo compresso nel blocco è 0x1b0404cb (memorizzato in ordine little-endian: cb 04 04 1b
), il target esadecimale è
0x0404cb * 2**(8*(0x1b - 3)) = 0x00000000000404CB000000000000000000000000000000000000000000000000
Notare che questo formato compresso contiene un bit di segno nel 24 ° bit, e per esempio la negazione del target precedente sarebbe 0x1b8404cb nel formato compresso. Poiché gli obiettivi non sono mai negativi in pratica, tuttavia, ciò significa che il valore legale più grande per i 24 bit inferiori è 0x7fffff. Inoltre, 0x008000 è il valore legale più piccolo per i 24 bit inferiori poiché i target sono sempre memorizzati con lesponente più basso possibile.
Come viene calcolata la difficoltà? Qual è la differenza tra bdiff e pdiff?
Lobiettivo più alto possibile (difficoltà 1) è definito come 0x1d00ffff, che ci fornisce un obiettivo esadecimale di
0x00ffff * 2**(8*(0x1d - 3)) = 0x00000000FFFF0000000000000000000000000000000000000000000000000000
Va notato che il mining in pool utilizza spesso obiettivi non troncati, il che pone la “difficoltà pool 1” a
0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
Quindi la difficoltà a 0x1b0404cb è quindi:
0x00000000FFFF0000000000000000000000000000000000000000000000000000 /0x00000000000404CB000000000000000000000000000000000000000000000000 = 16307.420938523983 (bdiff)
E:
0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF /0x00000000000404CB000000000000000000000000000000000000000000000000 = 16307.669773817162 (pdiff)
Qui “è un modo veloce per calcola la difficoltà dei bitcoin. Utilizza una serie di Taylor modificata per il logaritmo (puoi vedere tutorial su Flipcode e wikipedia) e si affida ai log per trasformare il calcolo della difficoltà:
Per vedere la matematica per andare dalla difficoltà normale calcoli (che richiedono grandi numeri interi più grandi dello spazio in qualsiasi numero intero normale) al calcolo sopra, ecco un po di python:
Qual è la difficoltà attuale?
Difficoltà attuale, come output di getDifficulty di Bitcoin.
Grafici
Qual è la massima um difficoltà?
Non esiste un obiettivo minimo. La difficoltà massima è approssimativamente: maximum_target / 1 (poiché 0 risulterebbe in infinito), che è un numero ridicolmente enorme (circa 2 ^ 224).
La difficoltà massima effettiva è quando current_target = 0, ma noi non sarebbe in grado di calcolare la difficoltà se ciò accadesse. (fortunatamente non lo sarà mai, quindi “stiamo bene”.
Può la difficoltà di rete diminuire?
Sì, può. Vedi la discussione in target.
Qual è la difficoltà minima?
La difficoltà minima, quando lobiettivo è al valore massimo consentito, è 1.
Quale hash rate della rete risulta in una data difficoltà?
La difficoltà viene modificata ogni blocchi del 2016 in base al tempo impiegato per trovare i blocchi precedenti del 2016. Alla velocità desiderata di un blocco ogni 10 minuti, i blocchi del 2016 impiegherebbero esattamente due settimane per essere trovati. Se i blocchi del 2016 precedenti ha impiegato più di due settimane per trovare, la difficoltà si riduce. Se hanno impiegato meno di due settimane, la difficoltà è aumentata. La variazione della difficoltà è proporzionale al tempo superiore o inferiore a due settimane che i precedenti blocchi del 2016 hanno impiegato per trovare .
Per trovare un blocco, lhash deve essere inferiore al target. Lhash è effettivamente un numero casuale compreso tra 0 e 2 ** 256-1. Loffset per la difficoltà 1 è
0xffff * 2**208
e per la difficoltà D è
(0xffff * 2**208)/D
Il numero atteso di hash da calcolare per trovare un blocco con difficoltà D è quindi
D * 2**256 / (0xffff * 2**208)
o semplicemente
D * 2**48 / 0xffff
La difficoltà è impostata in modo che i precedenti blocchi del 2016 sarebbero stati trovato al ritmo di uno ogni 10 minuti, quindi stavamo calcolando gli hash (D * 2 ** 48 / 0xffff) in 600 secondi. Ciò significa che il tasso di hash della rete era
D * 2**48 / 0xffff / 600
rispetto ai precedenti blocchi del 2016. Può essere ulteriormente semplificato in
D * 2**32 / 600
senza troppa perdita di precisione.
Alla difficoltà 1, si tratta di circa 7 Mhash al secondo.
Al momento della scrittura, la difficoltà è 22012.4941572, il che significa che nel precedente set di blocchi del 2016 è stato rilevato che il tasso di hash di rete medio era
22012.4941572 * 2**32 / 600 = around 157 Ghashes per second.
In quanto tempo potrei aspettarmi di generare un blocco?
(Leterna domanda.)
Il tempo medio per trovare un blocco può essere approssimato calcolando:
time = difficulty * 2**32 / hashrate
dove la difficoltà è la difficoltà attuale, lhashrate è il numero di hash che il tuo minatore calcola al secondo e il tempo è la media in secondi tra i blocchi che trovi.
Ad esempio, usando Python calcoliamo il tempo medio per genera un blocco utilizzando un mining rig da 1Ghash / s quando la difficoltà è 20000:
$ python -c "print 20000 * 2**32 / 10**9 / 60 / 60.0"23.85
e scopri che ci vogliono in media poco meno di 24 ore.
- Chiunque macina hashish ha le stesse possibilità di “vincere” di qualsiasi altro. Il gioco dei numeri è quanti tentativi può fare il tuo hardware al secondo.
- Devi conoscere la difficoltà (sopra) e il tuo tasso di khash / sec (riportato dal client).
- Mining Hardware Comparison ha alcune statistiche che possono aiutarti a prevedere cosa potresti ottenere.
- Visita una calcolatrice o esegui tu stesso i calcoli,
- http://www.alloscomp.com/bitcoin/calculator.php
- http://www.vnbitcoin.org/bitcoincalculator.php
- https://bitknock.com/calculator
- Ricorda che è solo probabilità! Non ci sono garanzie che vincerai ogni N giorni.
Link correlati
- Storia della difficoltà di Bitcoin
- Cosè la difficoltà di estrazione di Bitcoin?
- Vedi anche: target