Доказ знань без знань (ZKP) - це криптографічна техніка, яку вперше запропонували С. Голдвассер, С. Мікалі та К. Ракофф на початку 1980-х років у статті під назвою "Підтвердження резервів"Складність знань інтерактивних доказових систем“. У статті воно було концептуалізовано як теоретична модель для вирішення проблеми перевірки математичних тверджень без розголошення доказів. Ця концепція привернула широку увагу в академічному середовищі, оскільки вона викликає межі традиційних криптографічних технік та надає нові методи обробки конфіденційної інформації.
За час, ZKP перетворився з абстрактної теоретичної концепції в конкретні протоколи, які можуть бути інтегровані в різноманітні застосування. У 2010 році Грот опублікував статтю під назвою " Короткі аргументи, засновані на парності, неінтерактивні нуль-знання «, який став теоретичним віхолем для zk-SNARK (Zero-Knowledge Succinct Non-Interactive Argument of Knowledge), важливого рішення в ZKP. Найважливішим прогресом у застосуванні доказів нульового знання є система доказів нульового знання, яку використовував Z-cash у 2015 році, що забезпечує конфіденційність транзакцій та сум. Подальше поєднання zk-SNARK зі смарт-контрактами розширило його застосування на ширший спектр сценаріїв застосування.
Традиційна ZKP дотримується трьох принципів:
Принцип ZKP можна зрозуміти за допомогою простого прикладу: Якщо мені потрібно довести A, що у мене є номер телефону B, мені не потрібно безпосередньо розголошувати номер телефону B. Замість цього я можу безпосередньо набрати номер телефону B і довести, що у мене є номер телефону B після того, як дійду до нього. Цей процес не витікає номер телефону B.
zk-SNARK ще більше підсилює ці принципи за наступними характеристиками:
У своїй роботі Грот запропонував неінтерактивний метод доведення з нульовим розголошенням, заснований на сполученнях, для перетворення обчислювальної задачі в квадратичну арифметичну програму (QAP). Цей метод використовує криптографію з еліптичною кривою та хеш-функції для побудови ефективного доказу. Подальші конструкції zk-SNARK зазвичай включають чотири етапи.
Щоб проілюструвати це на простому прикладі, припустімо, що у вас є карта скарбів, яка може допомогти вам визначити точне місцезнаходження закопаного скарбу. Ви хочете довести комусь, що знаєте місцезнаходження скарбу, але не хочете розкривати зміст карти скарбів або фактичне місцезнаходження скарбу. Якщо ви використовуєте технологію zk-SNARK, вам необхідно створити складну головоломку з карти скарбів. Ви вибираєте маленький шматочок важливої головоломки (доказ) і показуєте його іншій людині, переконуючи його, що ви знаєте, як вся головоломка, тобто місцезнаходження скарбу, поєднується один з одним, не розкриваючи всієї головоломки. Однак для цього вам потрібно отримати деякі спеціальні позначки від перевіреної друкарні, які використовуються для підтвердження справжності вашого шматочка пазла.
Попередній обговорення зазначало, що zk-SNARK дозволяє встановлення спільного посилання, що означає, що можуть бути встановлені обмеження на робочому колу. На прикладі резерву Gate.io встановлено п'ять основних обмежень в колі, як показано нижче:
① Перед вставкою чистих активів користувача в дерево Меркля вузол, що відповідає ідентифікатору користувача, є порожнім.
② Розрахуйте загальну вартість активів/пасивів користувача на основі списку активів користувача та ціни кожного активу. Загальна вартість активів повинна бути більшою, ніж загальна вартість пасивів.
③ Додайте активи/зобов'язання користувача до активів/зобов'язань біржі.
④ Розрахуйте хеш-статус користувача, використовуючи ідентифікатор користувача, загальні активи/зобов'язання та список активів. Вставте стан користувача в дерево Меркла, щоб отримати новий корінь Меркла.
⑤ Значення хешу кореневого вузла дерева до того, як попередній користувач створить операцію користувача, повинно бути рівним значенню хешу після того, як наступний користувач створить операцію користувача.
(Операція ① може уникнути, щоб дані вузла були неправдивими, операція ② може уникнути рахунки з від'ємним балансом, а операція ⑤ може забезпечити, що дані користувача не змінюються до та після операції.)
Це забезпечує вирішення проблеми від'ємного балансу. Дані біржі потрібно лише пройти через коло, щоб автоматично виконати перевірки обмежень та отримати номер активу. Однак для цього рішення потрібна певна обчислювальна потужність та апаратні умови. Для обчислення підтвердження активів 10 мільйонів користувачів на 32-ядерній машині з 128 ГБ оперативної пам'яті потрібно 15 днів. Обчислення Підтвердження резервів може бути паралелізовано. Якщо є 10 машин, це займе лише 1,5 днів.
Встановлюючи відповідні обмеження, zk-SNARK може уникнути виникнення проблем з від'ємним значенням і краще захистити конфіденційність і безпеку користувачів. Proof of Reserves від Gate.io тепер може доводити коефіцієнти резервування для 100+ монет, і користувачі можуть переглянути його, просто натиснувши кнопку посилання. У наступному уроці ми покажемо вам, як перевірити безпеку ваших активів протягом 3 хвилин.
Доказ знань без знань (ZKP) - це криптографічна техніка, яку вперше запропонували С. Голдвассер, С. Мікалі та К. Ракофф на початку 1980-х років у статті під назвою "Підтвердження резервів"Складність знань інтерактивних доказових систем“. У статті воно було концептуалізовано як теоретична модель для вирішення проблеми перевірки математичних тверджень без розголошення доказів. Ця концепція привернула широку увагу в академічному середовищі, оскільки вона викликає межі традиційних криптографічних технік та надає нові методи обробки конфіденційної інформації.
За час, ZKP перетворився з абстрактної теоретичної концепції в конкретні протоколи, які можуть бути інтегровані в різноманітні застосування. У 2010 році Грот опублікував статтю під назвою " Короткі аргументи, засновані на парності, неінтерактивні нуль-знання «, який став теоретичним віхолем для zk-SNARK (Zero-Knowledge Succinct Non-Interactive Argument of Knowledge), важливого рішення в ZKP. Найважливішим прогресом у застосуванні доказів нульового знання є система доказів нульового знання, яку використовував Z-cash у 2015 році, що забезпечує конфіденційність транзакцій та сум. Подальше поєднання zk-SNARK зі смарт-контрактами розширило його застосування на ширший спектр сценаріїв застосування.
Традиційна ZKP дотримується трьох принципів:
Принцип ZKP можна зрозуміти за допомогою простого прикладу: Якщо мені потрібно довести A, що у мене є номер телефону B, мені не потрібно безпосередньо розголошувати номер телефону B. Замість цього я можу безпосередньо набрати номер телефону B і довести, що у мене є номер телефону B після того, як дійду до нього. Цей процес не витікає номер телефону B.
zk-SNARK ще більше підсилює ці принципи за наступними характеристиками:
У своїй роботі Грот запропонував неінтерактивний метод доведення з нульовим розголошенням, заснований на сполученнях, для перетворення обчислювальної задачі в квадратичну арифметичну програму (QAP). Цей метод використовує криптографію з еліптичною кривою та хеш-функції для побудови ефективного доказу. Подальші конструкції zk-SNARK зазвичай включають чотири етапи.
Щоб проілюструвати це на простому прикладі, припустімо, що у вас є карта скарбів, яка може допомогти вам визначити точне місцезнаходження закопаного скарбу. Ви хочете довести комусь, що знаєте місцезнаходження скарбу, але не хочете розкривати зміст карти скарбів або фактичне місцезнаходження скарбу. Якщо ви використовуєте технологію zk-SNARK, вам необхідно створити складну головоломку з карти скарбів. Ви вибираєте маленький шматочок важливої головоломки (доказ) і показуєте його іншій людині, переконуючи його, що ви знаєте, як вся головоломка, тобто місцезнаходження скарбу, поєднується один з одним, не розкриваючи всієї головоломки. Однак для цього вам потрібно отримати деякі спеціальні позначки від перевіреної друкарні, які використовуються для підтвердження справжності вашого шматочка пазла.
Попередній обговорення зазначало, що zk-SNARK дозволяє встановлення спільного посилання, що означає, що можуть бути встановлені обмеження на робочому колу. На прикладі резерву Gate.io встановлено п'ять основних обмежень в колі, як показано нижче:
① Перед вставкою чистих активів користувача в дерево Меркля вузол, що відповідає ідентифікатору користувача, є порожнім.
② Розрахуйте загальну вартість активів/пасивів користувача на основі списку активів користувача та ціни кожного активу. Загальна вартість активів повинна бути більшою, ніж загальна вартість пасивів.
③ Додайте активи/зобов'язання користувача до активів/зобов'язань біржі.
④ Розрахуйте хеш-статус користувача, використовуючи ідентифікатор користувача, загальні активи/зобов'язання та список активів. Вставте стан користувача в дерево Меркла, щоб отримати новий корінь Меркла.
⑤ Значення хешу кореневого вузла дерева до того, як попередній користувач створить операцію користувача, повинно бути рівним значенню хешу після того, як наступний користувач створить операцію користувача.
(Операція ① може уникнути, щоб дані вузла були неправдивими, операція ② може уникнути рахунки з від'ємним балансом, а операція ⑤ може забезпечити, що дані користувача не змінюються до та після операції.)
Це забезпечує вирішення проблеми від'ємного балансу. Дані біржі потрібно лише пройти через коло, щоб автоматично виконати перевірки обмежень та отримати номер активу. Однак для цього рішення потрібна певна обчислювальна потужність та апаратні умови. Для обчислення підтвердження активів 10 мільйонів користувачів на 32-ядерній машині з 128 ГБ оперативної пам'яті потрібно 15 днів. Обчислення Підтвердження резервів може бути паралелізовано. Якщо є 10 машин, це займе лише 1,5 днів.
Встановлюючи відповідні обмеження, zk-SNARK може уникнути виникнення проблем з від'ємним значенням і краще захистити конфіденційність і безпеку користувачів. Proof of Reserves від Gate.io тепер може доводити коефіцієнти резервування для 100+ монет, і користувачі можуть переглянути його, просто натиснувши кнопку посилання. У наступному уроці ми покажемо вам, як перевірити безпеку ваших активів протягом 3 хвилин.