W moich oczach perspektywa rozwoju Ethereum wygląda bardzo optymistycznie. I nie mam tutaj wcale na myśli wysiłków zmierzających do powstania Ethereum 2.0. O tym będzie innym razem. Dzisiaj skupimy się na bardziej namacalnym rozwiązaniu problemów Ethereum ze skalowalnością. Rozwiązaniu, które czeka tuż za rogiem.

W czym problem?

Wszyscy aktywnie korzystający z sieci Ethereum zdają sobie sprawę z jej mankamentów. Jej ograniczona przepustowość nieraz daje się we znaki. Wzmożone zainteresowanie i ruch w sieci, które zdarzają się na przykład podczas gwałtownych ruchów cenowych, czynią korzystanie z sieci frustrujące, czasochłonne i drogie. By nie rzecz, że czasem wręcz niemożliwe. I to w momentach, kiedy najbardziej tego potrzebujemy.

Koronny przykład tego zjawiska, i kosztownych jego konsekwencji, zaobserwowaliśmy podczas krypto crashu 12-13 marca 2020. Sieć była wtedy kolosalnie przeciążona. Nieraz trzeba było płacić wręcz dziesiątki dolarów opłaty dla górników, aby w miarę szybko zrealizować swoją transakcję. Kłopoty mieli nawet Ci, których było stać na tak wysokie opłaty. Sytuacja była na tyle dynamiczne, że problemem było w ogóle wyliczenie ceny gazu, która w danym momencie gwarantowała w miarę szybkie umieszczenie transakcji w bloku. W wyniku tego ludzie nie tylko nie byli w stanie przetransferować swoich tokenów na giełdy, aby je szybko sprzedać. Z powodu nadmiernego ruchu cierpiały też projekty DeFi. I to wtedy kiedy były najbardziej potrzebne. Wystarczy wspomnieć o problemach Makera z likwidacją zastawów pod emisję DAI. Ludzie po pierwsze nie byli w stanie zrealizować transakcji, które obroniły by ich ich zastawy przed likwidacją. Pomimo posiadania środków potrzebnych do tego. Po drugie, sam system nie był w stanie optymalnie przeprowadzić procesu sprzedaży zastawu na aukcjach. W wyniku czego sprzedał go za bezcen. Straty sięgały milionów dolarów.

Jeśli Ethereum ma być światowym, zdecentralizowanym komputerem, to musi oferować coś więcej niż dwadzieścia transakcji na sekundę. Musi gwarantować komfortowe korzystanie z sieci w tym samym czasie setkom tysięcy użytkowników. Najlepiej wręcz milionom. Zawieranie transakcji powinno przy tym być komfortowe oraz relatywnie szybkie i tanie.

Wszyscy więc z zapartym tchem wypatrujemy ETH 2.0, które ma rozwiązać te problemy. Jednak powstanie użytecznej wersji ETH 2.0 jest cały czas pod dużym znakiem zapytania. Zadowalających nas rezultatów nie otrzymamy wcześniej, niż za kilkanaście miesięcy. 

Na szczęście w ekosystemie Ethereum są ludzie, którzy poświęcają swój czas i wysiłki, aby nadać sieci Ethereum nową jakość bez konieczności czekania na ETH 2.0. I te wysiłki zaczynają przynosić namacalne efekty. Można powiedzieć, że tuż za rogiem, czeka na nas kilka rozwiązań, które sprawią, że Ethereum będzie w stanie procesować tysiące transakcji na sekundę. A do tego będzie robić to szybciej i taniej niż do tej pory. Są to rozwiązania tzw. drugiej warstwy (ang. layer 2). Jednym z nich jest nasz dzisiejszy bohater – technologia zwana Optimistic Rollups.

Dlaczego zwiększanie rozmiaru bloku nie działa?

W technologii blockchain największy nacisk kładziony jest na bezpieczeństwo. Jednym z jego kluczowych aspektów jest sprawienie, że wszyscy będą postępować uczciwie, zgodnie z zasadami działania sieci.  W zdecentralizowanej sieci, w której nie ma organu, który będzie tą uczciwość wymuszał i egzekwował. Na straży porządku stoi więc protokół działania sieci oparty o kryptografię. Kryptografia sprawia, że część szkodliwych działań jest w ogóle niemożliwych do podjęcia. Inne zasady protokołu sprawiają, że pozostałe nieuczciwe zachowanie stają się bardzo kosztowne. Czyniąc je nieopłacalnymi czy wręcz ekonomicznie niewykonalnymi. Utrzymanie tego ładu i bezpieczeństwa jest jednak kosztowne. Większość pracy z tym związanej wykonują górnicy, dlatego są przez sieć wynagradzani nowymi monetami za wydobycie kolejnego bloku. Po to, aby mieli ekonomiczny interes w kontynuowaniu kopania i zapewnianie tym samym bezpieczeństwa sieci.

Gdy słyszymy, że sieć ma problemy ze skalowalnością, to pierwsza myśl jaka przychodzi do głowy: dorzućmy pracy górnikom. Niech wpuszczają do bloku większą ilość transakcji. I po sprawie. Jest to naiwne myślenie, które może być skuteczne tylko w małej skali. A mała skala, czyli na przykład zwiększenie ilość transakcji na sekundę z 20 na 100 niewiele zmienia. Dalej nie mamy rozwiązania, z którego komfortowo będzie mógł korzystać cały świat. Możesz więc zapytać, dlaczego nie zwiększyć rozmiaru bloku tak, aby mieściło się w nim zdecydowanie więcej transakcji? Więcej o kilka rzędów wielkości. Tak, abyśmy mogli przeprowadzać tysiące, czy dziesiątki tysięcy transakcji na sekundę.

Odpowiedź jest prosta. Tracimy wtedy zdecentralizowany charakter sieci. A jest to najważniejszy przymiot publicznych sieci blockchain. To właśnie decentralizacja robi różnicę. Jest tym co wyróżnia blockchain od tradycyjnych rozwiązań informatycznych, które istniały przed powstaniem Bitcoina. To dzięki tej cesze blockchain jest odporny na cenzurę i daje gwarancję niemożliwości wprowadzania zmian w historii transakcji. 

Jeżeli zwiększymy przepustowość blockchaina po prostu zwiększając ilość danych, to długoterminowo jest to droga prowadząca w jedną stroną. Do centralizacji. Po pierwsze umieszczenie większej ilość danych w bloku oraz skrócenie czasu pomiędzy powstaniem kolejnych bloków powodują coraz większe problemy w sieci z propagowaniem danym. Przypomnijmy, że sieć blockchain to tysiące komputerów połączone ze sobą. Każdy z tych komputerów, zwany węzłem, połączony jest kilkoma, kilkunastoma bądź kilkudziesięcioma innymi komputerami. Tylko węzły połączone ze sobą są w stanie wymieniać ze sobą dane. A że każdy z nich jest połączony maksymalnie tylko z kilkudziesięcioma innymi, to przesyłanie danych po siec odbywa się etapami. Nie jest tak, że nagle wszystkie węzły wiedzą o nowo powstałym bloku. W pierwszej kolejności wiedzą o tym węzły, które są połączone bezpośrednio, z górnikiem który wykopał nowy blok. Następnie one podają tę informację do kolejnych węzłów, z którymi mają połączone. Te z kolei podają do jeszcze następnych. Ten krok jest powtarzany co najmniej kilka razy, zanim informacja zostanie rozesłana po całej sieci. 

Jeśli zmniejszymy odległość między powstawaniem bloków, to zwiększamy szanse za to, że zanim wszyscy dowiedzą się o nowym bloku, to już ktoś inny wykopie drugi. Cześć sieci będzie wiedziała o jednym nowym bloku, a część o drugim. Co może grozić forkiem, podzieleniem sieci. Dodatkowo często pojawiające się, duże bloki sprzyjają centralizacji sieci. Aby być w stanie szybko i skutecznie je odbierać, a następnie przechowywać, nie wystarczy już zwykły komputer. Czy nawet pojedynczy serwer. Potrzebujemy już całej farmy serwerów z super wydajnym łączem internetowym. Co sprawia, że coraz mniejsza ilość osób jest w stanie przyłączyć się do sieci. Co zwiększa ryzyko dogadania się i przejęcia nad nią kontroli, przez nielicznych których jest na to stać. Przykłady tego typu korupcji protokołu spotykamy często w systemach typu Delegated Proof of Stake (DPoS). Gdzie liczbę “górników’ ograniczono do kilkudziesięciu. Po to, by być w stanie zapewnić zwiększoną przepustowość sieci. Niestety doświadczenia takich sieci jak Steem, EOS czy Lisk pokazują jednoznacznie, że jest to droga do utraty zdecentralizowanego charakteru sieci i oddania kontroli nad nią w ręce zorganizowanych karteli.

Na czym polega skalowanie drugiej warstwy?

Dlatego, jeśli blockchain ma mieć dalej publiczny i zdecentralizowanych charakter, to nie możemy po prostu uczynić go większym i bardziej kosztownym w utrzymaniu. Musimy wymyślić coś innego. Jakieś rozwiązanie, które będzie nabudowane na sam blockchain. Korzystające z jego bezpieczeństwa. Tak jak on zabezpieczone kryptografią i nie wymagające zaufania. Tego typu rozwiazania nazywane są druga warstwą. Są one bowiem nadbudowane na blockchain (który stanowi pierwszą warstwę). Najbardziej znanym rozwiązaniem tego typu jest Lightning Network. Jest to druga warstwa oparta o blockchain Bitcoina. Pozwala ona na dokonywanie niemal natychmiastowych i niemal darmowych transakcji Bitcoinem. 

Oto jak w uproszczeniu działają rozwiązania drugiej warstwy. Podstawowym konceptem jest tu przeniesienie środków z blockchaina na tą drugą warstwę. Odbywa się to poprzez ich zamrożenia na blockchainie. Od tego czasu nie możemy ich wykorzystywać w pierwszej warstwie, ale za to pojawiają się one na drugiej warstwie. I tam ich wykorzystanie jest tańsze i szybsze niż w oryginalnym łańcuchu. Następnie możemy w dowolnym momencie powrócić z naszymi środkami do łańcucha głównego. Który jest też ostatecznym strażnikiem, czuwającym nad bezpieczeństwem naszych środków.  

Jednym z takich rozwiązań dla sieci Ethereum jest Optimistic Rollups.

Jak działa Optimistic Rollups? 

Tak jak wspomniałem wcześniej, największym kosztem utrzymania sieci blockchain jest zapewnienie jej bezpieczeństwa w zdecentralizowanym sposób. Każdy blok i transakcję należy zweryfikować pod kątem ich poprawności. Czy ktoś nie próbuje dokonać transakcji nie swoimi coinami? Czy nie mamy do czynienia z próbą wydania tych samych środków po raz drugi? Wszystko trzeba sprawdzić, nie można wierzyć ludziom na słowo. Dlatego wszystkie operacje, wszystkie transakcje, wszystkie interakcje ze smart contractami są wykonywane na wszystkich komputerach w sieci Ethereum. 

Optimistic rollup ma tutaj bardziej optymistyczne podejście. Domyślnie zakłada, że wszystko je w porządku. Jednocześnie zapewniając wszystkim możliwość zakwestionowania potencjalnie nieuczciwego stanu. Przyjrzyjmy się jak w uproszczeniu działa ten model:

  1. Jego sercem jest umieszczony na blockchainie Ethereum smart contract. Odpowiada on za fundamentalne funkcje działania systemu takie jak:
    1. wpłacanie i wypłacanie środków na drugę warstwę przez użytkowników
    2. przesyłanie przez agregatorów (o nich za chwilkę) potwierdzeń stanów z drugiej warstwy
    3. możliwość zakwestionowania poprawności stanów drugiej warstwy przesłanych przez agregatorów. Może to zrobić każdy.
  2. Agregatorzy to podmioty odpowiedzialne za wykonywanie operacji przeprowadzanych na drugiej warstwie. Następnie grupują te transakcje (stąd określenie rollup w nazwie), obliczają ich sumę kontrolną stanu (merkle root) i przesyłają ten stan na łańcuch główny, do wspomnianego w punkcie pierwszym smart contractu.
  3. Gdy stan ten trafia do smart contractu, to każdy ma możliwość jego zakwestionowania i przesłania poprawnego. Jeśli takie zgłoszenie oszustwa okaże się poprawne, to wtedy ten stan nie jest uznawany, a nieuczciwy agregator jest karany utratą środków. Środki te musiał wcześniej umieścić w smart contracie, aby móc agregować transakcje na drugiej warstwie..

Optimistic rollups pozwala na osiągnięcie znacznie większej przepustowości sieci dzięki temu, że transakcję nie muszę być wysyłane na dziesiątki tysięcy komputerów. A potem wykonywane na każdym z nich. Tutaj zajmuje się tym zaledwie kilku bądź kilkunastu agregatorów. Którym wszyscy mogą patrzeć na ręce. I ukarać ich stratą środków, jeśli podejmą się nieuczciwych działań.

Kolejnym plusem korzystania z tego rozwiązania jest wyeliminowanie konieczności wykorzystania gazu do dokonywania opłat transakcyjnych. I pokrywania tych opłat Etherem, nawet jeśli transakcje go nie dotyczy. Opłaty mogę być tutaj znacznie niższe i uiszczane przy wykorzystaniu dowolnych tokenów. 

Optimistic Virtual Machine

Podstawą sukcesu Ethereum są smart contracty. Są to umieszczone na blockchainie proste programy komputerowe. Pomagają one przy wielu operacjach wyeliminować potrzebę korzystania z zaufanej trzeciej strony. Na przykład smart contract może zastąpić bank, jeśli chodzi o umieszczanie kapitału na lokatach i wykorzystywanie go do udzielania pożyczek. Więcj o tym mówimy w darmowym kursie DeFi Masters.

Dlatego patrząc na każde rozwiązanie problemu skalowalności sieci Ethereum musimy sobie zadać pytanie: co ze smart contractami? Czy one również mogę być skalowane w ten sposób? Jak trudne i złożone jest zaadaptowanie istniejących smart contractów do korzystania z tego rozwiązania?

W przypadku Optimistic Rollups odpowiedź na te pytania jest wysoce optymistyczna. Po miesiącach ciężkiej pracy zespół odpowiedzialny za powstanie tego rozwiązania opublikował na początku 2020 roku pierwsze wersje  Optimistic Virtual Machine. Jest ona zgodna z Ethereum Virtual Machine, co oznacza dwie wspaniałe rzeczy.

Po pierwsze wszystkie działające obecnie na Ethereum smart contracty będą mogły bardzo łatwo przenieść się na druga optymiastyczną warstwę. Wystarczy przekompilować istniejący już kod. Bez potrzeby wprowadzania żadnych zmian. Po kilku sekundach mamy wersję smart contractu, którą możemy umieścić na drugiej warstwie opartej o Optimistic Rollup.

Po drugie, do powstawania nowych smart contractów, natywnie działających na drugiej, optymistycznej warstwie, będzie można używać dokładnie tych samych narzędzi, z których obecnie korzystają  programiści smart contractów na Ethereum. Cały ekosystem działa po staremu. Nie trzeba zmieniać żadnych narzędzi. Nie trzeba na nic się przesiadać.

Odrobina pesymizmu

Kończąc ten wywód przejdźmy na chwilę na ciemną stronę pesymizmu. Jakie są mankamenty Optimistic Rollup? Co tam może pójść nie tak?

Po pierwsze rozwiązanie to ma ograniczony potencjał skalowalności. Mówi się o tym, że swobodnie pozwala na przeprowadzanie setek transakcji na sekundę. Jest potencjał do kilku (ale raczej 2-3 niż 7-8) tysięcy transakcji na sekundę. To i tak postęp w stosunku do obecnych możliwości o rząd wielkości. Ale cały czas za mało, aby obsłużyć cały świat. Choćby ten finansowy.

Oczywiście różne rozwiązania skalowalności nie wykluczają się wzajemnie. Mogą być stosowane w tym samym czasie. Z tymże nie jesteśmy w stanie korzystać z kilku z nich na raz. W tym sensie, że na pierwszej warstwie, na blockchainie Ethereum, w jednej atomowej transakcji jesteśmy w stanie dokonać operacje na dowolnych smart contractach tam umieszczonych. To samo będzie prawdą dla Optimistic Rollup. Ale już nie jesteśmy w stanie przeprowadzić w jednej transakcji operacji zarówno na pierwszej jak i na drugiej warstwie. Albo korzystać z dwóch rozwiązań drugiej warstwy jednocześnie. Oznacza to, że każde rozwiązanie skalowalności będzie nam oferować ograniczonych zasobów projektów, z którym możemy korzystać. Tylko z tych, które zdecydują się na przejście na dane rozwiązanie drugiej warstwy. Czy tworząc tam drugą wersję swojego protokołu czy też migrując go tam całkowicie.

Krytycznym okiem należy też patrzeć na kwestie bezpieczeństwa. Co tu może pójść nie tak? Czy istnieją sytuacje, gdy nasze środki będą w jakiś sposób zagrożone? Aby środki w Optimistic Rollup były bezpieczne i nie było możliwość przeprowadzenia tam wałków, muszą być spełnione dwa warunki:

  1. Większość górników Ethereum (czy później walidatorów w ETH 2.0) musi być uczciwymi
  2. Co najmniej jeden agregator transakcji z Optimistic Rollup musi być uczciwy

O pierwszy warunek szczególnie bym się nie martwił. Jak pokazuje dotychczasowe doświadczenie stopień decentralizacji i wielkość mocy obliczeniowej Ethereum sprawiają, że to ryzyko jest właściwie tylko teoretyczne.

Za to przy drugim bym się poważnie zastanowił, że nie będa możliwe sytuacje podobne do tej, jaka miała miejsce w ekosystemie Maker podczas gwałtownych spadków na rynku 12/13 marca 2020. Przypomnijmy, że w ciągu kilku godzin cena większości kryptowalut spadła o 40-50%. Kto mógł, ten próbował się ratować. Co często wymagało skorzystania z sieci Ethereum. Która nie była w stanie udźwignąć tak dużego ruchu, więc automatycznie drastycznie wzrosły opłaty transakcyjne pozwalające na w miarę szybkie dostanie się do bloku. Do poziomu nawet rzędu kilkudziesięciu dolarów za transakcję. Takie duże koszta transakcyjne sprawiają, że pewne operacje stają się nieopłacalne. Ludzie i instytucje przerywają na ten czas swoje typowe zachowania. W przypadku Optimistic Rollup to może sprawić, że nikt nie będzie chciał albo nie będzie w stanie zgłosić reklamacji do nieuczciwego działania agregatorów. A na to zgłoszenie przewidziany jest tylko pewien okres. Po jego zakończeniu rozliczenie transakcji z drugiej warstwy trafia na blockchain. Jest na amen wyryte w kamieniu. Jeśli w nim było coś nie tak, coś nieuczciwego, to jest to już nie do cofnięcia. Jest pozamiatane. A scenariuszy znaczącego przesilenia sieci nie można wykluczyć. Nawet bez spektakularnych zmian cenowych. Rozwój projektów DeFi czy ekspansja stablecoinów na Ethereum sprawiły, że stałe wykorzystanie sieci jest na znacząco wyższym poziomie niż choćby rok czy dwa lata temu. Co ciekawe, ryzyko to można  całkowicie wyeliminować w Ethereum 2.0. Jeśli tam zaczepimy Optimistic Rollup o beacon chain. Łańcuch ten bowiem służy wyłącznie do raportowania stanów z łańcuchów pobocznych (nazywanych shardami) oraz przesyłu wartości pomiędzy nimi. Ilość danych i transakcji mających miejsce w poszczególnych shardach nie wpływa znacząco na wykorzystanie beacon chaina.

Gdzie jesteśmy teraz?

Rozwiązania oparte o Optimistic Rollups śmigają już sobie po testowych wersjach sieci Ethereum. 

Jednym z nich jest Unipig. Jest to oparty o Optimistic Rollups uproszczony klon zdecentralizowanej giełdy Uniswap. Zresztą tego typu klony Uniswapa, zobaczymy przy okazji eksplorowania także innych technik skalowania Ethereum. Można powiedzieć, że stworzenie klona Uniswap jest obecnie dobrą praktyką udowadniania, że dany koncept może działać w praktyce. Co ciekawe Unipig został napisany totalnie od zera pod wykorzystanie Optimistic Rollups. Nie było to po prostu skopiowanie kodu oryginalnego Uniswap i skompilowanie go poprzez Optimistic Virtual Machine. Ponieważ ta jeszcze nie istniała w tamtym czasie.

Drugie z ciekawych rozwiązań wykorzystujących tą technologię powstało już w oparciu o Optimistic Virtual Machine. Jest to klon giełdy syntetyków projektu Synthetix. Połączony z konkursem traderskim, który właśnie się zakończył. Nie możesz więc już przetestować tego rozwiązania na żywo, ale tutaj możesz zobaczyć jak szybko i sprawnie wygląda dokonywanie trade’u na optymistycznej drugiej warstwie:

Jak widzimy jest to nowa jakość korzystania z zdecentralizowanych rozwiązań. May do czynienia z transakcjami zawieranymi w ciągu ułamków sekund. Bez użerania się z gazem i określaniem jego ceny. Synthetix bardzo optymiastycznie zapatruje się na Optimistic Rollups i chcę być jednym z partnerów podczas wprowadzania tej technologii na mainnet. I nie ma co się dziwić. Jeśli chcemy przenieś światowe rynki finansowe na blockchain, to potrzebujemy aby transakcje były zawierane szybko i tanio.

Ten tekst jest początkiem cyklu artykułów i nagrań związanych z rozwojem sieci Ethereum. W kolejnych tekstach przyjrzymy się zarówno całemu konceptowi ETH 2.0, jak i innym technologią drugiej warstwy, które czynią korzystania z sieci prostszym, tańszym i szybszym. Zapisz się na newsletter, aby być na bieżąco z tymi tematami.

Leave a Comment