Что такое доказательство с нулевым разглашением (ZKP) в блокчейне?

WhiteBIT
Опубликовал 25 января 2023
4087
Что такое доказательство с нулевым разглашением (ZKP) в блокчейне?

Содержание

Львиную долю успеха публичных блокчейнов составляет их прозрачность. Однако как сохранить прозрачность и обеспечить конфиденциальность одновременно? Это возможно благодаря методу доказательства с нулевым разглашением (ZKP), который все чаще применяются в публичных блокчейнах.

Доказательство с нулевым разглашением (с англ. zero-knowledge proof, ZKP) — это метод, который позволяет проверить точность утверждения, не раскрывая дополнительной информации о самом утверждении. Концепция ZK Proof была впервые представлена в 1985 году исследователями Шафи Голдвассером, Сильвио Микали и Чарльзом Ракоффом и с тех пор разрабатывалась и применялась в различных проектах в области криптографии и технологии блокчейн.

В рамках протокола доказывающая сторона демонстрирует достоверность утверждения верификатору, не предоставляя никаких дополнительных данных. Тремя основными характеристиками ZK Proof являются целостность, точность и нулевое разглашение.

  • Целостность относится к способности доказательства гарантировать, что проверяемое утверждение истинно.
  • Точность относится к способности доказательства гарантировать, что проверяемое утверждение является точным и не подделанным.
  • Нулевое разглашение относится к способности доказательства не раскрывать никакой дополнительной информации о проверяемом утверждении.

Есть два основных типа доказательств с нулевым разглашением: интерактивный и неинтерактивный.

Интерактивные доказательства предполагают повторяющиеся взаимодействия между доказывающим и проверяющим. Проверяющий «требует» от доказывающего неоднократно продемонстрировать свое знание факта. Процесс повторяется до тех пор, пока проверяющий не будет уверен, что доказывающий не врет.

Неинтерактивное доказательство подразумевает, что обе стороны не нуждаются в коммуникации и подлинность утверждения может быть доказана постфактум.

Самыми известными примерами ZK Proof являются zk-SNARKs и zk-STARKs.

Ярким примером успешного применения ZK Proof является криптовалюта Zcash, которая использует zk-SNARK для обеспечения конфиденциальности и анонимности транзакций. Другим проектом использующим ZK Proof, является децентрализованная биржа dYdX. Проект использует zk-STARK для исполнения смарт-контрактов.

Сооснователь Ethereum Виталик Бутерин назвал ZK Proof «наиболее важной технологией» для масштабирования блокчейн-платформ.

Как работает ZKP? Простыми словами

Представим, что есть две стороны, которые хотят обменяться информацией. Вторая сторона должна подтвердить правдивость утверждения первой стороны, не владея достаточным объемом информации. В таком случае нужно придумать механику действий, выполнив которые, первая сторона сможет доказать свое утверждение. А вторая сторона (верификатор) сможет подтвердить его подлинность.

Для наглядности работы ZKP давайте рассмотрим ситуацию. Ты с другом стоишь у входа в дом. Войдя в него, ты видишь коридор налево (А) и направо (В). Какой путь ты выберешь – не важно, однако нужно помнить, что эти коридоры соединяются в одной точке дверью с замком. Тайный пароль к двери есть только у тебя, однако друг в этом сомневается. Твоя задача — доказать, что ты владеешь тайным кодом, не называя его. Для этого друг входит в дом в момент, когда ты уже находишься у двери. Он называет коридор, по которому тебе нужно будет пройти к нему — А или В. Ты либо возвращаешься по тому же коридору, что шел к двери, либо открываешь замок секретным кодом и попадаешь в нужный коридор. Повторив эксперимент несколько раз, ты подтвердишь истинность своего утверждения, не предоставляя фактических данных.

В чем заключаются преимущества и недостатки ZKP?

Преимущества:

  • Конфиденциальность. Одним из основных преимуществ ZK Proof является способность сохранять конфиденциальность проверяемых данных. Метод позволяет проверить целостность и точность информации, не раскрывая дополнительной информации о самом утверждении.
  • Краткость. Доказательство в рамках метода ZKP можно сделать очень коротким и простым, а это значит, на его проверку будет требоваться минимум времени.
  • Отсутствие взаимодействия. Доказательства ZKP неинтерактивны, а это означает, что доказывающему не нужно общаться с верификатором во время процесса проверки.
  • Объективность. Утверждения в рамках ZKP поддаются проверке, соответственно, любой может проверить доказательство и подтвердить его достоверность без дополнительной информации.
  • Совместимость со смарт-контрактами. ZKP можно использовать для создания смарт-контрактов с повышенной приватностью.

Недостатки ZK Proof:

  • Сложность. Создание и внедрение ZK Proof — трудоемкий процесс, требующей высокого уровня математических знаний и вычислительных ресурсов.
  • Генерация вне сети. ZKP генерируются вне сети, что создает риск подделки доказательств злоумышленниками.
  • Ограниченная применимость. ZKP подходит не для всех типов данных или вариантов использования. Лучше всего он работает с конкретными типами задач или данных.
  • Требуется доверие к настройке. ZKP требует этапа настройки, на котором создается общая ссылочная строка (CRS). CRS должна храниться в секрете, и если ее скомпрометировать, под угрозой будет находиться безопасность всей системы.

Что такое zk-SNARK и zk-STARK?

zk-SNARK (Zero-knowledge Succinct Non-interactive Argument of Knowledge) — это тип неинтерактивного ZKP, который требует доверительной установки между проверяющим и проверяемым. Для создания доказательств для частных транзакций требуется набор открытых параметров или «правил», которые записаны в код протокола.

Одним из самых ярких примеров применения zk-SNARK есть криптовалюта Zcash. Проект использует протокол доказательства с нулевым разглашением zk-SNARK для обеспечения конфиденциальности и анонимности транзакций. Они шифруются в сети и при этом проверяются на достоверность с помощью доказательств с нулевым разглашением. Следуя правилам консенсуса, верификаторам не нужно знать всю информацию о транзакции, чтобы ее проверить.

Альтернативой zk-SNARK есть zk-STARK — более быстрая и дешевая версия технологии. Характерной чертой zk-STARK является отсутствие доверительной настройки. Вместо нее используется более простая симметрическая криптография — устойчивые к коллизиям хэш-функции. Другой отличительной чертой zk-STARK является скорость выполнения. Благодаря одинаковому количеству циклов проверки zk-STARK оперирует меньшим объемом данных, чем предотвращает чрезмерную нагрузку на систему и улучшает масштабируемость. Поэтому zk-STARK применяются в ZK-Rollups — решениях для второго уровня блокчейнов (L2).

Созданная более 30 лет назад, технология доказательства с нулевым разглашением закрывает острые проблемы современных публичных блокчейнов: конфиденциальность и масштабируемость. А дальнейшее развитие метода может вывести применимость блокчейн-технологии на совершенно новый уровень.

Так что с ZK Proof мы можем выиграть сразу два сражения — за конфиденциальность и безопасность.