blockchain

Blockchain

blockchain

Końcówkę roku 2017 można podsumować tak często wypowiadanym wtedy cytatem: „Trzeba było zainwestować w tego bitcoina…”. Wybuch popularności tematu kryptowalut skierował oczy całego świata również na blockchain. Co prawda ubiegły rok nie był ekonomicznie najkorzystniejszym dla posiadaczy kryptowalut, jednak zdecydowanie był rokiem edukacji o blockchainie. Dlaczego ta technologia budzi tak wielkie zamieszanie oraz czy warto się o niej uczyć?

Historia

Zacznijmy od krótkiej historii bitcoina i blockchaina. 31 października 2008 osoba podpisująca się jako Satoshi Nakamoto opublikowała manifest „Bitcoin: Elektroniczny system pieniężny oparty na sieci peer-to-peer” opisujący zasady działania bitcoina – kryptowaluty opartej na technologii blockchain. Za datę rzeczywistych narodzin blockchaina uznaje się datę 03.01.2009, gdyż właśnie wtedy powstał pierwszy bitcoinowy blok nazywany „genesis”. Pierwsze wzmianki o tej technologii pojawiały się jednak dużo wcześniej, bo idea bezpiecznego i opartego na kryptografii łańcucha bloków była znana już w 1991 roku.

Trendy

Blockchain jest jeszcze bardzo młodą, a przez to jeszcze niedojrzałą technologią. Przez wiele lat świadomość o tej technologii była niewielka, nie wliczając w to środowisk związanych z kryptowalutami. Skok popularności technologii nastąpił dopiero w momencie największego w historii skoku wartości bitcoina.

bitcoin value
Wykres wartości bitcoina
bitcoin google trends
Bitcoin w Google Trends
blockchain google trends
Blockchain w Google Trends

Mimo spadkowej tendencji w Google Trends w ostatnim czasie, blockchain cały czas jest na topie w branży IT. Ciągle pojawiają się nowe wpisy na ten temat, jak grzyby po deszczu wyrastają startupy starające się wycisnąć z tej obiecującej technologii ile tylko się da.

blockchain funding

Opis technologii

Czym więc tak naprawdę jest blockchain? Możemy go traktować jako zdecentralizowaną bazę danych.

Struktura

Blockchain składa się z bloków połączonych w sposób przypominający listę liniową. Każdy blok zawiera dane, własny hash, oraz hash poprzedniego bloku w łańcuchu.

schemat blockchain

W przypadku bloków przechowujących transakcję dane składają się z nadawacy i odbiorcy waluty oraz z wartości transakcji czy też timestampu. Każdy blok może zawierać wiele transakcji.

Dane uczestników blockchaina (wysyłającego oraz odbiorcy) w transakcji zapisane są jako ich identyfikatory (hashe), które pozwalają jednoznacznie określić użytkownika. Nie oznacza to jednak, że użytkownicy pozostają całkowicie anonimowi.

Kryptografia

Hash jest to identyfikator bloku wyliczany na podstawie danych i hasha poprzedniego bloku uzyskiwany za pomocą kryptograficznych funkcji skrótu. Bardzo często wykorzystywany jest do algorytm z rodziny SHA-2. Są to algorytmy jednokierunkowe – mając wartość hasha nie jesteśmy w stanie odkodować danych, z jakich został on utworzony. Inną istotną zaletą algorytmów SHA-2 jest praktycznie niemożliwa kolizja.

Kolizją nazywamy sytuację, w której funkcja hashująca generuje takie same hashe dla różnych danych wejściowych. Znalezienie kolizji dla algorytmu hashującego jest bardzo niebezpieczną sytuacją o potencjalnie tragicznych dla systemu skutkach. Znając sposób generowania kolizji atakujący może wytwarzać fałszywe bloki, co poważnie narusza bezpieczeństwo całego blockchaina.

W 2017 roku firma Google wraz z holenderskim instytutem naukowym przeprowadziło udany praktyczny atak powodujący kolizję algorytmu SHA-1. Wygenerowali oni 2 różne pliki PDF o identycznym hashu. Przeprowadzenie takiego ataku zostało oszacowane na 6500 lat pracy CPU, a następnie 110 lat pracy GPU, co zostało przeliczone na koszt 2-3mln PLN za jedną kolizję.
Funkcje hashujące z tej rodziny wykorzystywane były w certyfikatach SSL. Przeprowadzony atak spowodował konieczność wycofania tego standardu kryptograficznego z certyfikatów, a te już wydane na nim działające zostały przez przeglądarki oznaczone jako niebezpieczne.

W przypadku korzystania z SHA-2 nie musimy się raczej martwić o kolizje. Algorytm ten jest dużo bardziej skomplikowany i sytuacja kolizji jest praktycznie niemożliwa. Według danych z 2015 roku bitcoin przetwarza 300 biliardów(10^15) hashów algorytmu SHA-256 na sekundę. Przy tej prędkości rozwiązanie siłowe zajęłoby miliardy lat. Nie ma więc powodów do zmartwień, posiadacze kryptowalut na razie mogą spać spokojnie 🙂

Decentralizacja

Jedną z największych zalet technologii jest właśnie decentralizacja. Blockchain opiera się na sieci peer-to-peer, w której nie ma centralnych komputerów.

schemat sieci peer to peer
sieć peer-to-peer

Sieć tego typu zapewnia wszystkim uczestnikom jednakowe uprawnienia i to właśnie na tej własności najbardziej zależy entuzjastom blockchaina. Całkowita decentralizacja i równe prawa wszystkich hostów uniemożliwiają przejęcie sieci przez firmy czy instytucje. Idea sieci równej dla wszystkich jej uczestników nie jest jednak niczym nowym, gdyż tak właśnie w pierwotnej koncepcji miał wyglądać internet. W przypadku internetu pomysł ten nie przeszedł, gdyż do gry weszły przedsiębiorstwa posiadające dużo mocniejsze komputery oraz znacznie szybsze łącza. Marzenia o „demokratycznej” sieci, której nie kontrolują zewnętrzne jednostki, odżywają właśnie teraz.

To właśnie decentralizacja i brak konieczności istnienia pośredników jest jedną z najważniejszych cech technologii. Korzystanie z usług pośredniczenia wymaga zaufania oraz często jest mniej korzystne pod względem finansowym dla obu stron.

Każdy węzeł(komputer należący do sieci) posiada własną kopię całego blockchaina. Za każdym razem gdy tworzony jest nowy blok, zostaje on wysłany do wszystkich użytkowników w sieci. Następnie u każdego z nich następuje sprawdzenie czy dodany blok jest poprawny.

Niezmienialność

Mówimy, że blockchain jest niezmienialny (ang. immutable). Oznacza to, że dane raz umieszczone w blockchainie już takie pozostaną, nie można cofnąć stworzonego bloku i zmienić danych w nim zawartych.
Blok wprowadzony do łańcucha nie może zostać zmieniony. Jakakolwiek zmiana danych spowodowałaby zmianę hasha bloku. Pamiętamy, że każdy blok posiada w sobie wskazanie na poprzedni blok, więc zmiana hasha jednego ze starszych bloków natychmiast zostałaby wykryta przez wszystkie węzły w sieci.

Forgering block in blockchain

W przypadku dzisiejszych komputerów obliczenie wielu hashy algorytmem SHA-256 nie zajmuje wiele czasu.

timing sha-256 algorithm

Łatwo byłoby więc utworzyć nowe bloki, których hashe zgadzałyby się z hashem podrobionego bloku, co zapewniłoby ponowną poprawność łańcucha. Aby zapobiec takiej sytuacji wprowadza się mechanizm, który spowolni wytwarzanie nowych bloków. Jednym z takich mechanizmów jest proof of work.

Proof of work, kopanie i koparki

Proof-of-work jest algorytmem konsensusu mającym na celu powstrzymanie ataków DDoS polegających na przeciążeniu sieci fałszywymi żądaniami.
Koncepcja została przystosowana do technologii blockchain przez Satoshi Nakamoto i opisana w podlinkowanym wyżej manifeście.
Aby węzły mogły utworzyć blok muszą wykonać pewną pracę, która w praktyce oznacza rozwiązanie zagadki kryptograficznej. Przykładem takiej zagadki może być znalezienie liczby całkowitej, której hash kończy się czterema zerami.
Tworzenie bloków w przypadku algorytmu proof of work nazywamy kopaniem. Węzły wchodzące w skład sieci nazywamy koparkami, a ich właścicieli górnikami.
Gdy zagadka zostanie rozwiązana utworzony zostanie nowy blok, do którego zostaną dodane wszystkie transkacje, jakie miały miejsce od wykopania poprzedniego bloku. Górnicy, którzy brali udział w wydobyciu bloku zostają nagrodzeni walutą.
Proof of work nie jest jedynym takim mechanizmem. Inne dostępne algorytmy to Proof of Stake, Delegated Proof of Stake oraz Proof of Authority.

Bezpieczeństwo

Wszystkie wymienione własności technologii blockchain są powodem jej kolejnej ważnej zalety – bezpieczeństwa. Niemożliwe do edycji dane znajdujące się w blokach oraz kopia blockchaina znajdująca się na wielu węzłach zapewniają autentyczność danych znajdujących się w blokach.
Wykorzystywanie kryptografii, jednokierunkowego algorytmu szyfrowanie oraz algorytmu konsensusu chroni przed fałszowaniem bloków. Czy to oznacza, że blockchain jest niezniszczalny? Niestety nie.

Najczęściej wymienianym potencjalnym zagrożeniem blockchaina bazująceog na proof-of-work jest 51% attack. Jest to sytuacja, w której atakujący kontroluje ponad połowę całej sieci. Mając większość sieci atakujący jest w stanie blokować akceptację nowych transakcji oraz do anulowania transakcji, które zostały już wykonane, co pozwoli na podwójne wydanie środków (stąd inna nazwa: double spend attack). Sposobem na wycofanie transkacji jest selfish(stealth) mining. Atakujący tworzy lokalnie rozgałęzienie blockchaina, którego nie wysyła do reszty sieci.

selfish mining
selfish mining

Podczas tworzenia rozgałęzienia łańcucha atakujący może wydawać swoje środki, transakcje zapisywane będą w blokach w prawdziwym łańcuchu, a w fałszywym nie.
W blockchanie konflikty łańcuchów rozwiązywane są na korzyść tego dłuższego, który zostaje uznany za prawdziwy.
Celem atakująego jest więc utworzenie łańcucha dłuższego niż prawdziwy. Aby to uzyskać musi on mieć kontrolę nad ponad połową sieci (51% attack).

atak selfish mining udany

Gdy atakujący uzyska dłuższy łańcuch wysyła on go do całej sieci, która akceptuje go jako ten prawdziwy. Powoduje to cofnięcie wszystkich transakcji z bloku głównego, a przyjęcie tych ze sfałszowanego. Wydane przez atakującego środki wrócą na jego konto, co daje możliwość podwójnego ich wydania.

Ze względu na wielkość sieci bitcoina, atak w przypadku tej kryptowaluty jest raczej czysto teoretyczny. Potencjalny koszt takiego ataku, uwzględniając koszt komputerów, prądu oraz prawdopodobieństwo zostania złapanym sprawiają, że atakowanie bitcoina w ten sposób nie ma większego sensu.
W przypadku mniejszych blockchainów sprawa nie jest tak oczywista. Rozwiązaniem tego problemu może być zastosowanie innego algorytmu konsensusu.

Czy blockchain zapewnia anonimowość?

Pomimo wykorzystywania kryptografii, używania adresów (identyfikatorów) zamiast pseudonimów czy nazwisk, musimy pamiętać, że blockchain zazwyczaj nie jest anonimowy. Większość blockchainów (w tym bitcoin) jest otwartych i publicznie udostępnionych do węzłów na całym świecie. Każda transkacja jest permanentnie zapisywana w historii i każdy uczestnik sieci może ją odtworzyć.
Blockchain zazwyczaj zapewnia pseudoanonimowość – dołączyć do sieci może każdy i nie ma możliwości powiązania adresu (identyfikatora) bez dodatkowych informacji z zewnętrznych źródeł. Nie jest to jednak wystarczające, aby czuć się anonimowym.
Bitcoin nie jest najbezpieczniejszą walutą dla przestępców, a jego rzekoma popularność wśród entuzjastów nielegalnej aktywności była raczej spowodowana jego niszowością, niż bezpieczeństwem zapewnianym przez technologię.

Co dalej z blockchainem?

Trudno powiedzieć jak dalej rozwijać się będzie omawiana technologia, oraz w którą stronę pójdzie.
Według raportu przygotowanego przez HackerRank blockchain jest technologią raczej niepewną, w porównaniu do IoT czy uczenia maszynowego.

HackerRank 2019 report
wyniki raportu HackerRank

Musimy jednak pamiętać, że blockchain w porównaniu z uczeniem maszynowym jest technologią bardzo młodą, gdyż koncepcje uczenia maszynowego w publikacjach naukowych pojawiały się już w latach 50.
Reakcje społeczności mogą być negatywne również z powodu oczekiwań, które nie zostały do tej pory spełnione. Wielokrotnie mogliśmy słyszeć, że blockchain jest bardziej rewolucyjny niż sam internet. Czy tak rzeczywiście będzie? Zobaczymy.
Uważam jednak, że zdecydowanie warto obserwować rozwój tej technologii, szczególnie w innych aspektach niż same kryptowaluty.
Technologią powoli zaczynają interesować również banki. Niedawno PKO chwalił się zastosowaniem blockchainu z największym w Europie zasięgiem liczącym 5 mln klientów. Zastosowali oni tę technologię do elektronicznej wysyłki zmian w regulaminach.

Zachęcam Was do szerszego zapoznania się z blockchainem oraz tematami związanymi z tą technologią. Być może obserwujemy właśnie początek rewolucji całego internetu i sposobu realizacji usług.

Jak myślicie, jak dalej będzie rozwijał się blockchain? Czy całe zamieszanie wokół tej technologii jest rzeczywiście słuszne? Dajcie znać 😉

Pozdrawiam!

Jeśli chcesz być na bieżąco z najnowszymi materiałami, polub nasz fanpage na Facebooku:

https://www.facebook.com/kamil.kwapisz.python

Źródła

Tagged ,

4 thoughts on “Blockchain

  1. Dobra robota, Kamil! Kurczę, z jednej strony blockchain ostatnio faktycznie zrobił furorę, ale wydaje mi się, że ostatnimi czasy coś o nim ciszej. Nadal kojarzy mi się tylko z kryptowalutami (ale teraz wiem, co to znaczy kopać kryptowaluty, dzięki :D), chociaż pamiętam, że na jednej z prelekcji, na której byłam, prelegent wspominał o zastosowaniu blockchainu do szybszej realizacji przelewów – i w sumie wydaje mi się, że o tej wysyłce zmian w regulaminach to klientów PKO też wspominał. Jeśli tak właśnie blockchain ma ułatwiać życie, to nie ma sprawy, jestem za. Osobiście obawiam się jednak, że całość może trochę przycichnąć i nadal kojarzyć się większości ludzi z 'tymi bitcoinami, a to nie wiadomo co to jest, niebezpieczne, daj spokój’ – a to byłaby niepodważalna strata.
    Dobrze znowu móc cię czytać 😀

    1. Dzięki za ten komentarz! 😀 Cieszę się, że dowiedziałaś się czegoś z mojego artykułu 😉 Racja, ostatnio jest dużo ciszej, ale ja mam nadzieję, że to po prostu cisza przed burzą 😀

  2. Świetny post! Nie interesuję się tym tematem, ale dzięki Twojemu wpisowi czegoś się nauczyłem i trochę jednak zainteresowałem. Poza tym zaoszczędziłeś szukającym dużo czasu! Podoba mi się też, że poddajesz w wątpliwość przydatność Blockchaina, zamiast wieszczyć jego wspaniałość.

    1. Dzięki za ten komentarz i ciepłe przyjęcie mojego wpisu! 😉 Cieszę się, że mogłem chociaż trochę wzbudzić zainteresowanie tematem 😉

Comments are closed.