Урок 3

Как объединить подтверждение резервов с технологией zk-SNARK?

Этот урок объясняет, что такое технология zk-SNARK и как Подтверждение резервов оптимизируются с использованием технологии zk-SNARK

Фон

Доказательство Знания без Раскрытия (ZKP) - это криптографическая техника, впервые предложенная С. Голдвассером, С. Микали и К. Ракоффом в начале 1980-х годов в статье под названием «Сложность знаний интерактивных доказательствных системВ статье он был концептуализирован как теоретическая модель для решения проблемы верификации математических утверждений без раскрытия доказательств. Эта концепция привлекла широкое внимание в академических кругах, поскольку она ставит под сомнение границы традиционных криптографических техник и предоставляет новые методы обработки чувствительной информации.

С течением времени ZKP превратился из абстрактной теоретической концепции в конкретные протоколы, которые могут быть интегрированы в различные приложения. В 2010 году Грот опубликовал статью под названием “Краткие парные неинтерактивные доказательства нулевого знанияЗатем стал теоретическим этапом для zk-SNARK (Zero-Knowledge Succinct Non-Interactive Argument of Knowledge), важного решения в ZKP. Самым важным прогрессом в применении доказательства нулевого знания стала система доказательства нулевого знания, использованная Z-cash в 2015 году, обеспечивающая конфиденциальную защиту для транзакций и сумм. Впоследствии zk-SNARK был объединен с умными контрактами, расширяя свое применение на более широкий спектр сценариев применения.

Основные принципы zk-SNARK

Традиционный ZKP придерживается трёх принципов:

  • Полнота: если утверждение верно, честный доказатель всегда может убедить проверяющего.
  • Здравый смысл: если утверждение ложно, любой мошенник-доказатель может ввести в заблуждение проверяющего с небольшой вероятностью.
  • Zero-знание: если утверждение верно, то проверяющий не сможет получить ничего, кроме факта, что утверждение верно. Другими словами, процесс проверки не раскроет никакой информации, которая может быть использована для построения доказательства.

Принцип ZKP можно понять на простом примере: Если мне нужно доказать A, что у меня есть номер телефона B, мне не нужно напрямую раскрывать номер телефона B. Вместо этого я могу напрямую набрать номер телефона B и доказать, что у меня есть номер B после того, как дозвонюсь. Этот процесс не приведет к утечке номера телефона B.
zk-SNARK дополняет эти принципы следующими характеристиками:

  • Нулевое знание: проверяющий не получает никакой полезной информации из доказательства.
  • Кратко: размер подтверждения мал (обычно несколько десятков байт), а время проверки короткое (обычно несколько миллисекунд);
  • Неинтерактивный: Доказывающему лицу нужно отправить доказательство верификатору только один раз, без необходимости дальнейшего общения.
  • Доверенные параметры: И проверяющий, и валидатор должны использовать общую ссылочную строку (CRS), сгенерированную доверенной третьей стороной, которая может содержать конфиденциальную информацию, которая в случае утечки или фальсификации может угрожать безопасности системы.

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

  • Настройка системы: выполняется доверенным третьим лицом. Она включает генерацию CRS, включая ключ подтверждения (pk) и ключ проверки (vk). Этот процесс нужно выполнить всего один раз, и CRS можно использовать несколько раз.
  • Проблема кодирования: преобразование вычислительной проблемы f (x) = y в форму QAP A (x) · B (x) = C (x) · Z (x), где A (x), B (x), C (x) - полиномы, определяемые структурой цепи f, Z (x) - фиксированный полином, x - случайно выбранная точка, а y - вывод f. Этот процесс может выполняться доказывающим или проверяющим, или заранее третьей стороной.
  • Генерация доказательства: Выполняется доказывающим лицом. Она включает использование входного w pk, x и f для генерации доказательства \pi, доказывающего, что он знает w, удовлетворяющий f (w) = y, не раскрывая конкретное значение w. Этот процесс включает полиномиальные вычисления, операции с эллиптическими кривыми и операции хэширования, в конечном итоге генерируя \pi, состоящий из нескольких точек эллиптической кривой и хэш-значения.
  • Проверка доказательства: выполняется верификатором. Она включает использование vk, x, y и \pi для верификации, определение, знает ли доказывающий w, удовлетворяющий f (w) = y. Этот процесс также включает полиномиальные вычисления, операции с эллиптическими кривыми и операции хэширования. В конечном итоге он получает логическое значение, указывающее, является ли доказательство действительным.

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

Комбинация резервов биржи с zk-SNARK

В предыдущем обсуждении упоминалось, что zk-SNARK позволяет устанавливать общую строку ссылки, что означает, что ограничения могут быть установлены на работающем контуре. Возьмем резерв Gate.io в качестве примера, он устанавливает пять основных ограничений в цепи, как показано ниже:

① Перед вставкой чистых активов пользователя в дерево Меркла узел, соответствующий идентификатору пользователя, пуст.
② Рассчитайте общие активы/обязательства пользователя на основе списка активов пользователя и цены каждого актива. Общие активы должны быть больше общих обязательств.
③ Добавьте активы/обязательства пользователя к активам/обязательствам биржи.
④ Рассчитайте хэш состояния пользователя, используя идентификатор пользователя, общие активы/обязательства и список активов. Вставьте состояние пользователя в дерево Меркля, чтобы получить новый корень Меркля.
⑤ Значение хэша корневого узла дерева до того, как предыдущий пользователь создаст пользовательскую операцию, должно быть равно значению хэша после того, как последующий пользователь создаст пользовательскую операцию.
(Операция ① может избежать фальсификации узловых данных, операция ② может избежать отрицательных балансов на счетах, а операция ⑤ может гарантировать, что данные пользователя не изменяются до и после операции.)
Это обеспечивает разрешение проблемы отрицательного баланса. Данные биржи должны проходить через схему для автоматической проверки ограничений и получения числа активов. Однако для этого решения требуется определенная вычислительная мощность и аппаратные условия. Для вычисления подтверждения активов 10 миллионов пользователей на машине с 32 ядрами и 128 ГБ оперативной памяти требуется 15 дней. Вычисление подтверждения резервов можно параллельно. Если есть 10 машин, это займет всего 1,5 дня.

Заключение

Установив соответствующие ограничения, zk-SNARK может избежать возникновения проблем с отрицательными значениями и лучше защитить конфиденциальность и безопасность пользователей. Подтверждение резервов Gate.io теперь может доказать резервные коэффициенты для 100+ монет, и пользователи могут увидеть это, просто щелкнув ссылка. На следующем уроке мы проведем проверку безопасности вашего актива в течение 3 минут.

Відмова від відповідальності
* Криптоінвестиції пов'язані зі значними ризиками. Дійте обережно. Курс не є інвестиційною консультацією.
* Курс створений автором, який приєднався до Gate Learn. Будь-яка думка, висловлена автором, не є позицією Gate Learn.
Каталог
Урок 3

Как объединить подтверждение резервов с технологией zk-SNARK?

Этот урок объясняет, что такое технология zk-SNARK и как Подтверждение резервов оптимизируются с использованием технологии zk-SNARK

Фон

Доказательство Знания без Раскрытия (ZKP) - это криптографическая техника, впервые предложенная С. Голдвассером, С. Микали и К. Ракоффом в начале 1980-х годов в статье под названием «Сложность знаний интерактивных доказательствных системВ статье он был концептуализирован как теоретическая модель для решения проблемы верификации математических утверждений без раскрытия доказательств. Эта концепция привлекла широкое внимание в академических кругах, поскольку она ставит под сомнение границы традиционных криптографических техник и предоставляет новые методы обработки чувствительной информации.

С течением времени ZKP превратился из абстрактной теоретической концепции в конкретные протоколы, которые могут быть интегрированы в различные приложения. В 2010 году Грот опубликовал статью под названием “Краткие парные неинтерактивные доказательства нулевого знанияЗатем стал теоретическим этапом для zk-SNARK (Zero-Knowledge Succinct Non-Interactive Argument of Knowledge), важного решения в ZKP. Самым важным прогрессом в применении доказательства нулевого знания стала система доказательства нулевого знания, использованная Z-cash в 2015 году, обеспечивающая конфиденциальную защиту для транзакций и сумм. Впоследствии zk-SNARK был объединен с умными контрактами, расширяя свое применение на более широкий спектр сценариев применения.

Основные принципы zk-SNARK

Традиционный ZKP придерживается трёх принципов:

  • Полнота: если утверждение верно, честный доказатель всегда может убедить проверяющего.
  • Здравый смысл: если утверждение ложно, любой мошенник-доказатель может ввести в заблуждение проверяющего с небольшой вероятностью.
  • Zero-знание: если утверждение верно, то проверяющий не сможет получить ничего, кроме факта, что утверждение верно. Другими словами, процесс проверки не раскроет никакой информации, которая может быть использована для построения доказательства.

Принцип ZKP можно понять на простом примере: Если мне нужно доказать A, что у меня есть номер телефона B, мне не нужно напрямую раскрывать номер телефона B. Вместо этого я могу напрямую набрать номер телефона B и доказать, что у меня есть номер B после того, как дозвонюсь. Этот процесс не приведет к утечке номера телефона B.
zk-SNARK дополняет эти принципы следующими характеристиками:

  • Нулевое знание: проверяющий не получает никакой полезной информации из доказательства.
  • Кратко: размер подтверждения мал (обычно несколько десятков байт), а время проверки короткое (обычно несколько миллисекунд);
  • Неинтерактивный: Доказывающему лицу нужно отправить доказательство верификатору только один раз, без необходимости дальнейшего общения.
  • Доверенные параметры: И проверяющий, и валидатор должны использовать общую ссылочную строку (CRS), сгенерированную доверенной третьей стороной, которая может содержать конфиденциальную информацию, которая в случае утечки или фальсификации может угрожать безопасности системы.

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

  • Настройка системы: выполняется доверенным третьим лицом. Она включает генерацию CRS, включая ключ подтверждения (pk) и ключ проверки (vk). Этот процесс нужно выполнить всего один раз, и CRS можно использовать несколько раз.
  • Проблема кодирования: преобразование вычислительной проблемы f (x) = y в форму QAP A (x) · B (x) = C (x) · Z (x), где A (x), B (x), C (x) - полиномы, определяемые структурой цепи f, Z (x) - фиксированный полином, x - случайно выбранная точка, а y - вывод f. Этот процесс может выполняться доказывающим или проверяющим, или заранее третьей стороной.
  • Генерация доказательства: Выполняется доказывающим лицом. Она включает использование входного w pk, x и f для генерации доказательства \pi, доказывающего, что он знает w, удовлетворяющий f (w) = y, не раскрывая конкретное значение w. Этот процесс включает полиномиальные вычисления, операции с эллиптическими кривыми и операции хэширования, в конечном итоге генерируя \pi, состоящий из нескольких точек эллиптической кривой и хэш-значения.
  • Проверка доказательства: выполняется верификатором. Она включает использование vk, x, y и \pi для верификации, определение, знает ли доказывающий w, удовлетворяющий f (w) = y. Этот процесс также включает полиномиальные вычисления, операции с эллиптическими кривыми и операции хэширования. В конечном итоге он получает логическое значение, указывающее, является ли доказательство действительным.

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

Комбинация резервов биржи с zk-SNARK

В предыдущем обсуждении упоминалось, что zk-SNARK позволяет устанавливать общую строку ссылки, что означает, что ограничения могут быть установлены на работающем контуре. Возьмем резерв Gate.io в качестве примера, он устанавливает пять основных ограничений в цепи, как показано ниже:

① Перед вставкой чистых активов пользователя в дерево Меркла узел, соответствующий идентификатору пользователя, пуст.
② Рассчитайте общие активы/обязательства пользователя на основе списка активов пользователя и цены каждого актива. Общие активы должны быть больше общих обязательств.
③ Добавьте активы/обязательства пользователя к активам/обязательствам биржи.
④ Рассчитайте хэш состояния пользователя, используя идентификатор пользователя, общие активы/обязательства и список активов. Вставьте состояние пользователя в дерево Меркля, чтобы получить новый корень Меркля.
⑤ Значение хэша корневого узла дерева до того, как предыдущий пользователь создаст пользовательскую операцию, должно быть равно значению хэша после того, как последующий пользователь создаст пользовательскую операцию.
(Операция ① может избежать фальсификации узловых данных, операция ② может избежать отрицательных балансов на счетах, а операция ⑤ может гарантировать, что данные пользователя не изменяются до и после операции.)
Это обеспечивает разрешение проблемы отрицательного баланса. Данные биржи должны проходить через схему для автоматической проверки ограничений и получения числа активов. Однако для этого решения требуется определенная вычислительная мощность и аппаратные условия. Для вычисления подтверждения активов 10 миллионов пользователей на машине с 32 ядрами и 128 ГБ оперативной памяти требуется 15 дней. Вычисление подтверждения резервов можно параллельно. Если есть 10 машин, это займет всего 1,5 дня.

Заключение

Установив соответствующие ограничения, zk-SNARK может избежать возникновения проблем с отрицательными значениями и лучше защитить конфиденциальность и безопасность пользователей. Подтверждение резервов Gate.io теперь может доказать резервные коэффициенты для 100+ монет, и пользователи могут увидеть это, просто щелкнув ссылка. На следующем уроке мы проведем проверку безопасности вашего актива в течение 3 минут.

Відмова від відповідальності
* Криптоінвестиції пов'язані зі значними ризиками. Дійте обережно. Курс не є інвестиційною консультацією.
* Курс створений автором, який приєднався до Gate Learn. Будь-яка думка, висловлена автором, не є позицією Gate Learn.