Chatka cryptoDZIADKA | Co to jest blockchain? Część I: Skróty

1 099
Jeśli czcionka jest dla ciebie zbyt mała – przytrzymaj klawisz Ctrl i dopasuj powiększenie klawiszami „+” i „-”.
* *

Janusz Korwin-Mikke sugeruje, że żyjemy w kraju, w którym ‘naczelnik państwa’ nie potrafi uruchomić komputera a ¾ ministrów nie wie, co to jest BLOCKCHAIN. Ja mu wierzę. Poniższe vademecum dedykuję więc przede wszystkim naszym ministrom, ale też wszystkim tym, którzy są po prostu blockchaina ciekawi.

A propos oceny czyjejś wiedzy lub niewiedzy. Bardzo bawią mnie sondy uliczne testujące poziom czytelnictwa. Wciąż czekam na taki oto dialog:

– Ile książek przeczytał pan w tym roku?
– Żadnej. Ale czytam Internet.
– A ile go pan przeczytał?
– …Jestem w połowie.

Ciekawe jaki wniosek wyciągnąłby dziennikarz.

Ostatnio, odpowiadając na pytanie ‘czym jest DLT’, wyrysowałem trójwarstwową strukturę cryptoświata. Warstwą najwyższą, która funkcjonuje w oparciu o sieć rozproszoną jest oprogramowanie, a więc platformy DLT. Najpowszechniej stosowaną platformą jest właśnie blockchain.

Pojęcie ‘BLOCKCHAIN’ (łańcuch bloków) jest nazwą typu oprogramowania DLT – takiego, w którym dane pogrupowane są w duże zbiory (agregaty) zwane BLOKAMI. Bloki danych łączone są ze sobą w określonej kolejności, zależnej od czasu ich powstania. Pierwszym z bloków jest zawsze blokGenesis’, a więc ten, który został utworzony jako pierwszy przez twórców danego projektu. Kolejne bloki dołączane są do tego pierwszego jak korale nawlekane na nić. Efektem jest łańcuch bloków – stąd nazwa: blockchain (ang. chain = łańcuch).

Oczywiście istnieje wiele projektów blockchain i każdy z nich różni się nieco od pozostałych. Zajmiemy się więc modelem uniwersalnym – takim, który pozwoli zrozumieć istotę łańcucha bloków. Poniżej – schemat uniwersalny:

co to jest blockchain
Każdy blok składa się z nagłówka i treści bloku. Nagłówek bloku zawiera:

Wskaźnik do poprzedniego bloku.
Nazwę bloku.
Znacznik czasu.
– Swoisty ’Spis treści’ bloku.

Treść bloku to lista tzw. transakcji. Słowo ‘transakcja’ jest tu trochę niefortunne, gdyż sugeruje finansowy charakter rejestru danych. Przyczyną zapewne jest fakt, że blockchain pierwszej kryptowaluty był projektem elektronicznego pieniądza (kryptowaluty), więc aktualizacje bazy danych miały charakter transferu środków płatniczych. Transakcję – powinniśmy jednak rozumieć szerzej – jako dowolny pojedynczy wpis do rejestru danych. Treść bloku to cała lista transakcji, a ich maksymalna ilość zależy od maksymalnej wielkości bloku, przewidzianej w danym projekcie blockchain.

Obowiązuje zasada, że bloków wcześniejszych nie można ani zlikwidować, ani zmienić. Dowolna aktualizacja danych w łańcuchu bloków polega na utworzeniu nowego bloku zawierającego pełną informację o dokonanych zmianach. Ten nowy blok może być dołączony wyłącznie na końcu łańcucha. Dzięki tej zasadzie wszystkie dane zawarte w blokach wcześniejszych pozostają nietknięte.

Istotą Rejestrów Rozproszonych jest to, że dane są automatycznie powielane we wszystkich węzłach sieci. Aktualna wersja całego łańcucha bloków jest nieustannie uzgadniana i kopiowana do wszystkich węzłów. Dzieje się to bez żadnej ingerencji z zewnątrz, według zasad zapisanych w kodzie. Automatyzm ten sprawia, że rozproszona po całym świecie sieć węzłów zachowuje się jak jedna wielka platforma logiczna – jeden wielki organizm, którego każda komórka (węzeł) zawiera pełną informację o organizmie (jak kod DNA). Analogia jest dość bliska; różnica polega na tym, że kod blockchain – nieustannie się zmienia i aktualizuje.

Jest to zatem system AUTONOMICZNY. W chwili, gdy dowolny z węzłów (dowolny użytkownik) wprowadzi do systemu nowe dane, blockchain ‘wie sam’ co powinien zrobić. Sam decyduje, że powinien się zaktualizować, sam rozpoznaje, które dane są prawdziwe a które fałszywe, sam buduje kolejny blok, sam dodaje go na końcu łańcucha i sam przeprowadza aktualizację wszystkich węzłów sieci.

Patrz pan jaki chitrus’ – chciałoby się powtórzyć za Friedmannem z ‘Czterdziestolatka’.

Zdziwienie jest uzasadnione, bo mamy przecież do czynienia z siecią rozproszoną, w której nie ma węzłów uprzywilejowanych, mogących narzucać swoją wersję ‘prawdy’ innym węzłom. Od razu powstają 2 pytania:

1. Dlaczego blockchain’a nie da się oszukać?
2. Jak to możliwe, że blockchain się nie myli?

Teraz będzie najważniejsze:
Aby zrozumieć… (Panie ministrze – pobudka! Tak, do pana mówię.)
Aby zrozumieć ISTOTĘ działania blockchain, musisz pan wiedzieć co to jest SKRÓT (HASH) i co to jest DRZEWO SKRÓTÓW (Hash tree, zwane również Merkle tree – od nazwiska Ralph’a Merkle).

Zacznijmy od samego ‘skrótu’.
Wyobraźmy sobie formularz, w którym trzeba wpisać miejsce zamieszkania. Projektant formularza – zapewne dumny pracownik wyższego szczebla administracji państwowej – w przypływie troski o środowisko wpada na genialny pomysł: Ha! Oszczędzę papier redukując ilość pól do wypełnienia. PEŁNY ADRES: 12 kratek! Wystarczy! Niech się nie rozpisują. Aha, żeby się papier w kratkach nie zmarnował, dodam jeszcze urzędowy nakaz: wypełnić wszystkie kratki pod rygorem nieważności wniosku, karą grzywny i przepadku mienia.

Jeśli mieszkasz na ulicy ’Południowo-Wschodnie Wybrzeże Denuncjatorów Imienia Generała Szpicla-Papli, dowódcy Czterdziestej Brygady Sygnalistów Ludowych 7/1’ – to masz kłopot. Jeśli mieszkasz na ’Złota 1’ – też masz kłopot.

Rozwiązaniem problemu są tzw. FUNKCJE SKRÓTU, czyli algorytmy (zestawy jednoznacznych poleceń), które potrafią zamieniać dowolnie długie łańcuchy znaków (tzw. wejście) w łańcuch o stałej ilości znaków (tzw. wyjście) – zwany skrótem (HASH).

Operację skracania cechują:
jednokierunkowość (ze skrótu nie da się odtworzyć danych wejściowych);
odporność na kolizje (różne dane wejściowe nie mogą dać tego samego skrótu);
efekt lawiny (nawet niewielka zmiana znaków w danych wejściowych – prowadzi do zupełnie innego skrótu wyjściowego).

rys 2 - funkcja skrótu

Dowolnie długi łańcuch znaków (tzw. dane wejściowe; mogą to być nawet ‘ciężkie’ Gigabajty informacji) jest zamieniany przez funkcje skrótu w doskonale przewidywalny, krótki łańcuch o stałej liczbie znaków (dane wyjściowe). Operacja ta jest jednak jednokierunkowa, czyli nie zachodzi w stronę przeciwną: z dowolnego łańcucha znaków wyjściowych – nie da się odtworzyć danych wejściowych.

Dla niezaprzeczalności danych blockchain najważniejszy jest jednak tzw. efekt lawiny: jeśli w danych wejściowych zmieni się choćby jeden znak – na wyjściu powstanie zupełnie inny skrót.

rys 3 - lawina
A teraz wyobraźmy sobie drzewo. Liście łączą się w gałązki, gałązki w gałęzie, gałęzie w konary, a te w pień zakończony korzeniem.

Powiedzieliśmy, że treścią bloku są zapisane w nim transakcje. Załóżmy, że te transakcje to liście drzewa. Jeśli każdą z sąsiadujących ze sobą transakcji połączymy i zamienimy – za pomocą funkcji skrótu – w gałązkę (skrót), to powstanie dwa razy mniej skrótów, niż było transakcji. Teraz sąsiadujące ze sobą skróty (1-go poziomu) – łączymy w gałęzie (skróty 2-go poziomu), te w kolejne gałęzie (skróty 3-go poziomu), te w konary itd. Na każdym kolejnym poziomie jest o połowę mniej skrótów, a na końcu – powstaje skrót wszystkich skrótów, zwany korzeniem.

rys 4 - drzewo skrótów

Taka struktura to właśnie tzw. ‘Drzewo Skrótów’ (Hash tree; Merkle tree). Korzeń tego drzewa jest swoistym ‘spisem treści’ bloku: Umożliwia sprawdzenie poprawności danych bez konieczności analizowania wszystkich transakcji jedna po drugiej.

Dzięki funkcjom skrótu zamieniliśmy cały zestaw transakcji zapisanych w bloku (a więc całą treść bloku) w pojedynczy skrót – korzeń drzewa skrótów. Przez cały czas obowiązuje zasada jednokierunkowości. Z żadnego skrótu drzewa nie da się odtworzyć jego danych wejściowych, więc ostatecznie – z korzenia drzewa nie da się otworzyć żadnej z transakcji danego bloku. Obowiązuje też efekt lawiny: najmniejsza zmiana zapisu wewnątrz którejkolwiek z transakcji – spowodowałaby wygenerowanie zupełnie innego korzenia.

Obudźmy pana ministra i spójrzmy ponownie na budowę bloku:

rys 5 - budowa bloku

Jak widać, NAZWA każdego bloku to również skrót, którego danymi wejściowymi są nazwa bloku poprzedniego i korzeń drzewa skrótów danego bloku. Za jakiś czas nazwa ta, wraz z korzeniem drzewa skrótów bloku następnego – posłużą jako dane wejściowe do utworzenia nazwy bloku następnego. I tak dalej.

rys 6 - HASHchain

Tak, blockchain to JEDNO WIELKIE DRZEWO SKRÓTÓW!

Moim zdaniem pojęcie ‘łańcuch skrótów’ (hashchain) – byłoby trafniejszą nazwą niż ‘łańcuch bloków’. (Pamiętaj, że to co piszę, to jedynie wizualizacja ISTOTY blockchain; żaden z projektów nie wygląda dokładnie tak, jak opisałem, ale ważniejszymi z nich – np. Bitcoinem czy Ethereum – zajmę się oddzielnie w przyszłości).

I to jest odpowiedź na nasze pierwsze pytanie: dlaczego blockchain’a nie da się oszukać.

Nad poprawnością, nieomylnością i niezaprzeczalnością danych zawartych w treści wszystkich bloków łańcucha – czuwa efekt lawiny. Gdyby ktoś chciał zmienić zapis jednej z wcześniejszych transakcji (‘dofinansowując’ się np. o milion bitcoinów), zmiana taka przebudowałaby całe drzewo skrótów, czyli też jego korzeń, a więc również nazwę bloku i nazwy wszystkich bloków kolejnych.

I co z tego – pytasz pan, panie minister?
A, rozumiem – w sieci scentralizowanej już nie takie myki przechodziły. Tymczasem to jest sieć rozproszona. Caluteńki łańcuch bloków jest przecież powielony na stu milionach węzłów. Jeśli pojedynczy z węzłów stwierdzi, że jego wersja blockchain (z dopisanym milionem bitcoinów) jest właściwa, to w ułamku sekundy zostanie sprowadzony z obłoków na ziemię. Sto milionów identycznych wersji blockchain odrzuci wersję fałszywą – z żarliwością ławicy piranii pożerających wszystko, co choćby odrobinę się od nich różni.

No dobrze – powie ktoś – już łapię, że nie da się oszukać blockchain’a, podmieniając któreś z wcześniejszych ogniw łańcucha. Ale co z ogniwem ostatnim – tym właśnie dołączanym? Może chociaż tu dałoby się coś zmajstrować?

I to jest dobre pytanie: jak to możliwe, że blockchain się nie myli podczas dołączania nowego bloku? Skąd cała rozproszona sieć równych rangą węzłów wie – która z prób dołączenia nowego bloku jest uprawniona, a która nie? W jaki sposób węzły dochodzą do porozumienia?

O porozumieniu węzłów (KONSENSUSIE) pomówimy następnym razem.

CDN 

Komentarze