Siema wszystkim. Słuchajcie, od jakiegoś czasu mocno kminię temat skalowania krypto i zatrzymałem się na jednym konkretnym zagadnieniu. Dużo się mówi o tym, że kompresja danych w rozwiązaniach Layer 2 to taki absolutny gamechanger, jeśli chodzi o cięcie kosztów na eth. Ale jak to właściwie bangla pod maską? Z tego co udało mi się wyczytać, to zaczne od tego, że sieci L2 (czyli te wszystkie rollupy jak Arbitrum, Optimism czy zkSync) zbierają do kupy tysiące operacji od userów i wrzucają je na główny łańcuch jako jedną wielką pakę.
No i tu wjeżdża cała na biało kompresja danych na blockchainie. Podobno głównym blokerem i pożeraczem kasy na L1 jest rozmiar tzw. calldata. Czyli warstwa druga musi jakoś upchać te informacje, żeby zajmowały jak najmniej miejsca, bo za każdy opublikowany bajt trzeba srogo bulić w gasie. Ktoś mądrzejszy może mi potwierdzić, czy dobrze rozkminiam ten proces? Zamiast wysyłać pełne dane z każdego przelewu (np. zera z adresów, gigantyczne podpisy kryptograficzne, dokładne wartości), te rozwiązania Layer 2 stosują chwyty trochę rodem z zipowania plików na kompie. Zastępują długie adresy jakimiś krótkimi indeksami ze swoich lokalnych drzew stanów. Dodatkowo podpisy są często agregowane w jeden wspólny dowód (to chyba dotyczy głównie ZK rollupów) – a to właśnie one zżerają najwięcej miejsca, prawda?
Zastanawia mnie też, gdzie w ogóle leży limit takiej optymalizacji przestrzeni w krypto. Przecież to upychanie i zmniejszanie wagi bloków nie może trwać w nieskończoność bez żadnej utraty bezpieczeństwa sieci. Jak mocno można jeszcze skompresować stan L2, zanim mainnet Ethereum przestanie ogarniać, co się tam w ogóle wydarzyło i kto komu przelał hajs? Słyszałem coś o state diffs, ale to już totalna czarna magia dla mnie.
Jeśli ktoś z was dłubie technicznie w rozwiązaniach Layer 2 i ogarnia te algorytmy kompresujące, dajcie znać. Chętnie bym poczytał wasze opinie o tym, jak dokładnie przebiega to pakowanie transakcji i czy np. Optimistic rollupy podchodzą do tematu redukcji przesyłu inaczej niż ZK. Z góry dzięki za każdą dawkę wiedzy, bo na polskim YT same ogólniki i ciężko o jakiś mięsisty konkret do dyskusji.
Siema! Bardzo dobrze to wszystko rozkminiasz, mordo. Właściwie sam odpowiedziałeś sobie na sporą część pytań, ale chętnie dorzucę swoje trzy grosze, bo temat jest gruby, a polskie community krypto często ślizga się tylko po samej powierzchni.
Jak pytasz czym jest kompresja danych w rozwiązaniach Layer 2, to musisz na to spojrzeć jak na nieustanną walkę o każdy pieprzony bajt informacji. Na mainnecie Ethereum miejsce w bloku to najdroższa nieruchomość w całym ekosystemie. Rollupy od samego początku płaciły gigantyczny gas za wrzucanie tam tak zwanego calldata. Więc żeby sieć L2 miała w ogóle rację bytu i żebyś ty mógł płacić ułamki centa za swapy na DEXach, devowie musieli wymyślić, jak maksymalnie odchudzić te pakiety transakcyjne zanim polecą na dół.
Elegancko wyłapałeś motyw z podmienianiem długich adresów. Po co pchać w transakcję pełny adres ERC-20, który waży w opór, jak w lokalnym drzewie stanu na warstwie drugiej można mu przypisać mega krótki indeks liczbowy? Kolejny stały patent to wycinanie zer z kodu. Zera w calldata są o wiele tańsze niż bajty niezerowe, ale po co je słać? Zamiast pchać pełne liczby, optymalizacja przestrzeni na blockchainie polega tu na tym, że po prostu ucinamy puste miejsca. To faktycznie przypomina algorytmy zipowania plików. Ba, niektóre sieci bezpośrednio używają standardowych pakerów (np. algorytmu Brotli) na całych zebranych paczkach danych (tzw. batchach) przed zrzuceniem ich na L1.
Wspominałeś też o agregacji podpisów - i tu trafiłeś w dziesiątkę. W normalnej transakcji na warstwie pierwszej sam podpis ECDSA zżera dramatycznie dużo miejsca. Żeby redukcja przesyłu w sieciach warstwy drugiej miała sens, używa się często dowodów ZK (SNARK albo STARK), które potrafią zwinąć tysiące indywidualnych podpisów z przelewów w jeden krótki matematyczny dowód ważności. Mainnet sprawdza tylko ten jeden malutki string znaków.
Teraz to, co cię najbardziej gryzie, czyli state diffs i różnice między technologiami. To jest prawdziwy gamechanger jeśli chodzi o skalowanie sieci Ethereum i algorytmy kompresujące.
Optimistic rollupy (jak Arbitrum czy Optimism) niestety MUSZĄ wysyłać na warstwę pierwszą historię transakcji (mocno zbitą, ale jednak). Dlaczego? Bo ich system opiera się na fraud proofs. Ktoś musi mieć dostęp do danych transakcyjnych, żeby w razie wałka móc to przeliczyć i udowodnić, że sekwencer ściemnia. Dlatego u nich takie zmniejszanie wagi bloków ma swoje twarde granice.
Z kolei przy ZK rollupach (Starknet, zkSync) wjeżdżają wspomniane przez ciebie state diffs (różnice stanów). Wyobraź sobie, że w ciągu godziny trejdujesz jednym tokenem w te i nazad 100 razy. Arbitrum musiałoby zapisać na mainnecie ślad tych 100 akcji. A ZK rollup? ZK ma to gdzieś. On bierze stan twojego portfela na początku, patrzy na stan na końcu i wysyła na mainnet tylko tę ostateczną różnicę w balansie. Do tego dorzuca dowód kryptograficzny, że po drodze nikt nie oszukał. Zreszta, to właśnie ten matematyczny ZKP gwarantuje bezpieczeństwo, więc Ethereum nie musi już w ogóle wiedzieć, co dokładnie robiłeś w trakcie tych 100 transakcji.
Limit upychania i cięcia kosztów w rozwiązaniach typu Layer 2 został też niedawno brutalnie przesunięty przez hard fork Dencun. Kojarzysz EIP-4844? Zamiast upychać dane w drogą calldata, wprowadzono tak zwane blobs. To wielkie, tanie przestrzenie na dane, które znikają z L1 po kilkunastu dniach. Jak połączysz te bloby z kompresją ZK, to otrzymujesz potężną przepustowość.
Także byku, ogarniasz temat bardzo dobrze. To rzeźbienie w bajtach to teraz najważniejszy sektor krypto. Jak masz jeszcze jakieś rozkminy o kompresowaniu, to dawaj, fajnie się czasem oderwać od samego patrzenia na wykresy!
Siemano. Poprzednik rozłożył temat na łopatki i elegancko wyjaśnił różnice między ZK a Optimistic, ale dorzucę wam jeszcze jeden klocek do tej całej układanki. Bo jak kminimy czym jest kompresja danych w rozwiązaniach Layer 2, to najczęściej patrzymy tylko na czystą matmę i zysk w gasie na mainnecie, a ucieka nam szerszy obrazek i ciemna strona mocy.
Zwróćcie uwagę, że każde takie pakowanie transakcji ma swoje twarde, ukryte koszty. Cudów nie ma, ktoś musi tę czarną robotę wykonać. W przypadku ZK rollupów, wygenerowanie tego malutkiego dowodu matematycznego, który finalnie leci na L1, wymaga po prostu chorej mocy obliczeniowej. Zanim te tysiące swapów i przelewów z DEXów zostaną zgniecione do jednego krótkiego stringa, potężne serwery (tzw. provery) muszą to wszystko ostro przemielić. Więc z jednej strony mamy piękne zmniejszanie wagi bloków na Ethereum, ale z drugiej – mega barierę wejścia sprzętowego na warstwie drugiej. To niestety mocno pcha te sieci w stronę centralizacji, bo przeciętnego kowalskiego nie stać na odpalenie takiej maszyny w piwnicy.
Druga sprawa to ten limit, o który pytał autor. Jak mocno można to jeszcze zgniatać? Prawda jest taka, że optymalizacja przestrzeni na blockchainie za pomocą samego softu i algorytmów powoli dobija do sufitu. Wspomniane wcześniej bloby z EIP-4844 dały nam sporo tlenu, ale przy jakimś grubszym hossowym szale to znowu może się przytkać.
Dlatego teraz na salony wjeżdża nowy trend, który niejako omija ten limit – zewnętrzne warstwy dostępności danych (z ang. Data Availability, np. taka Celestia czy EigenDA). Devowie stwierdzili, że zamiast bez końca żyłować algorytmy kompresujące, lepiej w ogóle wynieść ten balast z głównego łańcucha. Nowe rollupy zrzucają całe zzipowane info na tani, poboczny łańcuch DA, a na mainnet leci tylko malutki certyfikat, że te dane fizycznie tam sa. To tak, jakbyś wywiózł całe archiwa z firmy do taniego blaszaka pod miastem, a w drogim biurze w centrum trzymał tylko klucz do kłódki.
Taki tip ode mnie: jak chcecie podejrzeć jak te wszystkie metody skalowania krypto wyglądają w twardych liczbach, odpalcie sobie stronkę growthepie(kropka)xyz. Tam macie czarno na białym rozbite koszty każdego L2. Widać jak na dłoni, ile dany rollup płaci za publikację danych na dole, a ile za ich procesowanie u siebie. Można fajnie wyłapać momenty, w których sieci aktualizowały swoje pakiety kompresujące, bo wykresy opłat od razu nurkują w dół. Pozdro!