Jak działa Bitcoin / Blockchain Mining?

17 lutego 2021

Od logistyki po opiekę zdrowotną, od mediów społecznościowych po nieruchomości, od sektora energetycznego po globalną gospodarkę – przewiduje się, że Blockchain przekształci prawie każdą branżę w ciągu najbliższych dziesięciu lat. Często opisywana jako nawet bardziej rewolucyjna niż sztuczna inteligencja, technologia ta wkracza w nasze życie z oszałamiającymi szybkościami.

Choć ogólnie inspirujące, to ekstremalne tempo ma również jedną negatywną stronę: oznacza to, że edukacja po prostu nie nadąża. Brak wysokiej jakości programów szkoleniowych związanych z blockchain oznacza, że ​​wiele osób albo przegapi możliwości w tej nowej i ekscytującej dziedzinie, albo co gorsza – dokona przedwczesnych wyborów zawodowych w oparciu o błędne zrozumienie tego, co jest możliwe, a co nie.

Istnieje wiele koncepcji, które pozwalają na istnienie projektów i pomysłów opartych na Blockchain. Objęcie wszystkich tych tematów zajęłoby cały kurs online (więcej szczegółów znajduje się na końcu tego postu). Dlatego dzisiaj zamierzamy skupić się tylko na jednej koncepcji. Do tego artykułu wybrałem chyba najczęściej używany i jednocześnie najbardziej niezrozumiany temat: Górnictwo.

Wszyscy słyszeliśmy o wydobywaniu i kopaniu bitcoinów. Prawdopodobnie używaliśmy nawet tych terminów. Ale co dokładnie robią ci górnicy? O co chodzi w górnictwie? Oto pytanie, na które dziś odpowiemy i zrobimy to w trzech częściach:

  • Część 1: Co to jest skrót kryptograficzny?
  • Część 2: Zagadka kryptograficzna
  • Część 3: Konfiguracja bloku

Uwaga: przyjrzymy się przykładowi Bitcoin. Inne kryptowaluty, takie jak Ethereum, mogą wykorzystywać różne pomysły (np. Inny typ funkcji skrótu), a zatem szczegóły będą się różnić, jednak podstawowe pojęcia pozostają takie same.

Część 1: Co to jest skrót kryptograficzny?

Być może słyszałeś już, że blockchain to seria kolejnych bloków połączonych ze sobą kryptograficznie:

Ale co to oznacza i jak ma się to do górnictwa? Przyjrzyjmy się bliżej.

Pojedynczy blok w łańcuchu bloków zawiera następujące elementy: numer bloku, dane przechowywane w bloku, hash poprzedniego bloku i hash bieżącego bloku.

Hash (lub hash kryptograficzny) to długa liczba, która działa jak cyfrowy odcisk palca dowolnego zbioru danych. W Bitcoin używana jest funkcja mieszająca SHA256, która generuje 64-cyfrową liczbę szesnastkową. Na przykład kryptograficzny skrót słów w tym akapicie to:

Uwaga: na zdjęciach tutaj hashe są skrócone w celach ilustracyjnych.

Algorytmy haszujące mają wiele interesujących właściwości, jednak dzisiaj najbardziej interesują nas trzy: 1) funkcja SHA256 jest deterministyczna – zawsze otrzymasz ten sam wynik mieszania, jeśli ponownie obliczysz funkcję z tym samym wejściem; 2) funkcja SHA256 jest niemożliwa do odtworzenia. Oznacza to, że nigdy nie możesz wiedzieć z góry, jaką wartość skrótu otrzymasz, dopóki jej nie obliczysz; i 3) jeśli zasilisz funkcję SHA256 dwoma, nawet nieznacznie różniącymi się danymi wejściowymi (na przykład, zmienisz kropkę na przecinek), otrzymasz szalenie różne wyniki.

Z powyższego przykładu wprowadzilibyśmy numer bieżącego bloku, dane przechowywane w bloku i skrót poprzedniego bloku do funkcji SHA256, aby uzyskać wartość skrótu bieżącego bloku:

SHA256 (numer bloku, dane, skrót poprzedniego bloku) ->Hash

Teraz możemy zobaczyć, jak bloki są połączone – nie tylko każdy blok odwołuje się do kryptograficznego skrótu poprzedniego bloku – ale w rzeczywistości ten skrót bezpośrednio wpływa na wartość skrótu bieżącego bloku. Dlatego też, jeśli ktoś miałby manipulować danymi dowolnego bloku, takie działanie spowodowałoby, że nie tylko hash tego konkretnego bloku byłby nieprawidłowy, ale także wartości skrótu wszystkich kolejnych bloków byłyby nieprawidłowe.

Takie połączenie między blokami oznacza, że ​​Blockchain jako całość jest znacznie bardziej odporny na manipulacje niż standardowe struktury baz danych i inne metody przechowywania danych. A ponieważ Blockchain jest w istocie księgą rejestrów, ta odporna na manipulacje właściwość jest znana jako właściwość „Immutable Ledger.

Okej świetnie. Tak działają łańcuchy bloków. Ale co to ma wspólnego z wydobyciem? Prosta odpowiedź jest taka, że ​​wydobywanie polega na obliczaniu wartości skrótu dla najnowszego bloku, który jest dodawany do łańcucha. Jednak nie wszystko jest takie proste.

Chodzi o to, że obliczenie funkcji SHA256 zajmuje tylko ułamek sekundy. A jednak być może słyszałeś o licznych pulach wydobywczych, takich jak BTC.com i AntPool, a nawet kopalniach na skalę przemysłową – wszystkie konkurują o wygenerowanie kolejnego bloku Bitcoin. Powstaje więc pytanie – po co nam cała ta moc obliczeniowa?

Część 2: Zagadka kryptograficzna

Tutaj zacznij dodawać warstwy złożoności. Brać się do rzeczy!

Bloki w łańcuchu bloków mają jeszcze jedną dziedzinę, o której jeszcze nie mówiliśmy. To pole nazywa się „The Nonce, co oznacza liczbę użytą tylko raz:

Nonce jest liczbą całkowitą i wraz z numerem bloku, danymi i poprzednim hashem służy jako dane wejściowe dla funkcji SHA256 do obliczania skrótu bieżącego bloku:

SHA256 (numer bloku, wartość jednorazowa, dane, skrót poprzedniego bloku) ->Hash

W przeciwieństwie do innych elementów bloku, Nonce jest zaprojektowany tak, aby był całkowicie pod naszą kontrolą. Oznacza to, że teraz mamy mechanizm zmieniający hash bieżącego bloku, zachowując jednocześnie dane w nim nienaruszone. Rzeczywiście, dzięki naturze funkcji skrótu (właściwość nr 3 w naszej dyskusji powyżej), za każdym razem, gdy wybieramy nową wartość jednorazową dla tego samego bloku, wynikowy hash będzie miał inną wartość.

W porządku, to świetnie. Ale co to wszystko ma wspólnego z wydobyciem? Tutaj dochodzimy do fajnych rzeczy.

Istnieje w sumie 16⁶⁴ możliwych kryptograficznych wartości skrótu SHA256 (każda cyfra szesnastkowa ma 16 możliwych wartości, a jest ich 64 w skrócie). Jednak nie wszystkie z nich to prawidłowe skróty. Dlaczego? Cóż, co dwa tygodnie sieć Bitcoin będzie określać minimalny cel dla hasha. Wszystko powyżej tego celu zostanie odrzucone, wszystko poniżej – zaakceptowane.

Powyższy diagram ilustruje pulę (nie mylić z „pulą wydobywczą) wszystkich możliwych skrótów SHA256 – zaczynając od dołu z najmniejszym i rosnąc w kierunku największego na górze. Gdzieś na pionie mamy cel. Zwróć uwagę, że ten diagram służy tylko do celów ilustracyjnych, ponieważ nie jest proporcjonalny – zobaczymy, dlaczego za chwilę.

W chwili pisania tego tekstu celem jest:

W celu naprawdę ważna jest liczba wiodących zer. Podobnie jak w systemie dziesiętnym, wiodące zera w liczbie o stałym rozmiarze określą jej wielkość. Każde wiodące zero zmniejsza wielkość liczby o współczynnik 16 (dziesięć w systemie dziesiętnym, ale tutaj pracujemy z liczbami szesnastkowymi).

W bieżącym celu znajduje się 18 wiodących zer, co oznacza, że ​​całkowita liczba poprawnych skrótów wynosi 16⁴⁶ (pozostało tylko 64-18 = 46 niezerowych cyfr). Dlatego prawdopodobieństwo, że losowo wybrany hash jest prawidłowy, można obliczyć jako:

W kategoriach wydobywania bitcoinów jest to prawdopodobieństwo, że jakakolwiek dana wartość jednorazowa wygeneruje prawidłowy hash dla bieżącego bloku. Teraz możemy zobaczyć, dlaczego diagram jest nieproporcjonalny: pula prawidłowych skrótów w rzeczywistości jest niezwykle mała w porównaniu z pełną pulą SHA256.

I o to właśnie chodzi w tej kryptograficznej łamigłówce: górnicy rywalizują o znalezienie elementu jednorazowego (zwanego również złotym numerem jednorazowym), który wygeneruje prawidłowy hash dla nadchodzącego bloku. Kto pierwszy znajdzie to, może dodać blok do łańcucha i otrzymać nagrodę w wysokości 12,5 Bitcoinów. W chwili pisania tego tekstu jeden Bitcoin jest wart około 10000 USD, co sprawia, że ​​wydobywanie jest raczej opłacalną czynnością.

Jak czytać ten diagram: czerwone znaki „X odnoszą się do skrótów SHA256, podczas gdy etykiety obok nich pokazują, która wartość jednorazowa wygenerowała którą wartość skrótu.

Cel jest definiowany na podstawie hashratu sieci (zagregowanej mocy obliczeniowej wszystkich górników Bitcoin). Im więcej górników dołączy do sieci – tym niższy będzie cel, a tym samym trudniej będzie znaleźć odpowiedni hash. Celem tego algorytmu trudności jest zapewnienie, że co 10 minut dodawany jest tylko jeden nowy blok. Jest to część polityki pieniężnej Bitcoin mającej na celu kontrolowanie całkowitej liczby monet w obiegu.

Krótko mówiąc, to właśnie robią miliony maszyn górniczych dzień i noc – po prostu powtarzają różne wartości Nonce w nadziei, że jako pierwsi znajdą prawidłowy hash dla następnego bloku. Po znalezieniu prawidłowego skrótu blok jest dodawany do łańcucha i wyścig rozpoczyna się od nowa, tym razem dla następnego bloku.

Część 3: Konfiguracja bloku

Właśnie wtedy, gdy myślałeś, że skończyliśmy… Jest więcej.

Nonce to liczba całkowita z przydzielonymi 32 bitami pamięci. Oznacza to, że ma ograniczony zakres około 4 miliardów wartości. To stwarza dwa problemy:

Po pierwsze, nawet przeciętne urządzenie wydobywcze może obliczyć do 100 milionów skrótów na sekundę, a zatem przejdzie przez zakres Nonce w 40 sekund. A to przeciętny górnik. Baseny kopalniane i kopalnie na skalę przemysłową są w stanie przejść przez zasięg Nonce w ułamku sekundy.

Po drugie, szansa na znalezienie prawidłowego hasha jest tak mała, że ​​nawet przy 4 miliardach prób prawdopodobieństwo sukcesu jest nadal bardzo niskie:

Więc jakie jest rozwiązanie?

Na początek blok zawiera… zgadłeś – kolejne pole, o którym jeszcze nie rozmawialiśmy. To pole jest znacznikiem czasu reprezentującym bieżący czas systemu Unix (liczba sekund, które upłynęły od 1 stycznia 1970 r.):

Sygnatura czasowa jest również uwzględniana w obliczeniach SHA256 dla skrótu bieżącego bloku, który jest wydobywany:

SHA256 (numer bloku, sygnatura czasowa, numer jednorazowy, dane, poprzedni skrót bloku) ->Hash

A ponieważ znacznik czasu jest stale odświeżany (aż do pomyślnego wydobycia bloku), co sekundę skutecznie resetuje zakres Nonce. Czemu? Cóż, jak omówiliśmy na samym początku – nawet jeśli dane wejściowe funkcji SHA256 są nieznacznie zróżnicowane, powoduje to zmianę skrótu.

Dlatego, jeśli spróbujemy wszystkich 4 miliardów wartości jednorazowych dla ustalonej kombinacji innych danych wejściowych (numer bloku, znacznik czasu, dane, hash poprzedniego bloku), ale nie mamy szczęścia w znalezieniu prawidłowego hasha, wszystko, co musimy zrobić, to poczekać, aż znacznik czasu wzrośnie . Zmiana sygnatury czasowej oznacza, że ​​kombinacja jest teraz inna i jeśli ponownie spróbujemy wszystkich 4 miliardów wartości jednorazowych, za każdym razem otrzymamy zupełnie nową wartość skrótu.

Sygnatura czasowa rozwiązuje problem przeciętnego górnika, ponieważ zostanie zresetowana, zanim dotrze do końca zakresu jednorazowego (przypomnienie: przeciętny górnik potrzebuje 40 sekund, aby wykonać 4 miliardy przejść). Jednak dla basenu górniczego lub górnika na skalę przemysłową nawet jedna sekunda jest za długa – jak omówiliśmy, przedostałyby się przez zakres Nonce w ułamkach sekundy. Jak więc rozwiązują problem? Tutaj pojawia się konfiguracja transakcji blokowych.

Uczestnicy sieci Bitcoin przez cały czas dokonują między sobą transakcji. Jednak nowy blok jest dodawany tylko raz na dziesięć minut. Gdzie więc idą transakcje, zanim zostaną dodane do bloku? Nowe wpisy są dodawane do obszaru przejściowego zwanego mempool. Następnie zadaniem górników jest pobranie partii tych transakcji z mempoolu i dodanie ich do nowego bloku, który wydobywają.

Rozmiar bloku jest ograniczony i nie wszystkie transakcje z mempool będą pasować do nowego bloku. Oznacza to, że górnicy mogą wybrać, które transakcje przejdą do następnego bloku. Oznacza to również, że górnicy mogą dowolnie zmieniać konfigurację transakcji (zanim blok zostanie pomyślnie wydobyty).

I w ten sposób górnicy uzyskują dodatkową kontrolę nad hashem. Cóż… Kontrola nie jest właściwym słowem, ponieważ hasha nie można odtworzyć ani przewidzieć. Zmienność jest tutaj lepszym terminem: zmiana konfiguracji transakcji powoduje dodatkową zmienność danych wejściowych funkcji skrótu.

Podobnie jak w przypadku znaczników czasowych, ilekroć wypróbujemy wszystkie 4 miliardy możliwych wartości z zakresu Nonce i nie mamy szczęścia, wszystko, co musimy zrobić, to nieznacznie zmienić kombinację transakcji, które wybraliśmy z mempool.

Główna różnica polega na tym, że nie musimy czekać. Zmieniając wybrane transakcje, możemy dowolnie resetować nasz zakres Nonce – dlatego możemy to robić tyle razy na sekundę, ile chcemy. Oczywiście wszystko to odbywa się algorytmicznie. W ten sposób nawet pule górnicze i górnicy na skalę przemysłową mogą testować nowe wartości skrótu w sposób ciągły bez żadnego przestoju.

Podsumujmy

Omówiliśmy wiele kwestii. Podsumujmy proces wydobywania Bitcoin / Blockchain, aby upewnić się, że niczego nie przegapiliśmy:

1. Skrót to cyfrowy odcisk palca dowolnego zbioru danych. Bloki w łańcuchu bloków są połączone kryptograficznie, ponieważ każdy z nich zawiera hash poprzedniego bloku w obliczaniu własnego skrótu. Manipulowanie danymi w dowolnym bloku spowoduje, że skróty jego i wszystkich kolejnych bloków będą nieważne.

2. Zagadka kryptograficzna wymaga od górników znalezienia skrótu mniejszego niż ustawiony cel, aby był on prawidłowy. Górnicy szukają poprawnego skrótu, wykonując iterację przez wyznaczony parametr w bloku zwanym Nonce. Kto pierwszy znajdzie prawidłowy hash, może dodać blok i odebrać nagrodę.

3. Zakres Nonce zawiera 4 miliardy możliwych wartości, co jest niewystarczające, aby znaleźć prawidłowy hash z wysokim stopniem pewności. Zresetowanie zakresu jednorazowego osiąga się poprzez dołączenie bieżącego znacznika czasu i zmianę konfiguracji transakcji zawartych w bloku.

Dołącz do nas

W marcu tego roku z sukcesem sfinansowaliśmy projekt Kickstarter, aby stworzyć najbardziej wszechstronny kurs online na temat łańcucha bloków, jaki kiedykolwiek widział świat.

Dziś ten kurs jest dostępny na żywo na Udemy.com, gdzie ponad 3000 studentów już zapisało się, aby opanować koncepcje Blockchain, Bitcoin, inteligentne kontrakty i nie tylko. Jeśli chcesz zostać pionierem Blockchain, dołącz do nas w tej niesamowitej przygodzie i przenieś swoją karierę na wyższy poziom:

Powyższy link zawiera już specjalny kupon dla naszych czytelników Medium. Użyj go, aby uzyskać 90% zniżki.