Una prova a conoscenza zero (ZKP) è un protocollo crittografico che consente a una parte, denominata dimostratore, di convincere un'altra parte, denominata verificatore, che una particolare affermazione matematica è vera senza rivelare alcuna informazione oltre al semplice fatto che l'affermazione è effettivamente vera.
Il concetto trae origine dall'intuizione fondamentale che conoscenza e verifica sono fondamentalmente separabili: è possibile dimostrare il possesso di una conoscenza senza trasferirla.
Nel contesto della tecnologia blockchain e delle criptovalute, le prove a conoscenza zero sono diventate uno dei primitivi crittografici più rivoluzionari , consentendo transazioni che preservano la privacy, calcoli scalabili di livello 2, elaborazione off-chain verificabile e sistemi di identità che dimostrano gli attributi senza rivelare i dati sottostanti.
Il fondamento matematico delle prove a conoscenza zero si basa sulla teoria della complessità computazionale e sui sistemi di prova interattivi. Un sistema di prova soddisfa la proprietà di conoscenza zero se, per ogni possibile verificatore, inclusi i verificatori avversari che tentano di estrarre informazioni, esiste un simulatore in grado di produrre una trascrizione indistinguibile da una reale interazione di prova senza accesso al testimone segreto del dimostratore.
Questo modello di simulazione, introdotto da Goldwasser, Micali e Rackoff nel loro fondamentale articolo del 1985, ha formalizzato l'intuizione che una dimostrazione non riveli "nulla", mostrando che qualsiasi cosa il verificatore potesse calcolare dall'interazione della dimostrazione, poteva anche calcolarla indipendentemente senza alcuna interazione.
Le tre proprietà essenziali sono la completezza (un dimostratore onesto può sempre convincere un verificatore onesto della veridicità di un'affermazione), la correttezza (nessun dimostratore disonesto può convincere un verificatore della falsità di un'affermazione se non con probabilità trascurabile) e la conoscenza nulla (il verificatore non apprende nulla al di là della verità dell'affermazione).
Nelle applicazioni blockchain, le prove a conoscenza zero (Zero-Knowledge Proofs) affrontano la tensione fondamentale tra trasparenza e privacy che caratterizza i sistemi di registro pubblico. Bitcoin ed Ethereum, per loro stessa natura, rendono pubblici tutti i dati delle transazioni, inclusi importi, indirizzi e interazioni con gli smart contract, creando un registro permanente e verificabile che espone contemporaneamente gli utenti a sorveglianza, front-running e profilazione finanziaria. Le prove a conoscenza zero risolvono questo problema consentendo a utenti e sistemi di dimostrare la conformità, la correttezza o il possesso senza esporre i dati sottostanti. Una ZKP può dimostrare che una transazione è valida (input equivalenti a output, nessuna doppia spesa, il mittente ha un saldo sufficiente) senza rivelare chi ha inviato quanto a chi.
Origine e storia
1985: Shafi Goldwasser, Silvio Micali e Charles Rackoff pubblicano "The Knowledge Complexity of Interactive Proof-Systems", introducendo la definizione formale di prove a conoscenza zero e ponendo le basi teoriche del settore. Questo articolo ha contribuito all'assegnazione del Premio Turing a Goldwasser e Micali nel 2012 per il loro lavoro in crittografia.
1986: Oded Goldreich, Silvio Micali e Avi Wigderson dimostrano che ogni problema in NP ha una prova a conoscenza zero, stabilendo la straordinaria generalità della conoscenza zero: qualsiasi affermazione che può essere verificata in modo efficiente può essere dimostrata anche a conoscenza zero. Nello stesso periodo, Amos Fiat e Adi Shamir pubblicano l'euristica di Fiat-Shamir, che trasforma le prove interattive in prove non interattive sostituendo le sfide del verificatore con output di funzioni hash. Questa trasformazione è diventata la tecnica standard per l'implementazione di ZKP in contesti non interattivi, inclusa la blockchain.
1988: Manuel Blum, Paul Feldman e Silvio Micali introducono le prove a conoscenza zero non interattive (NIZK) utilizzando un modello di stringa di riferimento comune, eliminando la necessità di comunicazione bidirezionale e ponendo le basi per applicazioni pratiche.
2012: Nir Bitansky, Ran Canetti, Alessandro Chiesa ed Eran Tromer formalizzano gli Succinct Non-Interactive Arguments of Knowledge (SNARK), fornendo le basi teoriche per le prove compatte che sarebbero diventate fondamentali per la privacy e la scalabilità della blockchain.
2013: Il protocollo Pinocchio, sviluppato da Bryan Parno, Jon Howell, Craig Gentry e Mariana Raykova presso Microsoft Research, dimostra la prima costruzione pratica di zk-SNARK sufficientemente efficiente per l'implementazione nel mondo reale, provando che il calcolo verificabile di uso generale era fattibile.
2014: Il progetto Zcash (originariamente Zerocash) inizia lo sviluppo, rappresentando la prima importante implementazione di zk-SNARK in una criptovaluta. La cerimonia di Zcash, coordinata da Electric Coin Company, genera i primi parametri di configurazione affidabili utilizzati in produzione, consentendo transazioni in criptovaluta completamente protette (private).
2016: Jens Groth pubblica il sistema di prova Groth16, che all'epoca raggiungeva le dimensioni di prova più piccole e i tempi di verifica più rapidi tra tutti gli SNARK basati su accoppiamenti. Groth16 è diventato uno degli SNARK più diffusi nei sistemi di produzione, utilizzato da Zcash, Tornado Cash e numerosi altri protocolli.
2018: Eli Ben-Sasson, Iddo Bentov, Yinon Horesh e Michael Riabzev pubblicano la costruzione zk-STARK, eliminando i requisiti di configurazione affidabile e fornendo sicurezza post-quantistica. Viene fondata StarkWare Industries per commercializzare la tecnologia STARK per la scalabilità della blockchain.
2019: Ariel Gabizon, Zachary J. Williamson e Oana Ciobotaru pubblicano PLONK, introducendo stringhe di riferimento strutturate universali e aggiornabili. I gate personalizzati e gli argomenti di permutazione di PLONK lo hanno reso considerevolmente più flessibile di Groth16 per circuiti complessi, ed è stato rapidamente adottato da progetti come Aztec, zkSync e Mina Protocol.
2020: Sean Bowe, Jack Grigg e Daira Hopwood della Electric Coin Company pubblicano la costruzione Halo e successivamente Halo 2, realizzando la composizione ricorsiva delle prove senza una configurazione fidata, una svolta che ha reso possibili le prove che verificano altre prove, essenziali per la verifica incrementale dello stato della blockchain.
2021: zkSync (Matter Labs) e StarkNet (StarkWare) vengono lanciati come reti Layer 2 zk-rollup su Ethereum, utilizzando rispettivamente SNARK e STARK per raggruppare migliaia di transazioni in singole prove verificate da smart contract di Ethereum. La competizione tra i progetti zk-rollup si intensifica, posizionando le ZKP come tecnologia di scalabilità leader per Ethereum.
2022: Nova, di Kothapalli, Setty e Tzialla, introduce schemi di ripiegamento per un calcolo incrementale verificabile efficiente, riducendo drasticamente il sovraccarico del dimostratore per i sistemi di prova ricorsivi. Polygon acquisisce i progetti Hermez e Miden e annuncia Polygon zkEVM, un equivalente della Ethereum Virtual Machine basato su ZKP.
Dal 2023 al 2024: l'ecosistema zk-rollup matura ulteriormente. zkSync Era, StarkNet, Polygon zkEVM, Scroll, Linea e Taiko lanciano tutti zk-rollup sulla mainnet o sulla testnet pubblica. La generazione delle prove diventa sempre più parallelizzata grazie all'accelerazione tramite GPU e FPGA. L'aggregazione delle prove e la dimostrazione condivisa emergono come aree di ricerca attive, con progetti che propongono livelli di verifica ZKP condivisi.
Dal 2025 al 2026: le prove a conoscenza zero (ZKP) si integrano ulteriormente nell'infrastruttura blockchain principale. La roadmap di ricerca di Ethereum continua a incorporare le "prove Verkle" basate su ZKP e tecniche correlate per la gestione dello stato, e i bridge ZKP cross-chain continuano a svilupparsi verso una maggiore interoperabilità senza necessità di fiducia tra le blockchain, parallelamente all'aggiornamento Fusaka di Ethereum previsto per la fine del 2025, che ha introdotto una tecnica di scalabilità crittografica diversa ma correlata, il Data Availability Sampling, per i dati blob della rete.
“Le prove a conoscenza zero sono una delle tecnologie più sottovalutate, sia nel mondo blockchain che al di fuori di esso. Saranno assolutamente fondamentali per il modo in cui concepiamo la privacy e la verifica nel mondo digitale.” Vitalik Buterin, co-fondatore di Ethereum, EthCC Parigi, 2022.
In parole semplici
L'analogia della password: immagina di dover dimostrare a un sito web di conoscere la tua password, ma invece di digitarla (cosa che potrebbe essere intercettata), risolvi un particolare enigma matematico che può essere risolto solo se conosci la password. Il sito web verifica la tua risposta all'enigma e conferma che conosci la password senza mai vederla. Questo è ciò che fa una prova a conoscenza zero: dimostra che sai qualcosa senza rivelare cosa sai.
La soluzione del Sudoku: hai risolto un difficile Sudoku e vuoi dimostrarlo senza rivelare la soluzione. Copri ogni riga, colonna e riquadro 3x3 con delle carte, poi fai scegliere a caso a chi deve verificare una riga, una colonna o un riquadro da ispezionare. L'osservatore nota che contiene i numeri da 1 a 9 senza ripetizioni. Dopo un numero sufficiente di verifiche casuali, si convince che l'intera soluzione sia corretta, ma non ha mai visto abbastanza della soluzione per ricostruirla.
Importante: Sebbene le prove a conoscenza zero (ZKP) offrano potenti funzionalità di privacy e verifica, sono sistemi crittografici complessi che richiedono un'implementazione accurata. Errori nei circuiti ZKP (la descrizione matematica del calcolo da dimostrare) possono creare vulnerabilità di sicurezza laddove vengono accettate prove false. La sicurezza di molti sistemi ZKP dipende da presupposti crittografici, come la difficoltà del logaritmo discreto o i presupposti di accoppiamento, che in linea di principio potrebbero essere violati da computer quantistici sufficientemente avanzati. Gli utenti che si affidano alla privacy basata su ZKP devono comprendere che la garanzia di privacy è forte solo quanto l'implementazione crittografica sottostante e che i progressi nella crittanalisi o nel calcolo quantistico potrebbero influire sulla sicurezza nel tempo.
Principali caratteristiche tecniche
Le basi matematiche: impegni polinomiali e circuiti aritmetici
Alla base dei moderni sistemi di prova a conoscenza zero (Zero-Knowledge Proof) vi è la rappresentazione dei calcoli come equazioni polinomiali su campi finiti. Qualsiasi calcolo, inclusa la verifica di una transazione blockchain, l'esecuzione di uno smart contract o la validazione di un attributo di identità, può essere espresso come un circuito aritmetico: un grafo aciclico diretto di porte di addizione e moltiplicazione operanti su elementi di un campo finito (numeri interi modulo un numero primo).
Il compito del dimostratore è quello di dimostrare di possedere un'assegnazione di valori (un "testimone") ai fili del circuito tale che tutte le porte siano soddisfatte, senza rivelare il testimone.
La trasformazione dal calcolo alle equazioni polinomiali avviene tramite aritmetizzazione. Il dimostratore codifica i valori dei fili del circuito come coefficienti o punti di valutazione di polinomi, e i vincoli del circuito diventano verifiche di identità polinomiali. Ad esempio, una porta di moltiplicazione a per b uguale a c diventa un vincolo polinomiale che deve essere soddisfatto in specifici punti di valutazione.
Se il dimostratore riesce a provare che queste identità polinomiali sono valide, valutate in punti di verifica casuali forniti dal verificatore o derivate tramite l'euristica di Fiat-Shamir, il verificatore è convinto che il calcolo sottostante sia stato eseguito correttamente.
Gli schemi di impegno polinomiale sono il meccanismo mediante il quale il dimostratore "si impegna" su un polinomio senza rivelarlo, e successivamente "apre" l'impegno in punti specifici per dimostrare le valutazioni. Lo schema di impegno KZG (Kate-Zaverucha-Goldberg), basato su accoppiamenti di curve ellittiche, è tra i più utilizzati: il dimostratore calcola un singolo punto della curva ellittica come impegno, e la verifica richiede solo un paio di operazioni di accoppiamento indipendentemente dal grado del polinomio.
Questa concisione è ciò che rende gli zk-SNARK così compatti. Tra gli schemi di impegno alternativi si annovera FRI (Fast Reed-Solomon Interactive Oracle Proofs of Proximity), utilizzato negli STARK, che si basa su funzioni hash anziché su accoppiamenti e offre trasparenza e sicurezza post-quantistica a costo di dimensioni di prova maggiori.
Come funziona una prova zk-SNARK (passo dopo passo)
Raccolta di circuiti: Il calcolo da dimostrare, ad esempio "questa transazione è valida", viene espresso come un circuito aritmetico, una serie di porte di addizione e moltiplicazione su un campo finito. Linguaggi specializzati per specifici domini, come Circom, Noir, Leo o Cairo, compilano programmi di alto livello in questi circuiti.
Generazione di testimoni: Il dimostratore calcola l'intero circuito, assegnando valori concreti a ogni filo (ingresso, intermedio e uscita). Il testimone include sia input pubblici, visibili al verificatore, come l'hash di una transazione, sia input privati, segreti, come il saldo del mittente o la chiave privata.
Aritmetizzazione: Il circuito e il testimone vengono trasformati in un insieme di equazioni polinomiali attraverso uno specifico schema di aritmetizzazione. In R1CS (Rank-1 Constraint System, utilizzato da Groth16), ogni porta diventa un tipo specifico di vincolo che coinvolge il vettore testimone e i vettori selettori. Nell'aritmetizzazione di tipo PLONK, le porte sono codificate tramite polinomi selettori, argomenti di permutazione e tabelle di consultazione.
Impegno polinomiale: Il dimostratore codifica la soddisfazione del testimone e del vincolo in polinomi e si impegna a rispettarli utilizzando uno schema di impegno polinomiale, KZG per gli SNARK o FRI per gli STARK. Questi impegni sono oggetti crittografici compatti, come punti di curve ellittiche o radici di Merkle, che vincolano il dimostratore a specifici polinomi senza rivelarli.
Generazione delle sfide: I punti di valutazione casuali vengono generati tramite l'interazione con il verificatore (modalità interattiva) o tramite l'euristica Fiat-Shamir (modalità non interattiva, in cui le sfide vengono derivate tramite l'hashing della trascrizione della prova fino a quel momento).
Costruzione di prova: Il dimostratore valuta i polinomi vincolati nei punti di sfida e fornisce dimostrazioni iniziali che dimostrano che le valutazioni sono coerenti con i vincoli. La dimostrazione include anche polinomi quoziente che dimostrano che le identità polinomiali valgono in tutti i punti di vincolo.
Verifica: Il verificatore controlla la prova verificando le aperture di impegno polinomiale e controllando che le identità polinomiali siano valide nei punti di sfida casuali. Per Groth16, ciò richiede un piccolo numero fisso di accoppiamenti di curve ellittiche; per PLONK, qualche controllo di accoppiamento in più; per STARKs, valutazioni di funzioni hash e verifiche del percorso di Merkle. La verifica è generalmente di ordini di grandezza più veloce della riesecuzione del calcolo.
Groth16: Uno standard di prova compatto
Groth16, pubblicato da Jens Groth nel 2016, rimane uno degli standard per la compattezza delle dimostrazioni. Una dimostrazione Groth16 è composta esattamente da tre elementi di gruppo di curve ellittiche, per un totale di circa 128-192 byte a seconda della curva.
La verifica richiede un numero ridotto e fisso di operazioni di accoppiamento, oltre ad alcune moltiplicazioni di gruppo, impiegando all'incirca da 1 a 3 millisecondi sull'hardware moderno. Questa estrema concisione rende Groth16 particolarmente adatto alla verifica on-chain, dove i costi del gas sono proporzionali alla dimensione della prova e al calcolo di verifica.
Il compromesso è che Groth16 richiede una configurazione affidabile specifica per ogni circuito: ogni circuito unico necessita di una propria stringa di riferimento strutturata, generata attraverso una cerimonia di calcolo multi-partecipante. Se tutti i partecipanti alla cerimonia colludono o la loro casualità viene compromessa, i "rifiuti tossici" risultanti potrebbero in linea di principio essere utilizzati per falsificare le prove.
Sia la cerimonia Zcash Powers of Tau che la successiva cerimonia Hermez hanno coinvolto numerosi partecipanti per garantire che almeno un partecipante onesto rendesse di fatto impossibile la falsificazione. Nonostante questa misura di sicurezza, il requisito di un sistema affidabile ha spinto alla ricerca di alternative trasparenti.
PLONK: Configurazione universale e aggiornabile
PLONK ha rivoluzionato il panorama ZKP introducendo una stringa di riferimento strutturata universale: un'unica configurazione affidabile che funziona per qualsiasi circuito fino a una dimensione massima. Ciò significa che una singola cerimonia, che può essere continuamente rafforzata da ulteriori partecipanti, serve un intero ecosistema di circuiti, eliminando la necessità di cerimonie specifiche per ogni circuito.
L'aritmetica di PLONK utilizza un sistema di equazioni di porte con polinomi di selezione, un meccanismo di vincolo di copia (un argomento di prodotto grande) per imporre le connessioni dei fili e la possibilità di definire porte personalizzate per schemi ricorrenti.
La dimensione della prova di PLONK è maggiore di quella di Groth16, circa da 400 a 900 byte a seconda della variante, e la verifica è leggermente più lenta, sebbene rimanga comunque veloce in termini assoluti. L'universalità e la possibilità di aggiornamento della configurazione, unite alla flessibilità dei gate personalizzati e delle tabelle di lookup, l'hanno resa un sistema preferito per applicazioni blockchain complesse. Varianti, incluse versioni con gate personalizzati, tabelle di lookup in stile plookup e batching migliorato, sono state implementate su zkSync, Aztec, Polygon zkEVM e Scroll.
Halo 2: Dimostrazioni ricorsive senza una configurazione affidabile
Halo 2, sviluppato dal team Zcash/Electric Coin Company, ha raggiunto un obiettivo precedentemente considerato un ostacolo insormontabile: la composizione ricorsiva efficiente delle prove senza la necessità di una configurazione predefinita. La composizione ricorsiva delle prove significa che una prova può verificarne un'altra all'interno del suo circuito, consentendo una catena di prove in cui ciascuna attesta la correttezza della precedente, comprimendo una quantità arbitraria di calcoli in un'unica prova finale.
L'innovazione tecnica di Halo consiste in uno schema di accumulazione per gli impegni polinomiali basato sul principio del prodotto scalare. Invece di verificare completamente ogni impegno, il che richiederebbe accoppiamenti e quindi una configurazione affidabile, Halo "accumula" i controlli degli impegni, rimandando le verifiche più onerose alla fine della catena ricorsiva.
Questa verifica differita è ciò che permette la ricorsione senza necessità di fiducia. Halo 2 ha esteso questo concetto con l'aritmetica e gli argomenti di ricerca in stile PLONK, trasformandolo in un sistema di prova completo. Zcash ha adottato Halo 2 per il suo pool protetto Orchard, eliminando il requisito di configurazione affidabile che era stato oggetto di critiche persistenti sin dal lancio di Zcash.
Nova e schemi di ripiegamento: calcolo incrementale efficiente
Nova, introdotto nel 2022, rappresenta un cambiamento significativo nel modo in cui vengono costruite le prove ricorsive. Invece di dimostrare completamente ogni passaggio di un calcolo incrementale e poi verificare ricorsivamente la prova, Nova utilizza uno schema di "piegatura" per "comprimere" due istanze di un calcolo in una sola, riducendo il lavoro del dimostratore a ogni passaggio da una generazione completa della prova a una singola moltiplicazione scalare di gruppo. Il sistema di calcolo incrementale verificabile (IVC) risultante ha costi per il dimostratore drasticamente inferiori rispetto ai tradizionali SNARK ricorsivi per calcoli con molti passaggi ripetuti, come l'elaborazione sequenziale delle transazioni blockchain.
zk-STARKs: Trasparenza e sicurezza post-quantistica
Gli zk-STARK raggiungono la loro trasparenza (nessuna configurazione fidata) e la sicurezza post-quantistica sostituendo gli accoppiamenti di curve ellittiche con funzioni hash e la teoria della codifica algebrica. Lo schema di impegno principale negli STARK è FRI, che verifica se una funzione è vicina a un polinomio di basso grado "piegando" ripetutamente la funzione, riducendone il dominio della metà tramite combinazioni lineari casuali e verificandone la coerenza tramite alberi di Merkle. Poiché FRI si basa solo su funzioni hash resistenti alle collisioni, che si ritiene resistano agli attacchi quantistici, gli STARK ereditano la sicurezza post-quantistica.
Macchine virtuali a conoscenza zero (zkVM e zkEVM)
L'obiettivo finale della tecnologia ZKP nella blockchain è la macchina virtuale a conoscenza zero: un ambiente di calcolo generico in cui l'esecuzione di qualsiasi programma può essere dimostrata a conoscenza zero. Una zkEVM (macchina virtuale Ethereum a conoscenza zero) dimostra la corretta esecuzione degli smart contract di Ethereum, consentendo zk-rollup pienamente compatibili con EVM. Esistono diversi approcci lungo lo spettro di compatibilità:
Tipo 1 (pienamente equivalente a Ethereum): Dimostra l'effettivo ambiente di esecuzione di Ethereum, inclusi i tentativi di stato e la contabilità del gas, un obiettivo ambito da molti progetti. Massima compatibilità, ma costi di dimostrazione elevati.
Tipo 2 (pienamente equivalente all'EVM): Dimostra l'esecuzione del bytecode EVM, ma con una gestione dello stato modificata, come con Scroll e Polygon zkEVM. Compatibilità pressoché totale con piccole differenze.
Tipo 3 (quasi equivalente all'EVM): Verifica la maggior parte degli opcode EVM, ma ne modifica o rimuove alcuni che non sono compatibili con ZKP, come ad esempio alcune precompilazioni. Verifica più rapida, con piccole lacune di compatibilità.
Tipo 4 (equivalente a un linguaggio di alto livello): Dimostra l'esecuzione di codice compilato da Solidity o Vyper in un set di istruzioni compatibile con ZKP, anziché dimostrare direttamente il bytecode EVM, come con zkSync Era. La dimostrazione è rapida, ma i contratti devono essere ricompilati e potrebbero comportarsi in modo leggermente diverso a livello di bytecode.
Tra le macchine virtuali zkVM generiche, oltre a Ethereum, si annoverano RISC Zero (che dimostra l'esecuzione di istruzioni RISC-V), SP1 (anch'essa basata su RISC-V) e Miden VM (una macchina virtuale basata su STARK con un set di istruzioni personalizzato ottimizzato per l'efficienza ZKP). Questi sistemi consentono l'esecuzione di programmi scritti in Rust, C, Go o altri linguaggi che compilano in RISC-V, con una prova crittografica di correttezza.
Vantaggi e svantaggi
Aspetto
Vantaggio
Svantaggio
Tutela della privacy
Consente transazioni e calcoli privati su blockchain pubbliche; gli utenti possono effettuare transazioni, dimostrare attributi di identità e interagire con contratti intelligenti senza rivelare dati sensibili a osservatori o validatori.
Le funzionalità relative alla privacy possono essere utilizzate impropriamente per il riciclaggio di denaro, l'elusione delle sanzioni e la finanza illecita; la sanzione inflitta nel 2022 dall'OFAC a Tornado Cash ha illustrato i rischi normativi che possono essere associati agli strumenti per la privacy basati su ZKP.
Scalabilità
Gli zk-rollup comprimono migliaia di transazioni in un'unica prova verificata sul Layer 1, con le piattaforme leader che elaborano migliaia di transazioni al secondo ereditando le garanzie di sicurezza di Ethereum.
La generazione di prove è un processo computazionalmente intensivo; generare una prova SNARK per un circuito complesso può richiedere da pochi minuti a diverse ore su hardware di consumo, mentre per i sistemi di produzione sono necessarie infrastrutture specializzate come cluster di GPU o acceleratori FPGA.
Modello di sicurezza
Sicurezza matematica (crittografica) piuttosto che puramente economica; a differenza degli optimistic rollup, che si basano su prove di frode e periodi di sfida, gli zk-rollup forniscono una finalità molto più rapida supportata da certezza matematica
Le ipotesi crittografiche alla base degli SNARK, come il problema del logaritmo discreto e varie ipotesi di accoppiamento, potrebbero in linea di principio essere violate da computer quantistici sufficientemente potenti, influenzando potenzialmente le prove generate in base a tali ipotesi.
Eliminazione della configurazione affidabile
I sistemi moderni, tra cui STARK, Halo 2 e Nova, hanno eliminato completamente i requisiti di configurazione affidabile, rimuovendo il rischio di parametri di cerimonia compromessi e l'onere logistico dell'esecuzione delle cerimonie MPC.
I sistemi che richiedono ancora configurazioni affidabili, come Groth16, dipendono dall'integrità della cerimonia; se tutti i partecipanti colludono o la loro casualità viene compromessa, le prove falsificate diventano teoricamente possibili senza essere rilevate.
Efficienza di verifica
La verifica on-chain è veloce e relativamente economica; una prova Groth16 in genere costa circa 200,000-300,000 gas su Ethereum, indipendentemente dalla complessità del calcolo dimostrato.
Lo sviluppo di circuiti è difficile; la scrittura di circuiti ZKP corretti richiede una profonda competenza in aritmetica a campi finiti, sistemi di vincoli e ingegneria crittografica, e i bug nei circuiti possono essere sottili e gravi
componibilità
I sistemi basati su ZKP sono generalmente compatibili con l'infrastruttura blockchain esistente; gli zk-rollup si integrano con le blockchain di Layer 1 esistenti, i sistemi di identità ZKP si integrano con i protocolli DeFi esistenti e i bridge ZKP collegano le blockchain esistenti.
L'ecosistema ZKP rimane piuttosto frammentato; diversi sistemi di dimostrazione, aritmetizzazioni e tipi di zkVM creano problemi di interoperabilità.
Compressione dati
Le prove di validità consentono di pubblicare sulla blockchain le differenze di stato anziché i dati completi della transazione, riducendo i costi dei dati del Layer 1 rispetto ai rollup ottimistici che devono pubblicare i dati completi della transazione.
Le dimensioni delle prove variano considerevolmente; le prove STARK, ad esempio, possono variare da decine a centinaia di kilobyte, che, pur essendo inferiori ai dati grezzi delle transazioni che sostituiscono, rappresentano comunque un costo on-chain non trascurabile, che aumenta con la complessità della prova.
Verifica incrociata della catena
Le ZKP consentono ponti cross-chain più decentralizzati, dimostrando lo stato di una catena a un contratto di verifica su un'altra catena e riducendo la dipendenza da operatori di bridge fidati o da comitati multi-firma.
La verifica ZKP cross-chain richiede circuiti client leggeri per ciascuna catena sorgente, che sono complessi da costruire, mantenere e verificare, poiché il meccanismo di consenso e la struttura di stato di ciascuna catena devono essere codificati come un circuito ZKP.
Conformità normativa
Le ZKP possono consentire la "conformità fin dalla progettazione", permettendo agli utenti di dimostrare la conformità normativa, come lo stato KYC o l'assenza di sanzioni in una giurisdizione, senza rivelare dati personali, soddisfacendo così sia gli obiettivi di privacy che quelli normativi.
Permangono incertezze normative in merito agli strumenti per la tutela della privacy basati su ZKP (Zero Knowledge Protection); il precedente del caso Tornado Cash ha creato un effetto dissuasivo e le autorità di regolamentazione di diverse giurisdizioni continuano a sviluppare quadri normativi che potrebbero limitare o richiedere ulteriori informazioni nei sistemi che tutelano la privacy.
Risk Management
Sicurezza dei circuiti e requisiti di audit: il rischio più critico nei sistemi ZKP è la sicurezza dei circuiti, ovvero la possibilità che un bug nel circuito aritmetico consenta a un dimostratore di generare una prova apparentemente valida per un'affermazione falsa. A differenza dei bug degli smart contract, dove il codice è pubblicamente leggibile in una forma familiare, i bug dei circuiti ZKP possono essere estremamente subdoli perché spesso implicano una sottospecificazione dei vincoli: un circuito potrebbe non vincolare il valore di un flusso di dati, consentendo al dimostratore di inserire valori arbitrari che soddisfano la prova ma corrispondono a transazioni non valide. I ricercatori, inclusi i team focalizzati sulla roadmap di Ethereum per la privacy e la scalabilità, hanno documentato diverse classi di vulnerabilità dei circuiti, tra cui vincoli mancanti, controlli di intervallo errati e overflow aritmetico nelle operazioni su campi finiti. Gli utenti dovrebbero interagire solo con sistemi ZKP i cui circuiti siano stati sottoposti ad audit da società di audit ZKP specializzate e, idealmente, abbiano subito una verifica formale.
Rischi e misure di mitigazione per le configurazioni affidabili: Nei sistemi che utilizzano configurazioni affidabili, come Groth16 o il PLONK originale, l'integrità della cerimonia di configurazione rappresenta un singolo punto di vulnerabilità. Se i "rifiuti tossici", ovvero la casualità segreta utilizzata durante la cerimonia, sono ricostruibili, un attaccante potrebbe in linea di principio falsificare le prove, creando token dal nulla, spendendo fondi non di sua proprietà o generando false prove di identità. Le strategie di mitigazione includono cerimonie di calcolo multipartitiche con molti partecipanti (dove è sufficiente un solo partecipante onesto per la sicurezza), cerimonie perpetue di "poteri di tau" che rafforzano continuamente la configurazione e la migrazione verso sistemi trasparenti, come STARK o Halo 2, che eliminano completamente la configurazione. Gli utenti dovrebbero verificare che qualsiasi sistema basato su configurazioni affidabili con cui interagiscono abbia condotto una cerimonia sufficientemente ampia e ben documentata.
Vulnerabilità di implementazione: anche se il sistema di dimostrazione matematica è corretto, bug di implementazione nel dimostratore, nel verificatore o nell'infrastruttura circostante possono creare vulnerabilità sfruttabili. Tra gli incidenti più noti si annoverano un bug di inflazione documentato in Zcash, in cui un difetto nella verifica del circuito avrebbe potuto consentire la creazione di token non rilevabili se fosse stato scoperto per primo da una parte malintenzionata, e vari bug scoperti nelle implementazioni dei circuiti tramite programmi di bug bounty nel corso degli anni. La complessità delle implementazioni di ZKP, che coinvolgono l'aritmetica dei campi finiti, le operazioni sulle curve ellittiche, la valutazione dei polinomi e le funzioni hash, crea un'ampia superficie di attacco. Le strategie di difesa includono la verifica formale dei circuiti critici, un'ampia attività di fuzzing e test basati sulle proprietà, implementazioni multiple e indipendenti per la verifica critica del consenso e un'implementazione prudente con un rollout graduale.
Minacce del calcolo quantistico: gli SNARK basati su accoppiamenti, inclusi Groth16 e PLONK con impegni KZG, si basano sulla difficoltà del problema del logaritmo discreto su curve ellittiche, che sarebbe risolvibile in modo efficiente dall'algoritmo di Shor su un computer quantistico sufficientemente potente. Sebbene gli attuali computer quantistici siano ancora lontani dalla scala necessaria, le stime comunemente citate suggeriscono che sarebbero necessari migliaia di qubit logici per decifrare curve ellittiche a 256 bit, il che si traduce in un numero molto maggiore di qubit fisici ai tassi di errore odierni; pertanto, il rischio a lungo termine è preso seriamente dal settore. Gli STARK e gli schemi di impegno basati su hash sono considerati resistenti ai computer quantistici e il passaggio in corso verso sistemi di prova basati su STARK e reticoli fornisce un percorso di migrazione. Gli utenti che detengono asset protetti da ZKP basati su accoppiamenti dovrebbero tenere d'occhio i progressi del calcolo quantistico ed essere pronti a migrare verso alternative post-quantistiche se e quando ciò diventerà necessario.
Limitazioni della privacy e fuga di metadati: le ZKP proteggono il contenuto dei calcoli, ma non i metadati. La verifica ZKP on-chain rivela che una prova è stata inviata, inclusi i tempi, lo smart contract con cui si è interagito, il gas pagato e la posizione della transazione in un blocco. Per le applicazioni incentrate sulla privacy, come le transazioni schermate o le prove di identità, questi metadati possono rivelare informazioni significative. La dimensione del set di anonimato è cruciale: se solo un piccolo numero di utenti utilizza un pool schermato, l'analisi del grafo delle transazioni può potenzialmente deanonimizzare gli utenti nonostante la privacy crittografica sottostante. Gli utenti dovrebbero prendere in considerazione l'utilizzo di strumenti per la privacy ZKP con set di anonimato ampi, offuscamento dei tempi e reti di relay che minimizzano i metadati.
Rilevanza culturale
Le prove a conoscenza zero (ZK) hanno superato le loro origini di costrutto puramente teorico nella teoria della complessità per diventare una delle tecnologie più significative a livello culturale nell'ecosistema blockchain. Il termine "ZK" è entrato nel lessico comune del discorso sulle criptovalute: "ZK-rollup", "ZK-proof", "ZK-EVM" e "ZK-bridge" sono termini di uso quotidiano nelle comunità di sviluppatori Ethereum, e "ZK" è diventato un prefisso di branding che segnala sofisticazione tecnologica e rigore crittografico. Il periodo 2021-2024 ha visto una vera e propria "corsa all'oro ZK", in cui numerosi progetti hanno aggiunto "ZK" ai loro nomi, scatenando dibattiti nella comunità sul "ZK-washing", ovvero la pratica di rivendicare proprietà ZK senza effettivamente implementare prove a conoscenza zero.
Il significato culturale delle prove a conoscenza zero (ZKP) nel mondo delle criptovalute si estende oltre la tecnologia, abbracciando anche la filosofia. Il movimento cypherpunk, articolato nel manifesto di Eric Hughes del 1993 che sosteneva la necessità della privacy per una società aperta nell'era digitale, trova nelle prove a conoscenza zero una delle sue più potenti incarnazioni tecniche. Le ZKP realizzano gran parte dell'aspirazione cypherpunk alla privacy dimostrabile: la capacità di partecipare pienamente ai sistemi digitali senza rinunciare all'autonomia informativa. Questo allineamento filosofico ha reso i ricercatori e gli sviluppatori di ZKP figure influenti all'interno della comunità crypto, tra cui Eli Ben-Sasson (StarkWare), Vitalik Buterin (che ha ampiamente promosso le ZKP), Barry Whitehat (associato al protocollo Semaphore e a Privacy and Scaling Explorations) e membri del team Zcash come Zooko Wilcox, Sean Bowe e Daira Hopwood.
La narrazione "dall'inverno ZK all'estate ZK", in cui anni di ricerca prevalentemente teorica, all'incirca dal 2016 al 2020, sono stati seguiti da un'esplosione di implementazioni pratiche a partire dal 2021, è diventata una sorta di modello per il modo in cui la comunità crypto interpreta la maturazione tecnologica. L'idea che "gli ZKP contribuiranno a risolvere il problema di scalabilità di Ethereum" è diventata una delle posizioni di consenso più forti nella comunità Ethereum, con Vitalik Buterin che ha sostenuto che gli zk-rollup avrebbero probabilmente prevalso sugli optimistic rollup nel lungo periodo. Questa convinzione ha portato a ingenti finanziamenti di venture capital per i progetti ZKP, ha attratto ricercatori di crittografia dal mondo accademico verso le startup crypto e ha affermato la competenza in ZKP come una delle specializzazioni più preziose nell'ingegneria blockchain.
All'interno della comunità accademica di crittografia, la richiesta da parte dell'industria blockchain di sistemi ZKP pratici ha creato un notevole circolo virtuoso: i finanziamenti industriali supportano la ricerca accademica, che produce nuovi sistemi di prova, i quali vengono rapidamente commercializzati dalle startup, generando così entrate che finanziano ulteriore ricerca. Conferenze e workshop specificamente dedicati alla ricerca sulla crittografia a chiave zero (ZK) sono diventati importanti luoghi di incontro per crittografi accademici e ingegneri blockchain, e il ritmo dell'innovazione, da Groth16 a PLONK, da Halo 2 a Nova in circa sette anni, riflette l'intensità di questa collaborazione.
Le sanzioni contro Tornado Cash dell'agosto 2022, quando l'Office of Foreign Assets Control del Tesoro statunitense aggiunse gli smart contract di Tornado Cash alla sua lista di sanzioni, rappresentarono un momento culturale cruciale per la comunità ZKP. Le sanzioni criminalizzarono di fatto l'interazione con uno strumento open-source per la privacy, scatenando un dibattito sulla legittimità della privacy on-chain, sulla classificazione del codice come espressione e sulla tensione tra sorveglianza finanziaria e diritto alla privacy individuale. Il successivo procedimento giudiziario contro uno sviluppatore di Tornado Cash nei Paesi Bassi intensificò questi dibattiti e galvanizzò parte della comunità ZKP attorno al principio che la privacy non è intrinsecamente criminale. L'incidente ha plasmato la filosofia progettuale dei successivi progetti ZKP per la privacy, che incorporano sempre più meccanismi di conformità selettiva, come la dimostrazione dell'appartenenza a una lista non sanzionata, insieme alla privacy delle transazioni.
Esempi del mondo reale
Transazioni protette Zcash: un'innovazione pionieristica nel campo delle criptovalute private.
Scenario: Bitcoin e altre criptovalute delle origini operano su registri completamente trasparenti, dove tutti gli importi delle transazioni, gli indirizzi del mittente e quelli del destinatario sono pubblicamente visibili. I sostenitori della privacy finanziaria e gli utenti istituzionali necessitavano di una criptovaluta in cui le transazioni potessero essere verificate crittograficamente come valide senza rivelare al pubblico alcun dettaglio relativo alle transazioni stesse.
Implementazione: Zcash ha implementato gli zk-SNARK, inizialmente utilizzando il circuito Sprout, per poi passare a Sapling con Groth16 e, più recentemente, a Orchard con Halo 2, per abilitare le transazioni "protette". In una transazione protetta, mittente, destinatario e importo sono tutti crittografati on-chain. Una prova zk-SNARK allegata alla transazione dimostra che il mittente possiede la chiave privata per le note di input, che le note di input esistono nell'albero di impegno e non sono state spese, che la somma degli input è uguale alla somma degli output più la commissione e che non si è verificata alcuna doppia spesa, il tutto senza rivelare alcuno di questi valori. L'aggiornamento a Sapling ha ridotto significativamente i tempi di generazione della prova rispetto a Sprout, e Halo 2 (Orchard) ha eliminato completamente il requisito del trusted setup.
Esito: Zcash ha dimostrato la fattibilità produttiva delle ZKP per la privacy delle criptovalute, elaborando un gran numero di transazioni protette sin dal suo lancio nel 2016. Le cerimonie di Zcash sono diventate modelli di riferimento ampiamente utilizzati per le migliori pratiche di configurazione affidabile. Sebbene l'adozione di transazioni protette sia storicamente rimasta una frazione del totale delle transazioni Zcash, a causa del sovraccarico computazionale e delle preferenze degli exchange per gli indirizzi trasparenti, il protocollo ha dimostrato che la privacy crittografica su larga scala era tecnicamente realizzabile e ha stabilito un modello per molte successive implementazioni di privacy ZKP in blockchain.
L'era di zkSync: scalare Ethereum con i rollup a conoscenza zero.
Scenario: La velocità di elaborazione del Layer 1 di Ethereum e i costi del gas durante i periodi di elevata domanda rendevano la rete impraticabile per molti usi quotidiani, tra cui micropagamenti, transazioni di gioco e interazioni DeFi ad alta frequenza. Il trilemma della blockchain, ovvero la tensione tra scalabilità, sicurezza e decentralizzazione, richiedeva una soluzione in grado di aumentare la velocità di elaborazione senza compromettere le garanzie di sicurezza di Ethereum.
Implementazione: zkSync Era, sviluppato da Matter Labs, ha lanciato un rollup zkEVM di tipo 4 che compila gli smart contract Solidity e Vyper in un set di istruzioni personalizzato compatibile con ZKP e genera prove SNARK che attestano la corretta esecuzione di batch di transazioni. Migliaia di transazioni vengono eseguite off-chain, viene calcolato uno state diff e una prova SNARK di corretta esecuzione viene inviata a uno smart contract Ethereum, che verifica la prova e applica lo state diff, ereditando la sicurezza di Ethereum per l'intero batch.
Risultato: zkSync Era ha elaborato un numero elevatissimo di transazioni nei suoi primi anni di attività sulla mainnet, con livelli di throughput e costi di gran lunga superiori a quelli del solo Ethereum L1. Il sistema ha dimostrato che la scalabilità basata su ZKP può supportare applicazioni DeFi e NFT complesse, mantenendo al contempo la sicurezza di livello Ethereum. Il lancio ha contribuito a catalizzare la competizione tra i progetti zk-rollup e ha affermato gli ZKP come tecnologia primaria nella roadmap di scalabilità a lungo termine di Ethereum.
Worldcoin: Prova biometrica di identità
Scenario: Gli attacchi Sybil, ovvero la creazione di molteplici identità false, minano i meccanismi di governance democratica, la distribuzione equa dei token e le proposte di reddito di base universale nell'ecosistema Web3. La verifica tradizionale dell'identità richiede la rivelazione di informazioni personali, mentre gli indirizzi blockchain pseudonimi consentono una creazione di identità pressoché illimitata. Era necessaria una soluzione in grado di dimostrare l'unicità di una persona senza compromettere la privacy dell'identità.
Implementazione: Worldcoin ha sviluppato il sistema World ID, che utilizza la scansione dell'iride, tramite un dispositivo hardware personalizzato chiamato Orb, per creare un identificatore biometrico univoco per ogni persona, quindi genera una prova a conoscenza zero (Zero-Knowledge Proof, ZKP), utilizzando il protocollo Semaphore basato su Groth16, che dimostra che "questa persona è un essere umano registrato unico" senza rivelare quale specifica scansione dell'iride sia stata utilizzata per la registrazione. La ZKP è progettata per garantire che la stessa persona non possa registrarsi due volte, prevenendo gli attacchi Sybil, e per assicurare che nessun verificatore possa collegare una prova a uno specifico modello biometrico.
Esito: Negli anni successivi al suo lancio, Worldcoin ha registrato milioni di persone uniche e verificate, creando uno dei più grandi sistemi di identità basati su ZKP al mondo. Il progetto ha dimostrato che gli ZKP possono unire l'identità biometrica e la privacy della blockchain, pur avendo suscitato un acceso dibattito sulla raccolta di dati biometrici, sul consenso nei paesi in via di sviluppo e sui rischi di centralizzazione dei sistemi di identità dipendenti dall'hardware. Diversi protocolli di governance e airdrop hanno integrato la verifica di World ID, affermando la prova di identità come un caso d'uso rilevante per gli ZKP, al di là della privacy finanziaria.
Polygon zkEVM: Equivalenza EVM di tipo 2 con prove a conoscenza zero
Scenario: Gli sviluppatori di Ethereum necessitavano di una soluzione di scalabilità pienamente compatibile con gli smart contract Ethereum esistenti, che consentisse l'implementazione dello stesso bytecode Solidity senza ricompilazione o modifiche, fornendo al contempo le garanzie di sicurezza delle prove di validità anziché la finalità ritardata dei rollup ottimistici. Raggiungere l'equivalenza EVM a livello di byte con la verifica ZKP era considerata una delle sfide tecniche più difficili nell'ingegneria blockchain.
Implementazione: Polygon zkEVM ha creato uno zkEVM di Tipo 2 che dimostra la corretta esecuzione del bytecode EVM effettivo utilizzando un sistema di prova personalizzato che combina elementi SNARK e STARK. Il sistema utilizza un approccio di impegno multi-polinomiale in cui diversi aspetti dell'esecuzione EVM sono dimostrati da circuiti specializzati separati e una prova di aggregazione ricorsiva li combina in un'unica verifica on-chain.
Esito: Polygon zkEVM è stato lanciato sulla rete principale di Ethereum nel marzo 2023, diventando uno dei primi zkEVM di Tipo 2 in produzione. Il sistema ha dimostrato che era possibile ottenere un'equivalenza EVM quasi perfetta con la prova ZKP, con la grande maggioranza degli smart contract di Ethereum implementabili senza modifiche. Diversi protocolli DeFi sono stati implementati su Polygon zkEVM e il tempo di generazione delle prove è migliorato sostanzialmente grazie ai successivi aggiornamenti del protocollo, convalidando l'approccio zkEVM di Tipo 2 e influenzando la progettazione delle implementazioni concorrenti.
Tavola di comparazione
Caratteristica
zk-SNARKs (Groth16/PLONK)
zk-STARK
Rollup ottimistici
Ambienti di esecuzione affidabili (TEE)
Dimensione della prova
Molto piccolo: Groth16 circa da 128 a 192 byte, PLONK circa da 400 a 900 byte; ingombro minimo sulla blockchain.
Grande: in genere da decine a un paio di centinaia di kilobyte per prova; comunque molto più piccolo dei dati grezzi della transazione che sostituisce
Non è richiesta alcuna prova di validità; i dati completi della transazione vengono pubblicati sulla blockchain come calldata.
Nessuna prova crittografica; le attestazioni fornite dall'hardware offrono garanzie relativamente più deboli.
Tempo di verifica
Estremamente veloce, in genere nell'ordine di pochi millisecondi; pressoché costante indipendentemente dalle dimensioni del calcolo.
Moderato, e la sua velocità aumenta con la dimensione del calcolo a causa della verifica FRI, pur rimanendo generalmente veloce.
Nessuna verifica immediata; è previsto un periodo di verifica di più giorni per le prove di frode, il che ritarda i prelievi.
Verifica minima dell'attestazione hardware; nessuna dimostrazione matematica della corretta esecuzione.
Configurazione affidabile
Groth16 richiede una cerimonia specifica per il circuito; PLONK utilizza una configurazione universale e aggiornabile; entrambi comportano un certo rischio di contaminazione da rifiuti tossici.
Nessun requisito (trasparente); si basa solo su funzioni hash e casualità pubblica
Nessun requisito; la sicurezza si basa su incentivi economici tramite il gioco antifrode
Si affida al produttore dell'hardware; comporta rischi legati alla catena di approvvigionamento e ad attacchi tramite canali laterali.
Resistenza quantistica
No; gli schemi basati sull'accoppiamento potrebbero essere compromessi dall'algoritmo di Shor, rendendo necessaria la migrazione verso alternative post-quantistiche.
Sì; gli impegni basati su hash resistono agli attacchi quantistici noti.
Non direttamente applicabile; dipende dalla resistenza quantistica della catena sottostante.
No; i moduli di sicurezza hardware potrebbero essere compromessi da attacchi a canale laterale abilitati dalla tecnologia quantistica.
Costo di prova
Elevato; richiede trasformate di Fourier veloci (FFT) e moltiplicazioni multiscalari su curve ellittiche.
Elevatissima efficienza per piccoli calcoli, ma scala in modo più efficiente per circuiti molto grandi.
Basso; non è richiesta la generazione di prove, poiché il sequenziatore si limita a eseguire e raggruppare le transazioni.
Basso; il calcolo viene eseguito in un'enclave hardware con prestazioni quasi native, senza generazione di prove crittografiche.
Capacità di privacy
Conoscenza zero totale; le prove non rivelano nulla sul testimone
Massima trasparenza totale se configurato come ZK-STARK; funzionalità di privacy simili a quelle degli SNARK.
Nessuna privacy intrinseca; tutti i dati delle transazioni vengono pubblicati pubblicamente come calldata sul Livello 1
Parziale; i dati vengono crittografati durante l'elaborazione, ma la fiducia è riposta nel produttore dell'hardware piuttosto che nella matematica.
Finalità
Immediatamente dopo la verifica della prova on-chain
Immediata, simile agli SNARK, poiché la verifica della prova on-chain fornisce una finalità matematica istantanea.
I prelievi vengono generalmente completati con un ritardo di circa una settimana, sebbene i prestiti ponte possano offrire uscite più rapide con un maggiore rischio di liquidità.
Immediata ma più debole; l'attestazione viene verificata all'istante, ma la sicurezza dipende da presupposti hardware piuttosto che da prove crittografiche.
zk-STARK (Argomento trasparente e scalabile a conoscenza zero della conoscenza): Una famiglia di sistemi di prova che utilizza impegni basati su hash (FRI) per ottenere trasparenza e sicurezza post-quantistica a costo di dimensioni di prova maggiori; sviluppata da Eli Ben-Sasson e implementata da StarkWare.
zk-Rollup: A Strato 2 Soluzione di scalabilità che esegue le transazioni off-chain e invia le prove di validità (SNARK o STARK) al Layer 1, ereditando la sicurezza del layer di base e ottenendo al contempo una velocità di elaborazione molto maggiore e costi inferiori.
Circuito aritmetico: La rappresentazione matematica di un calcolo come un grafo aciclico diretto di porte di addizione e moltiplicazione su un campo finito; la struttura fondamentale che i sistemi ZKP dimostrano affermazioni su
Configurazione attendibile: Una cerimonia crittografica monouso che genera i parametri pubblici necessari a determinati sistemi SNARK; la compromissione della casualità segreta della cerimonia consente la falsificazione delle prove.
Schema di impegno polinomiale: Un primitivo crittografico che consente a un dimostratore di impegnarsi su un polinomio e successivamente dimostrare le valutazioni in punti specifici; KZG (basato su accoppiamenti) e FRI (basato su hash) sono due degli schemi dominanti alla base dei moderni ZKP.
Euristica di Fiat-Shamir: Una tecnica per convertire i protocolli di prova interattivi in protocolli non interattivi sostituendo le sfide casuali del verificatore con output di funzioni hash, consentendo la verifica dei protocolli ZKP senza interazione in tempo reale.
Composizione di dimostrazioni ricorsive: La tecnica di creare una prova che verifica un'altra prova all'interno del suo circuito, consentendo catene di prove che comprimono quantità arbitrarie di calcolo; realizzata senza una configurazione affidabile da Halo 2 e con costi minimi dagli schemi di folding di Nova.
R1CS (Sistema di vincoli di rango 1): Un formato di aritmetizzazione che rappresenta i vincoli del circuito come equazioni quadratiche di rango 1 su vettori; utilizzato da Groth16, Marlin e Nova.
Aritmetizzazione in stile PLONK: Il formato del sistema di vincoli utilizzato da PLONK e dalle sue varianti, che include polinomi di selezione, porte logiche personalizzate, argomenti di permutazione e tabelle di consultazione per una progettazione flessibile dei circuiti.
Cairo (Linguaggio di programmazione): Un linguaggio di programmazione progettato per scrivere programmi dimostrabili, utilizzato da StarkNet per compilare contratti intelligenti in una rappresentazione che può essere dimostrata con STARK.
Circom: Un linguaggio specifico di dominio per la definizione di circuiti aritmetici, ampiamente utilizzato nell'ecosistema ZKP di Ethereum per scrivere circuiti che si compilano secondo i vincoli R1CS per i dimostratori Groth16 e PLONK.
FAQ
D: Qual è la differenza tra uno zk-SNARK e uno zk-STARK? Le due differenze principali sono la configurazione affidabile e le ipotesi crittografiche sottostanti. Gli zk-SNARK, in particolare quelli basati su accoppiamenti come Groth16 e PLONK con KZG, richiedono una cerimonia di configurazione affidabile e si basano su ipotesi di curve ellittiche vulnerabili ai computer quantistici. Producono prove molto piccole con una verifica rapida. Gli zk-STARK non richiedono una configurazione affidabile e si basano su funzioni hash ritenute resistenti ai computer quantistici. Producono prove più grandi con una verifica più lenta, sebbene comunque rapida. In pratica, la scelta tra SNARK e STARK implica un compromesso tra la dimensione della prova (costo on-chain), le prestazioni del dimostratore, la resistenza ai computer quantistici e le ipotesi di fiducia. Molti sistemi moderni utilizzano approcci ibridi, ad esempio generando una prova STARK e poi incapsulandola in uno SNARK per una verifica on-chain più economica.
D: In che modo le prove a conoscenza zero (ZKP) consentono la scalabilità della blockchain? Le ZKP consentono la scalabilità tramite zk-rollup. Un operatore di rollup esegue migliaia di transazioni off-chain, calcola le conseguenti modifiche di stato e genera una ZKP che dimostra che tutte le transazioni sono state eseguite correttamente. Questa singola prova viene pubblicata sulla blockchain di Livello 1 insieme alla differenza di stato. Lo smart contract di Livello 1 verifica la prova, operazione che richiede all'incirca la stessa quantità di calcolo indipendentemente dal numero di transazioni presenti nel batch, e applica le modifiche di stato. Ciò significa che il Livello 1 deve verificare una sola prova anziché rieseguire migliaia di transazioni, ottenendo un notevole miglioramento della velocità di elaborazione pur ereditando le garanzie di sicurezza del livello base.
D: Cos'è una configurazione affidabile e perché è controversa? Una configurazione affidabile è una cerimonia che si esegue una sola volta e che genera i parametri crittografici, chiamati stringhe di riferimento strutturate, necessari per alcuni sistemi di prova SNARK. Durante la cerimonia, vengono utilizzati valori segreti casuali, a volte chiamati "rifiuti tossici", per calcolare i parametri. Se qualcuno fosse in grado di ricostruire questi valori segreti, potrebbe in linea di principio falsificare le prove, creare transazioni false, coniare token dal nulla o generare false prove di identità, tutte accettate come valide dal verificatore. La preoccupazione deriva dal fatto che la sicurezza si basa sulla distruzione irreversibile di questi segreti. Le cerimonie di calcolo multipartitico attenuano questo problema, poiché molti partecipanti contribuiscono con la casualità, dato che è sufficiente un solo partecipante onesto per garantire la sicurezza. Tuttavia, la configurazione affidabile rimane una questione filosofica per i sistemi che aspirano alla completa assenza di fiducia, motivo per cui i sistemi più recenti come STARK e Halo 2 la eliminano completamente.
D: Le prove a conoscenza zero (ZKP) possono essere utilizzate per la verifica dell'identità senza rivelare dati personali? Sì, questa è una delle applicazioni più potenti. Utilizzando sistemi di identità basati su ZKP, è possibile dimostrare specifici attributi personali senza rivelare i dati sottostanti. Ad esempio, è possibile dimostrare di avere più di 18 anni senza rivelare la data di nascita, di aver completato la procedura KYC (Know Your Customer) senza rivelare nome o numero di passaporto, di non essere inclusi in una lista di sanzioni senza rivelare la propria identità, o di essere un investitore accreditato senza rivelare il proprio patrimonio netto. Il protocollo o il servizio DeFi riceve una prova crittografica della veridicità dell'affermazione e può verificarla on-chain, ma non viene mai a conoscenza dei dati personali sottostanti. Ciò consente di garantire contemporaneamente la conformità normativa e la privacy.
D: Cos'è la composizione ricorsiva delle prove e perché è importante? La composizione ricorsiva delle prove è la capacità di una ZKP di verificare un'altra ZKP all'interno del suo circuito, essenzialmente una prova che controlla un'altra prova. Questo crea una catena in cui ogni prova attesta la correttezza di tutte le prove precedenti, comprimendo una quantità arbitraria di calcoli in un'unica prova finale di dimensioni costanti. Per le blockchain, questo è significativo: invece di verificare una nuova prova per ogni batch di transazioni, un sistema ricorsivo può generare una prova che afferma che la prova precedente era valida e che anche il nuovo batch di transazioni è corretto, accumulando la cronologia di una catena in un'unica prova. Alcuni protocolli utilizzano questo approccio per mantenere una blockchain di dimensioni pressoché costanti indipendentemente dalla lunghezza della catena. Gli schemi di folding di Nova rendono questa ricorsione notevolmente più economica "comprimendo" le istanze di calcolo anziché generare prove complete a ogni passaggio.
D: Quanto costa verificare una prova a conoscenza zero su Ethereum? I costi di verifica on-chain variano a seconda del sistema di prova. La verifica di una prova Groth16 costa in genere qualche centinaio di migliaia di gas su Ethereum. La verifica PLONK tende a costare un po' di più. La verifica STARK è generalmente più costosa a causa delle dimensioni maggiori della prova, motivo per cui molti sistemi basati su STARK incapsulano le loro prove in un SNARK finale per una verifica on-chain più economica. In un contesto di zk-rollup, questo costo di verifica viene ammortizzato su tutte le transazioni del batch, quindi il costo effettivo di verifica per transazione può essere molto basso quando i batch contengono migliaia di transazioni. Le transazioni blob EIP-4844 di Ethereum e i successivi aumenti di capacità blob dell'era Fusaka hanno ulteriormente ridotto il costo di pubblicazione delle differenze di stato che accompagnano queste prove.
D: Le prove a conoscenza zero sono davvero "a conoscenza zero" nella pratica? La proprietà matematica della conoscenza zero garantisce che la prova non riveli nulla sul testimone segreto oltre alla verità dell'affermazione dimostrata. Tuttavia, in pratica, diversi fattori possono far trapelare informazioni. Il fatto stesso che una prova sia stata inviata è un metadato pubblico; un osservatore sa che qualcuno ha effettuato una transazione in un momento specifico. La dimensione dell'insieme di anonimato è importante, poiché se solo un piccolo numero di persone utilizza un pool schermato, l'analisi del grafo delle transazioni può restringere il campo dei partecipanti. Attacchi a canale laterale sulla generazione della prova, come l'analisi dei tempi o del consumo energetico, possono far trapelare informazioni sul testimone. Gli input pubblici alla prova, che sono visibili per impostazione predefinita, possono rivelare più di quanto previsto se il circuito non è progettato con cura. Per la massima privacy, i sistemi basati su ZKP dovrebbero essere combinati con ampi insiemi di anonimato, offuscamento temporale e un'attenta progettazione del circuito che minimizzi gli input pubblici.