Citesc această explicație despre zkSnark scrisă de Maksym Petkus - http://www.petkus.info/papers/WhyAndHowZkSnarkWorks.pdf
Din secțiunea 3.5
Deoarece verificatorul poate extrage cunoștințe despre polinomul necunoscut
$p(x)$ numai din datele transmise de doveditor, să le luăm în considerare pe acelea
valori furnizate (dovada): $g^p$, $g^{p'}$, $g^h$. Ei participă la
urmatoarele verificari:
$g^p = (g^{h})^{t(s)}$ (polinom $p(x)$ are rădăcini de $t(x)$)
$(g^p)^\alpha = g^{p'}$ (se folosește polinomul unei forme corecte)
Întrebarea este cum modificăm dovada astfel încât verificările să rămână
țineți, dar nu se poate extrage nicio cunoaștere? Un singur răspuns poate fi derivat
din secțiunea anterioară: putem „schimba” acele valori cu ceva aleatoriu
număr $\delta$ (delta), de exemplu, $(g^p)^{\delta}$. Acum, pentru a
extrageți cunoștințele, trebuie mai întâi să găsiți $\delta$ care este
considerat infezabil. Mai mult, o astfel de randomizare este statistic
imposibil de distins de aleatoriu.
Avem deja Criptare Omomorfă Puternică (după cum este menționat în Secțiunea 3.3.3),
$E(v) = g^v \pmod n$
The $g^p$, $g^{p'}$, $g^h$ sunt create ca mai sus. Adică, cum extragi informații despre p, p' & h din $g^p$, $g^{p'}$, $g^h$ că trecerea prin $\delta$ este necesară?
Atunci de ce este $\delta$ tură necesară pentru Zero Knowledge?