Czym Jest Proof of Work (PoW)?
Strona Główna
Artykuły
Czym Jest Proof of Work (PoW)?

Czym Jest Proof of Work (PoW)?

Średnio zaawansowany
Opublikowane Dec 6, 2018Zaktualizowane Apr 18, 2024
10m

Najważniejsze informacje

  • Proof of Work (PoW) to mechanizm konsensusu stworzony po to, aby zapobiegać podwójnemu wydatkowaniu w systemach płatności cyfrowych.

  • PoW to bardzo ważna część procesu kopania, który polega na dodawaniu nowych bloków transakcji do sieci blockchain i tworzeniu nowych jednostek kryptowaluty.

  • Protokół PoW służy do zabezpieczania sieci blockchain i danych w przypadku bitcoina oraz wielu innych kryptowalut.

Wprowadzenie

Krótko mówiąc, Proof of Work (PoW) to mechanizm konsensusu stworzony po to, aby zapobiegać podwójnemu wydatkowaniu w systemach płatności cyfrowych. Protokół PoW służy do zabezpieczania sieci blockchain i danych w przypadku bitcoina oraz wielu innych kryptowalut. Takie mechanizmy są często nazywane algorytmami konsensusu lub mechanizmami konsensusu, ponieważ zasada ich działania polega na tym, że wiele stron osiąga konsensus bez konieczności ufania sobie nawzajem.

Mechanizm Proof of Work był pierwszym stworzonym algorytmem konsensusu i nadal jest jednym z najważniejszych obok Proof of Stake (PoS). Mechanizm PoW zaprezentował w białej księdze Bitcoina z 2008 roku Satoshi Nakamoto, ale sama technologia powstała dużo wcześniej.

HashCash Adama Backa to jeden z pierwszych przykładów algorytmu Proof of Work z czasów przed kryptowalutami. Ponieważ zmusza nadawców do wykonywania pewnej drobnej ilości obliczeń przed wysłaniem wiadomości e-mail, odbiorcy są w stanie ograniczyć spam. Takie obliczenia nie kosztują prawowitego nadawcę praktycznie nic, ale szybko się kumulują, jeżeli ktoś wysyła maile masowo.

Czym jest podwójne wydatkowanie?

Podwójne wydatkowanie ma miejsce przy wielokrotnym wydawaniu tych samych środków. Termin ten stosuje się prawie wyłącznie w kontekście pieniądza cyfrowego – w końcu trudno byłoby dwa razy wydać tę samą fizyczną gotówkę. 

Kiedy dziś płacisz za kawę, przekazujesz gotówkę kasjerowi, który najczęściej zamyka ją w kasie. Nie możesz pójść do kawiarni po drugiej stronie ulicy i zapłacić za kolejną kawę tym samym banknotem. Jednak w cyfrowych systemach gotówkowych istnieje taka możliwość. 

Na pewno zdarzyło Ci się kiedyś skopiować plik na komputerze przy użyciu poleceń kopiuj i wklej. Można też łatwo wysłać ten sam plik pocztą elektroniczną do dziesiątek osób. Ponieważ pieniądz cyfrowy to tylko dane, trzeba zapobiegać ich podwójnemu wydatkowaniu, tj. kopiowaniu i wydawaniu tych samych jednostek w różnych miejscach. Cyfrowy system płatności, który nie zapobiega podwójnemu wydatkowaniu, w mgnieniu oka upada.

Bardziej szczegółowe informacje na temat podwójnego wydatkowania znajdziesz w artykule Wyjaśnienie podwójnego wydatkowania.

Dlaczego mechanizm Proof of Work jest niezbędny?

Jeżeli masz za sobą lekturę artykułu o technologii blockchain, wiesz, że użytkownicy kryptowalut nieustannie rozgłaszają w sieci transakcje. Transakcje te nie są jednak od razu uznawane za ważne. Ma to miejsce dopiero po ich potwierdzeniu i dodaniu do blockchain.

Np. blockchain Bitcoina funkcjonuje jako publiczna baza danych transakcji (ledger), do której ma dostęp każdy użytkownik. Można to sobie wyobrazić w ten sposób: Prowadzisz wraz z trójką znajomych zeszyt, w którym zapisujecie swoje transakcje w bitcoinie. Za każdym razem, kiedy któreś z Was chce zrobić przelew na dowolną wartość, zapisujecie to:

Alice płaci Bobowi 5 BTC; Bob płaci Carol 2 BTC itd.

Ale za każdym razem, kiedy realizujecie transakcję, odnosicie się do transakcji, z której te środki pochodzą. Gdyby więc Bob zapłacił Carol 2 BTC, faktyczny wpis wyglądałby następująco: 

Bob płaci Carol 2 BTC, które pochodzą z wcześniejszej transakcji z Alice.

W ten sposób jesteśmy w stanie kontrolować przepływ jednostek BTC. Jeżeli Bob podejmie próbę realizacji kolejnej transakcji przy użyciu tych samych 2 BTC, które właśnie wysłał Carol, wszyscy od razu się o tym dowiedzą. Grupa nie pozwoli na dodanie transakcji do zeszytu, ponieważ te 2 BTC zostały już wydane.

Takie rozwiązanie może się zatem sprawdzać w małej grupie. Wszyscy się znają, więc prawdopodobnie ustalą, kto ma wpisywać transakcje do zeszytu. Ale co jeżeli chcemy mieć grupę 10 000 uczestników? Pomysł z zeszytem się dobrze nie skaluje, ponieważ nikt nie chce powierzać pieczy nad zeszytem komuś nieznajomemu.

I tu pojawia się mechanizm Proof of Work. Daje gwarancję, że użytkownicy nie będą wydawać pieniędzy, których nie mają prawa wydawać. Poprzez połączenie teorii gier i kryptografii algorytm PoW umożliwia każdemu aktualizację blockchaina zgodnie z zasadami systemu.

Jak działa PoW?

Wyobraźmy sobie, że nasz zeszyt z powyższego przykładu to sieć blockchain. Nie dodajemy jednak transakcji kolejno – zamiast tego wrzucamy je razem w bloki. Rozgłaszamy transakcje w sieci, a następnie użytkownicy tworzący blok włączają je do bloku kandydującego. Transakcje zostają uznane za ważne dopiero wtedy, kiedy ich blok kandydujący stanie się blokiem potwierdzonym, co będzie oznaczać, że został dodany do bazy danych sieci blockchain.

Zatwierdzanie transakcji i dołączanie nowych bloków to tzw. górnictwo. Jest kosztowne i trudne, ale może również dawać satysfakcję. Nagroda blokowa składa się z opłat transakcyjnych od użytkowników i nowych bitcoinów tworzonych przez protokół. 

W mechanizmie Proof of Work górnik (użytkownik tworzący blok) musi inwestować zasoby, np. energię elektryczną i moc obliczeniową, w hashowanie danych swojego bloku kandydującego dopóki nie uda się znaleźć rozwiązania zagadki.

Hashowanie danych bloku polega na przepuszczaniu go przez funkcję skrótu w celu wygenerowania skrótu bloku. Skrót bloku pełni funkcję „odcisku palca” – jest identyfikatorem danych wejściowych i w przypadku każdego bloku jest inny.

Innymi słowy, aby utworzyć prawidłowy skrót, górnik musi zweryfikować i zebrać oczekujące transakcje, zorganizować je w blok kandydujący i przepuścić dane bloku przez funkcję skrótu. Jeżeli uda mu się znaleźć prawidłowy skrót do swojego bloku kandydującego, rozgłasza go w sieci, dodaje do blockchaina i odbiera nagrody za kopanie.

Kiedy górnik rozgłasza swój blok kandydujący i skrót w sieci, inni uczestnicy sieci powtarzają haszowanie, aby sprawdzić, czy dane wyjściowe są faktycznie prawidłowe. 

O ile do znalezienia prawidłowego skrótu konieczne są niezliczone próby hashowania, potwierdzenie, czy wygenerowany skrót jest poprawny to drobnostka. Trzeba tylko przesłać te same dane wejściowe (dane bloku) za pomocą funkcji skrótu i sprawdzić, czy dane wyjściowe są takie same.

W przypadku algorytmu Proof of Work trzeba podać dane, których skrót spełnia określone warunki. Z tym że nie wiadomo, jak do tego dojść. Jedyna możliwość to przepuścić dane przez funkcję skrótu i sprawdzić, czy spełniają warunki. Jeżeli nie, trzeba je nieznacznie zmienić, aby uzyskać inny skrót. Zmiana nawet jednego znaku w danych daje zupełnie inny wynik, więc nie da się przewidzieć, jakie mogą być dane wyjściowe.

W rezultacie aby utworzyć blok trzeba trochę pospekulować. Zazwyczaj zbiera się informacje o wszystkich transakcjach, które mają zostać dodane, oraz inne ważne dane, a następnie hashuje wszystko razem. Ponieważ jednak dane się nie zmieniają, trzeba dodać informację, która jest zmienna. W przeciwnym razie jako wynik zawsze wychodzi ten sam skrót. Te zmienne dane to tzw. wartość jednorazowa. Jest to liczba, którą zmieniamy przy każdej próbie, dzięki czemu za każdym razem wychodzi nam inny skrót.

Podsumowując: kopanie to zbieranie danych w sieci blockchain oraz ich hashowanie wraz z wartością jednorazową do chwili odnalezienia określonego skrótu. Jeżeli uda się odnaleźć skrót, który będzie spełniać warunki określone przez protokół, otrzymujemy prawo do rozgłoszenia nowego bloku w sieci. Wówczas pozostali uczestnicy sieci uaktualniają swoje blockchainy o nowy blok.

W przypadku aktualnie największych kryptowalut warunki niezwykle trudno spełnić. Im wyższa moc haszowania sieci, tym trudniej znaleźć prawidłowy skrót. Ma to dawać gwarancję, że wyszukiwanie bloków nie będzie przebiegać zbyt szybko.

Łatwo sobie wyobrazić, że próba odgadnięcia ogromnej liczby skrótów na własnym komputerze może być kosztowna. Marnujemy cykle obliczeniowe i prąd. Ale jeżeli odnajdziemy prawidłowy skrót, protokół nagradza nas kryptowalutą.

Podsumujmy, co wiemy do tej pory:

  • Górnictwo jest trudne i kosztowne, ale zapewnia bezpieczeństwo sieci.

  • Górnicy, którym uda się wyprodukować poprawny blok, dostają w nagrodę nowo wyemitowane kryptowaluty, a także opłaty transakcyjne.

  • Wygenerowanie prawidłowego skrótu zajmuje trochę czasu, ale inni użytkownicy mogą łatwo sprawdzić jego poprawność, powtarzając hashowanie.

No dobrze. Ale co jeżeli spróbujemy oszukać system? Kto nam zabroni umieścić w bloku kilka nieprawidłowych transakcji i utworzyć prawidłowy skrót?

W tym miejscu pojawia się kryptografia klucza publicznego. Nie będziemy się tutaj zagłębiać w szczegóły, ale w artykule pt. Czym jest kryptografia klucza publicznego? znajdziesz kompleksowe wyjaśnienie. Krótko mówiąc, jest kilka zgrabnych sztuczek kryptograficznych, dzięki którym każdy użytkownik jest w stanie zweryfikować, czy dana osoba ma prawo do przesłania środków, które próbuje wydać.

Kiedy tworzysz transakcję, podpisujesz ją. Każda osoba w sieci może porównać Twój podpis z kluczem publicznym i sprawdzić, czy są zgodne. Sprawdzi również, czy rzeczywiście możesz wydawać swoje środki i czy suma Twoich nakładów nie przewyższa sumy wyjściowej (tj. czy nie wydajesz więcej niż masz).

Sieć automatycznie odrzuci każdy blok, który będzie zawierać nieprawidłową transakcję. Kosztowna jest nawet sama próba oszukania systemu. Będziesz marnować własne zasoby bez żadnej nagrody.

Na tym polega piękno mechanizmu Proof of Work: dzięki niemu oszukiwanie jest drogie, a uczciwe działanie się opłaca. Każdy racjonalnie myślący górnik dąży do zysku z inwestycji, więc można się spodziewać, że będzie działał w sposób, który z większym prawdopodobieństwem przyniesie dochody.

Proof of Work (PoW) a Proof of Stake (PoS)

Jest wiele algorytmów konsensusu oprócz PoW, ale jednym z najpopularniejszych jest mechanizm Proof of Stake (PoS). Koncepcja wywodzi się z roku 2011 i została wdrożona w sieci Ethereum oraz kilku innych protokołach.

W systemach Proof of Stake górników zastępują walidatorzy. Nie ma tu kopania ani wyścigu o to, kto pierwszy odgadnie skrót. Wybór użytkowników jest bowiem losowy – użytkownik wybrany musi zaproponować (czy też opracować) blok. Jeżeli blok będzie ważny, należy się nagroda złożona z opłat od transakcji danego bloku.

Nie można jednak wybrać dowolnego użytkownika – protokół dokonuje wyboru według wielu czynników. Aby się zakwalifikować, uczestnicy muszą zablokować stawkę, czyli z góry określoną kwotę natywnej waluty sieci blockchain. Stawka pełni funkcję podobną do kaucji sądowej. Oskarżeni wykładają dużą sumę pieniędzy, co ma ich zniechęcić do unikania procesu, i analogicznie walidatorzy zamrażają stawkę, co ma ich zniechęcić do oszukiwania. Jeżeli będą postępować nieuczciwie, ich stawka (lub jej część) przepada.

Proof of Stake ma pewne przewagi nad protokołem Proof of Work. Najbardziej widoczną jest mniejszy ślad węglowy – ponieważ w PoS nie trzeba tworzyć farm górniczych o dużej mocy, zużycie prądu stanowi tylko ułamek nakładów energetycznych potrzebnych w przypadku PoW. 

PoS nie ma jednak takiej renomy jak PoW. Wprawdzie może się wydawać, że to marnotrawstwo, ale górnictwo to jedyny algorytm konsensusu, który sprawdza się w boju od ponad dekady. Od chwili uruchomienia protokół PoW sieci Bitcoin zabezpiecza transakcje o wartości bilionów dolarów. Aby dało się z całą pewnością stwierdzić, czy PoS jest mu w stanie dorównać pod względem bezpieczeństwa, trzeba odpowiednio przetestować staking w dłuższej perspektywie.

Wnioski Końcowe

Mechanizm Proof of Work był pierwotnym rozwiązaniem problemu podwójnego wydatkowania i okazał się niezawodny oraz bezpieczny. Bitcoin stanowi dowód na to, że aby zapobiegać dwukrotnemu wydawaniu tych samych środków, nie są potrzebne podmioty scentralizowane. Dzięki sprytnemu wykorzystaniu kryptografii, funkcji skrótu i teorii gier uczestnicy zdecentralizowanego ekosystemu mogą uzgadniać stan finansowej bazy danych.

Dalsza Lektura

Wyłączenie odpowiedzialności: Niniejsza treść jest prezentowana użytkownikowi w stanie jakim jest, wyłącznie w celach ogólnoinformacyjnych i edukacyjnych, bez jakichkolwiek gwarancji ani zapewnień. Nie należy jej interpretować jako porady finansowej, prawnej ani innego rodzaju porady specjalistycznej. Nie ma ona również charakteru zachęty do zakupu jakiegokolwiek konkretnego produktu ani usługi. Użytkownik powinien zasięgnąć własnej porady u odpowiednich zawodowych doradców. Jeżeli artykuł jest napisany przez osobę z zewnątrz, należy pamiętać, że wyrażone poglądy są poglądami tej osoby i nie muszą odzwierciedlać poglądów Akademii Binance. Więcej informacji można znaleźć w naszym pełnym wyłączeniu odpowiedzialności tutaj. Ceny aktywów cyfrowych bywają zmienne. Możliwe, że wartość Twojej inwestycji spadnie lub wzrośnie i nie odzyskasz zainwestowanej kwoty. Ponosisz wyłączną odpowiedzialność za swoje decyzje inwestycyjne, a Akademia Binance nie ponosi odpowiedzialności za ewentualne straty. To nie jest porada z zakresu finansów, prawa ani innej dziedziny. Aby uzyskać więcej informacji, zapoznaj się z naszymi Warunkami Użytkowania i Ostrzeżeniem o Ryzyku.