Autor: Kernel Ventures Turbo Guo

Recenzenci: Kernel Ventures Mandy, Kernel Ventures Joshua

TDR:

Koprocesor ZK to rozwiązanie, które pozwala dApps korzystać z zasobów obliczeniowych poza łańcuchem. W artykule omówiono głównie implementację koprocesora, różne aplikacje i przyszłe kierunki rozwoju. Główne treści to:

  1. ZkVM firmy RISC Zero to rozwiązanie koprocesora ZK, które umożliwia kontraktom w łańcuchu wywoływanie zkVM poza łańcuchem w celu uruchomienia określonego kodu Rust i zwrócenia wyników do łańcucha, zapewniając jednocześnie zkp dla kontraktu w celu sprawdzenia, czy obliczenia są prawidłowe.

  2. Koprocesory ZK mają różne metody implementacji. Oprócz zkVM użytkownicy mogą również pisać niestandardowe obwody ZK dla własnych programów lub używać prefabrykowanych frameworków do pisania obwodów, umożliwiając kontraktom wykorzystanie zasobów obliczeniowych poza łańcuchem.

  3. Koprocesor ZK może odgrywać rolę w DeFi, na przykład umieszczać obliczenia AMM poza łańcuchem, umożliwiając protokołowi przechwytywanie wartości podobnej do MEV lub umożliwiając AMM wdrożenie złożonej i wymagającej obliczeniowo logiki operacyjnej. Koprocesor ZK może również umożliwiać protokołom kredytowym obliczanie stóp procentowych w czasie rzeczywistym, zapewniając przejrzystość obliczeń marży itp. Istnieją dwie implementacje zkAMM, jedna używa zkVM, a druga używa zkOracle.

  4. Istnieją inne potencjalne zastosowania koprocesora ZK. Na przykład portfele mogą wykorzystywać koprocesor ZK do przeprowadzania weryfikacji tożsamości poza łańcuchem. Koprocesor może również umożliwiać grom on-chain wykonywanie bardziej złożonych obliczeń i zmniejszać zużycie paliwa wymagane do zarządzania DAO. Czekać.

  5. Wzorzec koprocesora ZK jest nieokreślony, ale w porównaniu z użytkownikami piszącymi własne obwody, bardziej przyjazne jest użycie projektu jako interfejsu do wywoływania zasobów poza łańcuchem. Ale jakich dostawców usług obliczeniowych (tradycyjni dostawcy usług w chmurze, tradycyjni dostawcy usług w chmurze, itp.) są połączone za projektem „interfejsu”? Zdecentralizowane udostępnianie zasobów) to kolejna kwestia warta omówienia.

1. Znaczenie i zastosowanie koprocesora ZK

Źródło obrazu: Kernel Ventures

Rdzeniem koprocesora ZK jest przeniesienie obliczeń on-chain poza łańcuch i wykorzystanie ZK do udowodnienia wiarygodności procesu obliczeń poza łańcuchem, umożliwiając inteligentnym kontraktom łatwą obsługę dużych ilości obliczeń, a jednocześnie umożliwiając kontraktom w celu sprawdzenia wiarygodności obliczeń. Jest to podobne do idei zkRollup, z tą różnicą, że Rollup to warstwa protokołu łańcuchowego, która wykorzystuje zasoby obliczeniowe poza łańcuchem, natomiast koprocesor ZK to dApp, który wykorzystuje zasoby poza łańcuchem.

Do wyjaśnienia implementacji koprocesora ZK użyto tutaj RISC Zero, ale istnieje wiele implementacji koprocesorów ZK, które zostaną przedstawione później. RISC Zero opracowało architekturę koprocesora Bonsai ZK, której rdzeniem jest zkVM RISC Zero. Programiści mogą generować zkp na zkVM na wypadek, gdyby „pewien fragment kodu Rust został wykonany poprawnie”. W przypadku zkVM specyficzny proces wdrażania koprocesora ZK jest następujący:

  1. Deweloper inicjuje żądanie do umowy przekaźnikowej Bonsai, czyli program żądany przez programistę jest uruchamiany w zkVM.

  2. Kontrakt przekaźnika wysyła żądanie do puli żądań poza łańcuchem

  3. Bonsai wykonuje żądanie w zkVM poza łańcuchem, wykonuje operacje na dużą skalę poza łańcuchem, a następnie generuje dla niego potwierdzenie.

  4. Dowody te, zwane także „paragonami”, są wysyłane z powrotem do sieci przez Bonsai w ramach umowy przekaźnikowej.

Źródło obrazu: RISC Zero

Program certyfikowany w Bonsai nazywany jest Programem Gościnnym, a paragon służy do potwierdzenia, że ​​program gościnny został wykonany prawidłowo. Poświadczenia obejmują dziennik i pieczęć. W szczególności Journal zawiera publiczne dane wyjściowe aplikacji zkVM, a pieczęć służy do potwierdzenia ważności certyfikatu, to znaczy do udowodnienia, że ​​program gościa jest wykonywany poprawnie. Sama pieczęć jest również zkSTARK wygenerowanym przez certyfikator . Weryfikacja poświadczeń gwarantuje, że dziennik został zbudowany z użyciem właściwych obwodów itp.

Bonsai upraszcza proces programistów, począwszy od kompilacji kodu Rust do kodu bajtowego ZkVM, przesyłania programu, wykonywania na maszynie wirtualnej i sprawdzania informacji zwrotnej, umożliwiając programistom skupienie się bardziej na logicznym projekcie programu. I nie tylko część logiki kontraktu, ale całą logikę kontraktu można uruchomić poza łańcuchem. RISC Zero wykorzystuje również kontynuacje, które dzielą dużą generację dowodu na wiele części, a następnie każdą część udowadniają niezależnie. Umożliwia to generowanie wydruków próbnych dla dużych programów bez zajmowania zbyt dużej ilości pamięci. Oprócz RISC Zero kilka projektów, takich jak IronMill, =nil; Foundation i Marlin, zapewnia również podobne rozwiązania ogólne.

2. Zastosowanie koprocesora ZK w DeFi

2.1 AMM - Bonsai jako koprocesor

zkUniswap to AMM, który wykorzystuje zasoby obliczeniowe poza łańcuchem. Jego rdzeniem jest umieszczenie części obliczeń swapu poza łańcuchem i wykorzystuje Bonsai. Użytkownik inicjuje żądanie wymiany w łańcuchu. Kontrakt przekaźnikowy Bonsai otrzymuje żądanie i inicjuje obliczenia poza łańcuchem. Po zakończeniu obliczeń Bonsai zwraca wynik obliczeń i dowód do funkcji wywołania zwrotnego w EVM. Jeśli dowód zostanie pomyślnie zweryfikowany, nastąpi zamiana.

Jednak zamiana nie zostaje zakończona od razu. Procesy żądania i realizacji są w różnych transakcjach. Wiąże się to z pewnym ryzykiem, tzn. status puli może ulec zmianie po złożeniu wniosku i przed zakończeniem zamiany. Ponieważ weryfikacja opiera się na stanie puli w momencie przesłania żądania. Jeśli status puli zmieni się, gdy żądanie nadal oczekuje, weryfikacja zakończy się niepowodzeniem.

Aby rozwiązać ten problem, programiści zaprojektowali blokadę basenu. Kiedy użytkownik inicjuje żądanie, wszystkie operacje z wyjątkiem zamiany rozliczeniowej są blokowane do czasu, aż operacja poza łańcuchem pomyślnie uruchomi swap w łańcuchu lub upłynie limit czasu wymiany (ten czas zostanie ustawiony). Jeśli będzie limit czasu, nawet jeśli będzie problem z przekaźnikiem lub zkp, basen nie będzie zamknięty na zawsze. Konkretny limit czasu może wynosić kilka minut.

zkUniswap ma specjalny projekt dla MEV, to znaczy programiści chcą, aby protokół przechwytywał wartość MEV. Teoretycznie zkAMM mają również MEV, ponieważ pierwsza osoba, która złoży transakcję, może ją zablokować, więc wszyscy nadal będą konkurować o gaz, a budowniczowie mogą również sortować żądane transakcje. Ale zkUniswap sam pochłonie dochód MEV, korzystając z holenderskiej aukcji ze zmiennym gradientem stóp procentowych (VRGDA).

zkUniswap wyjmuje zamek i wystawia go na aukcji po obniżonej cenie. Jeśli zamek zostanie szybko sprzedany, protokół będzie wiedział, że popyt jest obecnie wysoki, i wtedy automatycznie podniesie cenę, jeśli prędkość sprzedaży zamka spadnie. protokół obniży cenę. Stanie się to nowym źródłem dochodów. Równocześnie umowa przewiduje nową opcję ustalania kolejności transakcji, a pieniądze z konkurencyjnej ceny są bezpośrednio przekazywane stronie projektu za pośrednictwem nowej rzeczy. To działa bardzo pomysłowo.

2.2 AMM - zkOracle jako koprocesor

Oprócz korzystania z zkVM, niektórzy ludzie proponowali użycie zkOracle do wykorzystania zasobów obliczeniowych poza łańcuchem, a zkOracle to wyrocznia, która uwzględnia zarówno dane wejściowe, jak i wyjściowe. Generalnie istnieją dwa typy wyroczni, jedna to wyrocznia wejściowa, a druga to wyrocznia wyjściowa. Wyrocznia wejściowa sortuje (oblicza) dane spoza łańcucha i umieszcza je w łańcuchu, a wyrocznia wyjściowa sortuje (oblicza) wyrocznie. dane w łańcuchu), a następnie dostarczane do łańcucha poza łańcuchem. Oracle I/O (wejście i wyjście) (zkOracle) najpierw wykonuje dane wyjściowe, a następnie wprowadza dane, umożliwiając łańcuchowi wykorzystanie zasobów obliczeniowych poza łańcuchem.

ZkOracle z jednej strony wykorzystuje dane on-chain jako źródło danych, z drugiej strony wykorzystuje ZK, aby mieć pewność, że obliczenia węzła Oracle nie są oszukańcze i mogą realizować funkcję koprocesora. Dlatego też podstawowe obliczenia AMM można umieścić w zkOracle. Realizując tradycyjne funkcje AMM, zkOracle można również wykorzystać do realizacji bardziej złożonych i wymagających zasobów obliczeniowych operacji.

Źródło obrazu: github kilkawwww/zkAMM

2.3 Obliczanie oprocentowania kredytów, obliczanie marży i inne zastosowania

Niezależnie od implementacji, za pomocą koprocesora ZK można zrealizować wiele funkcji. Na przykład w umowie kredytowej nie można już ustalać parametrów, ale dostosowywać stopę procentową w oparciu o warunki kredytowania w czasie rzeczywistym. Na przykład podniesienie stóp procentowych w celu przyciągnięcia podaży, gdy popyt na pożyczanie pieniędzy jest wysoki, a następnie obniżenie stóp procentowych, gdy popyt jest niski. Wymaga to od protokołu pożyczkowego uzyskiwania danych w łańcuchu w czasie rzeczywistym i wykonywania dużej liczby obliczeń w celu uzyskania odpowiednich parametrów, co wymaga obliczeń poza łańcuchem (chyba że koszt w łańcuchu jest wyjątkowo niski).

Złożone operacje, takie jak obliczanie salda marży, niezrealizowanych zysków i strat, kwot likwidacyjnych itp., mogą być również przekazane do koprocesora w celu wykonania. Zaletą stosowania koprocesora jest to, że czyni te aplikacje bardziej przejrzystymi i weryfikowalnymi, a logika silnika marży nie jest już tajną czarną skrzynką. Chociaż obliczenia są wykonywane poza łańcuchem, użytkownicy mogą mieć pełne zaufanie do poprawności ich wykonania. Dodatkowo podejście to ma również zastosowanie do kalkulacji opcji.

3. Inne zastosowania koprocesora ZK

3.1 Portfel wykorzystujący Bonsai jako współprocesor

Bonfire Wallet wykorzystuje zkVM do przenoszenia obliczeń weryfikacji tożsamości poza łańcuch. Celem tego portfela jest umożliwienie użytkownikom tworzenia portfeli nagrywających z informacjami biometrycznymi (odciskami palców) lub sprzętowym kluczem kryptograficznym yubikey.

W szczególności Bonfire Wallet wykorzystuje WebAuthn, powszechny standard uwierzytelniania stron internetowych, umożliwiający użytkownikom bezpośrednie korzystanie ze swoich urządzeń w celu przeprowadzenia uwierzytelnienia na stronach internetowych bez haseł. Zatem w portfelu Bonfire użytkownik generuje klucz publiczny poprzez WebAuthn (nie w łańcuchu, w przypadku WebAuthn), a następnie używa go do utworzenia portfela.

Każdy portfel Burner ma w łańcuchu kontrakt, który zawiera klucz publiczny WebAuthn. Kontrakt musi weryfikować podpis użytkownika WebAuthn. Jednak ilość obliczeń jest bardzo duża, więc Bonsai służy do przeniesienia obliczeń poza łańcuch, zweryfikowania podpisu poza łańcuchem za pomocą programu gościa zkVM i wygenerowania zkp do weryfikacji w łańcuchu.

Źródło obrazu: Portfel Bonfire

3.2 Odzyskiwanie danych w łańcuchu - użytkownicy samodzielnie piszą obwody ZK

Axiom to aplikacja, która nie korzysta z ZKVM, ale korzysta z innego rozwiązania koprocesorowego. Najpierw przedstawmy, co Axiom chce zrobić. Ma nadzieję wykorzystać koprocesor ZK, aby umożliwić kontraktom dostęp do historycznych informacji o łańcuchu. W rzeczywistości kontraktom trudno jest odczytać dane historyczne, ponieważ inteligentne kontrakty zazwyczaj uzyskują dane w czasie rzeczywistym w łańcuchu, a uzyskanie przez kontrakty cennych danych w łańcuchu, takich jak przeszłe salda rachunków lub, jest bardzo kosztowne zapisy transakcji.

Źródło obrazu: demonstracja Axiom

Węzły aksjomatu uzyskują dostęp do wymaganych danych w łańcuchu i wykonują określone obliczenia poza łańcuchem, a następnie generują dowód wiedzy zerowej dla obliczeń, potwierdzając, że wynik został poprawnie obliczony w oparciu o ważne dane w łańcuchu. Dowód ten jest weryfikowany w łańcuchu, co gwarantuje, że umowa może zaufać wynikowi.

Aby wygenerować zkp do obliczeń poza łańcuchem, należy wkompilować program w obwód ZK Wspomnieliśmy również o użyciu do tego celu zkVM, a Axiom oficjalnie wskazał, że istnieje wiele rozwiązań w tym zakresie, które muszą uwzględniać wydajność i elastyczność. i doświadczenie rozwojowe:

  1. Niestandardowe obwody: programiści dostosowują obwody do programu, który z pewnością będzie miał najlepszą wydajność, ale jego opracowanie zajmie trochę czasu;

  2. eDSL/DSL: Programiści nadal piszą własne obwody, ale istnieją pewne opcjonalne struktury, które pomagają programistom rozwiązywać problemy związane z ZK, co może zrównoważyć wydajność i doświadczenie programistyczne.

  3. zkVM: Programiści bezpośrednio korzystają z gotowych maszyn wirtualnych do uruchamiania ZK, co jest bardzo wygodne, ale Axiom oficjalnie uważa, że ​​wydajność jest bardzo niska.

Dlatego Axiom wybrał drugą opcję, a zespół projektowy udostępnił użytkownikom także zestaw zoptymalizowanych modułów ZK, aby mogli projektować własne obwody.

Projektem podobnym do Axiom jest Herodotus, ale jego celem jest oprogramowanie pośredniczące do międzyłańcuchowej transmisji informacji. Ponieważ przetwarzanie informacji odbywa się poza łańcuchem, rozsądnym pomysłem jest umożliwienie różnym łańcuchom uzyskiwania przetworzonych danych. Inny projekt, Space and Time, wykorzystuje podobną architekturę do implementacji indeksowania danych.

3.3 Gry on-chain, zarządzanie DAO i inne aplikacje

Ponadto koprocesory ZK można wykorzystać do gier on-chain i zarządzania DAO. RISC Zero uważa, że ​​wszelkie obliczenia wymagające więcej niż 250 tys. gazu będą tańsze przy użyciu koprocesora ZK, ale sposób, w jaki zostanie to ustalone, okaże się. Zarządzanie DAO może również wykorzystywać koprocesor ZK, ponieważ angażuje wiele osób i wiele umów, co pochłania zasoby obliczeniowe. RISC Zero twierdzi, że po zastosowaniu Bonsai opłaty za gaz mogą zostać obniżone o 50%. ZKML to w zasadzie idea koprocesora ZK, więc Modulus Labs i Giza to także projekty w tej dziedzinie, ale koncepcja koprocesora ZK jest szersza.

Ponadto istnieją projekty pomocnicze w dziedzinie koprocesorów ZK, takie jak ezkl, który zapewnia kompilatory do tworzenia obwodów ZK, zestawy narzędzi do wdrażania ZK, narzędzia do przenoszenia obliczeń w łańcuchu poza łańcuch itp.

4. Perspektywy na przyszłość

Koprocesor umożliwia aplikacjom działającym w łańcuchu posiadanie zewnętrznych zasobów obliczeniowych, takich jak „chmura”, co zapewnia stosunkowo tanie, duże ilości obliczeń, podczas gdy w łańcuchu przetwarzane są tylko niezbędne obliczenia. W rzeczywistych sytuacjach zkVM może również działać w chmurze. Koprocesor ZK to w zasadzie architektura, sposób na przeniesienie przetwarzania danych w łańcuchu poza łańcuch i nie ma ograniczeń co do tego, kto zapewnia zasoby obliczeniowe poza łańcuchem.

Zasadniczo zasoby obliczeniowe poza łańcuchem są współdzielone przez tradycyjnych dużych producentów, nawet zdecentralizowane zasoby obliczeniowe i urządzenia lokalne. Każdy z tych trzech kierunków jest inny. Tradycyjni główni producenci mogą zapewnić stosunkowo dojrzałe rozwiązania obliczeniowe poza łańcuchem. W przyszłości „solidność” zdecentralizowanych zasobów obliczeniowych może być większa, a lokalne komputery użytkowników również charakteryzują się dużą wyobraźnią. Jednak wiele projektów koprocesorów ZK decyduje się obecnie na świadczenie usług w fazie zamkniętego źródła, ponieważ upstream i downstream tej ścieżki nie zostały jeszcze uformowane, a usług nie można dopracować i przekazać różnym projektom. Istnieją dwie możliwości w tym zakresie przyszły:

  1. Istnieje duża liczba projektów konkurujących o każdy aspekt koprocesora ZK

  2. Większość rynku zajmuje projekt z dobrym doświadczeniem serwisowym

Z punktu widzenia programisty, korzystając z koprocesora ZK, mogą oni korzystać tylko z jednego projektu „interfejsu”, dlatego Amazon Cloud zajmuje dużą część rynku, a programiści będą przyzwyczajeni do jednego sposobu wdrożenia. Jednak jako projekt „interfejsu” dla zasobów obliczeniowych poza łańcuchem, kolejną kwestią wartą omówienia są dostawcy usług obliczeniowych (tradycyjni dostawcy usług w chmurze, zdecentralizowane udostępnianie zasobów).

Kernel Ventures to kryptowalutowy fundusz venture capital prowadzony przez społeczność badawczo-rozwojową, posiadający ponad 70 inwestycji na wczesnym etapie skupiających się na infrastrukturze, oprogramowaniu pośrednim, dAppach, zwłaszcza ZK, Rollup, DEX, modułowych blockchainach i onboardingu. Obszary pionowe dla miliardów użytkowników kryptowalut w przyszłość, takie jak abstrakcja kont, dostępność danych, skalowalność itp. Przez ostatnie siedem lat angażowaliśmy się we wspieranie rozwoju głównych społeczności programistów i uniwersyteckich stowarzyszeń blockchain na całym świecie.

Bibliografia:

  1. Przewodnik po koprocesorach ZK pod kątem skalowalności: https://www.risczero.com/news/a-guide-to-zk-coprocessors-for-scalability

  2. Definiowanie zkOracle dla Ethereum: https://ethresear.ch/t/defining-zkoracle-for-ethereum/15131

  3. zkUniswap: pierwszy w swoim rodzaju zkAMM: https://ethresear.ch/t/zkuniswap-a-first-of-its-kind-zkamm/16839

  4. Co to jest koprocesor ZK?: https://blog.axiom.xyz/what-is-a-zk-coprocessor/

  5. Krótkie wprowadzenie do koprocesorów: https://crypto.mirror.xyz/BFqUfBNVZrqYau3Vz9WJ-BACw5FT3W30iUX3mPlKxtA

  6. Najnowsze aplikacje oparte na Hyper Oracle (bonus: rzeczy, które możesz zbudować teraz): https://mirror.xyz/hyperoracleblog.eth/Tik3nBI9mw05Ql_aHKZqm4hNxfxaEQdDAKn7JKcx0xQ

  7. Portfel Bonfire: https://ethglobal.com/showcase/bonfire-wallet-n1dzp