Il concetto di prove a conoscenza zero (ZKP) risale al lontano 1985, quando venne per la prima volta redatto dai matematici Shafi Goldwasser e Silvio Micali ( Fondatore di Algorand), in un documento del MIT. I due esperti scoprirono che tramite particolari calcoli, era possibile dimostrare e verificare alcune proprietà di un numero senza rivelare il numero stesso.
Questa straordinaria rivelazione aprì le porte ad un nuova era della crittografia, dove privacy e sicurezza poteva vivere insieme in modo trasparente e verificabile. Da allora, le prove a conoscenza zero sono diventate un pilastro fondamentale per molte applicazioni nel mondo della blockchain.
In questo articolo esploriamo il loro funzionamento ed i loro casi d’uso, approfondiamo la differenza tra le principali tipologie di ZKP e vediamo in quali protocolli e catene sono maggiormente implementate.
Cosa sono le prove a conoscenza zero?
Le prove a conoscenza zero, o zero-knowledge proofs (ZKP), sono un’innovazione crittografica che permette a qualcuno di dimostrare di sapere qualcosa senza dover rivelare direttamente l’informazione in sé. Facciamo un esempio per rendere tutto più semplice: immagina di giocare a “Dove si trova Wally”, un noto gioco dove l’obiettivo è trovare Wally in un’immagine caotica con centinaia di volti diversi.
Devi dimostrare ai tuoi amici di aver trovato Wally, senza però rivelargli la posizione esatta ( ovvero l’informazione).
Allora prendi un grosso cartoncino colorato, tagli una piccola finestra, e sovrapponi il foglio all’immagine lasciando libero solo il punto in cui c’è Wally. In questo modo i tuoi amici sapranno che hai trovato Wally in mezza alla mischia, ma non conoscono gli indizi e i dettagli aggiuntivi che ti hanno portato a trovarlo.
Ecco, le prove a conoscenza zero (ZKP) funzionano più o meno così, ma al posto del cartoncino colorato vi è una prova matematica.
Questa tecnologia è molto importante nel mondo crypto poiché consente agli utenti di mantenere la propria privacy pur garantendo il flusso di alcune informazioni essenziali. In pratica, grazie alle prove a conoscenza zero è possibile indicare alcuni dati ad una controparte, senza svelarne altri che non vogliamo diffondere.
Ad esempio, nel caso di un’app DeFi che offre prestiti senza garanzie solo a chi ha una buona reputazione on-chain ( es aver rimborsato almeno 10 prestiti in passato), le ZKP diventando fondamentali perché consentono di mostrare quel dato, senza rivelare allo stesso tempo altre informazioni come i protocolli usati, i token presi in prestito, i tassi di interesse ecc.
Come funzionano tecnicamente le ZKP?
Da un punto di vista prettamente tecnico, le prove a conoscenza zero (ZKP) utilizzano complesse funzioni crittografiche per stabilire delle “prove matematiche” in grado di dimostrare la validità di alcune specifiche informazioni. In gergo si dice che un “Prover” convince un “Verifier” che il dato sia corretto senza svelarne il contenuto e condividere l’informazione originale. Il Prover ed il Verifier sono i due componenti software principali o nodi di una rete decentralizzata che interagiscono tra loro all’interno di un protocollo crittografico per attestare la veridicità di un’affermazione.
Esistono diverse tipologie di ZKP: generalmente si distinguono tra quelle interattive e non interattive. Nelle prime,prove interattive, Prover e Verifier devono scambiarsi più messaggi in tempo reale affinché la verifica vada a buon fine. Tale approccio viene adottato solo in modo marginale all’interno del mondo blockchain poiché è difficile stabilire una connessione sincrona in tempo reale.
Le prove non interattive invece, maggiormente diffuse, sfruttano il concetto di Fiat-Shamir per trasformare una sequenza di messaggi interattivi in una singola prova statica. Quest’ultima può essere verificata senza necessità di comunicazione diretta tra le parti. L’interazione è sostituita da un “challenge” derivato da una funzione di hash.
Le principali tipologie di prove a conoscenza zero nei rollup: zk-SNARK e zk-STARK
Tra le maggiori prove a conoscenza zero (ZKP) non interattive, possiamo distinguere zk-SNARKs e zk-STARKs. Entrambi sono implementazioni fortemente adottate nel settore web3, che consentono di costruire prove compatte e verificabili in tempi rapidi, rendendosi efficienti per una varietà di casi d’uso differenti.
I vantaggi del loro utilizzo, oltre che per privacy e sicurezza, sono riscontrabili in termini di scalabilità. Per questo vengono spesso frequenti nelle blockchain di tipo layer-2.
Andando per ordine, i zk-SNARKs (Zero-Knowledge Succinct Non-Interactive Argument of Knowledge) rappresentano prove a conoscenza zero che necessitano di una terze parte di fiducia che possano generare dei parametri iniziali attraverso un processo chiamato trusted setup.
Questa fase è fondamentale per il funzionamento del sistema: se viene compromessa, potrebbe teoricamente permettere a qualcuno di creare prove false. Il vantaggio degli zk-SNARKs è che producono prove estremamente leggere e veloci da verificare, in grado di raggiungere un’elevata scalabilità.ù
Invece gli zk-STARKS (Zero-Knowledge Scalable Transparent Argument of Knowledge) sono prove a conoscenza zero che non passano per una terza parte indipendente, e quindi non richiedono un trusted setup. La struttura delle prove fornite essere verificata da chiunque, il che elimina il rischio associato a una potenziale compromissione iniziale.
Tuttavia queste soluzioni producono prove di dimensioni più grandi, che possono comportare un maggior utilizzo di spazio di blocco e un aumento nei costi di trasmissione o storage.
Le catene ed i protocolli che implementano la tecnologia delle prove ZKP
Come accennato le prove a conoscenza zero, soprattutto le ZKP non interattive come zk-SNARKs e zk-STARKs, vengono utilizzate da una vasta gamma di applicazioni e chain dell’industria web3. Sicuramente l’ecosistema di Ethereum è quello che vanta il maggior numero di implementazioni, soprattutto grazie alla fitta presenza delle reti layer-2 . Ne sono un esempio StarkNet, zkSync, Scroll, Polygon zkEVM e Linea.
Queste catene di secondo livello sfruttano le prove a conoscenza zero per processare migliaia di transazioni off-chain, generando solo singole prove computazione da verificare saltuariamente sul L1 principale. Questo riduce fortemente i costi di rete ed aumenta la scalabilità complessiva di Ethereum, senza compromettere la sicurezza e la privacy delle informazioni.
Al di fuori del mondo Ethereum, troviamo molte altre realtà che utilizzano le prove a conoscenza zero. alcune blockchain e protocolli sono addirittura progettati in modo nativo attorno a questa tecnologia, proprio per sfruttarne al massimo i vantaggi. Ad esempio la rete ZCash è stata una delle prime blockchain ad aver fatto delle zk-SNARK un caso d’uso reale.
Grazie ad esse, abilita transazioni completamente private in cui l’indirizzo del mittente è nascosto, pur garantendo la validità dell’operazione. Un altro esempio è Mina Protocol, che impiega le ZKP per mantenere la blockchain estremamente leggera, comprimendo l ‘intero stato della blockchain attraverso singole prove costantemente aggiornate.
Tra gli altri progetti più noti che stanno integrando le prove a conoscenza zero citiamo Manta Network, Aleo e Aztec. In tutti e 3 i casi le ZKP vengono utilizzate per abilitare funzionalità avanzate legate alla privacy delle transazioni e all’esecuzione sicura degli smart contract. Il tutto, ovviamente, senza che venga compromessa la trasparenza e la verificabilità trustless delle informazioni su blockchain.