Aktualny czas:0:00Całkowity czas trwania:10:32
0 punktów energii
Uczysz się do testu? Skorzystaj z tych 8 lekcji na temat Pieniądze, bankowość i banki centralne.
Zobacz 8 lekcji
Transkrypcja filmu video (w języku angielskim)
Protokół proof of work (POW) jest narzędziem, pozwalającym użytkownikowi udowodnić, że wykonał znaczącą liczbę operacji obliczeniowych. Protokoły proof of work często przypominają łamigłówki. Mogą one być z sukcesem rozwiązywane, jednak w tym celu trzeba zaangażować dużą moc obliczeniową. Z drugiej strony, fakt wykonania obliczeń można łatwo zweryfikować. Weryfikacja zajmuje znacznie mniej czasu niż wspomniane obliczenia. Protokoły POW mają wiele różnych zastosowań. Przykładem jest elektroniczny system płatności Bitcoin, który wymusza zastosowanie systemu proof of work podczas tworzenia tak zwanego łańcucha bloków, złożonego z potwierdzonych transakcji. Oprócz niedawno powstałego systemu Bitcoin, system proof of work był już wcześniej wykorzystywany w innych celach. Przykładem wykorzystania systemu proof of work jest powstrzymywanie ataków typu denial of service, w skrócie DoS. Zastosowanie POW zmusza urządzenie chcące uzyskać dostęp do danej usługi sieciowej do rozwiązania określonego z góry problemu obliczeniowego, czyli łamigłówki proof of work. W przeciwnym razie nie uzyska dostępu do serwisu. Użyta w tym wypadku moc obliczeniowa ma spowodować osłabienie urządzenia chcącego uzyskać dostęp do usługi. Urządzenie, do którego wysyłana jest prośba o udzielenie dostępu może szybko sprawdzić, czy wymagane obliczenia zostały wykonane i tylko jeśli zostały wykonane udzieli takiego dostępu. Pierwotne zastosowanie protokołów proof of work, pierwsze o którym słyszałem, to utrudnianie wiadomościom spam dostępu do skrzynki mailowej. Pojęcie spamu jest wszystkim znane. Są to niepożądane wiadomości, które mogą pojawiać się w skrzynce bez wyrażenia przez nas chęci ich otrzymywania. Protokół POW może zostać powiązany z konkretnym emailem. Przypomina to przyklejenie znaczka pocztowego, jednak zamiast płacić za niego pieniędzmi płacimy poprzez cykle procesora. Legalny użytkownik, który wysyła niewielką liczbę wiadomości, nie ponosi z tego tytułu wielkich kosztów. Jest to niewielkie utrudnienie, bo wymagane czynności należy wykonać niewiele razy. Jest to przeszkoda, jednak ma swoje uzasadnienie. Dla spamera, który wysyła mnóstwo wiadomości, setki tysięcy albo miliony, uruchamianie tak wielu cykli procesora po wysłaniu każdej z nich może okazać się zbyt kosztowne. Pokrótce opisałem niektóre zastosowania protokołów POW. Teraz spróbuję zaprezentować ich zasady działania. Po pierwsze, aby zrozumieć ich istotę, należy wiedzieć, że zwykle działają w powiązaniu z konkretnym łańcuchem zapytań. Oznaczmy łańcuch zapytań literą "c". "C" jest naszym łańcuchem zapytań. Osoba chcąca złamać protokół będzie próbowała znaleźć odpowiadający mu dowód, ściśle powiązany z danym łańcuchem zapytań. Będzie to swoista odpowiedź powiązana z zapytaniami, którą charakteryzuje ściśle określona matematyczna właściwość. Jak wcześniej wspomnieliśmy mówiąc o spamie, łańcuch zapytań może stanowić wiadomość email. Będzie to więc konkretne zadanie do wykonania. Należy więc znaleźć łańcuch odpowiedzi. Oznaczmy łańcuch odpowiedzi literą "r". Albo oznaczmy go literą "p". Od słowa "proof", z angielskiego "dowód". Będzie to dowód, inaczej mówiąc odpowiedź. Należy więc znaleźć taki dowód bądź łańcuch odpowiedzi, który przy połączeniu z łańcuchem zapytań i zastosowaniu funkcji haszującej, na przykład SHA-256 lub podobnej, Kiedy połączymy łańcuch zapytań z łańcuchem odpowiedzi, i zastosujemy funkcję haszującą, czyli przekształcenia matematyczne tworzące funkcję haszującą, chcemy znaleźć taki łańcuch dowodów, po zastosowaniu którego rozwiązanie funkcji haszującej będzie posiadać pożądaną cechę. Pierwszy duży blok cyfr tego rozwiązania ma składać się z samych zer. Może to być na przykład pierwsze 30-40 cyfr. Pozostałe cyfry mogą być różne. Próbujemy znaleźć taki łańcuch dowodów, który jest powiązany z łańcuchem zapytań, a związek między nimi wynika z powiązania z konkretną funkcją haszującą. Łańcuch dowodów uwzględnia to, jaki będzie wynik funkcji haszującej kiedy łańcuch ten zostanie powiązany z łańcuchem zapytań. Jeżeli mamy do czynienia z dobrą kryptograficzną funkcją haszującą, jedynym sposobem, aby znaleźć odpowiedni łańcuch dowodów jest wypróbowanie wielu wariantów. Należy wypróbować wiele różnych łańcuchów dowodów aby znaleźć ten odpowiedni. Jeśli szukamy wyniku rozpoczynającego się od czterdziestu zer, musimy wykonać mniej więcej dwa do potęgi czterdziestej kroków. Dwa do potęgi czterdziestej razy zastosować funkcję haszującą. Jeśli wypróbujemy taką liczbę łańcuchów dowodów, prawdopodobnie znajdziemy ten odpowiedni. Aby lepiej to zobrazować, będzie to wymagać około tryliona prób. Haszując trylion różnych łańcuchów dowodów prawdopodobnie znajdziemy jeden łańcuch z czterdziestoma zerami na początku. Niekiedy będzie to wymagało mniejszej ilości prób, innym razem nieco większej. Możemy mieć szczęście, albo problemy. Średnio trzeba jednak przeprowadzić około tryliona prób aby znaleźć łańcuch rozpoczynający się od czterdziestu zer. Nie jest to łatwe, ale z pewnością możliwe. Aby uświadomić sobie dlaczego tak trudno jest znaleźć rozwiązanie w przypadku POW i dlaczego trzeba stosować metodę prób i błędów, trzeba uświadomić sobie, że wynik funkcji haszującej jest właściwie przypadkowy. Wygląda on jak wynik serii rzutów monetą. To tak jak byśmy rzucali monetą i kiedy wyrzucimy orła wpisywali zero, a gdy wypadnie reszka, wpisujemy jedynkę. Problem wygląda więc w ten sposób: "Jeśli rzucę czterdziestoma monetami, jakie mam szanse na wyrzucenie orła czterdzieści razy z rzędu?" Prawdopodobieństwo takiego zdarzenia jest bardzo małe, ale jednak istnieje. Jeśli weźmiemy czterdzieści monet i rzucimy nimi około tryliona razy, możemy się spodziewać, że podczas jednej z tych prób na wszystkich monetach wypadnie orzeł. Raz na trylion prób. Istotną rzeczą związaną z systemem POW jest to, że ilość wymaganych prób może być podnoszona lub zmniejszana. Na przykład, ktoś chciałby, aby druga strona wykonała więcej skomplikowanych obliczeń w celu znalezienia prawidłowego łańcucha dowodów. Innymi słowy, zwiększyć ilość pracy, wykonanie której ma zostać udowodnione. W takim wypadku można zwiększyć wymaganą liczbę zer na początku rozwiązania. Gdy dodajemy jedno zero podwajamy średnią moc obliczeniową wymaganą do znalezienia rozwiązania. Tak jakbyśmy chcieli, rzucając jedną monetą więcej uzyskać kolejnego orła. Wymaga to podwojenia liczby rzutów monetami. Jeśli rzucałbym 41 monetami i chciał uzyskać orła 41 razy, musiałbym wykonać dwa razy większą pracę niż w przypadku 40 monet. Analogicznie, jeśli odejmujemy jedno zero od pożądanego wyniku zmniejszamy potrzebną moc obliczeniową mniej więcej o połowę. Na przykład, jeśli chciałbym uzyskać 39 zer na początku musiałbym wykonać mniej więcej dwa razy mniej rzutów monetą niż w przypadku 40 zer na początku. Przydatny jest fakt, że kiedy już znajdziemy rozwiązanie, powiedzmy, że ktoś metodą prób i błędów znajduje odpowiedni łańcuch dowodów, bardzo łatwo jest potwierdzić, że jest to rzeczywiście poprawny łańcuch. W tym celu należy użyć łańcucha zapytań oraz znalezionego łańcucha dowodów i zastosować do nich funkcję haszującą. Na przykład, jeśli ktoś znalazł określony łańcuch... nazwijmy go "p prime" ...należy powiązać łańcuchy zapytań i p prime i wstawić je do funkcji haszującej. Należy sprawdzić, czy pierwsze czterdzieści cyfr wyniku to zera. Trzeba więc tylko raz zastosować funkcję haszującą do powiązanych łańcuchów c i p prime żeby zweryfikować, czy określona ilość pierwszych cyfr wyniku to zera. Jeśli wynik zawiera wymaganą liczbę zer, można uznać, że POW jest poprawny ponieważ taka sytuacja dowodzi, że druga strona spędziła dużo czasu, podjęła liczne próby, aby znaleźć taki łańcuch p prime, że powiązanie c i p prime po zastosowaniu funkcji haszującej daje określoną liczbę zer. Jak widać, system ten jest dość prosty, ale jednocześnie dobrze przemyślany. Chodzi o znalezienie łańcucha dowodów, który jest ściśle matematycznie powiązany z oryginalnym łańcuchem zapytań. Mam nadzieję, że ten film wyjaśnił ogólną zasadę działania protokołów proof of work.