Trudność

Średnio zaawansowany

Co to jest trudność?

W kryptowalutach określenie „trudność” oznacza wysiłek konieczny do wykopania bloku. Sieci blockchain typu Proof-of-Work (PoW) mają wdrożone pewne zasady, które skutkują wzrostem lub spadkiem tego parametru w zależności od ilości mocy obliczeniowej w sieci. Chodzi o to, aby bloki nie powstawały zbyt szybko oraz o bieżące utrzymanie bezpieczeństwa sieci.
Sieć Bitcoin ustala np. czas bloku mniej więcej na dziesięć minut (średni czas potrzebny do znalezienia nowego bloku). Jeżeli znajdowanie bloków odbywa są zbyt szybko, sieć zwiększa trudność, co w praktyce obniża górnikom próg docelowy.

Jeżeli z kolei znajdowanie bloków trwa zbyt długo, trudność spada, co podnosi wartość docelową. Ten cel to liczba, która okresowo się zeruje. Aby udało się wykopać blok, górnik musi znaleźć tzw. dane zbędne (hash) mniejsze od tej liczby.

Jak wygląda kopanie: uproszczony przykład

Możemy się posłużyć prostym przykładem. Załóżmy, że mamy wyraz „binance” i chcemy wygenerować dane zbędne w formacie SHA256, których wynik będzie liczbowo niższy od określonego celu odpowiadającego w przybliżeniu danym zbędnym zaczynającym się od określonej liczby zer w postaci szesnastkowej.

W praktyce kopanie polega na tym, że górnicy próbują znaleźć wartość danych zbędnych niższą od liczby docelowej, która jest bardzo dużą liczbą przedstawioną w formacie 256-bitowym. Możemy to zilustrować poprzez iteracyjne dodawanie liczby do wyrazu „binance” (np. „binance1”, „binance2”, „binance3”) i jego mieszaniu, dopóki nie powstaną wyjściowe dane zbędne spełniające uproszczone kryterium, np. że na początku mają być zera prowadzące.

W tym celu musimy dojść aż do „binance10”. Jeżeli chcemy, aby pierwszymi dwoma znakami były „0”, musimy mieszać dalej, dopóki nie wyjdzie nam „binance99”. Aby uzyskać trzy zera, musimy mieszać, dopóki nie wyjdzie nam „binance458”. A cztery zera? Wśród pierwszych dwudziestu milionów liczb nie ma danych wejściowych, które dałyby nam taki wynik.

Powinno to dawać wyobrażenie o tym, jak wygląda kopanie – z tą różnicą, że górnicy próbują znaleźć liczbę, która mieści się poniżej wartości docelowej. Im niższa jest ta wartość docelowa, tym trudniej znaleźć rozwiązanie, dlatego sieć Bitcoin zużywa tak dużo mocy obliczeniowej. Górnicy wielokrotnie mieszają warianty tych samych informacji, aby znaleźć prawidłowe dane zbędne.

Korekta trudności

Sieć Bitcoin koryguje trudność kopania mniej więcej co 2016 bloków (w przybliżeniu co dwa tygodnie), aby utrzymać średni czas bloku na poziomie 10 minut. Podstawę tej korekty stanowi czas, jaki zajęło wykopanie ostatnich 2016 bloków. Jeżeli szybkość kopania bloków była wyższa od zakładanej, trudność rośnie, aby utrudnić kopanie; a jeżeli niższa, trudność spada, aby je ułatwić.

Zmiany urządzeń górniczych

Ponieważ kopanie bitcoina jest bardzo trudne, uczestnicy już dawno porzucili zwykłe komputery PC i karty graficzne na rzecz specjalnych urządzeń, tzw. układów ASIC (specjalizowanych układów scalonych). 

Górnictwo stało się działalnością na poziomie przemysłowym zdominowaną przez duże farmy górnicze ze specjalistycznym sprzętem, co odzwierciedla konkurencyjny charakter sieci i wzrost trudności.

Nie wszystkie kryptowaluty mają algorytm PoW

Warto zauważyć, że nie wszystkie kryptowaluty mają algorytm PoW i trudność kopania. Np. sieć Ethereum przeszła na mechanizm konsensusu Proof of Stake (PoS) , który nie wiąże się z koniecznością kopania czy korygowania trudności.

Wniosek

Trudność to parametr dynamiczny, który gwarantuje bezpieczeństwo i stabilność sieci blockchain PoW poprzez regulowanie ilości pracy obliczeniowej koniecznej do kopania nowych bloków. Dopasowuje się do zmian mocy obliczeniowej, aby utrzymać stałe tempo tworzenia bloków, co zapewnia spójne funkcjonowanie sieci blockchain.