
Autor: Kernel Ventures Turbo Guo
Recenzători: Kernel Ventures Mandy, Kernel Ventures Joshua
TLDR:
Coprocesorul ZK este o soluție care permite dApps-ului să utilizeze resurse de calcul în afara lanțului. Acest articol discută în principal despre implementarea coprocesorului, diverse aplicații și direcțiile de dezvoltare viitoare.
zkVM de la RISC Zero este o soluție de coprocesor ZK care permite contractelor în lanț să apeleze zkVM în afara lanțului pentru a rula un anumit cod Rust și a returna rezultatele în lanț, oferind în același timp zkp pentru contract pentru a verifica dacă calculul este corect.
Coprocesoarele ZK au diferite metode de implementare Pe lângă zkVM, utilizatorii pot scrie și circuite ZK personalizate pentru propriile programe sau pot folosi cadre prefabricate pentru a scrie circuite, permițând contractelor să utilizeze resurse de calcul off-chain.
Coprocesorul ZK poate juca un rol în DeFi, cum ar fi plasarea calculelor AMM în afara lanțului, permițând protocolului să capteze o valoare asemănătoare MEV sau permițând AMM să implementeze o logică de operare complexă și intensivă din punct de vedere computațional. Coprocesorul ZK poate permite, de asemenea, protocoalelor de creditare să calculeze ratele dobânzilor în timp real, făcând transparente calculele marjei etc. Există două implementări ale zkAMM, una utilizează zkVM și cealaltă utilizează zkOracle.
Există și alte utilizări potențiale ale coprocesorului ZK. De exemplu, portofelele pot utiliza coprocesorul ZK pentru a efectua verificarea identității în afara lanțului. aștepta.
Modelul coprocesorului ZK este indecis, dar în comparație cu utilizatorii care își scriu propriile circuite, este mai prietenos să folosești un proiect ca interfață pentru a apela resurse în afara lanțului, dar ce furnizori de servicii de calcul (furnizori tradiționali de cloud, furnizori tradiționali de cloud, etc.) sunt conectate în spatele proiectului „interfață” Partajarea descentralizată a resurselor) este o altă problemă care merită discutată?
1. Semnificația și aplicarea coprocesorului ZK

Sursa imagine: Kernel Ventures
Miezul coprocesorului ZK este mutarea calculelor în lanț în afara lanțului și utilizarea ZK pentru a demonstra fiabilitatea procesului de calcul în afara lanțului, permițând contractelor inteligente să gestioneze cu ușurință cantități mari de calcule, permițând în același timp contractelor să verifice fiabilitatea de calcule. Acest lucru este similar cu ideea lui zkRollup, dar Rollup este un strat de protocol în lanț care utilizează resurse de calcul în afara lanțului, în timp ce coprocesorul ZK este un dApp care utilizează resurse în afara lanțului.
RISC Zero este folosit aici pentru a explica implementarea unui coprocesor ZK, dar există multe implementări ale coprocesoarelor ZK, care vor fi introduse mai târziu. 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 cazul în care „o anumită bucată de cod Rust este executată corect”. Cu zkVM, procesul specific de implementare a coprocesorului ZK este:
Dezvoltatorul inițiază o solicitare la contractul de releu al lui Bonsai, adică programul solicitat de dezvoltator este rulat în zkVM.
Contractul de releu trimite cererea către grupul de cereri în afara lanțului
Bonsai execută cererea în zkVM off-chain, efectuează operațiuni la scară largă în afara lanțului și apoi generează o chitanță pentru aceasta.
Aceste dovezi, numite și „chitanțe”, sunt postate înapoi în lanț de către Bonsai printr-un contract de ștafetă.

Sursa imagine: RISC Zero
Programul certificat în Bonsai se numește Program Guest, iar chitanța este folosită pentru a dovedi că programul guest a fost executat corect. Acreditările includ un jurnal și un sigiliu. Mai exact, Jurnalul poartă ieșirea publică a aplicației zkVM, iar sigiliul este folosit pentru a dovedi valabilitatea certificatului, adică pentru a demonstra că programul invitat este executat corect. Sigiliul în sine este, de asemenea, un zkSTARK generat de certificat . Verificarea acreditărilor asigură că jurnalul a fost construit cu circuitele corecte etc.
Bonsai simplifică procesul pentru dezvoltatori de la compilarea codului Rust la codul de octeți zkVM, încărcarea programului, execuția în VM și feedback-ul de probă, permițând dezvoltatorilor să se concentreze mai mult asupra designului logic al programului. Și nu numai o parte a logicii contractului, ci întreaga logică a contractului poate fi rulată în afara lanțului. RISC Zero utilizează, de asemenea, continuări, care împart o generație mare de dovezi în mai multe părți și apoi demonstrează fiecare parte în mod independent. Acest lucru permite generarea de dovezi pentru programe mari fără a ocupa prea multă memorie. Pe lângă RISC Zero, mai multe proiecte precum IronMill, =nil Foundation și Marlin oferă și soluții generale similare.
2. Aplicarea coprocesorului ZK în DeFi
2.1 AMM - Bonsai ca coprocesor
zkUniswap este un AMM care utilizează resurse de calcul în afara lanțului. Miezul său este să pună o parte din calculele de schimb în afara lanțului și folosește Bonsai. Utilizatorul inițiază o cerere de schimb pe lanț. Contractul de releu Bonsai primește cererea și inițiază calculul în afara lanțului După ce Bonsai finalizează calculul, returnează rezultatul calculului și dovada la funcția de apel invers din EVM. Dacă dovada este verificată cu succes, schimbul va fi executat.
Cu toate acestea, swap-ul nu este finalizat dintr-o dată. Procesele de solicitare și de execuție sunt în tranzacții diferite. Deoarece validarea se bazează pe starea pool-ului atunci când cererea este trimisă. Dacă starea pool-ului se modifică în timp ce o solicitare este încă în așteptare, verificarea va eșua.
Pentru a rezolva această problemă, dezvoltatorii au proiectat o blocare a piscinei. Când un utilizator inițiază o solicitare, toate operațiunile, cu excepția schimbului de decontare, sunt blocate până când în afara lanțului declanșează cu succes schimbul în lanț sau expiră timpul de schimb (acest timp va fi prestabilit). Dacă există o limită de timp, chiar dacă există o problemă cu releul sau zkp, piscina nu va fi blocată pentru totdeauna. Limita de timp specifică poate fi de câteva minute.
zkUniswap are un design special pentru MEV, adică dezvoltatorii doresc ca protocolul să captureze valoarea MEV. În teorie, zkAMM-urile au și MEV, deoarece prima persoană care depune o tranzacție o poate bloca, astfel încât toată lumea va concura în continuare pentru gaz, iar constructorii pot sorta și tranzacțiile solicitate. Dar zkUniswap va consuma în sine veniturile MEV, folosind licitația olandeză cu gradient de dobândă variabilă (VRGDA).
zkUniswap scoate lacătul și îl scoate la licitație la un preț redus. Dacă lacătul este vândut rapid, protocolul va ști că cererea este în prezent mare, iar apoi va crește automat prețul, dacă viteza de vânzare a lacătului va încetini. protocolul va scădea prețul. Aceasta va deveni o nouă sursă de venit. În mod echivalent, acordul prevede un lucru nou pentru a determina ordinea tranzacțiilor, iar banii din prețul competitiv sunt dați direct părții de proiect prin lucrul nou.
2.2 AMM - zkOracle ca coprocesor
Pe lângă utilizarea zkVM, unii oameni au propus utilizarea zkOracle pentru a realiza utilizarea resurselor de calcul în afara lanțului, iar zkOracle este un oracol care ia în considerare atât intrarea, cât și ieșirea. În general, există două tipuri de oracole, unul este oracolul de intrare, iar celălalt este oracolul de ieșire. date în lanț) și apoi furnizate în afara lanțului. Oracolul I/O (intrare și ieșire) (zkOracle) efectuează mai întâi ieșirea și 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. Pe de altă parte, utilizează ZK pentru a se asigura că calculele nodului Oracle nu sunt frauduloase și pot realiza funcția de co-procesor. Prin urmare, calculele de bază ale AMM pot fi plasate în zkOracle În timp ce implementează funcții AMM tradiționale, zkOracle poate fi folosit și pentru a implementa operațiuni mai complexe și consumatoare de resurse.

Sursa imagine: github fewwwww/zkAMM
2.3 Calculul ratei dobânzii de împrumut, calculul marjei și alte aplicații
Indiferent de implementare, multe funcții pot fi realizate cu coprocesorul ZK. De exemplu, contractul de creditare nu mai poate preseta parametri, ci poate ajusta rata dobânzii în funcție de condițiile de creditare în timp real. De exemplu, creșterea ratelor dobânzilor pentru a atrage oferta atunci când cererea de împrumut este mare și apoi scăderea ratelor dobânzilor atunci când cererea este scăzută. Acest lucru necesită ca protocolul de creditare să obțină date în lanț în timp real și să efectueze un număr mare de calcule pentru a obține parametrii corespunzători, ceea ce necesită calcule în afara lanțului (cu excepția cazului în care costul în lanț este extrem de scăzut).
Operațiunile complexe precum calcularea soldurilor de marjă, profiturile și pierderile nerealizate, sumele de lichidare etc. pot fi, de asemenea, transferate coprocesorului pentru executare. Avantajul folosirii unui coprocesor este că face aceste aplicații mai transparente și mai verificabile, iar logica motorului de marjă nu mai este o cutie neagră secretă. Deși calculul se face în afara lanțului, utilizatorii pot avea încredere deplină în corectitudinea execuției sale. În plus, această abordare se aplică și calculelor opțiunilor.
3. Alte aplicații ale coprocesorului ZK
3.1 Portofel care utilizează Bonsai ca co-procesor
Bonfire Wallet folosește zkVM pentru a muta calculele de verificare a identității în afara lanțului. Scopul acestui portofel este de a permite utilizatorilor să creeze portofele de tip arzător cu informații biometrice (amprente digitale) sau hardware criptografic yubikey.
Mai exact, Bonfire Wallet folosește WebAuthn, un standard comun de autentificare a paginilor web, care permite utilizatorilor să-și folosească direct dispozitivele pentru a finaliza autentificarea pe paginile web fără parole. Deci, în portofelul Bonfire, utilizatorul generează o cheie publică prin WebAuthn (nu în lanț, pentru WebAuthn), apoi o folosește pentru a crea un portofel.
Fiecare portofel Burner are un contract pe lanț, care conține cheia publică WebAuthn. Contractul trebuie să verifice semnătura WebAuthn a utilizatorului. Dar cantitatea de calcul este foarte mare, așa că Bonsai este folosit pentru a pune calculul în afara lanțului, a verifica semnătura în afara lanțului printr-un program invitat zkVM și pentru a produce zkp pentru verificarea în lanț.

Sursa imagine: Bonfire Wallet
3.2 Recuperarea datelor în lanț - utilizatorii scriu singuri circuitele ZK
Axiom este o aplicație care nu folosește zkVM, dar folosește o altă soluție de coprocesor. Să prezentăm mai întâi ce vrea să facă Axiom. Speră să folosească coprocesorul ZK pentru a permite contractelor să acceseze informații despre lanțul istoric. De fapt, este dificil pentru contracte să citească date istorice, deoarece contractele inteligente obțin în general date în lanț în timp real și este foarte costisitor pentru contracte să obțină date valoroase în lanț, cum ar fi soldurile contului trecut sau înregistrările tranzacțiilor.

Sursa imagine: Axiom demo
Nodurile Axiom accesează datele necesare în lanț și efectuează calcule specificate în afara lanțului, apoi generează o dovadă de cunoștințe zero pentru calcul care demonstrează că rezultatul a fost calculat corect pe baza datelor valide în lanț. Această dovadă este verificată în lanț, asigurându-se că contractul poate avea încredere în rezultat.
Pentru a genera zkp pentru calcule în afara lanțului, trebuie să compilați programul în circuitul ZK, am menționat și utilizarea zkVM pentru a face acest lucru, iar Axiom a subliniat oficial că există multe soluții pentru această problemă, care trebuie să cântărească performanța, flexibilitatea. și experiență de dezvoltare:
Circuite personalizate: Dezvoltatorii personalizează circuite pentru program, care va avea cu siguranță cele mai bune performanțe, dar va dura timp pentru a se dezvolta;
eDSL/DSL: dezvoltatorii își scriu în continuare propriile circuite, dar există câteva cadre opționale care îi ajută pe dezvoltatori să rezolve problemele legate de ZK, care pot echilibra performanța și experiența de dezvoltare.
zkVM: Dezvoltatorii folosesc direct mașini virtuale pregătite pentru a rula ZK. Acest lucru este foarte convenabil, dar oficialii Axiom cred că eficiența este foarte scăzută.
Prin urmare, Axiom a ales a doua opțiune, iar echipa de proiect a oferit utilizatorilor și un set de module ZK optimizate, astfel încât să își poată proiecta propriile circuite.
Un proiect asemănător cu Axiom este Herodot, dar ceea ce vrea să facă este un middleware pentru transmiterea încrucișată a informațiilor. Deoarece procesarea informațiilor este în afara lanțului, este o idee rezonabilă să permiteți 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, coprocesoarele ZK pot fi utilizate pentru jocurile în lanț și pentru guvernarea DAO. RISC Zero consideră că orice calcul care necesită mai mult de 250.000 de gaz va fi mai ieftin folosind coprocesorul ZK, dar rămâne de văzut cum se determină acest lucru. Guvernarea DAO poate folosi și coprocesorul ZK, deoarece implică mai multe persoane și mai multe contracte, care consumă resurse de calcul. RISC Zero susține că taxele de gaz pot fi reduse cu 50% după utilizarea Bonsai. ZKML este în esență ideea de coprocesor ZK, așa că Modulus Labs și Giza sunt, de asemenea, proiecte în acest domeniu, dar conceptul de coprocesor ZK este mai mare.
În plus, există câteva proiecte auxiliare în domeniul coprocesoarelor ZK, cum ar fi ezkl, care oferă compilatoare pentru realizarea de circuite ZK, suite de instrumente pentru implementarea ZK, instrumente pentru mutarea calculelor în lanț în afara lanțului etc.
4. Perspective de viitor
Coprocesorul permite aplicațiilor în lanț să aibă resurse de calcul externe precum un „nor”, care oferă cantități mari de calcule relativ ieftine, în timp ce doar calculele necesare sunt procesate în lanț. În situații reale, zkVM poate rula și pe cloud. Coprocesorul ZK este în esență o arhitectură, o modalitate de a pune în afara lanțului calcularea în lanț și nu există nicio limită pentru cine furnizează resursele de calcul în afara lanțului.
În esență, resursele de calcul în afara lanțului sunt partajate de producătorii mari tradiționali, chiar și resursele de calcul descentralizate și dispozitivele locale. Fiecare dintre aceste trei direcții este diferită. Producătorii majori tradiționali pot oferi soluții de calcul off-chain relativ mature. În viitor, „robustețea” resurselor de calcul descentralizate poate fi mai puternică, iar calculul local al utilizatorilor are, de asemenea, o mare imaginație. Cu toate acestea, multe proiecte de coprocesoare ZK aleg în prezent să ofere servicii într-o etapă de sursă închisă, deoarece în amonte și în aval ale acestei piste nu au fost încă formate, iar serviciile nu pot fi rafinate și predate unor proiecte diferite. Există două posibilități în viitor :
Există un număr mare de proiecte care concurează pentru fiecare aspect al coprocesorului ZK
Un proiect cu o bună experiență de service ocupă cea mai mare parte a pieței
Din perspectiva unui dezvoltator, aceștia pot utiliza doar un proiect de „interfață” atunci când folosesc coprocesorul ZK. Acesta este motivul pentru care Amazon Cloud ocupă o mare parte din piață, iar dezvoltatorii vor fi obișnuiți cu o singură metodă de implementare. Dar, ca proiect de „interfață” pentru resursele de calcul în afara lanțului, ce furnizori de servicii de calcul (furnizori tradiționali de cloud, partajarea descentralizată a resurselor) sunt conectați în spatele acestuia este o altă problemă demnă de discuție.
Kernel Ventures este un fond de capital de risc cripto condus de comunitatea de cercetare și dezvoltare, cu peste 70 de investiții în stadiu incipient concentrate pe infrastructură, middleware, dApps, în special ZK, Rollup, DEX, blockchain modulare și zone verticale pentru miliarde de utilizatori cripto în viitor, cum ar fi abstracția contului, disponibilitatea datelor, scalabilitate 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.
Referinte:
Un ghid pentru coprocesoarele ZK pentru scalabilitate: https://www.risczero.com/news/a-guide-to-zk-coprocessors-for-scalability
Definirea zkOracle pentru Ethereum: https://ethresear.ch/t/defining-zkoracle-for-ethereum/15131
zkUniswap: primul zkAMM de acest fel:https://ethresear.ch/t/zkuniswap-a-first-of-its-kind-zkamm/16839
Ce este un coprocesor ZK?: https://blog.axiom.xyz/what-is-a-zk-coprocessor/
O scurtă introducere la coprocesoare: https://crypto.mirror.xyz/BFqUfBNVZrqYau3Vz9WJ-BACw5FT3W30iUX3mPlKxtA
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
Portofel Bonfire: https://ethglobal.com/showcase/bonfire-wallet-n1dzp

