Introduzione

Nel nostro precedente post del blog, abbiamo brevemente introdotto il nostro protocollo, ZKCross, che mira a collegare Web2 e Web3 senza sforzo, senza aggiungere inutili complessità. Abbiamo anche evidenziato gli attuali problemi che affliggono il settore Web3, che ostacolano la vera decentralizzazione, efficienza e accessibilità per gli sviluppatori. Questo post del blog approfondirà il modo in cui intendiamo superare questi problemi e raggiungere il nostro obiettivo di collegare senza problemi Web2 e Web3.

Prima di entrare nei dettagli, rivediamo di cosa tratta ZKCross!

Che cos'è ZKCross?

ZKCross è una piattaforma rivoluzionaria che mira a colmare il divario tra due versioni di Internet, Web2 e Web3. Utilizza una macchina virtuale WebAssembly chiamata zkVM e uno "zk-shadow layer", semplificando la collaborazione tra diverse parti della piattaforma. Questo approccio consente agli sviluppatori Web2 di utilizzare linguaggi di programmazione come C/C++, Java o Python.

La nostra piattaforma impiega anche un layer unico che collega in modo fluido gli ambienti on-chain e off-chain. Questo layer, noto come "layer zk-shadow", facilita la connessione tra zkWASM e il layer on-chain tramite contratti zk-proxy. Di conseguenza, questo ci consente di rompere la barriera tra Web2 e Web3, facilitando al contempo un throughput elevato e l'accessibilità per qualsiasi utente o sviluppatore.

Le meraviglie della tecnologia a conoscenza zero

La tecnologia Zero Knowledge (ZK) si riferisce a una classe di protocolli che consentono a una parte (il dimostratore) di dimostrare la conoscenza di un segreto a un'altra parte (il verificatore) senza rivelare alcuna informazione sul segreto stesso. Il concetto è stato introdotto alla fine degli anni '80 e da allora ha trovato molte applicazioni, tra cui l'autenticazione crittografica. Una ZK-proof in genere comporta una serie di interazioni tra il dimostratore e il verificatore, durante le quali il dimostratore convince il verificatore della conoscenza di un segreto senza rivelarlo.

Per essere considerato una ZK-proof, un protocollo deve soddisfare i requisiti di completezza, solidità e conoscenza zero. Completezza significa che un dimostratore onesto convincerà sempre un verificatore onesto della veridicità dell'affermazione che viene dimostrata. Solidità significa che un dimostratore disonesto non può convincere il verificatore di un'affermazione falsa con un'alta probabilità. Infine, conoscenza zero significa che il protocollo non rivela alcuna informazione sul segreto al verificatore, se non che il dimostratore lo conosce. Ciò significa che anche se un aggressore intercetta tutte le comunicazioni tra il dimostratore e il verificatore, non imparerà nulla sul segreto.

I limiti dello sviluppo di ZK dApp

Sviluppare applicazioni ZK può essere impegnativo a causa delle limitazioni nella scelta del linguaggio di programmazione. Molte blockchain utilizzano un linguaggio di programmazione specializzato chiamato Solidity, pensato su misura per scrivere contratti intelligenti. Non è il linguaggio più intuitivo e ha una curva di apprendimento ripida che può mettere alla prova gli sviluppatori Web2 non familiari, portando così a problemi di accessibilità per questi sviluppatori.

Per affrontare questa sfida, gli sviluppatori stanno esplorando nuove soluzioni che consentono una maggiore flessibilità del linguaggio di programmazione durante la creazione di applicazioni ZK. Un approccio prevede l'utilizzo di una macchina virtuale WebAssembly (WASM), che può consentire agli sviluppatori di codificare nei loro linguaggi di programmazione di alto livello preferiti, come C/C++, Java o Python. Ciò consente agli sviluppatori Web2 di sfruttare le loro competenze ed esperienze esistenti per creare applicazioni ZK senza imparare nuovi linguaggi di programmazione. Inoltre, vengono sviluppati strumenti e framework (ad esempio ZKCross SDK) che astraggono parte della complessità della scrittura di contratti intelligenti, rendendo più facile per gli sviluppatori creare applicazioni ZK sicure.

zkVM, la santa trinità dello sviluppo

ZKVM è l'abbreviazione di Zero-Knowledge Virtual Machine, una tecnologia utilizzata nel protocollo ZKCross per aiutare gli sviluppatori Web2 a scrivere contratti intelligenti per Web3 senza dover imparare nuovi linguaggi di programmazione. ZkVM sfrutta una macchina virtuale WASM, che consente agli sviluppatori Web2 di scrivere codice nei loro linguaggi di programmazione preferiti. WASM è incredibilmente popolare per le applicazioni basate sul Web ed è utilizzato in tutti i motori Web più importanti. Pertanto, l'utilizzo di zkVM consente a milioni di sviluppatori di creare applicazioni pronte per Web3 senza una curva di apprendimento ripida. D'altro canto, zkVM utilizza zk-SNARK; una prova crittografica che consente a una parte di dimostrare a un'altra parte la conoscenza di un'informazione specifica senza rivelare alcuna informazione al riguardo. Gli SNARK forniscono un modo per convalidare i calcoli sulla blockchain senza esporre dati sensibili (personali), come le informazioni di identificazione personale.

Uno dei principali vantaggi degli SNARK è la loro concisione. A differenza di altri tipi di ZK-proof, che possono essere molto costosi dal punto di vista computazionale e richiedere molti round di interazione tra il dimostratore e il verificatore, gli SNARK possono essere altamente efficienti e richiedere solo una singola proof che può essere verificata rapidamente.

Un altro vantaggio degli SNARK è la loro scalabilità. Gli SNARK possono essere utilizzati per verificare la correttezza di grandi calcoli senza rivelare alcun dettaglio del calcolo stesso. Ciò li rende particolarmente utili per verificare la correttezza degli smart contract nelle reti blockchain, dove i calcoli possono essere molto complessi e richiedere molte risorse computazionali.

Vantaggi di ZkVM

zkVM offre una serie di vantaggi agli sviluppatori che desiderano creare applicazioni decentralizzate.

  • Elevata flessibilità: con zkVM, gli sviluppatori possono scrivere contratti intelligenti nel loro linguaggio di programmazione di alto livello preferito, C/C++, Java o Python, anziché essere limitati a linguaggi di programmazione specifici.

  • Scalabilità migliorata: zkVM consente un'esecuzione più rapida delle transazioni e una maggiore produttività, essenziali per la creazione di applicazioni decentralizzate scalabili.

  • Modularità e componibilità: con zkVM, gli sviluppatori possono creare rapidamente applicazioni decentralizzate complesse utilizzando moduli diversi senza doversi preoccupare di problemi di compatibilità con il linguaggio o la piattaforma.

  • Sicurezza avanzata: zkVM utilizza le prove ZK, note come SNARK, per garantire un elevato livello di sicurezza consentendo la verifica dei calcoli senza rivelare dati sensibili.

  • Decentralizzazione: zkVM promuove la decentralizzazione consentendo l'esecuzione di contratti intelligenti in modo distribuito su più nodi, eliminando così la necessità di autorità centrali.

Nei prossimi blog il nostro ecosistema unico e rivoluzionario verrà spiegato più in dettaglio, evidenziando i casi d'uso, analizzando approfonditamente l'architettura e molto altro ancora!