zk-SNARK обозначает краткий неинтерактивный аргумент знания с нулевым разглашением, а zk-STARK представляет собой краткий прозрачный аргумент знания, с нулевым разглашением. Доказательство Zk-SNARK уже используются в Zcash, платежной системе JP Morgan Chase, основанной на блокчейн, и в качестве способа безопасной аутентификации клиентов на серверах. Но в то время как zk-SNARK добились значительных успехов, в становлении и адаптации, zk-STARK теперь рекламируются как новая и улучшенная версия протокола, устраняющая многие из предыдущих недостатков zk-SNARK.
Притча о Али Бабе и Пещере
Давайте представим себе кольцевую пещеру с одним входом и волшебным дверным проемом, разделяющим две боковые дорожки. Чтобы пройти через магический дверной проем, нужно прошептать правильные секретные слова. Итак, учтите, что Алиса (желтая) хочет доказать Бобу (синему), что она знает секретные слова, и в то же время хочет сдержать их в секрете. Для этого Боб соглашается подождать снаружи, пока она входит в пещеру и идет до конца одного из двух возможных путей. В этом примере она решает пройти путь 1.
Через некоторое время Боб проходит мимо входа и кричит, с какой стороны он хочет, чтобы Алиса появилась (путь 2 в данном случае).
Если Алиса действительно знает секрет, она точно окажется на выбранном Бобом пути.
Весь процесс может быть повторен несколько раз, чтобы подтвердить, что Алиса не случайно выбрала правильный путь.
Притча о Али-Бабе и Пещере иллюстрирует концепцию доказательств с нулевым разглашением, которое является частью zk-SNARK и zk-STARK протоколов. ZK-доказательства могут быть использованы для подтверждения владения определенными знаниями, не раскрывая никакой при этом информации о них.
zk-SNARKs
Доказательство с нулевым разглашением позволяют одному человеку доказывать другому, что утверждение является верным, не раскрывая какой-либо информации, выходящей за рамки действительности утверждения. Привлеченные стороны обычно называют как проверяющий и верифицирующий, а утверждение, которое они держат в секрете, называют свидетелем. Основная цель этих доказательств состоит в том, чтобы раскрыть как можно меньше данных между двумя сторонами. Другими словами, можно использовать доказательства с нулевым разглашением, для подтверждения того, что они обладают определенными знаниями, не раскрывая никакой другой информации.
Акроним SNARK “сжатый” означает, что эти доказательства меньше по размеру и могут быть быстро проверены. “Неинтерактивный” означает, что взаимодействие между prover и verifier практически отсутствует. Более старые версии протоколов с нулевым разглашением обычно требуют, чтобы проверяющий и верифицирующий контактировали между собой и поэтому они считаются «интерактивными» zk-доказательствами. Но в «неинтерактивных» конструкциях проверяющий и верифицирующий должны обмениваться только одним доказательством.
В настоящее время доказательства zk-SNARK зависят от начальной доверительной установки между проверяющим и верифицирующим, означающее что для создания доказательств с нулевым разглашением для частных транзакций требуется набор открытых параметров. Эти параметры почти соответствуют правилам игры, они закодированы в протокол и являются одним из необходимых факторов, подтверждающих, что транзакция была действительной. Однако это создает потенциальную проблему в централизации, поскольку параметры зачастую формулируются очень небольшой группой.
Последний фрагмент этого акронима - это “Знание” (Knowledge), означающее, что проверяющий не может конструировать доказательства, не имея знания (или свидетеля), подтверждающего их утверждение.
zk-STARKs
zk-STARK был создан как альтернативная версия zk-SNARK и считается более быстрой и дешевой реализацией технологии. Но что более важно, zk-STARK не требует начальной доверительной настройки (следовательно, «T» transparent - прозрачность).
Одна из основных причин, по которой Zk-STARK предлагает более дешевую и быструю имплементацию, заключается в том, что количество циклов обмена данными между проверяющими и верифицирующими остается постоянным, относительно любого увеличения вычислений. Напротив, в zk-SNARKs, чем больше требуется вычислений, тем больше сторонам приходится отправлять сообщений туда и обратно. Поэтому общий размер данных в zk-SNARK намного больше, чем в zk-STARK.