Jedna, duża paczka – porozmawiajmy o rollupach
Przez ostatnie tygodnie poruszałem na łamach bloga tematy związane z problemem skalowalności blockchaina oraz sposobami na jego rozwiązanie. Dzisiaj chciałbym opisać jeszcze jeden mechanizm, który znacznie usprawnia działanie blockchaina, a operuje na warstwie drugiej. Mowa tutaj o rollupie.
Z tego posta dowiesz się, czym jest wspomniane rozwiązanie, co to jest dowód z wiedzą zerową oraz jaka jest różnica pomiędzy optimistic i zero-knowledge rollups. Jeżeli pierwszy raz czytasz o tematach związanych ze skalowalnością blockchaina, to polecam Ci zapoznać się najpierw z wcześniejszymi postami:
- Kiedy utkniesz w korku – czyli problem skalowalności blockchaina
- Usprawnienia u podstaw – czyli skalowanie warstwy pierwszej
- Bary i delegowanie pracy – porozmawiajmy o skalowaniu warstwy drugiej(podpiąć wpis)
Teraz przejdźmy już do dzisiejszego tematu:)
Rollups
Święta Bożego Narodzenia coraz bliżej, a Ty wciąż nie masz pewności, czy uda Ci się w tym roku dotrzeć na wielką rodzinną kolację. Jak to bywa tego dnia, wszyscy obdarowują się prezentami, dlatego mimo obecnej sytuacji, chciałbyś mieć pewność, że i te od Ciebie zostaną dostarczone. Czasu jest jeszcze dużo, ale postanawiasz je już wysłać pocztą, bo nie lubisz zostawiać wszystkiego na ostatnią chwilę.
Po zapakowaniu prezentów przyszedł czas na ich nadanie. Początkowo każda z paczek miała zostać wysłana z osobnym listem przewozowym, ale po przeanalizowaniu oferty poczty okazało się, że zdecydowanie lepszą opcją jest wsadzenie wszystkiego w jedno pudło i nadanie go jako jedna wielka przesyłka.
Co to ma wspólnego z blockchainem? Według mnie analogia ta świetnie pokazuje, czym są rollupy. Zamiast przetwarzać każdą transakcję osobno na głównej sieci, możemy przeprocesować wszystkie operacje poza nią, a następnie zapisać ich sumaryczny wynik w sieci. Dodatkowo w takiej paczce znajduje się informacja o wszystkich transakcjach, które wchodzą w jej skład. Jest to niezbędne do weryfikacji potencjalnych oszustw.
Rollupy dają świetne wyniki w kontekście skalowania. Dla przykładu, jeżeli blok na danej sieci byłby w stanie przechowywać jedynie 100 transakcji, a rollup mógłby spakować 50 transakcji, to de facto bylibyśmy w stanie osiągnąć przepustowość na poziomie 5000 transakcji na blok. Różne źródła wskazują, że przy pomocy tego rozwiązania można wyskalować liczbę transakcji od 500 do 4000 na sekundę. Jeżeli połączy się te mechanizmy z innymi usprawnieniami, czy to warstwy pierwszej czy drugiej, to wyniki mogą być “kosmiczne”.
Rollupy można podzielić na dwie kategoria, czyli tzw. Optimistic Rollups oraz Zero-Knowledge Rollups (ZK Rollups). U podstaw idea jest taka sama, czyli opakowujemy wiele transakcji w jedną i wrzucamy „skompresowane” dane na główny łańcuch. Wspólną cechą jest również to, że oba typy rozwiązań bazują na smart kontraktach umieszczonych na głównych łańcuchach, a ich główna odpowiedzialność to walidacja danych oraz, jak w przypadku innych rozwiązań, depozyt oraz wypłata kryptowalut. Jednak oba mechanizmy posiadają znaczące różnice, dlatego przejdźmy teraz do pierwszego z nich.
Optimistic Rollups
Rozwiązania oparte o rollupy spod szyldu “optymistyczne” zakładają, że wszystkie dane, które wrzucane są na główną sieć, są poprawna. Stąd też nazwa:). Ale nie jest też tak, że nagle zaczęliśmy ufać ludziom na tyle, żeby niczego nie weryfikować, co to to nie. Chyba możesz się domyślić, jakby to się skończyło. Z tego powodu w każdej chwili dowolny użytkownik sieci może dostarczyć. tzw. dowód oszustwa (ang. fraud proof), inaczej mówiąc wskazać, że coś nie pasuje w tych transakcjach.
Jeżeli faktycznie doszło do próby dokonania przekrętu, wtedy osoba, która wstawiła fałszywe dane, zostanie ukarana. Sankcja jest raczej standardowa i jak to bywa na blockchainie, zostaną zabrane jej kryptowaluty, które wcześniej musiała zablokować. Natomiast w zamian za prawidłowe i uczciwe zachowanie, osoba ta zostanie wynagrodzona cyfrowymi tokenami. Zazwyczaj będzie to kryptowaluta powiązana z danym rozwiązaniem, ale nic nie stoi na przeszkodzie, żeby benefitem było coś innego.
W momencie kiedy zostanie dostarczony dowód na oszustwo, rollup przełącza się w tzw. Dispute Resolution mode i zostaje rozpoczęta procedura sprawdzająca poprawność danych. Polega to na zasymulowaniu transakcji na głównej sieci i sprawdzeniu, czy ich wynik jest zgodny z tym, co dostarczył rollup. Jeżeli okaże się, że faktycznie coś nie gra, to oprócz wspomnianej kary, stan blockchaina zostaje zmieniony na poprawny.
Identycznie jak w przypadku łańcuchów bocznych, tak i tutaj musimy najpierw zablokować swoje środki w protokole, jeżeli chcemy korzystać z jego możliwości. Niestety ze względu na mechanizmy odpowiedzialne za sprawdzanie poprawności danych, oczekiwanie na wypłatę kryptowalut z protokołu może nieco potrwać. Związane jest to z czasem przeznaczonym na dostarczanie dowodów na oszustwo. Jest on oczywiście ograniczony, ale jeśli przykładowo trwa tydzień, to nie będziemy mogli wcześniej “odzyskać” środków. Jeżeli czas ten minie i wszystkie operacje okażą się prawdziwe, to kryptowaluty zostaną uwolnione.
Z plusów należy wspomnieć, że rozwiązania oparte o optymistyczne rollupy są kompatybilne z Ethereum Virtual Machine (EVM). Dzięki temu stosunkowo łatwo je wdrożyć i podpiąc pod nie istniejące mechanizmy.
Jeśli chodzi o minusy, to warto mieć na uwadze potencjalne problemy, które mogą być stworzone przez “rollupowych” górników. Mogą oni np. “cenzurować” pewne transakcje i nie dorzucać ich do paczek. Sam problem nie dotyczy jedynie rollupów, ponieważ identyczna sytuacja może występować na każdym blockchainie, ale na dużych sieciach jak Ethereum czy Bitcoin problem jest raczej teoretyczny, dzięki ich znacznej decentralizacji. Prawdopodobnie w przypadku rollupów takie zdarzenia są również mało prawdopodobne, ale jednak warto mieć świadomość potencjalnych problemów.
Tak z grubsza działają mechanizmy, na których oparte jest pierwsze dzisiejsze rozwiązanie. Jednym z istniejących rozwiązań jest Optimism, z którym bardzo polecam się zapoznać, a pomaga on w wyskalowaniu Ethereum.
Dowód z wiedzą zerową
Zanim powiem kilka słów o drugim typie rollupów, to muszę wyjaśnić jeszcze jedno pojęcie, jakim jest tzw. dowód z wiedzą zerową (ang. zero-knowledge-proof). W tym celu posłużę się analogią, która mi pomogła zrozumieć to zagadnienie.
Masz znajomego, który jest daltonistą. W ręce posiadasz dwie piłeczki, czerwoną oraz niebieską i Twoim zadaniem jest udowodnienie koledze, że faktycznie są one różnego koloru, a nie, że go wkręcasz. Na pierwszy rzut oka sprawa wydawać się może nieco trudna, ale istnieje prosty sposób na rozwiązanie tego problemu.
Na samym początku pokazujesz znajomemu piłeczki i mówisz mu, która z nich jest niebieska, a która czerwona. Następnie nasz niedowiarek przejmuję od Ciebie przedmioty, chowa je za plecy, miesza i pokazuje ponownie je Tobie, prosząc o wskazanie niebieskiej. Ty bez problemu to robisz, ponieważ nie masz problemu z odróżnianiem kolorów.
Czy teraz Twój znajomy już może być pewny, że nie jest obiektem żartu? Zdecydowanie nie. Załóżmy na chwilę, że obie piłeczki były niebieskie. W takim wypadku istnieje 50% szansa, że wskazując piłeczkę trafisz w tę, która na samym początku została określona przez Ciebie tym kolorem. Dlatego eksperyment trzeba powtórzyć. Po kolejnej próbie szansa na to, że piłeczki są identyczne, a Ty jedynie dobrze trafiłeś, spada do 25%. Wykonując bardzo wiele takich prób, Twój znajomy może określić prawdopodobieństwo na zrobienie z niego idioty na niemal zerowe i z tego względu może być niemal pewny, że faktycznie piłeczki są różnego koloru.
Powyższa historia dobrze obrazuje, czym są dowody z wiedzą zerową. W jednym zdaniu można powiedzieć, że jest to technika, która pozwala mieć prawie 100% pewności w kontekście pewnych informacji, w momencie kiedy nie posiadamy wszystkich danych z nią związanych. Warto zwrócić uwagę, że mimo tego, że w nazwie występuje słowo “dowód”, to nigdy nie jesteśmy w stanie udowodnić czegoś w stu procentach, a jedynie możemy stworzyć mechanizmy, które pozwolą nam z ogromnym prawdopodobieństwem stwierdzić dany fakt.
Dowody z wiedzą zerową można podzielić na interaktywne (ang. interactive) oraz nieinteraktywne (ang. non-interactive). Przedstawiona powyżej sytuacja jest przykładem pierwszego rodzaju, ponieważ wymaga od Ciebie serii akcji, w celu udowodnienia danego faktu. Ogromny minus takiego podejścia wiąże się z tym, że za każdym razem musimy powtórzyć wszystkie czynności od początku, jeżeli chcemy przekonać kolejną osobę.
Podejścia nieinteraktywne pozbawione są tej wady, ponieważ z ich pomocą jesteśmy w stanie dostarczyć jeden generyczny dowód, który w przyszłości będzie mógł zostać zweryfikowany przez dowolną osobę, która nie będzie musiała znać sekwencji “ruchów”. Osiągnąć to można tworząc odpowiedni matematyczny algorytm. Z tego punktu widzenia rozwiązanie to wymaga prawdopodobnie więcej pracy na samym początku, jednak daje ogromne korzyści w przyszłości.
Zero-Knowledge Rollups
Rysunek 4.
Zero-Knowledge Rollups, jak sam nazwa wskazuje, opierają się na dowodzie z wiedzą zerową. Dzięki temu nie musimy już tylko zakładać, że wszystkie dane wrzucane przez nie na główną sieć są poprawne. Wraz z “paczką” dostarczany jest matematyczny dowód na prawdziwość wykonanych transakcji, a nosi on nazwę validity proof.
Zero-Knowledge Rollups określa się też mianem ZK-SNARKS, a rozwinięcie tego akronimu to Zero-Knowledge Succinct Non-Interactive Argument of Knowledge. Oznacza to, że dowody dostarczone przez taki rollup nie muszą pokazywać nam wszystkich transakcji (Zero-Knowledge), są zwięzłe (Succinct), nie występuje potrzeba żadnej interakcji z osobami, które weryfikują wykonaną pracę (Non-Interactive) oraz zawarte w nich są wszystkie niezbędne informacje do udowodnienia poprawności wykonanych operacji (Argument of Knowledge).
Jeśli powyższe wytłumaczenie wydaje Ci się zbyt skomplikowane, to spróbuj pomyśleć o tym rozwiązaniu w następujący sposób. Wiele różnych osób próbuje dokonać transakcji, używając do tego mechanizmu ZK Rollups, a następnie ktoś inny przegląda wszystkie te operacje i wykonuje w tym czasie jakąś dodatkową pracę, w celu weryfikacji danych. Można powiedzieć, że w tej chwili dzieje się coś podobnego do tego, co ma miejsce podczas kopania kryptowalut. Jeśli okaże się, że wszystko było okej, to taka osoba wrzuca spakowane transakcje wraz z dowodem (validity proof) na blockchain warstwy pierwszej, tworząc nowy stan blockchaina.
Jednym z większych minusów tego rozwiązania jest wyzwanie związane z kompatybilnością z EVM. Na szczęście tam, gdzie jest ciekawy problem do rozwiązania, tam pojawiają się ludzie próbujący sobie z nim poradzić. Jednym z projektów, który próbuje się pozbyć tego minusu jest zkSync.
W tym miejscu zakończę tematykę rollupów. Jeżeli jednak czujesz, że to za mało, a sam temat interesuje Cię zdecydowanie bardziej, to polecam Ci zapoznać się z tą prezentacją. Nawet jeśli nie czujesz się swobodnie z angielskim, to opcja tłumaczenia napisów na YT powinna dać sobie jakoś radę:)
Przez ostatnie tygodnie przeszliśmy od omówienia problemów związanych ze skalowalnością blockchaina, aż po konkretne pomysły oraz projekty, które sobie z nimi radzą. Przedstawione rozwiązania nie są jedynymi ideami, które mogą być wdrażane. Jestem wręcz przekonany, że z czasem powstaną kolejne mechanizmy, które jeszcze bardziej usprawnią cały blockchainowy proces, przez co technologia ta będzie mogła na równi konkurować z innymi dzisiejszymi rozwiązaniami.
Trzeba jednak przyznać, że droga do pełnego sukcesu jest jeszcze długa. Na szczęście obecnie na rynku krypto jest głęboka bessa, przez co na różnych blockchainach jest wykonywanych zdecydowanie mniej transakcji. Dzięki temu technologia ta dostała trochę czasu, aby ulepszyć istniejące mechanizmy i przygotować się lepiej na przyszłość. Chociaż do pełnego wyskalowania Ethereum potrzebujemy jeszcze przynajmniej kilku lat, to każdy nowy dzień przybliża nam ten moment. Jednak nie samą skalowalnością człowiek żyje, dlatego na tę chwilę zakończę temat i w przyszłym wpisie zajmiemy się całkowicie czymś innym:).