ZERO KNOWLEDGE PROOF
Intro
В этой статье поговорим о таком протоколе, как Zero-Knowledge Proof или, по другому — доказательство с нулевым разглашением.
Последнее время мы все чаще сталкиваемся с ним его реализациями в различных продуктах сферы web3, но без понимания принципов его работы, говорить о фундаментальной полезности данных проектов — невозможно.
What is Zero-Knowledge Proof?
Zero-Knowledge Proof — это криптографический метод, используемый для доказательства достоверности данных, без раскрытия информации о них, кроме того факта, что они верны.
Уже существует ряд проектов, использующих данный протокол: Polyhedra Network, ZkSync, StarkNet и т.д.
How does it works?
Мы помним, что одним из основных преимуществ технологии blockchain является его открытость и децентрализованность. Для обеспечения достоверности передаваемой информации в данной сети, каждый ее участник должен проверить правдивость данной информации. Когда большинство ее участников сходятся во мнениях — мы можем считать данную информацию достоверной.
Подобное решение негативно сказывается на скорости обработки информации всей сети в целом. Протокол ZKP решает данную проблему.
В сети, которая использует данный протокол, доказывать достоверность утверждения и предоставить математическое подтверждение обязан всего один пользователь. Остальные участники сети выступают в роли проверяющих. Проверка достоверности информации занимает намного меньше времени.
Если рассматривать данный протокол чуть глубже, то его работа построена на том, что доказывающая сторона отправляет какие-либо данные в hash-функцию протокола ZKP. Данная hash-функция, после обработки данных по определенному алгоритму, возвращает нам hash входных данных. Доказывающая сторона отправляет проверяющей этот hash, говоря что знает какую-либо информацию. Проверяющая сторона прогонят данные через ту же hash-функцию и сравнивает результаты. В случае совпадения результатов, проверяющая сторона возвращает "истина".
Types of Zero-Knowledge Proof
Среди различных реализаций протокола с нулевым разглашением обычно выделяют следующие:
- ZK-SNARK (Zero-Knowledge Succinct Non-Interactive Argument of Knowledge)
- ZK-STARK (Zero-Knowledge Scalable Transparent Argument of Knowledge)
Оба протокола предназначены для того, чтобы доказывающая сторона могла убедить проверяющую сторону в знании каких-то данных без их раскрытия, но имеют разный подход к этому.
ZK-SNARK
ZK-SNARK позволяет доказывающей стороне сгенерировать компактное доказательство, которое может быть проверено проверяющей стороной без необходимости общения с доказывающей. Он часто используется в блокчейн-технологиях, чтобы обеспечить приватность и безопасность транзакций.
Одним из недостатков ZK-SNARK является необходимость доверия к параметрам, используемым для создания доказательства, что ограничивает их применение в некоторых сценариях.
ZK-STARK
ZK-STARK обеспечивает высокую масштабируемость и прозрачность, что означает, что он может быть использованы для доказательства в больших объемах данных и не требует доверия к параметрам. Поскольку ZK-STARK не требует доверия к параметрам, он подходит для более широкого спектра применений, где нет централизованного доверия или где сложно обеспечить такое доверие.
Однако ZK-STARK обычно требует больше вычислительных ресурсов для создания и проверки доказательств по сравнению с ZK-SNARK.
Подробнее о технической работе данных реализаций можно узнать в этих статьях: ZK-SNARK, ZK-STARK.
Summary
Zero-Knowledge Proof — это криптографический протокол, использующий hash-функции для обеспечения доказательства достоверности информации, без ее разглашения.
Популярность данного протокола активно набирает обороты и он уже используется в таких проектах, как Polyhedra Network, ZkSynk, StarkNet и т.д.
Стоит обратить внимание на то, что протокол Zero-Knowledge Proof, под капотом, использует 2 основные реализации: ZK-SNARK и ZK-STARK, за выбор которых отвечает потребность в большей безопасности или скорости обработки данных.