Autore: Kernel Ventures Turbo Guo

Revisori: Kernel Ventures Mandy, Kernel Ventures Joshua

TLDR:

Il coprocessore ZK è una soluzione che consente alle dApp di utilizzare risorse di calcolo fuori catena. Questo articolo discute principalmente l'implementazione del coprocessore, varie applicazioni e direzioni di sviluppo future. I contenuti principali sono:

  1. zkVM di RISC Zero è una soluzione coprocessore ZK che consente ai contratti on-chain di chiamare zkVM off-chain per eseguire codice Rust specifico e restituire i risultati alla catena, fornendo al tempo stesso zkp al contratto per verificare se il calcolo è corretto.

  2. I coprocessori ZK hanno diversi metodi di implementazione. Oltre a zkVM, gli utenti possono anche scrivere circuiti ZK personalizzati per i propri programmi o utilizzare framework prefabbricati per scrivere circuiti, consentendo ai contratti di utilizzare risorse di calcolo fuori catena.

  3. Il coprocessore ZK può svolgere un ruolo nella DeFi, ad esempio collocando i calcoli AMM fuori catena, consentendo al protocollo di acquisire valore simile a MEV o consentendo ad AMM di implementare una logica operativa complessa e ad alta intensità di calcolo. Il coprocessore ZK può anche consentire ai protocolli di prestito di calcolare i tassi di interesse in tempo reale, rendendo trasparenti i calcoli dei margini, ecc. Esistono due implementazioni di zkAMM, una utilizza zkVM e l'altra utilizza zkOracle.

  4. Esistono altri potenziali usi del coprocessore ZK. Ad esempio, i portafogli possono utilizzare il coprocessore ZK per eseguire la verifica dell'identità fuori catena. Il coprocessore può anche consentire ai giochi on-chain di eseguire calcoli più complessi e ridurre il gas richiesto per la governance DAO. Aspettare.

  5. Il modello del coprocessore ZK è indeciso, ma rispetto agli utenti che scrivono i propri circuiti, è più amichevole utilizzare un progetto come interfaccia per chiamare risorse fuori catena, ma quali fornitori di servizi informatici (fornitori di cloud tradizionali, fornitori di cloud tradizionali, ecc.) sono collegati dietro il progetto "interfaccia"? Condivisione decentralizzata delle risorse) è un'altra questione che vale la pena discutere.

1. Il significato e l'applicazione del coprocessore ZK

Fonte immagine: Kernel Ventures

Il nucleo del coprocessore ZK è spostare i calcoli on-chain off-chain e utilizzare ZK per dimostrare l'affidabilità del processo di calcolo off-chain, consentendo ai contratti intelligenti di gestire facilmente grandi quantità di calcoli, consentendo al contempo ai contratti di verificarne l'affidabilità di calcoli. Questo è simile all'idea di zkRollup, ma Rollup è uno strato di protocollo di catena che utilizza risorse di calcolo fuori catena, mentre il coprocessore ZK è una dApp che utilizza risorse fuori catena.

RISC Zero viene utilizzato qui per spiegare l'implementazione di un coprocessore ZK, ma esistono molte implementazioni di coprocessori ZK, che verranno introdotte in seguito. RISC Zero ha sviluppato l'architettura del coprocessore Bonsai ZK, il cui nucleo è zkVM di RISC Zero. Gli sviluppatori possono generare zkp su zkVM nel caso in cui "un certo pezzo di codice Rust venga eseguito correttamente". Con zkVM, il processo specifico per implementare il coprocessore ZK è:

  1. Lo sviluppatore avvia una richiesta al contratto di inoltro di Bonsai, ovvero il programma richiesto dallo sviluppatore viene eseguito in zkVM.

  2. Il contratto di inoltro invia la richiesta al pool di richieste fuori catena

  3. Bonsai esegue la richiesta in zkVM off-chain, esegue operazioni su larga scala off-chain e quindi genera una ricevuta per essa.

  4. Queste prove, chiamate anche "ricevute", vengono rispedite alla catena da Bonsai tramite un contratto di staffetta.

Fonte immagine: RISC Zero

Il programma certificato in Bonsai si chiama Programma Ospite e la ricevuta serve a dimostrare che il programma ospite è stato eseguito correttamente. Le credenziali includono un diario e un sigillo. Nello specifico, il Journal trasporta l'output pubblico dell'applicazione zkVM e il sigillo viene utilizzato per dimostrare la validità del certificato, ovvero per dimostrare che il programma ospite viene eseguito correttamente. Anche il sigillo stesso è uno zkSTARK generato dal certificatore . La verifica delle credenziali garantisce che il journal sia stato creato con i circuiti corretti, ecc.

Bonsai semplifica il processo per gli sviluppatori dalla compilazione del codice Rust al bytecode zkVM, al caricamento del programma, all'esecuzione in VM e al feedback di prova, consentendo agli sviluppatori di concentrarsi maggiormente sulla progettazione logica del programma. E non solo parte della logica contrattuale, ma l’intera logica contrattuale può essere gestita fuori catena. RISC Zero utilizza anche le continuazioni, che dividono una grande generazione di prove in molte parti e quindi dimostrano ciascuna parte in modo indipendente. Ciò consente di generare prove per programmi di grandi dimensioni senza occupare troppa memoria. Oltre a RISC Zero, anche diversi progetti come IronMill, =nil Foundation e Marlin forniscono soluzioni generali simili.

2. Applicazione del coprocessore ZK nella DeFi

2.1 AMM - Bonsai come coprocessore

zkUniswap è un AMM che utilizza risorse di calcolo fuori catena Il suo nucleo è mettere parte dei calcoli di scambio fuori catena e utilizza Bonsai. L'utente avvia una richiesta di scambio sulla catena. Il contratto di inoltro di Bonsai ottiene la richiesta e avvia il calcolo fuori catena Dopo che Bonsai ha completato il calcolo, restituisce il risultato del calcolo e la prova alla funzione di callback nell'EVM. Se la prova viene verificata con successo, verrà eseguito lo scambio.

Tuttavia, lo scambio non viene completato contemporaneamente. I processi di richiesta ed esecuzione si svolgono in transazioni diverse. Ciò comporta alcuni rischi, ovvero lo stato del pool può cambiare dopo l'invio della richiesta e prima del completamento dello scambio. Perché la convalida si basa sullo stato del pool al momento dell'invio della richiesta. Se lo stato del pool cambia mentre una richiesta è ancora in attesa, la verifica fallirà.

Per risolvere questo problema, gli sviluppatori hanno progettato un blocco del pool. Quando un utente avvia una richiesta, tutte le operazioni tranne lo scambio di regolamento vengono bloccate fino a quando l'off-chain non attiva con successo lo scambio on-chain o lo scambio scade (questa volta sarà preimpostata). Se c'è un limite di tempo, anche se c'è un problema con il relè o lo zkp, il pool non verrà bloccato per sempre. Il limite di tempo specifico potrebbe essere di pochi minuti.

zkUniswap ha un design speciale per MEV, ovvero gli sviluppatori vogliono che il protocollo catturi il valore MEV. In teoria, le zkAMM hanno anche il MEV, perché la prima persona che invia una transazione può bloccarla, quindi tutti continueranno a competere per il gas, e i costruttori possono anche ordinare le transazioni richieste. Ma zkUniswap divorerà il reddito MEV stesso, utilizzando l’asta olandese con gradiente di tasso di interesse variabile (VRGDA).

zkUniswap estrae il lucchetto e lo mette all'asta a un prezzo ridotto. Se il lucchetto viene venduto rapidamente, il protocollo saprà che la domanda è attualmente elevata e quindi aumenterà automaticamente il prezzo. Se la velocità di vendita del lucchetto rallenta, il protocollo abbasserà il prezzo. Ciò diventerà una nuova fonte di entrate. Allo stesso modo, l'accordo prevede una nuova cosa per determinare l'ordine delle transazioni, e il denaro derivante dal prezzo competitivo viene dato direttamente alla parte del progetto attraverso la nuova cosa. Questo è molto fantasioso.

2.2 AMM - zkOracle come coprocessore

Oltre a utilizzare zkVM, alcune persone hanno proposto di utilizzare zkOracle per realizzare l'utilizzo delle risorse informatiche off-chain e zkOracle è un oracolo che tiene conto sia dell'input che dell'output. Esistono generalmente due tipi di oracoli, uno è l'oracolo di input e l'altro è l'oracolo di output. L'oracolo di input ordina (calcola) i dati fuori catena e li inserisce nella catena, mentre l'oracolo di output ordina (calcola) i dati. dati on-chain) e poi forniti all'off-chain. L'oracolo I/O (input e output) (zkOracle) esegue prima l'output e poi l'input, consentendo alla catena di utilizzare risorse di calcolo off-chain.

Da un lato, zkOracle utilizza i dati on-chain come fonte dati, dall'altro utilizza ZK per garantire che i calcoli del nodo Oracle non siano fraudolenti e possano svolgere la funzione di un coprocessore. Pertanto, i calcoli principali di AMM possono essere inseriti in zkOracle Mentre si implementano le funzioni AMM tradizionali, zkOracle può anche essere utilizzato per implementare operazioni più complesse e che consumano risorse computazionali.

Fonte immagine: github littlewwww/zkAMM

2.3 Calcolo del tasso di interesse sui prestiti, calcolo del margine e altre applicazioni

Indipendentemente dall'implementazione, molte funzioni possono essere realizzate con il coprocessore ZK. Ad esempio, il contratto di prestito non può più preimpostare parametri, ma regolare il tasso di interesse in base alle condizioni di prestito in tempo reale. Ad esempio, aumentando i tassi di interesse per attirare l’offerta quando la domanda di denaro in prestito è elevata, e quindi abbassandoli quando la domanda è bassa. Ciò richiede che il protocollo di prestito ottenga dati sulla catena in tempo reale ed esegua un gran numero di calcoli per ottenere parametri appropriati, il che richiede calcoli fuori catena (a meno che il costo sulla catena non sia estremamente basso).

Anche operazioni complesse come il calcolo dei saldi dei margini, dei profitti e delle perdite non realizzati, degli importi di liquidazione, ecc. possono essere trasferite al co-responsabile del trattamento per l'esecuzione. Il vantaggio di utilizzare un coprocessore è che rende queste applicazioni più trasparenti e verificabili e la logica del motore del margine non è più una scatola nera segreta. Sebbene il calcolo venga eseguito off-chain, gli utenti possono avere completa fiducia nella correttezza della sua esecuzione. Inoltre, questo approccio si applica anche ai calcoli delle opzioni.

3. Altre applicazioni del coprocessore ZK

3.1 Wallet che utilizza Bonsai come coprocessore

Bonfire Wallet utilizza zkVM per spostare i calcoli di verifica dell'identità fuori catena. L'obiettivo di questo portafoglio è consentire agli utenti di creare portafogli masterizzatori con informazioni biometriche (impronte digitali) o hardware crittografico ybikey.

Nello specifico, Bonfire Wallet utilizza WebAuthn, uno standard comune di autenticazione delle pagine Web, che consente agli utenti di utilizzare direttamente i propri dispositivi per completare l'autenticazione sulle pagine Web senza password. Quindi nel portafoglio Bonfire, l'utente genera una chiave pubblica tramite WebAuthn (non sulla catena, per WebAuthn) e quindi la utilizza per creare un portafoglio.

Ogni portafoglio Burner ha un contratto sulla catena, che contiene la chiave pubblica WebAuthn. Il contratto deve verificare la firma WebAuthn dell'utente. Ma la quantità di calcolo è molto elevata, quindi Bonsai viene utilizzato per mettere il calcolo off-chain, verificare la firma off-chain tramite un programma guest zkVM e produrre zkp per la verifica on-chain.

Fonte immagine: Portafoglio Bonfire

3.2 Recupero dati sulla catena: gli utenti scrivono i circuiti ZK da soli

Axiom è un'applicazione che non utilizza zkVM ma utilizza un'altra soluzione coprocessore. Presentiamo innanzitutto ciò che Axiom vuole fare. Spera di utilizzare il coprocessore ZK per consentire ai contratti di accedere alle informazioni sulla catena storica. In effetti, è difficile per i contratti leggere i dati storici, perché i contratti intelligenti generalmente ottengono dati sulla catena in tempo reale ed è molto costoso per i contratti ottenere dati preziosi sulla catena come i saldi dei conti passati o registri delle transazioni.

Fonte immagine: demo Axiom

I nodi Axiom accedono ai dati on-chain richiesti ed eseguono calcoli specifici off-chain, quindi generano una prova a conoscenza zero per il calcolo dimostrando che il risultato è stato calcolato correttamente sulla base di dati on-chain validi. Questa prova viene verificata sulla catena, garantendo che il contratto possa fidarsi del risultato.

Per generare zkp per i calcoli off-chain, è necessario compilare il programma nel circuito ZK. Abbiamo anche menzionato l'uso di zkVM per farlo, e Axiom ha sottolineato ufficialmente che ci sono molte soluzioni per questo problema, che devono valutare prestazioni e flessibilità. ed esperienza di sviluppo:

  1. Circuiti personalizzati: gli sviluppatori personalizzano i circuiti per il programma, che avrà sicuramente le migliori prestazioni, ma richiederà tempo per svilupparsi;

  2. eDSL/DSL: gli sviluppatori continuano a scrivere i propri circuiti, ma esistono alcuni framework opzionali che aiutano gli sviluppatori a risolvere i problemi relativi a ZK, in grado di bilanciare prestazioni ed esperienza di sviluppo.

  3. zkVM: Gli sviluppatori utilizzano direttamente macchine virtuali già pronte per eseguire ZK, il che è molto conveniente ma Axiom ritiene ufficialmente che l'efficienza sia molto bassa.

Pertanto, Axiom ha scelto la seconda opzione e il team del progetto ha anche fornito agli utenti una serie di moduli ZK ottimizzati in modo che possano progettare i propri circuiti.

Un progetto simile ad Axiom è Herodotus, ma quello che vuole fare è un middleware per la trasmissione di informazioni a catena incrociata. Poiché l’elaborazione delle informazioni avviene fuori catena, è un’idea ragionevole lasciare che catene diverse ottengano i dati elaborati. Un altro progetto, Space and Time, utilizza un'architettura simile per implementare l'indicizzazione dei dati.

3.3 Giochi on-chain, governance DAO e altre applicazioni

Inoltre, i coprocessori ZK possono essere utilizzati per giochi on-chain e governance DAO. RISC Zero ritiene che qualsiasi calcolo che richieda più di 250.000 gas sarà più economico utilizzando il coprocessore ZK, ma resta da vedere come ciò verrà determinato. La governance DAO può anche utilizzare il coprocessore ZK, perché coinvolge più persone e più contratti, consumando risorse di elaborazione. RISC Zero afferma che le tariffe del gas possono essere ridotte del 50% dopo aver utilizzato Bonsai. ZKML è essenzialmente l'idea del coprocessore ZK, quindi anche Modulus Labs e Giza sono progetti in questo campo, ma il concetto del coprocessore ZK è più ampio.

Inoltre, ci sono alcuni progetti ausiliari nel campo dei coprocessori ZK, come ezkl, che fornisce compilatori per realizzare circuiti ZK, suite di strumenti per l'implementazione ZK, strumenti per spostare i calcoli on-chain off-chain, ecc.

4. Prospettive future

Il coprocessore consente alle applicazioni on-chain di disporre di risorse informatiche esterne come un "cloud", che fornisce grandi quantità di calcoli relativamente economiche, mentre sulla catena vengono elaborati solo i calcoli necessari. Nelle situazioni reali, zkVM può anche essere eseguito sul cloud. Il coprocessore ZK è essenzialmente un'architettura, un modo per mettere l'elaborazione on-chain fuori catena e non vi è alcun limite su chi fornisce risorse di elaborazione off-chain.

Essenzialmente, le risorse informatiche fuori catena sono condivise dai grandi produttori tradizionali, anche dalle risorse informatiche decentralizzate e dai dispositivi locali. Ognuna di queste tre direzioni è diversa. I principali produttori tradizionali possono fornire soluzioni informatiche fuori catena relativamente mature. In futuro, la "robustezza" delle risorse informatiche decentralizzate potrebbe essere più forte e anche l'elaborazione locale degli utenti ha una grande immaginazione. Tuttavia, molti progetti di coprocessori ZK attualmente scelgono di fornire servizi in una fase closed source, perché l'upstream e il downstream di questo percorso non sono ancora stati formati e i servizi non possono essere perfezionati e consegnati a progetti diversi. Ci sono due possibilità in futuro :

  1. Esistono numerosi progetti in competizione per ciascun aspetto del coprocessore ZK

  2. Un progetto con una buona esperienza di servizio occupa la maggior parte del mercato

Dal punto di vista dello sviluppatore, può utilizzare un solo progetto di "interfaccia" quando utilizza il coprocessore ZK. Questo è il motivo per cui Amazon Cloud occupa una grande parte del mercato e gli sviluppatori saranno abituati a un metodo di distribuzione. Ma in quanto progetto di “interfaccia” per risorse informatiche fuori catena, quali fornitori di servizi informatici (tradizionali fornitori di cloud, condivisione decentralizzata delle risorse) siano collegati dietro di esso è un’altra questione degna di discussione.

Kernel Ventures è un fondo di capitale di rischio crittografico guidato dalla comunità di ricerca e sviluppo con oltre 70 investimenti in fase iniziale focalizzati su infrastrutture, middleware, dApp, in particolare ZK, Rollup, DEX, blockchain modulari e aree verticali per miliardi di utenti crittografici in il futuro, come l’astrazione dell’account, la disponibilità dei dati, la scalabilità, ecc. Negli ultimi sette anni ci siamo impegnati a sostenere la crescita delle principali comunità di sviluppo e delle associazioni blockchain universitarie in tutto il mondo.

Riferimenti:

  1. Una guida ai coprocessori ZK per la scalabilità: https://www.risczero.com/news/a-guide-to-zk-coprocessors-for-scalability

  2. Definizione di zkOracle per Ethereum: https://ethresear.ch/t/defining-zkoracle-for-ethereum/15131

  3. zkUniswap: uno zkAMM unico nel suo genere: https://ethresear.ch/t/zkuniswap-a-first-of-its-kind-zkamm/16839

  4. Cos'è un coprocessore ZK?: https://blog.axiom.xyz/what-is-a-zk-coprocessor/

  5. Una breve introduzione ai coprocessori: https://crypto.mirror.xyz/BFqUfBNVZrqYau3Vz9WJ-BACw5FT3W30iUX3mPlKxtA

  6. Ultime applicazioni basate su Hyper Oracle (bonus: cose che puoi creare ora): https://mirror.xyz/hyperoracleblog.eth/Tik3nBI9mw05Ql_aHKZqm4hNxfxaEQdDAKn7JKcx0xQ

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