Proof of Work
Górnicy w sieci Bitcoina są bardzo ważni. Tylko oni mogą tworzyć kolejne bloki transakcji, które dodawane są do łańcucha. Proof of Work jest mechanizmem, który zabezpiecza sieć BTC i wymaga od górników wykonania pewnej pracy aby zapewnić, że wszyscy działają uczciwie i w zdecentralizowany sposób zgadzają się, czyli osiągają konsensus co do pewnych założeń.
Każdy górnik w sieci konstruuje swój blok w tym samym momencie. Ich bloki mogą się od siebie różnić, ale każdy chce dodać swój do sieci jako pierwszy. Bloki konstruuje się poprzez pobranie danej liczby transakcji z Mempool, czyli miejsca, w którym przebywają niepotwierdzone transakcje. Transakcje są łączone w pary i hashowane w strukturę drzewa Merkle, co następnie da jeden hasz (root hash, na obrazie poniżej "top hash"), który reprezentuje wszystkie transakcje w danym bloku.
Źródło
Wszyscy górnicy rywalizują ze sobą, aby dodać swój blok do sieci. Wygrywa ten, który najszybciej rozwiąże „kryptograficzną zagadkę”. To czym jest ta zagadka, wyjaśnimy później. Aby ją rozwiązać, wykorzystują mnóstwo mocy obliczeniowej, a co za tym idzie mnóstwo energii elektrycznej. Wykonują więc pewną pracę, za której utrzymanie muszą zapłacić. Gdy dany górnik rozwiąże zagadkę jako pierwszy wysyła swój blok do sieci.
Blok zwycięzcy zostaje przesłany do sieci i sprawdzony przez inne węzły. Jeśli jest poprawny, zostanie zaakceptowany, a zwycięzca otrzymuje nagrodę za blok, a także wszystkie opłaty z transakcji, które umieścił w swoim bloku.
W ten sposób zachęca się wszystkich górników do poprawnego działania. Jeśli próbują oszukiwać, lub popełnią błąd, ich blok zostanie odrzucony, a oni nie tylko nie otrzymają zapłaty, ale także poniosą koszty energii elektrycznej.
Hash
Hash jest to unikalny numer każdego z bloków. Jest on uzyskiwany poprzez funkcje haszującą (funkcja skrótu, funkcja mieszająca). Funkcja, która jest wykorzystywana przez Bitcoina to SHA-256.
Generuje ona ciąg znaków, liczbę zapisaną w systemie szesnastkowym, zawsze tej samej długości. Ma bardzo ważną właściwość. Dane wejście da nam zawsze to samo wyjście. Jakakolwiek, nawet najmniejsza zmiana sprawi, że otrzymamy całkowicie inny wynik. Co więcej, wyjście nigdy nie da nam wejścia, jest to jednokierunkowy mechanizm gwarantowany przez zawiłe równania matematyczne.
Każdy blok Bitcoina posiada swój unikalny hash. Ten hash reprezentuje Block Header, który bazuje na transakcjach w tym bloku, haszu poprzedniego bloku, nonce oraz kilku innych informacjach.
Przykładowy hash: 0000000000000000000060e32d547b6ae2ded52aadbc6310808e4ae42b08cc6a
Każda zmiana w jakimkolwiek poprzednim bloku, zmieni hash tego bloku, co z kolei zmieni hasze w kolejnych. Nawet najmniejsza zmiana w jednej transakcji w bloku, całkowicie zmieni hasze wszystkich kolejnych bloków (zmienią się dane wejścia, więc i wyjścia). Taki zmieniony blockchain byłby niepoprawny i sieć go nie zaakceptuje, ponieważ wszystkie węzły posiadają inną wersję łańcucha.
Kryptograficzna zagadka
Jak już wcześniej wspomnieliśmy, hash każdego bloku bazuje na transakcjach w tym bloku, haszu poprzedniego, a także nonce. Czym jest nonce? Jest to właśnie ta zagadka. Nonce to losowa liczba, którą górnik zgaduje.
Górnik zgaduje nonce, haszuje blok header, a następnie sprawdza, czy hash, który uzyskał, jest mniejszy niż tzw. Target, który określa aktualną trudność wydobycia kolejnego boku. Im mniejszy cel (Target), tym trudniej zgadnąć nonce. Dlaczego trudniej? Można sobie to wyobrazić na skali, rysujemy pionową linię, która obrazuje wszystkie możliwe liczby. Im niżej jest cel, tym mniejszy jest zakres, w który górnik musi trafić (hash musi zaczynać się od większej ilości zer, jeśli cel jest niższy). Cel jest dostosowywany do aktualnej mocy sieci tzw. hashrate. Im większa moc sieci, tym cel jest niżej, ponieważ górnicy zgadują nonce szybciej. Jest on tak dostosowany, aby nowy blok pojawiał się średnio co 10 minut, niezależnie od aktualnej mocy.
Jako że sieć Bitcoin jest coraz większa nie każdy może wykonywać obliczenia sam. Mniejsi górnicy dołączają do pul, gdzie łączą swoją moc i dzielą się nagrodami za blok.
Bezpieczeństwo
Za tym wszystkim stoi ogromna moc obliczeniowa. Dlatego blockchain Bitcoina jest tak bezpieczny. Każdy, kto chce w jakiś sposób oszukać system (np. próbuje wydawać podwójnie, ang. double-spend) nie próbuje oszukać ludzi, tylko matematykę. Dla pojedynczego oszusta jest to fizycznie niemożliwe. Koszty ataków 51%, czyli przejęcie większości hashrate sieci Bitcoina, są absurdalnie wysokie. Samo utrzymanie takiej mocy przez 1 godzinę kosztuje setki tysięcy dolarów (blisko miliona), a koszty sprzętu, który by to umożliwił, są tak wysokie, że właściwie nikt przy zdrowych zmysłach by się na to nie zdecydował, a tylko niewiele osób w ogóle jest na to stać.
Fork
Fork, czyli podział lub rozwidlenie łańcucha na dwie części. Są dwa rodzaje rozwidleń. Przypadkowe i celowe. Celowe dzielą się na Soft Forki i Hard Forki. W tym artykule jednak zajmiemy się tylko przypadkowymi.
Przypadkowy Fork dzieje się dość często i ma miejsce gdy dwóch górników rozwiąże zagadkę w tym samym czasie, nazwijmy ich A i B. Jako że każdy z nich pracuje nad blokiem w tym samym momencie, zdarza się, że uda im się dodać blok w tym samym czasie. Każdy z nich rozsyła swój blok do sieci. Jedne węzły otrzymają wcześniej blok górnika A, a inne B. Oba bloki są poprawne, więc sieć je akceptuje, ale w pewnym momencie dochodzi do „zgrzytu”. Dla części sieci blokchain A jest tym poprawnym a dla drugiej blockchain B. Dochodzi do tak zwanego hard fork.
W tym momencie czekamy na kolejny blok. Jeśli będzie on wydobyty na A to jego blok będzie poprawnym a jeśli na B to blockchain z blokiem B będzie tym właściwym. W takich sytuacjach ZAWSZE dłuższy blockchain wygrywa. Jeśli to na B zostaną wydobyte kolejne bloki, to wtedy blok A jest porzucany, a transakcje z niego cofane są do Mempool.
Właśnie z tego powodu wszędzie gdzie jest akceptowany Bitcoin, zanim coś otrzymamy w zamian, musimy poczekać na kilka potwierdzeń (zazwyczaj 3-6). Potwierdzenia to liczba bloków, które zostały zatwierdzone po danym bloku. W naszym przykładzie, 6 potwierdzeń oznacza, że 6 bloków zostało wydobytych po bloku B.
Podsumowanie
Czyli, co tak naprawdę jest tą pracą górnika? Jak wydobywany jest blok? Górnicy zgadują nonce i haszują swój blok do skutku, aż trafią, a następnie robią to samo od początku z kolejnym blokiem. Koparka to po prostu komputer, który wykonuje mnóstwo obliczeń. Mining zapewnia bezpieczeństwo sieci, sprawia, że próby oszustw stają się bardzo bolesne finansowo, a ataki praktycznie niemożliwe.