Halo è una prova ricorsiva a conoscenza zero che non richiede fiducia, scoperta da Sean Bowe presso Electric Coin Co. che elimina la configurazione di fiducia (Trusted setup) e consente una maggiore scalabilità della blockchain di Zcash. Halo è stato il primo sistema di dimostrazione a conoscenza zero efficiente e ricorsivo, ampiamente considerato una svolta scientifica.
Succinct Polynomial Commitment Scheme: consente a un committente di impegnarsi in un polinomio con una breve stringa che può essere utilizzata da un verificatore (verifier) per confermare le valutazioni reclamate del polinomio impegnato.
Polynomial Interactive Oracle Proof: Il verifier chiede al prover (algoritmo) di aprire tutti i commitments in vari punti a loro scelta utilizzando lo schema di commitment polinomiale e verifica che l’identità sia vera tra di essi.
I zk-SNARKs si basano su una stringa di riferimento comune (CRS) come parametro pubblico per la dimostrazione e la verifica. Questa CRS deve essere generata in anticipo da una parte fidata. Fino a poco tempo fa, elaborare calcoli multi-party sicuri (MPC) come quelli eseguiti da Aztec network & Zcash erano necessari per mitigare il rischio durante questa cerimonia di configurazione di fiducia (trusted setup ceremony).
In precedenza, i pool schermati Sprout e Sapling di Zcash utilizzavano i sistemi di prova zk BCTV14 e Groth 16. Sebbene fossero sicuri, avevano limitazioni. Non erano scalabili poiché erano legati a una singola applicazione, il “rifiuto tossico” (resti di materiale crittografico generato durante la cerimonia di genesi) poteva persistere, e c’era un elemento di fiducia (seppur minimo) che gli utenti dovevano avere per considerare accettabile la cerimonia.
Comprimendo ripetutamente più istanze di problemi complessi insieme durante cicli di curve ellittiche in modo che le dimostrazioni computazionali possano essere utilizzate per ragionare efficacemente su di esse (ammortizzazione nidificata), la necessità di una configurazione di fiducia viene eliminata. Ciò significa anche che la stringa di riferimento strutturata (output dalla cerimonia) è aggiornabile, consentendo applicazioni come i contratti intelligenti.
Halo consente a un utente sia di dimostrare che nessuno coinvolto nell’istituzione iniziale del sistema di prova a conoscenza zero su larga scala ha creato una backdoor segreta con cui eseguire transazioni fraudolente e che lo stato sicuro è esistito nel corso di aggiornamenti e modifiche al sistema.
Sean Bowes spiegazione su Dystopia Labs
La composizione delle dimostrazioni ricorsive consente a una singola dimostrazione di attestare la correttezza di praticamente un numero illimitato di altre dimostrazioni, consentendo di comprimere una grande quantità di calcolo (e informazioni). Questo è un componente essenziale per la scalabilità, non ultimo perché ci consente di scalare in modo orizzontale la rete, consentendo comunque a gruppi di partecipanti di fidarsi dell’integrità del resto della rete.
Prima di Halo, la composizione di dimostrazioni ricorsive richiedeva un grande costo computazionale e un setup di fiducia. Una delle principali scoperte è stata una tecnica chiamata “amortizzazione nidificata”. Questa tecnica consente la composizione ricorsiva utilizzando lo schema di impegno polinomiale (polynomial commitment scheme) basato su un argomento di prodotto interno, migliorando notevolmente le prestazioni ed evitando il setup di fiducia.
Nel paper di Halo, abbiamo descritto completamente questo schema di impegno polinomiale e scoperto che esisteva una nuova tecnica di aggregazione al suo interno. La tecnica consente di verificare un gran numero di dimostrazioni create indipendentemente quasi alla stessa velocità di una singola dimostrazione. Questo da solo offrirebbe un'alternativa migliore ai precedenti zk-SNARKs utilizzatI in Zcash.
Halo 2 è una implementazione ad alte prestazioni di zk-SNARKs scritto in Rust che elimina la necessità di un setup di fiducia, ponendo le basi per la scalabilità in Zcash.