Trudność

Zobacz także: cel

Co to jest „trudność”?

Trudność jest miarą tego, jak trudno jest znaleźć hash poniżej podany cel.

Sieć Bitcoin ma globalną trudność blokową. Prawidłowe bloki muszą mieć hash poniżej tego celu. Pule wydobywcze mają również specyficzną dla puli trudność udostępniania, ustawiając dolny limit dla udziałów.

Jak często zmienia się trudność sieci?

Co 2016.

Jaki jest wzór na trudność?

trudność = trudność_1_target / current_target

(docelowa liczba to 256-bitowa liczba)

trudność_1_target może być różna dla różnych sposobów mierzenia trudności. Tradycyjnie reprezentuje skrót, w którym początkowe 32 bity to zero, a reszta to jeden (jest to znane jako „trudność puli” lub „pdiff”). Protokół Bitcoin reprezentuje cele jako niestandardowy typ zmiennoprzecinkowy z ograniczoną precyzją; w rezultacie klienci Bitcoin często szacują trudność w przybliżeniu na tej podstawie (jest to znane jako „bdiff”).

W jaki sposób trudność jest przechowywana w blokach?

Każdy blok przechowuje spakowaną reprezentację ( o nazwie „Bity”) dla rzeczywistego celu szesnastkowego. Cel można wyprowadzić z niego za pomocą predefiniowanej formuły. Na przykład, jeśli spakowany cel w bloku to 0x1b0404cb (zapisany w kolejności little-endian: cb 04 04 1b), cel szesnastkowy to

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

Zwróć uwagę, że ten spakowany format zawiera bit znaku na 24. bicie, a na przykład negacja powyższego celu będzie wynosić 0x1b8404cb w formacie spakowanym. Ponieważ jednak cele nigdy nie są ujemne, oznacza to, że największa dozwolona wartość dla niższych 24 bitów to 0x7fffff. Dodatkowo 0x008000 to najmniejsza dozwolona wartość dla niższych 24 bitów, ponieważ cele są zawsze przechowywane z najniższym możliwym wykładnikiem.

Jak obliczana jest trudność? Jaka jest różnica między bdiff i pdiff?

Najwyższy możliwy cel (poziom trudności 1) jest zdefiniowany jako 0x1d00ffff, co daje nam docelową wartość szesnastkową

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

Należy zauważyć, że wydobycie w puli często wykorzystuje nieobcięte cele, co stawia „trudność puli 1” na poziomie

0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

Zatem trudność przy 0x1b0404cb to zatem:

0x00000000FFFF0000000000000000000000000000000000000000000000000000 /0x00000000000404CB000000000000000000000000000000000000000000000000 = 16307.420938523983 (bdiff)

Oraz:

0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF /0x00000000000404CB000000000000000000000000000000000000000000000000 = 16307.669773817162 (pdiff)

Oto szybki sposób na obliczyć trudność bitcoin. Wykorzystuje zmodyfikowaną serię Taylora do logarytmu (możesz zobaczyć samouczki na temat flipkodu i Wikipedii) i opiera się na dziennikach, aby przekształcić obliczenie trudności:

Aby zobaczyć matematykę, aby przejść od normalnego poziomu trudności obliczenia (które wymagają dużych dużych liczb całkowitych większych niż spacja w dowolnej normalnej liczbie całkowitej) do powyższego obliczenia, oto trochę pythona:

Jaka jest obecna trudność?

Obecna trudność, jako dane wyjściowe funkcji getDifficulty Bitcoina.

Wykresy

Jaka jest maksyma um trudności?

Nie ma minimalnego celu. Maksymalna trudność to z grubsza: maximum_target / 1 (ponieważ 0 dałoby nieskończoność), co jest absurdalnie dużą liczbą (około 2 ^ 224).

Rzeczywista maksymalna trudność jest wtedy, gdy current_target = 0, nie byłby w stanie obliczyć trudności, gdyby tak się stało. (na szczęście nigdy tak się nie stanie, więc nic nam nie jest).

Czy problem z siecią może się zmniejszyć?

Tak. Zobacz dyskusję w celu.

Jaka jest minimalna trudność?

Minimalna trudność, gdy cel osiąga maksymalną dozwoloną wartość, to 1.

Jaki współczynnik hash sieci powoduje daną trudność?

Trudność jest dostosowywana co 2016 bloków w oparciu o czas potrzebny na znalezienie poprzednich bloków z 2016 r. Przy pożądanym tempie jednego bloku na 10 minut, znalezienie bloków 2016 zajmie dokładnie dwa tygodnie. Jeśli poprzednie bloki 2016 zajęło więcej niż dwa tygodnie, trudność jest zmniejszona. Jeśli zajęły mniej niż dwa tygodnie, trudność wzrasta. Zmiana w trudności jest proporcjonalna do ilości czasu w ciągu dwóch tygodni lub mniej niż poprzednie bloki 2016, aby znaleźć .

Aby znaleźć blok, hash musi być mniejszy niż cel. Hash jest faktycznie liczbą losową z przedziału od 0 do 2 ** 256-1. Przesunięcie trudności 1 wynosi

0xffff * 2**208

a dla trudności D wynosi

(0xffff * 2**208)/D

Oczekiwana liczba skrótów, które musimy obliczyć, aby znaleźć blok z trudnością D, wynosi zatem

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

lub po prostu

D * 2**48 / 0xffff

Trudność jest ustawiona w taki sposób, że poprzednie bloki 2016 byłyby znalezione w tempie jeden na 10 minut, więc obliczaliśmy (D * 2 ** 48 / 0xffff) hashe w 600 sekund. Oznacza to, że szybkość mieszania sieci wynosiła

D * 2**48 / 0xffff / 600

w porównaniu z poprzednimi blokami z 2016 roku. Można go dodatkowo uprościć do

D * 2**32 / 600

bez dużej utraty dokładności.

Na poziomie trudności 1, czyli około 7 Mhashów na sekundę.

W chwili pisania tego tekstu trudność wynosi 22012.4941572, co oznacza, że w poprzednim zestawie bloków z 2016 r. Średni współczynnik hashowania sieci wynosił

22012.4941572 * 2**32 / 600 = around 157 Ghashes per second.

Jak szybko mogę się spodziewać wygenerowania bloku?

(Odwieczne pytanie.)

Średni czas potrzebny na znalezienie bloku można obliczyć w przybliżeniu, obliczając:

time = difficulty * 2**32 / hashrate

gdzie trudność to bieżąca trudność, hashrate to liczba skrótów obliczanych przez górnika na sekundę, a czas to średnia w sekundach między znalezionymi blokami.

Na przykład za pomocą Pythona obliczamy średni czas do wygeneruj blok za pomocą platformy wydobywczej 1Ghash / s, gdy trudność wynosi 20000:

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

i przekonaj się, że zajmuje to średnio mniej niż 24 godziny.

  • Każde mielenie hasha ma takie same szanse na „wygraną”, jak inne. Gra liczbowa określa, ile prób twój sprzęt może wykonać na sekundę.
  • Musisz znać trudność (powyżej) i szybkość khash / s (zgłaszaną przez klienta).
    • Wydobywanie Porównanie sprzętu zawiera pewne statystyki, które mogą pomóc Ci przewidzieć, co możesz uzyskać.
  • Odwiedź kalkulator lub wykonaj obliczenia samodzielnie,
    • http://www.alloscomp.com/bitcoin/calculator.php
    • http://www.vnbitcoin.org/bitcoincalculator.php
    • https://bitknock.com/calculator
  • Pamiętaj, że to tylko prawdopodobieństwo! Nie ma gwarancji, że wygrasz co N dni.

Linki pokrewne

  • Historia trudności Bitcoinów
  • Czym jest trudność wydobywania Bitcoinów?
  • Zobacz także: cel

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *