Что такое zk-snark?

Zk-snark (Zero Knowledge Proof) — это доказательство нулевого знания. В протоколе zk-snark имеют место два участника: доказывающая сторона (прувер) и проверяющая сторона (верификатор). Доказательство нулевого знания — это процесс, в котором прувер убеждает верификатора в том, что он обладает определенными секретными знаниями, не раскрывая их. Использование zk-snark позволяет скрывать то, с какого адреса ушел платеж, куда он пришел, сколько денег было переведено, а также позволяет доказать, что транзакция действительно прошла и на счете получателя находится верная сумма. Для работы протокол должен соответствовать определенным параметрам:
— Полнота: если утверждение верно, то честный прувер может убедить доказательством честного верификатора.
— Корректность: если доказывающая сторона лжет, то она не может убедить в корректности проверяющую сторону.
— Нулевое разглашение: если утверждение истинно, верификатор не может узнать его содержание.
Zk-snark реализован в криптовалюте Zcash и его форках, а также в развертываемом обновлении Ethereum — Metropolis.