Я читаю это объяснение zkSnark, написанное Максимом Петкусом - http://www.petkus.info/papers/WhyAndHowZkSnarkWorks.pdf
Из раздела 3.5
Поскольку верификатор может извлечь информацию о неизвестном полиноме
$р(х)$ только из данных, присланных прувером, рассмотрим те
предоставленные значения (доказательство): $г^р$, $г^{р'}$, $г^ч$. Они участвуют в
следующие проверки:
$ г ^ р = (г ^ {ч}) ^ {т (с)} $ (многочлен $р(х)$ имеет корни $т(х)$)
$(г^р)^\альфа = г^{р'}$ (используется многочлен правильной формы)
Вопрос в том, как изменить доказательство так, чтобы проверки по-прежнему
держать, но никакие знания не могут быть извлечены? Можно получить один ответ
из предыдущего раздела: мы можем «сдвинуть» эти значения на некоторое случайное
количество $\дельта$ (дельта), например, $ (г ^ р) ^ {\ дельта} $. Теперь, чтобы
извлечь знание, сначала нужно найти $\дельта$ который
считается невыполнимым. Более того, такая рандомизация статистически
неотличимы от случайных.
У нас уже есть сильное гомоморфное шифрование (как указано в разделе 3.3.3),
$E(v) = g^v \pmod n$
$г^р$, $г^{р'}$, $г^ч$ создаются, как описано выше. Я имею в виду, как вы извлекаете информацию о p, p' & h из $г^р$, $г^{р'}$, $г^ч$ что сдвиг на $\дельта$ требуется?
Так почему же $\дельта$ сдвиг требуется для нулевого знания?