Skip to main content

Che cos'è ZK (zero-knowledge)

Nota: Questo documento è una traduzione automatica della versione originale in inglese.

Che cos'è ZK (zero-knowledge)

Le prove a conoscenza zero (prove ZK) sono una tecnica crittografica che consente a una parte (il prover) di convincere un'altra parte (il verifier) che un'affermazione è vera — senza rivelare alcuna informazione oltre alla verità dell'affermazione stessa. Nella blockchain, le prove ZK vengono usate per tre scopi principali: privacy (nascondere i dettagli delle transazioni dimostrando che sono valide), scalabilità (comprimere molte transazioni in un'unica prova verificata on-chain) e calcolo verificabile (dimostrare che un calcolo off-chain è stato eseguito correttamente).

In sintesi: le prove ZK permettono di dimostrare che qualcosa è vero senza mostrare come o perché. Nel mondo crypto, abilitano transazioni private, rollup scalabili e inferenza AI verificabile — il tutto senza richiedere fiducia nel prover.

L'idea di fondo

Il concetto è controintuitivo: come si può dimostrare di sapere qualcosa senza rivelarla? Un'analogia classica aiuta.

Immagina una grotta con due percorsi (sinistro e destro) che si incontrano davanti a una porta chiusa a chiave in fondo. Tu affermi di conoscere la password della porta. Per dimostrarlo senza rivelare la password, un verificatore resta all'ingresso della grotta e tu entri da un percorso casuale. Il verificatore poi grida da quale percorso vuole che tu esca. Se conosci la password, puoi sempre uscire dal lato richiesto — attraversando la porta se necessario. Se non conosci la password, puoi uscire solo dal lato da cui sei entrato. Dopo molti round, il verificatore si convince che conosci la password, senza però mai apprendere quale sia.

Le prove ZK formalizzano matematicamente questa intuizione. Soddisfano tre proprietà:

  • Completezza. Se l'affermazione è vera ed entrambe le parti seguono il protocollo, il verificatore sarà convinto.
  • Solidità. Se l'affermazione è falsa, nessun prover disonesto può convincere il verificatore (se non con probabilità trascurabile).
  • Conoscenza zero. Il verificatore non apprende nulla oltre al fatto che l'affermazione è vera.

Come funzionano le prove ZK (in versione semplificata)

Un sistema di prove ZK prevede questi passaggi:

  1. Formulazione dell'affermazione. L'affermazione da dimostrare viene espressa come enunciato matematico — tipicamente come circuito (una serie di operazioni aritmetiche) o come insieme di equazioni polinomiali.
  2. Witness. Il prover possiede informazioni private (il "witness") che rendono vera l'affermazione. Ad esempio, il witness potrebbe essere costituito dagli input di un calcolo che produce un output noto.
  3. Generazione della prova. Il prover usa il witness e l'affermazione per generare una prova — un oggetto matematico compatto. Questa operazione è computazionalmente costosa per il prover.
  4. Verifica della prova. Il verificatore controlla la prova rispetto all'affermazione. La verifica è veloce e non richiede il witness. Se la prova è valida, il verificatore è convinto che l'affermazione sia vera senza apprendere il witness.

La prova è tipicamente molto più piccola del witness, e la verifica è molto più economica della riesecuzione del calcolo. Questa asimmetria è ciò che rende le prove ZK utili per la scalabilità e la verifica nella blockchain.

zk-SNARK e zk-STARK

Due grandi famiglie di sistemi di prove ZK dominano il panorama blockchain:

zk-SNARK

Succinct Non-interactive Arguments of Knowledge. Gli SNARK producono prove molto piccole (poche centinaia di byte) economiche da verificare. Sono "non interattivi" — il prover genera la prova in un solo passaggio senza scambi con il verificatore. La maggior parte delle costruzioni SNARK richiede un trusted setup — una cerimonia una tantum che genera parametri pubblici. Se il setup viene compromesso, la garanzia di solidità viene meno. Gli SNARK moderni (come PLONK e le sue varianti) usano un trusted setup universale valido per qualsiasi circuito, riducendo ma non eliminando questa preoccupazione.

zk-STARK

Scalable Transparent Arguments of Knowledge. Gli STARK non richiedono un trusted setup — sono "trasparenti". Offrono inoltre sicurezza post-quantistica (resistenza agli attacchi dei computer quantistici). Il compromesso è che le prove STARK sono più grandi di quelle SNARK e la verifica è un po' più costosa. Gli STARK sono particolarmente adatti ai calcoli di grandi dimensioni perché il tempo del prover scala in modo quasi lineare con la dimensione del calcolo.

Confronto

Proprietà zk-SNARK zk-STARK
Dimensione della prova Piccola (centinaia di byte) Maggiore (da decine a centinaia di kilobyte)
Costo di verifica Basso Moderato
Trusted setup Richiesto (nella maggior parte delle costruzioni) Non richiesto (trasparente)
Sicurezza post-quantistica No (nella maggior parte delle costruzioni) Sì
Costo del prover Moderato Più alto, ma scala meglio per circuiti grandi

In pratica, molti progetti usano sistemi basati su SNARK per le prove di piccole dimensioni e i bassi costi di verifica, mentre gli STARK stanno guadagnando adozione dove trasparenza e sicurezza post-quantistica sono prioritarie.

ZK nella blockchain: applicazioni principali

Privacy

Le prove ZK abilitano transazioni private su blockchain pubbliche. Un utente può dimostrare che la sua transazione è valida (saldi corretti, nessuna doppia spesa) senza rivelare mittente, destinatario o importo. I protocolli orientati alla privacy le usano per creare trasferimenti riservati su chain altrimenti trasparenti.

Scalabilità (zk-rollup)

Gli zk-rollup sono soluzioni di scalabilità Layer 2 che eseguono le transazioni off-chain, le raggruppano e generano una prova ZK che l'intero batch è stato elaborato correttamente. Solo la prova e un riepilogo delle modifiche di stato vengono pubblicati sul layer di base (Layer 1). Lo smart contract su L1 verifica la prova e accetta l'aggiornamento di stato. Questo comprime migliaia di transazioni in un'unica verifica di prova, aumentando drasticamente il throughput mentre eredita la sicurezza del layer di base. Le principali implementazioni di zk-rollup includono zkSync, StarkNet, Polygon zkEVM, Scroll e Linea.

Per approfondire la scalabilità Layer 2, vedi L2.

Calcolo verificabile e zkML

Le prove ZK possono verificare che qualsiasi calcolo sia stato eseguito correttamente. Questo si estende all'AI: zkML usa le prove ZK per verificare che un modello di machine learning abbia prodotto un output specifico a partire da un input specifico, senza rivelare i pesi del modello o i dati di input. Uno smart contract può verificare la prova on-chain, creando una garanzia trustless che l'inferenza AI è stata calcolata correttamente.

zkML rappresenta una delle applicazioni tecnicamente più ambiziose di ZK nel crypto AI. Fornisce una garanzia matematica (trustless) di inferenza corretta, ma attualmente è limitata a modelli di piccole dimensioni a causa del costo computazionale della generazione delle prove.

Perché ZK è importante per il crypto AI

Le prove ZK rispondono a due esigenze critiche dell'AI decentralizzata:

  • AI verificabile. Quando l'inferenza AI viene eseguita su hardware di terze parti non affidabile, le prove ZK possono garantire che il risultato sia corretto senza rieseguire il calcolo. Questo è essenziale per le applicazioni on-chain in cui gli output AI attivano azioni di smart contract.
  • Privacy. Le prove ZK abilitano calcoli AI in cui il modello, l'input o entrambi restano privati. Un utente può ottenere un risultato generato dall'AI senza che il fornitore di calcolo veda la query, e il proprietario di un modello può dimostrare che il suo modello è stato usato senza rivelarne i pesi.

Nel framework di valutazione DecAIHub, la verifica basata su ZK funge da indicatore di un'integrazione AI on-chain genuina — crea un collegamento matematicamente verificabile tra il calcolo AI off-chain e lo stato on-chain.

Dove compare nelle schede progetto di DecAIHub

Le funzionalità legate a ZK emergono in diversi punti:

  • AI component — valori come "zkML inference", "ZK-verified computation" o "zero-knowledge proof of inference" indicano una verifica AI basata su ZK.
  • Category — i progetti che usano ZK per l'AI possono comparire nelle categorie AI/Inference o AI/Compute con ZK come meccanismo di verifica.
  • Tabella Evidence — le evidenze Tier-1 per ZK includono contratti verifier distribuiti, benchmark di prove pubblicati, implementazioni di circuiti e transazioni di verifica on-chain.
  • Artefatti on-chain — i contratti verifier ZK on-chain sono evidenze concrete di una reale integrazione ZK e contribuiscono alla dimensione Onchain necessity.

Cosa ZK non dimostra

  • ZK dimostra che un calcolo è stato eseguito correttamente — non dimostra che il calcolo sia utile, che il modello sia buono o che i dati siano accurati. Spazzatura verificata resta spazzatura.
  • ZK non dimostra che un token sia necessario. Le prove ZK funzionano senza una blockchain; la decisione di portare la verifica on-chain è una scelta architetturale.
  • ZK non dimostra la decentralizzazione. Un fornitore centralizzato può generare prove ZK per i propri calcoli.
  • ZK non dimostra che il modello sia quello dichiarato, a meno che l'impegno sul modello (un hash dei pesi) non sia ancorato pubblicamente e la prova non sia vincolata a tale impegno.
  • Un progetto che menziona ZK nel proprio whitepaper non significa che ZK sia implementato. Cercare contratti verifier distribuiti, benchmark di prove e codice dei circuiti come evidenza.

Da non confondere con

  • Privacy — la privacy è l'obiettivo più ampio. ZK è uno degli strumenti per raggiungerla. Altri meccanismi di privacy includono TEE, MPC e crittografia omomorfica.
  • TEE (Trusted Execution Environment) — il TEE fornisce riservatezza basata sull'hardware. ZK fornisce prove matematiche. Entrambi possono essere usati per l'AI verificabile, con assunzioni di fiducia e compromessi prestazionali diversi.
  • zkML — l'applicazione specifica delle prove ZK all'inferenza di machine learning. ZK è la tecnica crittografica generale; zkML è il caso d'uso specializzato.
  • Crittografia — la crittografia nasconde i dati. Le prove ZK dimostrano affermazioni sui dati senza rivelarli. Sono operazioni diverse: la crittografia trasforma i dati in una forma illeggibile, mentre le prove ZK generano evidenza matematica sui dati senza esporli.
  • Verifica ottimistica — assume che i risultati siano corretti e usa fraud proof solo in caso di contestazione. ZK dimostra proattivamente la correttezza in anticipo. Sono approcci complementari usati in design L2 diversi (optimistic rollup vs zk-rollup).

Domande frequenti

Qual è la differenza tra zk-SNARK e zk-STARK?

Entrambe sono famiglie di sistemi di prove a conoscenza zero, ma differiscono in proprietà chiave. Gli zk-SNARK producono prove più piccole e hanno costi di verifica inferiori ma richiedono tipicamente un trusted setup — una cerimonia una tantum per generare i parametri del sistema. Gli zk-STARK non richiedono un trusted setup (sono trasparenti) e offrono sicurezza post-quantistica, ma le loro prove sono più grandi e più costose da verificare. La scelta dipende dall'applicazione: gli SNARK sono preferiti quando dimensione della prova e costo di verifica sono critici (ad esempio, la verifica on-chain), mentre gli STARK sono preferiti quando trasparenza e sicurezza a lungo termine sono prioritarie.

Come vengono usate le prove ZK per la scalabilità della blockchain?

Gli zk-rollup eseguono le transazioni off-chain in batch, quindi generano un'unica prova ZK che l'intero batch è stato elaborato correttamente. Questa prova viene inviata alla blockchain Layer 1 insieme a un riepilogo compresso delle modifiche di stato. Lo smart contract su L1 verifica la prova — il che è molto più economico che rieseguire tutte le transazioni — e accetta l'aggiornamento di stato. Questo consente al L1 di elaborare l'effetto di migliaia di transazioni verificando una sola prova, aumentando drasticamente il throughput.

Qual è il collegamento tra ZK e AI?

Le prove ZK possono verificare che l'inferenza di un modello AI sia stata eseguita correttamente senza rivelare il modello o i dati di input. Questa applicazione, chiamata zkML, abilita la verifica trustless dell'AI on-chain: uno smart contract può confermare che un modello specifico ha prodotto un output specifico. Attualmente, zkML è praticabile solo per modelli piccoli a causa del costo computazionale della conversione delle operazioni del modello in circuiti ZK e della generazione delle prove. Con il miglioramento dei sistemi di prova, la gamma di modelli AI verificabili si amplierà.

Le prove ZK sono computazionalmente costose?

La generazione delle prove è costosa — significativamente più del calcolo sottostante. Generare una prova ZK per un calcolo può richiedere da dieci a mille volte più tempo della semplice esecuzione del calcolo. Tuttavia, la verifica della prova è economica e veloce. Questa asimmetria è voluta: il prover fa il lavoro pesante una volta sola, e un numero qualsiasi di verificatori può controllare il risultato in modo efficiente. Per le applicazioni blockchain, questo significa che la costosa generazione delle prove avviene off-chain mentre la verifica economica avviene on-chain.

Riferimenti esterni

Vedi anche