zkEVM to skrót od Zero-knowledge Ethereum Virtual Machine, czyli Maszyny Wirtualnej Ethereum Zero-knowledge. Jest to platforma generująca dowody zerowej wiedzy w celu zweryfikowania programów. Dzisiejsza lekcja poświęcona będzie temu, czym dokładnie jest zkEVM, jak funkcjonuje oraz jakie ma związki z warstwą drugą Ethereum. Zaczynamy!
Definicja zkEVM
ZkEVM stanowi integralną część Zero-knowledge rollups, które są rozwiązaniami mającymi na celu skalowanie warstwy drugiej Ethereum. Te innowacje zwiększają przepustowość, przenosząc obliczenia i przechowując je poza głównym łańcuchem blokowym. Zk-rollupy przekazują dane transakcyjne do Ethereum wraz z dowodami zerowej wiedzy, jednocześnie weryfikując ważność transakcji w trybie off-chain. Co istotne, zkEVM umożliwiają konstrukcję inteligentnych kontraktów, które obsługują technologię zerowej wiedzy, co stanowi postęp w stosunku do wcześniejszych zk-rollupów, które miały ograniczenia i służyły głównie do wymiany tokenów i dokonywania płatności.
ZkEVM są kompatybilne z EVM (Ethereum Virtual Machine). Aby zrozumieć ich działanie, warto wyjaśnić, że EVM to środowisko uruchomieniowe, w którym są wykonywane inteligentne kontrakty na sieci Ethereum. Możemy sobie wyobrazić EVM-y jako globalny komputer, zasilający dAppsy działające na blockchainie Ethereum. Wszystkie technologie kompatybilne z EVM mogą uruchamiać programy zaprojektowane do działania w tym środowisku. ZkEVM stanowi jedną z tych technologii, umożliwiając uruchamianie inteligentnych kontraktów w środowisku Ethereum bez konieczności modyfikacji bazowej logiki.
Jak działa EVM i zkEVM?
Aby zrozumieć funkcjonowanie zkEVM, warto najpierw przyjrzeć się działaniu samego EVM. Ethereum Virtual Machine to maszyna stanowa, która przechodzi z “starego stanu” do nowego, opierając się na danych wejściowych. W procesie realizacji inteligentnego kontraktu w tym ekosystemie, zachodzi tzw. “przejście stanu”. Ale co dokładnie dzieje się podczas transakcji wykonywanej za pomocą inteligentnego kontraktu w EVM? Przyjrzyjmy się bliżej.
Kod bajtowy danego inteligentnego kontraktu trafia do EVM i jest wykonywany przez węzeł peer-to-peer. Węzły używają identycznych danych wejściowych do transakcji, co zapewnia, że każdy z węzłów osiągnie ten sam wynik i uzyska konsensus.
Opcodes EVM (inaczej: bytecodes) współdziałają z pamięcią, magazynem i stosem ekosystemu EVM, wykonując operacje odczytu i zapisu.
Opcodes EVM dokonują precyzyjnych obliczeń, bazując na danych wejściowych uzyskanych z magazynu stanu. W rezultacie EVM przechodzi do nowego stanu (przejście stanu, o którym wcześniej wspomnieliśmy).
Mając na uwadze te informacje, łatwiej zrozumieć, jak funkcjonuje zkEVM. Również jest to wirtualna maszyna (podobnie jak EVM), przechodząca pomiędzy stanami, realizująca operacje zdefiniowane przez program. Jednakże, w przeciwieństwie do EVM, zkEVM idzie o krok dalej – generuje dowód, który stanowi potwierdzenie poprawności przeprowadzonych obliczeń. Dowodzi, że operacje wykonane wcześniej zgodne były z danymi wejściowymi i zasadami ustalonymi w protokole.
Podsumowując:
- zkEVM generuje dowód zerowej wiedzy w celu weryfikacji elementów na różnych etapach obliczeń.
- Posiada dostęp do bajtkodu i odpowiada na pytanie, czy odpowiedni kod programu został poprawnie załadowany i z jakiego adresu pochodzi.
- Informuje, czy program pobierał właściwe wartości z odpowiedniego stanu przed rozpoczęciem obliczeń.
- Ostatecznie sprawdza, czy opcody były wykonywane jeden po drugim, bez pomijania żadnego etapu.
Jak zbudowany jest zkEVM?
W ramach środowiska zkEVM wyróżniamy trzy kluczowe elementy:
- Część Wykonawczą: To miejsce, gdzie inteligentne kontrakty są uruchamiane w środowisku zkEVM. Na tym etapie, zkEVM pobiera stany początkowe oraz bieżące transakcje, aby na końcu wprowadzić aktualny stan.
- Obwód Udowadniający: Tutaj generowane są dowody zerowej wiedzy, które weryfikują ważność transakcji obliczonych w części wykonawczej. Proces ten odbywa się poprzez tworzenie dowodów, które potwierdzają poprawność wykonanych operacji.
- Weryfikacja: Stanowi ostatnią fazę, gdzie zk-rollupy przekazują dowody ważności do inteligentnych kontraktów zaimplementowanych na L1 Ethereum w celu weryfikacji. Weryfikator ponownie przeprowadza obliczenia, aby potwierdzić ich poprawność.
Ciekawostka: Kody operacyjne zkEVM to instrukcje niskopoziomowe maszynowe, używane do wykonywania programów w zk-rollupie. Ich istnienie wynika z konieczności efektywnego przetwarzania dowodów zerowej wiedzy, gdy standardowe kody operacyjne EVM są nieefektywne w tego typu kontekście.
zkEVM jako ważny element ekosystemu EVM
W pełni funkcjonalna implementacja zkEVM stanowi zachętę do rozwijania projektów opartych na zk-rollupach, które są zgodne z EVM. Z tego wynika szereg korzyści, obejmujących:
- Zwiększenie Przepustowości i Skalowalności: zkEVM przyczynia się do zwiększenia przepustowości i skalowalności, co stanowi istotny krok naprzód w rozwoju projektów opartych na zk-rollupach.
- Zmniejszenie Kosztów: Implementacja zkEVM ma potencjał znacznego obniżenia kosztów, co może być kluczowe dla efektywności projektów korzystających z tej technologii.
- Przyspieszenie Finalizacji na Blockchainie i Zwiększenie Efektywności: Dzięki zkEVM procesy finalizacji na blockchainie stają się bardziej efektywne, przyspieszając cały ekosystem i zwiększając jego wydajność.
- Wspieranie Wykorzystania Efektów Sieciowych w Ethereum: Pełna funkcjonalność zkEVM sprzyja zwiększeniu wykorzystania efektów sieciowych oferowanych przez Ethereum, co przekłada się na ogólną poprawę funkcji ekosystemu blockchainowego.
Rodzaje zkEVM
Warto zaznaczyć, że współczesne projekty zkEVM można podzielić na dwie główne kategorie:
- zkVM ze Wsparciem Natywnych Kodów Operacyjnych EVM: Projekty tej kategorii są zoptymalizowane pod kątem natywnych kodów operacyjnych EVM. Wspierają one standardowe operacje zgodne z Ethereum Virtual Machine, co ułatwia integrację i zrozumienie dla społeczności korzystającej z istniejących narzędzi opartych na EVM.
- zkVM z Użyciem Niestandardowych Kodów Operacyjnych EVM: Druga kategoria projektów zkEVM korzysta z niestandardowych kodów operacyjnych EVM. Oznacza to, że używają specjalnie dostosowanych instrukcji niskopoziomowych, co może wprowadzać pewne różnice w funkcjonalności w porównaniu do tradycyjnych rozwiązań opartych na EVM.
Poniżej dokładniej omówimy, jak działają i jakie są różnice między różnymi protokołami zkEVM.
Polygon zkEVM
Polygon Hermez, znany także jako Polygon zk-rollup, charakteryzuje się wbudowaną maszyną wirtualną o zerowej wiedzy i ma na celu wspieranie kompatybilności z EVM. Aby osiągnąć ten cel, kod bajtowy EVM musi być zgodny z mikroopkodami i być wykonany w uVM, czyli maszynie wirtualnej wykorzystującej dowody SNARK i STARK. W przypadku Polygon Hermez zkEVM, wykorzystywany jest dowód STARK do generowania dowodów ważności dla przejścia między różnymi stanami. Proces ten obejmuje weryfikację poprawności dowodów STARK, które są następnie przesyłane do Ethereum w celu ponownej weryfikacji.
zkSyncEVM
To nic innego, jak kompatybilny z EVM zk-rollup, opracowany przez firmę Matter Labs i napędzany przez ich własną technologię zkEVM. Zapewnia zgodność z Ethereum na poziomie używanego języka programowania, zamiast bazować na bajtkodzie.
Scroll zkEVM
Projekt nadal się rozwija. Zgodnie z informacjami od deweloperów, Scroll zkEVM planuje korzystanie z tzw. akumulatora kryptograficznego, aby pełni zweryfikować poprawność przechowywanych danych. W rezultacie zostanie udowodnione, że kod bajtowy kontraktu został właściwie załadowany z wcześniej określonego adresu.
AppliedZKp zkEVM
AppliedZKP pracuje nad stworzeniem zk-rollupa, który będzie zgodny z EVM oraz opracowuje mechanizm generowania dowodów ważności dla bloków Ethereum. Cały ten projekt finansowany jest przez Ethereum Foundation.
Podsumowanie
Większość projektów zkEVM nadal przebywa w fazie badań, produkcji i poszukiwań optymalnych rozwiązań. Jednak rosnące zapotrzebowanie na dowody zerowej wiedzy z pewnością przyspieszy ten cały proces.