Я читаю это объяснение zkSnark, написанное Максимом Петкусом - http://www.petkus.info/papers/WhyAndHowZkSnarkWorks.pdf
Я все понял на первых 15 страницах.
В 3.4 Ограничение многочлена (стр. 16)
Мы уже ограничиваем доказывающего в выборе зашифрованных степеней s, но такое ограничение не применяется, например, можно было бы использовать
любые возможные способы найти некоторые произвольные значения $z_p$ и $z_h$ которые удовлетворяют уравнению $z_p = (z_h)^{t(s)}$ и предоставить их верификатору вместо $г^р$ и $г^ч$. Например, для некоторого случайного r $z_h = г^г$ и $z_p = (г^{т(с)})^{г}$, куда $ г ^ {т (с)} $ может быть вычислено из предоставленных зашифрованных мощностей $s$. Вот почему верификатору нужно доказательство того, что он только предоставил шифровки полномочий $s$ были использованы для расчета
$г^р$ и $г^ч$ и ничего больше.
Я не могу понять, как доказывающий может найти некоторые произвольные значения $z_p$ и $z_h$ которые удовлетворяют $z_p = (z_h)^{t(s)}$? Например, для некоторого случайного r $z_h = г^г$ и $z_p = (г^{т(с)})^{г}$
Доказывающий не знает $s$ и он тоже не знает $г$, так как он это сделает?
Короче говоря, я не могу понять, что это за атака (от которой нужно защититься), для которой нужно «ограничение полинома».