W najnowszym odcinku naszego podcastu gościnnie wystąpił dr inż. Michał Ren pracujący w Zakładzie Teorii Algorytmów i Bezpieczeństwa Danych na Wydziale Matematyki i Informatyki Uniwersytetu Adama Mickiewicza w Poznaniu. Dr inż. Ren zajmuje się kryptologią i zgodził się pomóc nam w zrozumieniu zasad działania blockchaina oraz jego zastosowań.
Rozmowę z nim zarejestrowaliśmy i opublikowaliśmy w najnowszym odcinku. W odcinek ten wplecione jest znacznie więcej żargonu technicznego, niż zwykle – dołożyliśmy za to starań, aby na bieżąco wszystko tłumaczyć możliwie przystępnym językiem. Ten artykuł podsumowuje i uzupełnia treść naszej rozmowy z dr inż. Renem.
Czym jest blockchain?
Blockchain jest strukturą danych. Dokładniej: jest łańcuchem (chain) bloków (block). Każdy blok zawiera jakieś dane oraz wskazuje na jeden, „poprzedni” blok. W blokach można przechowywać dowolne informacje. Dzięki swojej konstrukcji nie ma teoretycznych limitów co do ilości danych, jakie można trzymać w blockchainie.
Blockchain jest kojarzony z decentralizacją, tzn. z systemem pozbawionym centralnej kontroli. O ile blockchain sam z siebie nie gwarantuje decentralizacji, o tyle jego struktura ułatwia wprowadzenie decentralizacji. Strony zainteresowane korzystaniem z blockchaina muszą ustalić sposób na przechowywanie i pozyskiwanie dostępu do bloków, oraz sposób na wybieranie jednego bloku, który jest uznawany za najnowszy i zgodny z tym, co uczestnicy blockchaina uznają za „prawdę”. Definicja „prawdy” jest różna dla różnych blockchainów.
Gdy strony korzystające z blockchaina wybiorą jeden blok, który uznają za najnowszy i „prawdziwy”, to idąc krok po kroku wstecz można odtworzyć całą historię blockchaina. Bloki nieznajdujące się na wyróżnionej ścieżce nie są uznawane za „prawdziwe”. Dlatego można stworzyć blockchainy, w których każdy ma uprawnienia do tworzenia nowych bloków – każdy może tworzyć blok i umieścić go w blockchainie, ale nie będzie on od razu częścią oficjalnej uznawanej przez wszystkich użytkowników historii.
Weryfikacja w blockchainie. Cofanie historii
Blockchain nic sam z siebie nie weryfikuje - jest tylko strukturą danych. „Weryfikacja” jest skrótem myślowym. Uczestnicy systemu, np. opartego o blockchain Bitcoina, weryfikują, czy to, co zostało wpisane w blok, spełnia jakieś warunki. Ten proces nie zachodzi samoczynnie. Gdyby więcej niż połowa podmiotów kopiących bitcoiny zdecydowałaby, iż historia bloków jest inna (inny blok zostałby mianowany tym „najnowszym i prawdziwym”), to w istocie nastąpiłaby zmiana historii w tym blockchainie.
Taka sytuacja miała miejsce w blockchainie Bitcoina. Gdy ktoś złośliwie wykorzystał błąd w implementacji Bitcoina, aby wygenerować dla siebie „znikąd” potężne sumy bitcoinów, została wypuszczona łatka, która w efekcie sprawiła, iż ta wadliwa transakcja i wszystkie następujące po niej w łańcuchu bloki zostały anulowane. Zob. Value overflow incident.
Wydajność energetyczna blockchaina
Blockchain nie musi być energochłonny. Skrajnym przykładem ilustrującym to stwierdzenie może być prywatny blockchain, używany przez jedną osobę, na jednym komputerze. Energochłonność niektórych kryptowalut wynika z wyboru mechanizmu tworzenia nowych bloków.
Gdyby każdy przy zerowych lub bardzo niskich kosztach mógł dopisywać nowe bloki do blockchaina powiązanego z kryptowalutą, to ilość waluty w obiegu mogłaby nieustannie i gwałtownie rosnąć, w nieskończoność – a to pomniejszałoby wartość tej waluty. Dlatego Bitcoin wykorzystuje mechanizm Proof of Work, który sprawia, iż utworzyć nowy blok mogą tylko osoby, które poświęciły na to istotną ilość energii elektrycznej. Uczestnicy systemu Bitcoin są motywowani do tworzenia nowych bloków: za każdy dopisany blok dostaje się pewną ilość nowych jednostek tej kryptowaluty. Dlatego potężne ilości komputerów na całym świecie próbują się nawzajem prześcigać w tym, kto pierwszy dopisze następny blok Bitcoina – poświęcając na to kolektywnie niemałe ilości prądu. Szanse na stworzenie nowego bloku są większe, o ile używa się większej ilości komputerów, a co za tym idzie - większej ilości energii elektrycznej.
Alternatywą dla Proof of Work jest mechanizm Proof of Stake. W tym systemie szansa na możliwość dopisania nowego bloku nie zależy od mocy obliczeniowej, ale od ilości posiadanej przez konkretnego użytkownika jednostek danej kryptowaluty. Im bogatszy w tę kryptowalutę użytkownik, tym większą ma szansę na uzyskanie przywileju możliwości dopisania danych do blockchaina. Dzięki temu całkowite zużycie energii jest zdecydowanie mniejsze, ale zdaniem dr inż. Rena zmienia to istotnie model bezpieczeństwa sieci - do ustalenia historii nie wystarczy już sama znajomość wszystkich bloków.
Złośliwy uczestnik systemu z mechanizmem Proof of Stake może bowiem zgromadzić dużą kwotę, aby móc łatwo dopisywać nowe bloki, potem wyprowadzić swój majątek z blockchaina, a następnie próbować tworzyć historię alternatywną zaczynającą się w punkcie w którym był jeszcze bogaty w jednostki danej kryptowaluty. Ponieważ z samej obserwacji stworzonych bloków nie wynika co było "przedtem" a co "potem" (sieć właśnie to usiłuje ustalić), taki atak może się powieść. Czasem używa się więc alternatywnych mechanizmów rozstrzygających, np. reputacji, tj. pyta się inne węzły sieci czy tak pamiętają historię, etc.
Widać więc, iż Proof of Stake opiera się na przekonaniu, iż właściciel dużego majątku związanego z daną kryptowalutą nie będzie chciał psuć jej blockchaina, ale powyższy schemat ataku wskazuje na to, iż może istnieć zachęta do wyprowadzenia swoich środków z danej kryptowaluty i zaatakowania jej po uczynieniu tego.
Zaufanie do kryptowalut
„Dlaczego ludzie ufają kryptowalutom?” - takie pytanie zadał jeden z naszych Patronów. Odpowiedź dr inż. Rena to: „a dlaczego ufamy tradycyjnym walutom?”.
Znane nam „klasyczne” waluty, jak PLN czy USD, są walutami fiducjarnymi – nie mają swojego pokrycia w żadnym zasobie. Ich wartość jest oparta na naszej wierze w tę wartość. Bitcoin jest walutą mniej fiducjarną, bo jest powiązany z energią potrzebną do rozwiązania zagadki potrzebnej do wykopania nowego bitcoina. Zatem cena bitcoina jest powiązana z ceną energii – bo nie można wykopać nowych bitcoinów bez zużywania energii.
Zastosowania blockchaina poza kryptowalutami
Weryfikacja w łańcuchu dostaw
— Czy blockchain może gwarantować autentyczność zakupowanego produktu?— Nie. Cieszę się, iż mogłem pomóc.
dr inż. Michał Ren, 2022
Ta żartobliwa odpowiedź była początkiem wywodu na temat tego, iż każdy, kto może wpisywać informacje do blockchaina, może wprowadzić do niego nieprawdziwe (tzn.: niezgodne z fizyczną rzeczywistością) dane. Mamy możliwość sprawdzenia kto wprowadził te dane, oraz potwierdzenia, iż ten ktoś faktycznie te dane wprowadził i iż dane te nie były edytowane, ale nie daje nam to gwarancji zgodności tych danych z prawdą. Blockchain sam z siebie nie weryfikuje prawdziwości – weryfikuje spójność i niezmienność. Innymi słowy: blockchain weryfikuje tylko, iż ci, którzy tworzą tego blockchaina, zgodzili się na wpisanie tego, co w nim jest wpisane. Może być więc pomocnym narzędziem w śledzeniu dokumentów przewozowych w łańcuchu dostaw, ale nie daje magicznej gwarancji zgodności danych z fizyczną prawdą.
W trakcie rozmowy poruszyliśmy przykład używania blockchaina do gwarancji autentyczności sprzedawanych kolekcjonerskich sneakersów. Problemem w tym podejściu jest brak powiązania konkretnej pary butów z konkretnym tokenem na blockchainie. Można próbować np. wszyć tag NFC (podobny do tych, jakie mamy w kartach zbliżeniowych), który zawierałby podpisany przez producenta token autentyczności – tylko wtedy blockchain przestaje być użyteczny, gdyż to tag NFC jest w takim scenariuszu źródłem informacji o autentyczności.
Blockchain może być za to przydatny, gdy z jakiegoś powodu jest istotna wiedza o tym, jak zmieniali się właściciele danej pary butów. Takie dane można trzymać na blockchainie lub w bazie utrzymywanej przez producenta. Owszem, producent może nagle zwinąć interes i zaprzestać utrzymywania swojej prywatnej bazy danych, ale to samo może stać się z blockchainem. Należy pamiętać, iż blockchainy, jakie znamy, są trzymane w chmurze. A chmura to po prostu komputery innych ludzi. Ludzie muszą mieć jakiś interes, aby trzymać te dane na swoich komputerach. Gdy ten interes znika - razem z nim zaczynają znikać dane.
Usługi notarialne
Blockchain może znaleźć całkiem sensowne zastosowanie w usługach notarialnych, które mogą używać gwarancji wynikających ze struktury blockchaina do weryfikowania, czy dany dokument istniał w konkretnym momencie w czasie.
Dowody osobiste
Pojawiają się pomysły, aby na blockchainie trzymać dane biometryczne obywateli, aby pomóc im odzyskać dowód osobisty w wypadku jego utraty. To by jednak utrudniało wystawianie fałszywych dokumentów – co państwa robią cały czas, chociażby przy produkcji dowodów osobistych z fikcyjnymi danymi dla agentów służb specjalnych.
Certyfikaty szczepień
Certyfikaty szczepień na COVID-19 są aktualne implementowane dzięki asymetrycznej kryptografii. Dodawanie do tego systemu blockchaina może tylko stworzyć nowe problemy, a nie rozwiąże istniejących.
Gdy posiadamy certyfikat szczepienia, to możemy go mieć fizycznie przy sobie. Możemy go wydrukować, pokazać np. przy przejściu granicznym – i tyle. Gdyby jednak ten certyfikat znajdował się na blockchainie, to trudno wyobrazić sobie, jak miałaby wyglądać kontrola. Co pokazywalibyśmy strażnikowi na bramce?
Owszem, obecne rozwiązanie dot. certyfikatów szczepień nie jest w 100% odporne na ataki – pojawiały się certyfikaty wystawione np. na Myszkę Miki czy Adolfa Hitlera. Źródłem tego problemu był fakt, iż do klucza z systemu miał dostęp ktoś, kto tego dostępu nie powinien mieć, albo ten klucz był użyty niezgodnie z przeznaczeniem. Ten sam problem może zajść w blockchainie – gdy damy komuś dostęp do blockchaina, to może w nim umieszczać nieprawdziwe informacje.
Przechowywanie danych medycznych
Pozornie może wydawać się, iż blockchain jest dobrą technologią do przechowywania informacji o stanie zdrowia pacjentów i o historii leczenia. Trzeba jednak pamiętać, iż z blockchaina nie można usuwać danych. Czy informacja o tym, iż ktoś się np. leczył na syfilis, miałaby być dostępna dla wszystkich, do końca świata?
„Web 3.0”
Coraz liczniejsze głosy optują za wykorzystaniem blockchaina, aby rozwiązać problemy współczesnego Internetu, tworząc nową jego wersję, opartą o blockchain. Można wyobrazić sobie sieć społecznościową, w której umieszczenie nowego wpisu wiąże się z zapisaniem tego wpisu w blockchainie. Skoro z blockchaina nie można nic usunąć, to tak skonstruowana sieć społecznościowa byłaby w pełni odporna na cenzurę. Warto sobie wtedy zadać pytanie: co, o ile ktoś w takim blockchainie umieści publiczne wpisy z czyimiś wrażliwymi danymi, np. adresem zamieszkania znanej osoby?
Przy obecnej strukturze technologii internetowych istnieje obawa, iż raz wrzucone do Internetu materiały będą dostępne w nim na zawsze. W proponowanej strukturze Web 3.0 byłoby to wręcz gwarantowane. Cenzura byłaby niemożliwa, ale także niemożliwe byłoby usuwanie swoich wpisów, które umieściliśmy w blockchainie przez pomyłkę, lub zdejmowania wpisów innych osób, które wystawiają nas lub nasze dane na zagrożenie.
Pozostaje jeszcze kwestia wydajności pod względem przestrzeni dyskowej. Struktura blockchaina wymaga, aby dane były duplikowane – im więcej razy, tym silniejsza decentralizacja. Zatem oparta o Web 3.0 sieć społecznościowa o ilości treści porównywalnej do Facebooka zajmowałaby wielokrotnie więcej przestrzeni serwerowej, niż Facebook.
To podsumowuje nasze najważniejsze wnioski po wywiadzie z dr inż. Renem, któremu serdecznie dziękujemy za poświęcony czas, udział w nagraniu oraz odpowiedzi na nasze liczne pytania w trakcie realizacji odcinka i pisaniu treści artykułu ?
Polecamy nasz materiał o NFT:
Źródła, materiały
Głównym źródłem wiedzy w tym artykule jest uwieczniony na nagraniu wywiad ze specjalizującym się w kryptologii dr inż. Michałem Renem.