Blockchain – o co tyle szumu?

User avatar Bartosz Palewicz

Zainteresowanie tematem kryptowalut i technologii zdaje się powoli maleć, jednak jest to wciąż fascynujące zagadnienie, które warto zgłębić. Poruszę dzisiaj temat technologii blockchain, bez której kryptowaluty nie mogłyby istnieć w takiej formie, w jakiej je znamy.

Blockchain to rozproszona, zdecentralizowana baza danych, wykorzystująca model komunikacji peer to peer. W praktyce oznacza to, że nie ma jednego, centralnego punktu, w którym zbierane i przechowywane są informacje, a wszystkie połączenia przeprowadzane są bezpośrednio pomiędzy użytkownikami. Taki model sprawia, że niemożliwe jest kontrolowanie czy zmienianie na własny użytek danych przechowywanych w blockchain’ie.

Zawartość bloku

Aby łatwiej wyobrazić sobie jak wygląda struktura blockchain’a, możemy wyobrazić sobie publiczny rejestr transakcji wykonywanych przez użytkowników, gdzie linijka po linijce zapisana jest historia każdej płatności: kto płaci, ile płaci i komu mają zostać dostarczone pieniądze. Co więcej, każdy może zobaczyć ten rejestr i wprowadzać tam swoje płatności. Jednak bez odpowiednich zabezpieczeń byłoby to bardzo ryzykowne, ktoś nieuczciwy mógłby dopisać korzystną dla siebie transakcję, która nigdy nie miała miejsca, okradając tym samym niewinnego użytkownika. Tutaj z pomocą przychodzi nam podpis elektroniczny.

Podpis elektroniczny

Na pierwszy rzut oka coś takiego jak podpis elektroniczny nie powinien być w ogóle możliwy, przecież jeśli przyjmiemy za nasz podpis jakiś ciąg bitów czy też znaków, to ktoś niepowołany z łatwością może przepisać lub skopiować taki podpis, przez co nie da on gwarancji bezpieczeństwa, jednak z małą pomocą kryptografii i kilku sprytnych sztuczek można zamienić zwykły ciąg bitów w podpis dużo bardziej bezpieczny niż jakakolwiek inna forma autoryzacji.

...

Wszystko zaczyna się od dwóch kluczy: publicznego oraz prywatnego, które posiada każdy użytkownik. Do pierwszego z nich dostęp ma każdy i służy do sprawdzania autentyczności podpisanej cyfrowo wiadomości, natomiast do klucza prywatnego dostęp ma tylko jego właściciel i za jego pomocą może podpisać dowolny dokument. W prawdziwym świecie twój podpis zawsze wygląda tak samo, nieważne pod czym go składasz, podpis cyfrowy natomiast okazuje się być o tyle bezpieczniejszy, że różni się w zależności od dokumentu, który chcemy podpisać i zmiana treści wiadomości, którą podpisaliśmy całkowicie unieważni podpis. A więc już wiemy, że na podstawie wiadomości oraz klucza prywatnego generujemy podpis, który tylko my możemy stworzyć (tylko my mamy dostęp do naszego klucza) oraz który nie może być wykorzystany w do podpisu innych dokumentów (generowanie go opiera się na podpisywanej wiadomości). Osoba, która chce sprawdzić autentyczność naszego podpisu wykorzystując wiadomość oraz nasz klucz publiczny może na tyle rozkodować podpis, aby upewnić się, że został on złożony pod tą wiadomością przez właściciela tego konkretnego klucza publicynego. Dla danego dokumentu i klucza publicznego jest tylko jeden możliwy podpis, a biorąc pod uwagę fakt, że każdy podpis ma 256 bitów możliwe jest 2256 jego kombinacji. Algorytmy szyfrujące wykorzystane w podpisie cyfrowym działają tylko w jedną stronę, przez co niemożliwe jest pozyskanie klucza prywatnego z samego podpisu, a więc najlepszą strategią na podrobienie czyjegoś podpisu jest zgadywanie po kolei wszystkich możliwych kombinacji klucza, co przy jego długości jest praktycznie niemożliwe.

Rozproszona baza danych

Model bazy peer to peer ma swoje niewątpliwe zalety, jednak nie jest bez wad. Skoro każda osoba w sieci ma swoją kopię bazy danych, to może dojść do sytuacji, gdzie poszczególne kopie różnią się między sobą. Rozwiązanie tego problemu nie należy do prostych ani intuicyjnych, jednak jest bardzo skuteczne. Każdy użytkownik, podczas gdy otrzymuje od kogoś innego informacje na temat jego bazy danych, uznaje za prawidłową tą wersję, która ma włożone w siebie najwięcej pracy. Aby zrozumieć co to w praktyce oznacza trzeba najpierw wiedzieć jak zbudowany jest łańcuch bloków. Każdy blok składa się z części głównej, w której zapisane są transakcje, a kończy się pewną specyficzną liczbą. Liczba ta musi spełniać określony warunek, gdy zostaie przetworzona przez algorytm szyfrujący SHA256 (Secure Hash Algorithm) - musi zaczynać się od pewnej liczby zer (liczba zer zmienia się co jakiś czas). Jest to o tyle trudne że algorytm ten działa tylko w jedną stronę, co oznacza, że najlepszym sposobem na znalezienie takiej liczby jest zgadywanie i sprawdzanie kolejnych liczb z nadzieją, że w końcu się trafi. Ludzie z całego świata metodą prób i błędów poszukują takich liczb, a jeśli komuś się uda może zamknąć blok i uznać go za zakończony. Nagrodą dla szczęśliwej osoby, która zamyka blok jest możliwość dopisania do bloku transakcji która wypłaca tej osobie określoną sume kryptowaluty, nie bierze tych pieniędzy od innego użytkownika, ale wytwarza je. Na sam początek bloku daje się liczbę zamykającą z poprzedniego. Wszystkie bloki uporządkowane są chronologicznie. W ten sposób tworzy się pewnego rodzaju łańcuch. Nawet jeśli chcielibyśmy oszukać kogoś i dodać transakcję, która nie miała miejsca i olbrzymim szczęściem znaleźlibyśmy liczbę pozwalającą zamknąć cały blok, to odbiorca naszego bloku ufa tylko temu łańcuchowi, który jest najdłuższy, więc aby nasze oszustwo się udało i nie wyszło na jaw, to musielibyśmy zamykać bloki tak szybko, aby to nasz łańcuch był dłuższy od tego, nad którego zamknięciem pracuje reszta świata. Krótko mówiąc - jeśli chcemy wprowadzić jakąś nieautoryzowaną zmianę i chcemy, aby wszyscy ją uznali, musimy posiadać moc obliczeniową większą niż wszyscy inni użytkownicy razem wzięci. Jest to po prostu niemożliwe.

Kopanie kryptowalut

Jak już wcześniej wspomniałem - osoba, która metodą prób i błędów znajdzie odpowiednią liczbę mogącą zamknąć cały blok dostaje jakieś wynagrodzenie w postaci darmowej kryptowaluty. Wspomniałem również, że trudność znalezienia tej liczby nie jest stała (liczba wymaganych zer na początku jest zmienna), od czego w takim razie zależy? Trudność w tym przypadku zależy od ilości osób, która tej liczby szuka - im więcej mocy obliczeniowej włożone jest w jej znalezienie, tym trudniejsza jest do znalezienia. Dla przykładu - w najpopularniejszej kryptowalucie - Bitcoin’ie - wszystko jest tak wyważone, że każdy blok ma około 2500 transakcji i znajdowany jest mniej więcej co 10 minut. Nagroda za zamknięcie bloku także nie jest stała i zmniejsza się co pewieną ilość bloków dla Bitcoina. W 2009 roku było to 50B, w 2012 było to już 25B, w 2016 12,5B i tak co 210 000 bloków wartość zmniejsza się o połowę. Oznacza to że, nigdy nie będzie na świecie więcej niż 21 milionów bitcoinów.

O autorze
User avatar

Uczeń technikum na kierunku informatycznym, zapalony programista, aktywny członek organizacji MDB Youth. W wolnych chwilach poza programowaniem i nauką lubi pograć na gitarze lub przeczytać dobrą książkę.

Najnowsze artykuły

MDB Youth

MDB Youth to organizacja stworzona przez młodych ludzi, których celem jest wspólna nauka programowania, technologii i przedsiębiorczości.

Dowiedz się więcej i dołącz do nas.

Dołącz do MDB Youth