Skalowalność blockchainów | Stan, problemy, możliwości rozwiązań
StarkWare wyjaśnia, w jaki sposób uzyskać optymalną wydajność łańcuchów bloków.
Skalowalność blockchainów zawsze była gorącym tematem. Wiele łańcuchów bloków zachwala swoje możliwości w zakresie liczby transakcji na sekundę, aczkolwiek TPS nie jest idealnym wskaźnikiem, na podstawie którego należałoby porównywać blockchainy. Co więcej, wysoki TPS niesie ze sobą zwykle wysoką cenę, a to rodzi pytanie: czy te sieci faktycznie się skalują, czy tylko zwiększają swoją przepustowość?
Przyjrzyjmy się więc temu, jak zdefiniować skalowalność, jakie kompromisy są dokonywane w celu jej osiągnięcia i dlaczego Validity Rollup (znany również pod nazwą ZK- Rollup) to najlepsze rozwiązanie problemu niewystarczającej skalowalności.
***
Artykuł jest tłumaczeniem opracowania autorstwa Starkware zatytułowanego Redefining Scalability
Nie wszystkie transakcje są sobie równe
Po pierwsze, musimy przyjąć jako pewnik, że prosta i wygodna metryka TPS nie jest dokładną miarą skalowalności.
Aby zrekompensować węzłom procesowanie transakcji (i zniechęcić użytkowników do spamowania sieci niepotrzebnymi ciągami obliczeń), blockchainy pobierają opłatę proporcjonalną do obciążenia nałożonego na blockchain. W Ethereum złożoność obciążenia obliczeniowego wyrażona i mierzona jest w oparciu o gaz. Ponieważ gaz jest bardzo wygodną miarą złożoności transakcji, termin ten będzie używany w tym artykule również w odniesieniu do łańcuchów bloków innych niż Ethereum, mimo że jest on specyficzny właśnie dla tej sieci.
Transakcje różnią się od siebie wymiarem złożoności, a co za tym idzie, ilością zużywanego gazu. Bitcoin – oparta na blockchainie, pionierska sieć transakcji peer-to-peer – obsługuje tylko podstawowy skrypt Bitcoin. Te proste transfery z adresu na adres zużywają niewiele gazu. W przeciwieństwie do tego, łańcuchy dedykowane smart kontraktom, takie jak Ethereum lub Solana, obsługują maszynę wirtualną i języki programowania z kompletnością Turinga, które pozwalają na przeprowadzanie o wiele bardziej złożonych transakcji. Dlatego też zdecentralizowane aplikacje, takie jak chociażby Uniswap, wymagają znacznie więcej gazu.
W związku z powyższym nie ma sensu porównywać TPS różnych łańcuchów bloków. Zamiast tego powinniśmy porównywać zdolność obliczeniową.
Wszystkie łańcuchy bloków mają (zmienny) rozmiar i czas bloku. To zmienne, które określają, ile jednostek obliczeniowych można przetworzyć na blok i jak szybko można dodać nowy blok. Te dwie zmienne określają wspólnie przepustowość łańcucha bloków.
Co ogranicza skalowalność?
Blockchainy starają się być maksymalnie zdecentralizowane. Aby to osiągnąć, należy kontrolować dwie podstawowe właściwości:
Wymagania sprzętowe
Decentralizacja sieci blockchain jest determinowana przez zdolność najsłabszego węzła w sieci do weryfikacji aktywności w łańcuchu bloków i utrzymania jego stanu. Dlatego też koszty uruchomienia węzła (sprzęt, przepustowość i pamięć) powinny być utrzymywane na jak najniższym poziomie, aby umożliwić jak największej liczbie osób stanie się uczestnikami danego ekosystemu.
Wzrost stanu
Wzrost stanu odnosi się do tego, jak szybko rozwija się blockchain. Im większa przepustowość sieci w określonej jednostce czasu, tym szybciej blockchain się rozwija. Pełne węzły przechowują historię sieci i muszą być w stanie zweryfikować jej stan.
Stan Ethereum jest przechowywany i przywoływany przy użyciu wydajnych struktur, takich jak drzewa. Wraz ze wzrostem stanu dodawane są do niego nowe liście i gałęzie, co sprawia, że wykonywanie pewnych czynności staje się coraz bardziej złożone i czasochłonne. Wraz ze wzrostem rozmiaru łańcucha pogorszeniu ulega czas procesowania transakcji przez węzły, co prowadzi do wydłużenia czasu potrzebnego na walidację nowych bloków. Z biegiem czasu zwiększa to również całkowity czas potrzebny na synchronizację pełnego węzła.
Niepożądane skutki wzrostu przepustowości
1. Liczba węzłów
Minimalne wymagania do uruchomienia węzła i liczby węzłów to:
Bitcoin: 350 GB miejsca na dysku twardym, połączenie 5 Mbit/s, 1 GB pamięci RAM, procesor >1 GHz. Liczba węzłów: ~10 000
Ethereum: 500 GB+ miejsca na dysku SSD, połączenie 25 Mbit/s, 4–8 GB pamięci RAM, 2–4 rdzenie procesora. Liczba węzłów: ~6000
Solana: 1,5 TB+ miejsca na dysku SSD, połączenie 300 Mbit/s, 128 GB RAM, procesor 12+ rdzeni. Liczba węzłów: ~1200
Zauważ, że im większe wymagania dotyczące procesora, przepustowości i pamięci dla węzłów wymaganych do przepustowości łańcucha bloków, tym mniej węzłów w sieci, co prowadzi do słabszej decentralizacji i mniejszej stabilności integracyjnej sieci.
2. Czas potrzebny na synchronizację pełnego węzła
Gdy uruchamiasz węzeł po raz pierwszy, musi on zsynchronizować się ze wszystkimi istniejącymi węzłami, pobrać i zweryfikować stan sieci od bloku genesis do końca łańcucha. Proces ten powinien być tak szybki i wydajny, jak to tylko możliwe.
Przyjmując za punkt odniesienia testy 2020 Bitcoin Node i 2021 Node Sync Jamesona Loppa, w poniższej tabeli porównano czas potrzebny do synchronizacji pełnego węzła Bitcoin vs. Ethereum vs. Solana na przeciętnym komputerze klasy konsumenckiej:
To porównanie przepustowości łańcucha bloków i synchronizacji węzłów
pokazuje, że zwiększenie przepustowości prowadzi do dłuższych czasów synchronizacji, ponieważ coraz więcej danych musi być przetwarzanych i przechowywanych.
Chociaż ulepszenia oprogramowania węzła, aby złagodzić wyzwania pojawiające się wraz z ciągłym wzrostem łańcucha bloków (zmniejszenie rozmiaru dysku, szybsze prędkości synchronizacji, większa odporność na awarie, modularyzacja niektórych komponentów itp.) są stale wprowadzane, węzły ewidentnie nadal nie nadążają za wzrostem przepustowości.
Jak należy zdefiniować skalowalność?
Skalowalność to najbardziej błędnie interpretowany termin w przestrzeni blockchain. Chociaż zwiększenie przepustowości jest pożądane, jest to tylko jedna część układanki. Skalowalność oznacza więcej transakcji na tym samym sprzęcie.
Z tego powodu skalowalność można podzielić na dwie kategorie.
Sequencer scalability
Sekwencjonowanie opisuje czynność zlecania i przetwarzania transakcji w sieci. Każdy blockchain może w trywialny sposób zwiększyć swoją przepustowość poprzez zwiększenie rozmiaru bloku i skrócenie czasu bloku do momentu, w którym negatywny wpływ na jego decentralizację zostanie uznany za zbyt znaczący.
Modyfikowanie tych prostych parametrów nie zapewnia jednak oczekiwanej poprawy stanu rzeczy. EVM Ethereum może (teoretycznie) obsłużyć do ~2000 TPS, co jest niewystarczające do obsługi długoterminowego zapotrzebowania na przestrzeń blokową. Aby skalować sekwencjonalnie, Solana wprowadziła imponujące innowacje, korzystając z równoległego środowiska wykonawczego i sprytnego mechanizmu konsensusu, który pozwala na znacznie wydajniejszą przepustowość. Ale pomimo swoich ulepszeń nie okazało się to w pełni satysfakcjonującym rozwiązaniem w kontekście skalowalności. Wraz ze wzrostem przepustowości, w Solanie rosną również koszty sprzętu do uruchomienia węzła i przetwarzania transakcji.
Weryfikacja skalowalności
Weryfikacja opisuje podejścia, które zwiększają przepustowość bez obciążania węzłów coraz większymi kosztami sprzętu. W szczególności odnosi się to do innowacji kryptograficznych, takich jak validity proof. To jest powód, dla którego ZK-Rollupy mogą skalować blockchain w sposób zrównoważony.
Czym jest ZK-Rollup?
ZK-Rollup przenosi obliczenia i przechowywanie stanu poza łańcuch, przechowując niewielką ilość niektórych danych w łańcuchu. Smart kontrakt na bazowym łańcuchu bloków utrzymuje stan rollupu. Partia wysoce skompresowanych transakcji wraz z bieżącym stanem głównym jest wysyłana do weryfikacji poza łańcuchem (Prover).
Prover dokonuje wymaganych obliczeń, generuje dowód ważności wyników i nowego głównego stanu i wysyła go do weryfikatora on-chain (Werifier). Ten weryfikuje dowód ważności, a smart kontrakt, który utrzymuje stan rollupu, aktualizuje go do nowego stanu dostarczonego przez weryfikatora.
Jak skalować takie rollupy przy zachowaniu tych samych wymagań sprzętowych?
Mimo że działalność węzła Prover wymaga zastosowania zaawansowanego sprzętu, nie wpływa ona na wymiar decentralizacji łańcucha bloków, ponieważ ważność transakcji jest gwarantowana matematycznie weryfikowalnymi dowodami.
Liczą się wymagania dotyczące weryfikacji tych dowodów. Ponieważ zaangażowane dane są wysoce skompresowane, ich wpływ na węzły bazowego łańcucha bloków jest minimalny.
Weryfikatory (węzły Ethereum) nie wymagają zaawansowanego sprzętu, a wielkość partii nie zwiększa wymagań sprzętowych. Węzły muszą przetwarzać i przechowywać tylko zmiany stanów i niewielką ilość danych połączeń. Dzięki temu wszystkie węzły Ethereum mogą weryfikować partie takich rollupów przy użyciu istniejącego sprzętu.
Im więcej transakcji, tym taniej
Im więcej transakcji jest realizowanych jest w tradycyjnych łańcuchach bloków, tym droższe staje się ich procesowanie, gdy przestrzeń na bloki się zapełnia, w wyniku czego użytkownicy muszą przelicytować się nawzajem na rynku opłat, aby uwzględnić swoje transakcje.
W przypadku ZK-rollupu ta dynamika ulega odwróceniu. Weryfikacja partii transakcji na Ethereum wiąże się z pewnym kosztem. Wraz ze wzrostem liczby transakcji w danej partii, koszt weryfikacji jej zawartości rośnie wolniej. Dodanie większej liczby transakcji do partii prowadzi do możliwości uzyskania niższych opłat transakcyjnych, mimo że koszt weryfikacji partii wzrasta – ponieważ jest amortyzowany między wszystkimi transakcjami w partii.
ZK-rollupy wymagają jak największej liczby transakcji w partii – aby opłata za weryfikację mogła być dzielona między wszystkich użytkowników. Gdy rozmiar partii rośnie do nieskończoności, zamortyzowana opłata za transakcję zbliża się do zera, tj. Im więcej transakcji w ramach rollupu, tym taniej dla wszystkich.
dYdX, zdecentralizowana aplikacja zasilana przez Validity Rollup, notuje często wielkości partii przekraczające 12 000 transakcji. Porównanie zużycia gazu w ramach tych samych transakcji w sieci głównej w kontrze do rollupu ilustruje wzrost skalowalności:
Rozliczenie transakcji dYdX na Ethereum Mainnet: 200 000 gazu
Rozliczenie transakcji dYdX na StarkEx: <500 gazu
Można na to spojrzeć z innej strony: główny koszt Validity Rollup skaluje się liniowo wraz z liczbą użytkowników w tej samej partii.
Dlaczego rollupy „optymistyczne” nie są tak skalowalne, jak mogłoby się wydawać?
Teoretycznie, takie rollupy zapewniają prawie takie same korzyści w zakresie skalowalności, jak rollupy ZK. Jest jednak jedno ważne rozróżnienie: rollupy optymistyczne optymalizują dla przeciętnego przypadku, podczas gdy te drugie optymalizują dla najgorszego przypadku. Ponieważ systemy blockchain działają w skrajnie przeciwnych warunkach, optymalizacja pod kątem najgorszego przypadku jest jedynym sposobem na osiągnięcie bezpieczeństwa.
W najgorszym przypadku rollupu optymistycznego, transakcje użytkownika nie zostaną zweryfikowane przez kontrolery. Tak więc, aby zakwestionować oszustwo, użytkownik musi zsynchronizować pełny węzeł Ethereum, pełny węzeł L2 i samodzielnie obliczyć podejrzaną transakcję.
W najgorszym przypadku rollupu ZK wystarczyłoby, aby użytkownik zsynchronizował pełny węzeł Ethereum, aby zweryfikować dowód ważności, oszczędzając sobie obciążenia z tytułu konieczności wykonania dodatkowych obliczeń.
W przeciwieństwie do ZK, pakiety optymistyczne skalują się liniowo wraz z liczbą transakcji, a nie liczbą użytkowników, co czyni je zdecydowanie droższym rozwiązaniem.
Ostatni element układanki: bezprawny dostęp do stanu rollupu
Aby zagwarantować ważność transakcji, użytkownicy muszą tylko uruchomić węzeł Ethereum. Użytkownicy i deweloperzy mogą jednak chcieć przeglądać, uruchamiać i egzekwować stan rollupu w wielu różnych celach. Węzeł indeksujący L2 doskonale spełnia tę potrzebę. Nie tylko pozwala użytkownikom zobaczyć transakcje w sieci, ale jest także krytycznym elementem infrastruktury, która jest niezbędna do funkcjonowania całego ekosystemu. Indeksatory, takie jak The Graph, Alchemy, Infura; sieci wyroczni, takie jak Chainlink, i eksploratory bloków… wszystkie z nich są w pełni obsługiwane przez indeksujący węzeł L2.
Wniosek
Wiele podejść do rozwiązania problemu skalowalności łańcucha bloków błędnie koncentruje się na zwiększaniu przepustowości. Pomija to jednak wpływ przepustowości na węzły: stale rosnące wymagania sprzętowe do przetwarzania bloków i przechowywania historii sieci oraz sposób, w jaki hamuje to decentralizację sieci.
Wraz z pojawieniem się kryptografii validity proof, blockchain może osiągnąć prawdziwą skalowalność, która nie obciąża węzłów coraz większymi kosztami i pozwala na zwiększenie wymiaru decentralizacji. Możliwe staje się tym samym procesowanie większej liczby transakcji okraszonych bardziej złożonymi obliczeniami przez te same jednostki sprzętowe. Rozwiązuje to problem rynku opłat. Im więcej aktywności w ramach validity rollup, tym taniej!
Źródła:
- https://medium.com/starkware/redefining-scalability-5aa11ffc5880
- https://bitcoin.org/en/bitcoin-core/features/requirements
- https://ethereum.org/en/developers/docs/nodes-and-clients/
- https://docs.solana.com/running-validator/validator-reqs