Autor: Kernel Ventures Turbo Guo

Editor(i): Kernel Ventures Rose, Kernel Ventures Mandy, Kernel Ventures Joshua

TLDR: Coprocesorul ZK este o soluție pentru dApps pentru a utiliza resurse de calcul în afara lanțului. Acest articol explorează soluțiile existente, diverse aplicații și dezvoltarea viitoare a coprocesoarelor. Principalele subiecte abordate sunt următoarele:

  1. zkVM de la RISC Zero este o soluție de coprocesor ZK care permite contractelor în lanț care apelează zkVM în afara lanțului să ruleze un anumit cod Rust și să returneze rezultatele în lanț, oferind în același timp zkp pentru verificarea în lanț a corectitudinii calculului.

  2. Există diferite soluții pentru coprocesoarele ZK. Pe lângă zkVM, utilizatorii pot scrie și circuite ZK personalizate pentru programele lor sau pot folosi cadre prefabricate pentru a scrie circuite, permițând astfel contractelor să utilizeze resurse de calcul în afara lanțului.

  3. Coprocesorul ZK poate juca un rol în DeFi, cum ar fi descărcarea calculelor AMM în afara lanțului pentru a capta valoare similară cu MEV sau activarea unei logici complexe și intensive de calcul pentru AMM-uri. Coprocesorul ZK poate facilita, de asemenea, calculele în timp real ale ratei dobânzii pentru protocoalele de creditare, făcând calculele de marjă transparente, printre altele. zkAMM are două abordări de implementare, una folosind zkVM și cealaltă folosind zkOracle.

  4. Coprocesorul ZK are și alte cazuri potențiale de utilizare, cum ar fi portofelele care îl folosesc pentru a efectua verificarea identității în afara lanțului. Poate permite calcule mai complexe pentru jocurile în lanț și poate reduce gazul necesar guvernării DAO, printre alte aplicații.

  5. Peisajul pentru coprocesoarele ZK este încă incert, dar în comparație cu utilizatorii care își scriu propriile circuite, utilizarea unei soluții pentru interfațarea resurselor în afara lanțului este mai ușor de utilizat. Cu toate acestea, întrebarea care furnizori de servicii de calcul sunt integrați în spatele acelei soluții de „interfață”, fie că sunt furnizori tradiționali de cloud sau rețele descentralizate de partajare a resurselor, este un alt subiect important de discuție.

1. Scopul și aplicarea coprocesorilor ZK

Sursa: Kernel Ventures

Miezul coprocesorului ZK este de a muta calculul în lanț în afara lanțului, folosind dovezile ZK pentru a asigura fiabilitatea calculului în afara lanțului, permițând contractelor inteligente să gestioneze cu ușurință o cantitate mare de calcul, verificând în același timp fiabilitatea calculului. Acest lucru este similar cu ideea zkRollups, dar Rollup-urile utilizează resurse de calcul off-chain la nivelul protocolului de lanț, în timp ce coprocesoarele ZK sunt folosite de dApps pentru a utiliza resurse off-chain.

Folosind RISC Zero ca exemplu pentru a explica o soluție de coprocesoare ZK, RISC Zero a dezvoltat arhitectura coprocesorului Bonsai ZK, al cărei nucleu este zkVM de la RISC Zero. Dezvoltatorii pot genera zkp pe zkVM pentru „un anumit cod Rust executat corect”. Cu zkVM, procesul specific de implementare a unui coprocesor ZK este:

  1. Dezvoltatorii trimit o solicitare contractului de retransmisie al lui Bonsai, adică să ruleze programul necesar dezvoltatorului în zkVM.

  2. Contractul de releu trimite cererea către grupul de cereri în afara lanțului.

  3. Bonsai execută cererea în zkVM off-chain, efectuează calcule la scară largă și apoi generează o chitanță.

  4. Aceste dovezi, cunoscute și sub denumirea de „chitanțe”, sunt publicate înapoi în lanț de către Bonsai prin contractul de ștafetă.

Sursa: RISC Zero

În Bonsai, programul dovedit se numește Programul pentru oaspeți, iar chitanța este folosită pentru a dovedi că programul pentru oaspeți a fost executat corect. Chitanța include un jurnal și un sigiliu. Mai exact, jurnalul poartă ieșirea publică a aplicației zkVM, în timp ce sigiliul este folosit pentru a dovedi valabilitatea chitanței, adică pentru a dovedi că programul invitat a fost executat corect. Sigiliul în sine este un zkSTARK generat de probator. Verificarea chitanței asigură că jurnalul este construit folosind circuitul corect etc.

Bonsai simplifică procesul pentru dezvoltatori de a compila codul Rust în bytecode zkVM, de a încărca programe, de a le executa în VM și de a primi feedback pentru dovezi, permițând dezvoltatorilor să se concentreze mai mult pe designul logic. Acesta permite nu numai logica contractului parțial, ci și întreaga logică a contractului să ruleze în afara lanțului. RISC Zero utilizează, de asemenea, continuări, împărțind generarea unei dovezi mari în părți mai mici, permițând generarea de probe pentru programe mari fără a consuma memorie excesivă. Pe lângă RISC Zero, există și alte proiecte precum IronMill, =nil; Foundation și Marlin care oferă soluții generale similare.

2. Aplicarea coprocesoarelor ZK în DeFi

2.1 AMM - Bonsai ca coprocesor

zkUniswap este un AMM care folosește resursele de calcul în afara lanțului. Caracteristica sa de bază este de a descărca o parte din calculul de schimb în afara lanțului, folosind Bonsai. Utilizatorii inițiază o cerere de schimb în lanț. Contractul de releu Bonsai primește cererea, inițiază calculul în afara lanțului și, la finalizare, returnează rezultatul calculului și dovada funcției de apel invers a EVM. Dacă dovada este verificată cu succes, schimbul este executat.

Cu toate acestea, schimbul nu este finalizat dintr-o singură mișcare. Procesele de solicitare și execuție sunt în diferite tranzacții, ceea ce aduce anumite riscuri. Adică, între depunerea cererii și finalizarea swap-ului, starea pool-ului se poate schimba. Deoarece verificarea se bazează pe starea grupului la momentul depunerii cererii, dacă o cerere este încă în așteptare și starea grupului se modifică, atunci verificarea va fi invalidă. Acesta este un aspect important în proiectarea și securitatea unor astfel de sisteme.

Pentru a rezolva această problemă, dezvoltatorii au proiectat o blocare a piscinei. Când un utilizator inițiază o solicitare, toate operațiunile, altele decât soluționarea schimbului, sunt blocate temporar până când calculul în afara lanțului declanșează cu succes schimbarea în lanț sau expiră timpul de schimb (limita de timp va fi prestabilită). Cu o limită de timp în vigoare, chiar dacă există probleme cu releul sau zkp, piscina nu va fi blocată la infinit. Limita de timp specifică poate fi de câteva minute.

zkUniswap are un design unic pentru a captura MEV, deoarece dezvoltatorii își propun să beneficieze de protocolul MEV. Teoretic, zkAMM-urile au și MEV, deoarece prima persoană care trimite un schimb îl poate bloca și îi poate conduce pe alții, ceea ce duce la războaie ale gazului, iar constructorii pot în continuare să prioritizeze secvențierea tranzacțiilor. Cu toate acestea, zkUniswap preia profiturile MEV pentru sine folosind o metodă cunoscută sub numele de Licitație olandeză graduală cu rată variabilă (VRGDA). Această abordare permite zkUniswap să extragă valoarea MEV pentru protocol.

Conceptul lui zkUniswap este destul de interesant. Implică scăderea prețului activelor blocate într-o licitație, iar dacă activele blocate sunt vândute rapid, protocolul recunoaște cererea mare și crește automat prețul. Dacă vânzarea activelor blocate încetinește, protocolul scade prețul. Această abordare inovatoare ar putea deveni o nouă sursă de venituri. În esență, protocolul introduce un mecanism unic de prioritizare a tranzacțiilor, iar competiția pentru stabilirea prețurilor aduce beneficii proiectului direct prin acest mecanism.

2.2 AMM - zkOracle ca coprocesor

Pe lângă utilizarea zkVM, unii au propus utilizarea zkOracle pentru a utiliza resurse de calcul în afara lanțului, este de remarcat faptul că zkOracle este un oracol I/O (intrare și ieșire) care se ocupă atât de intrare, cât și de ieșire. În general, există două tipuri de oracole, unul este oracolul de intrare și celălalt este oracolul de ieșire. Oracolul de intrare procesează (calculează) datele în afara lanțului și le pune în lanț, în timp ce oracolul de ieșire procesează (calculează) datele în lanț și le furnizează în afara lanțului. Oracolul I/O (zkOracle) face mai întâi ieșirea, apoi intrarea, permițând lanțului să utilizeze resursele de calcul din afara lanțului.

Pe de o parte, zkOracle folosește datele în lanț ca sursă de date, iar pe de altă parte, utilizează ZK pentru a se asigura că calculele nodurilor oracol sunt oneste, realizând astfel funcția de coprocesor. Prin urmare, calculul de bază al AMM poate fi plasat în zkOracle, permițând funcționalitatea AMM tradițională, permițând și operațiuni mai complexe și mai intensive din punct de vedere computațional folosind zkOracle.

Sursa: github fewwwww/zkAMM

2.3 Calculul ratei de creditare, calculul marjei și alte aplicații

Lăsând deoparte metoda de implementare, cu adăugarea de coprocesoare ZK, pot fi realizate multe funcționalități. De exemplu, protocoalele de creditare pot ajusta ratele dobânzilor în funcție de parametrii în timp real în loc de condiții predefinite. De exemplu, creșterea ratei dobânzii pentru a atrage oferta atunci când cererea de împrumut este puternică și scăderea ratei dobânzii atunci când cererea scade. Acest lucru necesită ca protocolul de împrumut să obțină o cantitate mare de date în lanț în timp real, să preproceseze datele și să calculeze parametrii în afara lanțului (cu excepția cazului în care costul în lanț este extrem de scăzut).

Calcule complexe, cum ar fi determinarea soldurilor de marjă, profituri/pierderi nerealizate etc., pot utiliza, de asemenea, coprocesoare pentru execuție. Avantajul utilizării coprocesoarelor este că face aceste aplicații mai transparente și mai verificabile. Logica motorului de marjă nu mai este o cutie neagră secretă. Deși calculele sunt efectuate în afara lanțului, utilizatorii pot avea deplină încredere în corectitudinea execuției lor. Această abordare este aplicabilă și calculelor opțiunilor.

3. Alte aplicații ale coprocesoarelor ZK

3.1 Portofel - Utilizarea Bonsai ca coprocesor

Bonfire Wallet folosește zkVM pentru a descărca calculul verificării identității în afara lanțului. Scopul acestui portofel este de a permite utilizatorilor să creeze portofele de tip arzător folosind informații biometrice (amprente digitale) sau hardware criptat yubikey. Mai exact, Bonfire Wallet folosește WebAuthn, un standard comun de autentificare web, pentru a permite utilizatorilor să finalizeze verificarea identității web direct cu dispozitivele fără parolă. Deci, în Bonfire Wallet, utilizatorii generează o cheie publică cu WebAuthn (nu în lanț, ci pentru WebAuthn) și apoi o folosesc pentru a crea un portofel. Fiecare portofel Burner are un contract în lanț, care conține cheia publică a WebAuthn. Contractul trebuie să verifice semnătura WebAuthn a utilizatorului. Dar acest calcul este mare, așa că Bonsai este folosit pentru a descărca acest calcul în afara lanțului, printr-un program invitat zkVM pentru a verifica semnătura în afara lanțului și pentru a produce zkp pentru verificarea în lanț.

Sursa: Bonfire Wallet

3.2 Recuperarea datelor în lanț - Circuite ZK scrise de utilizatori

Axiom este o aplicație care nu folosește zkVM, dar folosește o soluție diferită de coprocesor. Să prezentăm mai întâi ce își propune să facă Axiom. Acesta folosește un coprocesoare ZK pentru a permite contractelor să acceseze informațiile istorice din lanț. În realitate, permiterea contractelor să citească date istorice este destul de dificilă, deoarece contractele inteligente obțin de obicei date în timp real în lanț, ceea ce poate fi foarte costisitor. Este greu pentru contracte să acceseze date valoroase din lanț, cum ar fi soldurile istorice ale conturilor sau înregistrările tranzacțiilor.

Sursa: Axiom demo

Nodurile Axiom accesează datele necesare în lanț și efectuează calculul specificat în afara lanțului, apoi generează o dovadă de cunoștințe zero pentru calcul, demonstrând că rezultatul este calculat corect pe baza datelor valide în lanț. Această dovadă este verificată în lanț, asigurându-se că contractul poate avea încredere în acest rezultat.

Pentru a genera zkp pentru calculul în afara lanțului, este necesar să compilați programe în circuite ZK. Anterior, am menționat și utilizarea zkVM pentru aceasta, dar Axiom a sugerat că există multe soluții pentru aceasta și este necesar să echilibrăm performanța, flexibilitatea și experiența de dezvoltare:

  1. Circuite personalizate: dacă dezvoltatorii personalizează circuite pentru programele lor, performanța va fi cu siguranță cea mai bună, dar este nevoie de timp pentru a se dezvolta;

  2. eDSL/DSL: dezvoltatorii își scriu în continuare circuitele, dar există câteva cadre opționale pentru a ajuta dezvoltatorii să rezolve problemele legate de zk, echilibrând astfel performanța și experiența de dezvoltare.

  3. zkVM: dezvoltatorii rulează direct ZK pe o mașină virtuală existentă, ceea ce este foarte convenabil, dar Axiom consideră că este ineficient.

Prin urmare, Axiom a ales a doua opțiune și oferă utilizatorilor un set de module ZK optimizate, permițându-le să-și proiecteze propriile circuite.

Proiectele similare cu Axiom includ Herodotus, care își propune să fie un middleware pentru mesaje încrucișate. Deoarece procesarea informațiilor este în afara lanțului, este rezonabil să se permită diferitelor lanțuri să obțină date prelucrate. Un alt proiect, Space and Time, folosește o arhitectură similară pentru a implementa indexarea datelor.

3.3 Jocuri în lanț, guvernare DAO și alte aplicații

În plus față de cele de mai sus, jocurile în lanț, guvernarea DAO poate folosi și coprocesoare ZK. RISC Zero consideră că orice calcul care necesită mai mult de 250.000 de gaze ar fi mai ieftin folosind un coprocesor ZK, dar modul în care este calculat acesta rămâne de investigat în continuare. Guvernanța DAO poate folosi și coprocesoare ZK, deoarece implică mai multe persoane și mai multe contracte, ceea ce este foarte intensiv din punct de vedere al calculului. RISC Zero susține că utilizarea Bonsai poate reduce taxele de gaz cu 50%. Multe proiecte ZKML, cum ar fi Modulus Labs și Giza, folosesc aceeași soluție ca și coprocesoarele ZK, dar conceptul de coprocesoare ZK este mai larg.

Merită menționat faptul că există câteva proiecte auxiliare în domeniul coprocesoarelor ZK, cum ar fi ezkl, care oferă compilatoare pentru circuitele ZK, seturi de instrumente pentru implementarea ZK și instrumente pentru descărcarea calculului în lanț în afara lanțului.

4. Perspectivele viitoare

Coprocesoarele furnizează aplicații în lanț cu resurse de calcul externe asemănătoare „norului”, oferind un calcul rentabil și abundent, în timp ce procesarea în lanț se concentrează pe calcule esențiale. În practică, zkVM poate rula și pe cloud. În esență, coprocesoarele ZK sunt o abordare arhitecturală care mută calculul în lanț în afara lanțului, cu o sursă nelimitată de resurse de calcul în afara lanțului.

În esență, resursele de calcul în afara lanțului pot fi furnizate de furnizorii tradiționali de cloud, chiar și de partajarea descentralizată a resurselor de calcul și de dispozitive locale. Aceste trei direcții au fiecare caracteristicile lor. Furnizorii tradiționali de cloud pot oferi soluții de calcul off-chain relativ mature, „robustețea” viitoarelor resurse de calcul descentralizate poate fi mai puternică, iar calculul local deține, de asemenea, mult potențial. Dar, în prezent, multe proiecte de coprocesor ZK se află într-o etapă de furnizor de servicii cu sursă închisă, deoarece ecosistemul acestor servicii nu s-a format pe deplin și specializarea serviciilor între diferite proiecte nu a fost încă definită. Două scenarii posibile pentru viitor sunt:

  1. Fiecare parte a coprocesorului ZK are un număr mare de proiecte care concurează între ele.

  2. Un singur proiect cu experiență excelentă în servicii poate domina piața.

Din perspectiva unui dezvoltator, atunci când folosesc coprocesoare ZK, aceștia ar putea interacționa doar cu un singur proiect de „interfață”. Acesta este similar cu motivul pentru care Amazon Web Services are o cotă de piață substanțială, deoarece dezvoltatorii tind să se obișnuiască cu o anumită metodă de implementare. Cu toate acestea, întrebarea care furnizori de servicii de calcul (companii tradiționale de cloud, partajarea descentralizată a resurselor) sunt integrați în spatele acestui proiect de „interfață” de resurse computaționale în afara lanțului este un alt subiect care merită discutat.

Kernel Ventures este un fond de cripto VC condus de comunitatea de cercetare și dezvoltare, cu peste 70 de investiții în stadiu incipient, concentrându-se pe infrastructură, middleware, dApps, în special ZK, Rollup, DEX, Modular Blockchain și verticale, care vor integra următorul miliard de utilizatori în cripto. cum ar fi abstracția contului, disponibilitatea datelor, scalabilitate și etc. În ultimii șapte ani, ne-am angajat să sprijinim creșterea comunităților de dezvoltare de bază și a asociațiilor Blockchain universitare din întreaga lume.

REFERINŢĂ:

  1. Un ghid pentru coprocesoarele ZK pentru scalabilitate: https://www.risczero.com/news/a-guide-to-zk-coprocessors-for-scalability

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

  3. zkUniswap: primul zkAMM de acest fel:https://ethresear.ch/t/zkuniswap-a-first-of-its-kind-zkamm/16839

  4. Ce este un coprocesor ZK?: https://blog.axiom.xyz/what-is-a-zk-coprocessor/

  5. O scurtă introducere la coprocesoare: https://crypto.mirror.xyz/BFqUfBNVZrqYau3Vz9WJ-BACw5FT3W30iUX3mPlKxtA

  6. Cele mai recente aplicații bazate pe Hyper Oracle (Bonus: Lucruri pe care le puteți construi acum): https://mirror.xyz/hyperoracleblog.eth/Tik3nBI9mw05Ql_aHKZqm4hNxfxaEQdDAKn7JKcx0xQ

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