Wydobywanie to rywalizacja o dodanie następnego bloku do historii Bitcoina. Górnicy zbierają transakcje w bloki i wykonują obliczenia, szukając wyniku, który inni mogą łatwo sprawdzić. Przyjęty blok może przynieść górnikowi nowe bitcoiny oraz opłaty za uwzględnione płatności. Nie daje mu jednak prawa do ustalania reguł: pozostałe komputery w sieci samodzielnie sprawdzają propozycję i odrzucają nieprawidłowe bloki.
Wydobywanie nie polega na wykopywaniu monet ukrytych w komputerze. Chodzi o zaproponowanie następnego prawidłowego bloku: pakietu transakcji połączonego z dotychczasową historią. Górnik szuka dla swojej propozycji trudnego do uzyskania wyniku obliczeń. Gdy go znajdzie, wysyła blok innym. Sprawdzają oni zarówno obliczenia, jak i transakcje, a następnie na podstawie tych samych reguł ustalają, czy mogą go przyjąć. Nowe bitcoiny są częścią wynagrodzenia, lecz ich emisja nie jest jedynym celem wydobywania. Dla użytkownika najważniejsze jest przejście od płatności oczekującej do zapisanej w historii, którą można zweryfikować. [1] [2]
Wysłana płatność najpierw rozchodzi się między węzłami. Węzeł to komputer uczestniczący w sieci Bitcoin, a jego mempool jest lokalnym zbiorem niepotwierdzonych transakcji. Nie istnieje jedna kolejka zarządzana dla wszystkich. Górnik składa blok kandydujący z dostępnych transakcji, biorąc pod uwagę opłaty i ograniczoną przestrzeń. Jeżeli transakcja wydaje wyjście innej, jeszcze niepotwierdzonej transakcji, ta wcześniejsza musi znaleźć się przed nią w bloku. Polecenie getblocktemplate dostarcza danych do budowy bloku, w tym informacji o takich zależnościach. Wybór ograniczają też limity wagi bloku i kosztu sprawdzania podpisów. [1]
Pierwsza transakcja bloku nazywa się Coinbase Transaction. Nie chodzi o konto na giełdzie o tej samej nazwie: jest to szczególna transakcja, za pomocą której górnik przypisuje sobie dozwoloną nagrodę. Łączy ona subsydium blokowe, czyli nowo utworzone bitcoiny, z opłatami pozostałych transakcji w bloku. Opłata jest różnicą wartości wejść i wyjść, więc tylko przenosi istniejące bitcoiny. Jeżeli górnik przyzna sobie za dużo, węzły odrzucą cały blok. Nawet prawidłowej nagrody nie można od razu wydać: wyjście Coinbase Transaction wolno wykorzystać najwcześniej w bloku o wysokości większej o 100. [2]
Wyobraź sobie loterię, w której nikt nie zna zwycięskiego wyniku z góry, ale po ogłoszeniu każdy szybko go rozpozna. Górnicy obliczają hash, cyfrowy odcisk danych, który można też odczytać jako dużą liczbę. W przypadku bloku Bitcoina liczba ta musi być mniejsza lub równa granicy nazywanej targetem. To wymóg Proof of Work. Dokładniej: funkcję haszującą SHA-256 stosuje się dwukrotnie do 80-bajtowego nagłówka bloku zawierającego jego podstawowe dane zbiorcze. Nie jest to szukanie rozwiązania dla każdej płatności. Zmienia się dane do obliczeń i sprawdza, czy nowy wynik spełnia warunek. [3]
ASIC to układ zaprojektowany do konkretnego zadania obliczeniowego; układ do wydobywania Bitcoina wielokrotnie wykonuje podwójne SHA-256 na wariantach 80-bajtowego nagłówka. Jednym ze zmienianych pól jest nonce, czterobajtowa liczba w nagłówku. Jej zakres jest skończony. Po jego wyczerpaniu można zmienić extra nonce, dodatkowe dane w Coinbase Transaction. Zmienia to Merkle Root, wspólny cyfrowy odcisk transakcji, a następnie nagłówek, otwierając nowe warianty do sprawdzenia. Żadna nieudana próba nie przybliża urządzenia do pewnej wygranej. Także dziesięć minut nie jest obietnicą dla jednego górnika, lecz docelową średnią całej sieci. [3]
Górnicy mają powód, by tworzyć prawidłowe bloki: odrzucona propozycja nie daje nagrody, którą można wykorzystać. Ich kontrola nie zastępuje jednak kontroli innych. Full Node to komputer, który sam sprawdza reguły Bitcoina, w tym transakcje, nagrodę i Proof of Work. Odrzuci na przykład blok tworzący więcej bitcoinów, niż wolno, nawet gdy górnik włożył w niego znaczną moc obliczeniową. Dzięki własnemu węzłowi użytkownik nie musi wierzyć górnikowi na słowo, że blok jest poprawny. [2] [4]
Samotny górnik może bardzo długo czekać na sukces. Mining Pool pozwala dzielić pracę i przychody między uczestników. Aby oszacować wkład urządzeń, operator przyjmuje także wyniki spełniające łatwiejszy cel wewnętrzny. Taki wynik nazywa się share. Większość wyników share nie wystarcza sieci Bitcoin; tylko niektóre spełniają też jej ostrzejszy warunek. Wypłaty zależą od wybranego modelu rozliczeń, uzgodnionych warunków i opłat puli. Praca w puli nie daje więc górnikom prawa do zmiany reguł Bitcoina. Operator nie musi też posiadać podłączonych urządzeń. Jej udział w znalezionych blokach sam w sobie nie dowodzi własności sprzętu. [3]
Po udanym obliczeniu cały blok musi jeszcze dotrzeć do pozostałych węzłów. Dwóch górników może niemal jednocześnie znaleźć różne prawidłowe bloki z tym samym poprzednikiem. Przez chwilę część sieci zna wtedy jedną gałąź, a reszta drugą. Węzły podążają za prawidłową gałęzią o największej skumulowanej pracy, czyli sumie pracy przypisanej jej blokom. Następny znaleziony blok może przechylić wybór na korzyść jednej gałęzi. Blok z porzuconej gałęzi może sam być prawidłowy, ale jego nagroda nie wejdzie do aktywnej historii. Dlatego ważne są szybkie rozsyłanie wyników i zaprzestanie pracy nad nieaktualną propozycją po otrzymaniu nowego wierzchołka łańcucha. [4]
Hashrate określa liczbę prób haszowania na sekundę. Udział górnika w łącznej mocy sieci pomaga oszacować częstość sukcesów, ale nie gwarantuje regularnego przychodu. Przychód nie jest też zyskiem: trzeba odjąć koszty prądu, chłodzenia, urządzeń, serwisu i opłat puli. Przestoje mogą dodatkowo pogorszyć wynik. Zwracaj też uwagę na jednostki: TH/s mierzy wydajność obliczeniową, a waty pobieraną moc elektryczną. Wydajne urządzenie może przynosić straty przy drogim prądzie, a pojedynczy szczęśliwy wynik niewiele mówi o opłacalności w długim okresie. [3]
Na własnym węźle możesz porównać propozycję z getblocktemplate z nagłówkiem, Coinbase Transaction i zwykłymi transakcjami znalezionego bloku. Polecenia takie jak getblocktemplate należą do technicznego interfejsu węzła; nie są usługą, której trzeba powierzać pieniądze. submitblock przekazuje gotowy blok do sprawdzenia przez węzeł. Lokalne przyjęcie nie gwarantuje jednak, że blok na stałe pozostanie w historii sieci. W puli rozróżniaj zgłoszone wyniki share, przyjęte bloki Bitcoina i faktycznie wypłacone kwoty. Razem z kosztami działania pokazują ekonomiczny wynik wydobywania. [5]
Pełniejszy obraz uzyskasz, czytając to hasło razem z Proof of Work, Difficulty Adjustment, Block Subsidy, Transaction Fees, Mempool. Do tego hasła prowadzą również odsyłacze z Proof of Work, Difficulty Adjustment, Block Subsidy, Halving.