Bài học 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-knowledge: Якщо висловлювання є правдивим, верифікатор не зможе отримати нічого, крім факту, що висловлювання є правдивим. Іншими словами, процес верифікації не розкриє жодної інформації, яка може бути використана для побудови доведення.

Принцип 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 може уникнути виникнення проблем з від'ємним значенням і краще захистити конфіденційність і безпеку користувачів. Proof of Reserves від Gate.io тепер може доводити коефіцієнти резервування для 100+ монет, і користувачі можуть переглянути його, просто натиснувши кнопку посилання. У наступному уроці ми покажемо вам, як перевірити безпеку ваших активів протягом 3 хвилин.

Tuyên bố từ chối trách nhiệm
* Đầu tư tiền điện tử liên quan đến rủi ro đáng kể. Hãy tiến hành một cách thận trọng. Khóa học không nhằm mục đích tư vấn đầu tư.
* Khóa học được tạo bởi tác giả đã tham gia Gate Learn. Mọi ý kiến chia sẻ của tác giả không đại diện cho Gate Learn.
Danh mục
Bài học 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-knowledge: Якщо висловлювання є правдивим, верифікатор не зможе отримати нічого, крім факту, що висловлювання є правдивим. Іншими словами, процес верифікації не розкриє жодної інформації, яка може бути використана для побудови доведення.

Принцип 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 може уникнути виникнення проблем з від'ємним значенням і краще захистити конфіденційність і безпеку користувачів. Proof of Reserves від Gate.io тепер може доводити коефіцієнти резервування для 100+ монет, і користувачі можуть переглянути його, просто натиснувши кнопку посилання. У наступному уроці ми покажемо вам, як перевірити безпеку ваших активів протягом 3 хвилин.

Tuyên bố từ chối trách nhiệm
* Đầu tư tiền điện tử liên quan đến rủi ro đáng kể. Hãy tiến hành một cách thận trọng. Khóa học không nhằm mục đích tư vấn đầu tư.
* Khóa học được tạo bởi tác giả đã tham gia Gate Learn. Mọi ý kiến chia sẻ của tác giả không đại diện cho Gate Learn.