Огляд технології zk-SNARKs та перспективи на майбутнє
Резюме
zk-SNARKs(ZKP) як важлива криптографічна технологія, у сфері блокчейну широко вважається одним з найбільш революційних інновацій після технології розподілених реєстрів. У цій статті проведено систематичний огляд розвитку технології ZKP за останні сорок років і останніх досліджень.
Спочатку було представлено основні концепції та історичний контекст ZKP, з акцентом на аналіз технології ZKP на основі схем, включаючи дизайн, застосування та методи оптимізації моделей zk-SNARKs, Pinocchio, Bulletproofs та ін. У частині, що стосується обчислювального середовища, стаття представляє ZKVM і ZKEVM, обговорюючи, як вони підвищують здатність обробки транзакцій, захищають конфіденційність та підвищують ефективність перевірки. У статті також розглядається механізм роботи ZK Rollup як рішення для розширення Layer 2 та методи оптимізації, а також останні досягнення в апаратному прискоренні, гібридних рішеннях і спеціалізованих ZK EVM.
Нарешті, у статті розглядаються нові концепції, такі як ZKCoprocessor, ZKML, ZKThreads, ZK Sharding та ZK StateChannels, а також обговорюється їхній потенціал у сфері масштабованості, взаємодії та захисту конфіденційності в блокчейні.
Аналізуючи ці новітні технології та тенденції розвитку, ця стаття надає всебічний погляд на розуміння та застосування технології zk-SNARKs, демонструючи її величезний потенціал у підвищенні ефективності та безпеки блокчейн-систем, а також надаючи важливі рекомендації для майбутніх інвестиційних рішень.
Каталог
Вступ
Одне. Основи zk-SNARKs
Огляд
zk-SNARKs приклад
Два. Некомунікаційні zk-SNARKs
Фон
Запропонування NIZK
Перетворення Фіата-Шаміра
Йенс Грот та його дослідження
Інші дослідження
Три, основані на схемах zk-SNARKs
Фон
Основні поняття та характеристики моделей електричних схем
Дизайн та застосування електричних схем у zk-SNARKs
Потенційні недоліки та виклики
Чотири, zk-SNARKs модель
Фон
Загальні алгоритмічні моделі
Схема на основі лінійного PCP та задачі дискретного логарифму
Схема, основана на доказательствах звичайних людей
Докази нульового знання на основі ймовірності
Класифікація етапу налаштування на основі CPC
П'ять. Огляд та розвиток нульових знань віртуальної машини
Фон
Існуюча класифікація ZKVM
Парадигми фронтенду та бекенду
Переваги та недоліки парадигми ZKVM
Шість, огляд і розвиток нульових знань Ethereum Virtual Machine
Фон
Принцип роботи ZKEVM
Процес реалізації ZKEVM
Особливості ZKEVM
Сім, огляд та розвиток рішень другого рівня з нульовими знаннями
Фон
Механізм роботи ZK Rollup
Недоліки та оптимізація ZK Rollup
Вісім. Майбутні напрямки розвитку zk-SNARKs
Прискорення розвитку обчислювального середовища
Виникнення та розвиток ZKML
Розвиток технологій розширення ZKP
Розвиток інтероперабельності zk-SNARKs
Дев'ять, висновок
Вступ
З появою епохи Web3, блокчейн-додатки (DApps) демонструють вибуховий ріст, щодня з'являються нові додатки. У останні роки блокчейн-платформи щоденно обробляють мільйони активностей користувачів, обробляючи десятки мільярдів транзакцій. Ці транзакції генерують величезну кількість даних, які зазвичай містять чутливу особисту інформацію, таку як особа користувача, сума транзакції, адреса рахунку та залишок тощо. З огляду на відкритість і прозорість блокчейну, ці збережені дані є загальнодоступними для всіх, що викликає різноманітні питання безпеки та конфіденційності.
Наразі існує кілька криптографічних технологій, які можуть впоратися з цими викликами, зокрема гомоморфне шифрування, кільцеві підписи, безпечні багатосторонні обчислення та zk-SNARKs. Гомоморфне шифрування дозволяє виконувати обчислення без розшифрування шифротексту, що допомагає захистити безпеку залишків рахунків та сум транзакцій, але не може захистити адреси рахунків. Кільцеві підписи пропонують особливу форму цифрового підпису, яка здатна приховувати особу підписувача, що забезпечує захист адреси рахунка, але не може захистити залишки рахунків та суми транзакцій. Безпечні багатосторонні обчислення дозволяють розподілити обчислювальні завдання між кількома учасниками, не розкриваючи жодному з учасників дані інших учасників, ефективно захищаючи залишки рахунків та суми транзакцій, але також не можуть захистити адреси рахунків. Крім того, ці технології не можуть перевірити, чи має доказувач достатню суму для транзакцій у середовищі блокчейну без розкриття сум транзакцій, адрес рахунків і залишків рахунків.
zk-SNARKs(ZKP) є більш комплексним рішенням, цей протокол верифікації дозволяє перевіряти правильність певних тверджень без розкриття будь-яких проміжних даних. Цей протокол не потребує складних інфраструктур відкритих ключів, а його повторне впровадження не дає можливості зловмисним користувачам отримати додаткову корисну інформацію. Завдяки ZKP, верифікатор може перевірити, чи має доводчик достатню суму транзакцій, не розкриваючи жодних приватних даних транзакцій. Процес верифікації включає в себе створення доказу, що містить суму транзакції, яку заявляє доводчик, а потім передає цей доказ верифікатору, який проводить попередньо визначені обчислення та видає остаточний результат обчислень, щоб вивести висновок про прийняття заяви доводчика. Якщо заява доводчика прийнята, це означає, що вони мають достатню суму транзакцій. Вищезазначений процес верифікації може бути зафіксований на блокчейні, без будь-якого підроблення.
Ця характеристика ZKP робить його центральною фігурою в блокчейн-угодах та застосуваннях криптовалют, особливо в аспектах захисту конфіденційності та масштабування мережі, що робить його не лише об'єктом академічних досліджень, але й широко вважається однією з найважливіших технічних інновацій з моменту успішної реалізації дистрибутивних технологій бухгалтерського обліку (, особливо Біткоїна ). Водночас це також ключова траєкторія для галузевих застосувань та венчурного капіталу.
Відтак, численні мережеві проекти на основі ZKP почали з'являтися, такі як ZkSync, StarkNet, Mina, Filecoin та Aleo. У міру розвитку цих проектів постійно з'являються нові алгоритми для ZKP, повідомляється, що майже щотижня з'являється новий алгоритм. Крім того, розвиток апаратного забезпечення, пов'язаного з технологією ZKP, також швидко просувається, включаючи чіпи, оптимізовані спеціально для ZKP. Наприклад, такі проекти, як Ingonyama, Irreducible та Cysic, вже завершили масштабний збір коштів; ці досягнення не тільки демонструють швидкий прогрес технології ZKP, але й відображають перехід від загального апаратного забезпечення до спеціалізованого, такого як GPU, FPGA та ASIC.
Ці досягнення свідчать про те, що технологія zk-SNARKs є не лише важливим проривом у галузі криптографії, але й ключовим рушієм для реалізації більш широких застосувань технології блокчейн (, особливо в підвищенні захисту приватності та обробної спроможності ).
Тому ми вирішили систематично зібрати знання про zk-SNARKs ( ZKP ), щоб краще допомогти нам у прийнятті майбутніх інвестиційних рішень. Для цього ми комплексно переглянули основні наукові статті, пов'язані з ZKP (, та відсортували їх за релевантністю та кількістю цитувань ); одночасно ми також детально проаналізували матеріали та білліоти провідних проектів у цій галузі (, відсортовані за обсягом фінансування ). Ці комплексні збори та аналізи матеріалів стали міцною основою для написання цієї статті.
Одне. Основи zk-SNARKs
1.Огляд
У 1985 році вчені Голдвассер, Мікалі та Раккофф вперше представили нульові знання в статті "Складність знань інтерактивних систем доведення" (The Knowledge Complexity of Interactive Proof-Systems) і визначили такі терміни, як нульове знання ( Zero-Knowledge Proof, ZKP ) та інтерактивне нульове знання ( Interactive Zero-Knowledge, IZK ). Ця стаття стала основоположною в галузі нульових знань, визначивши багато концепцій, які вплинули на подальші наукові дослідження. Наприклад, визначення знань - це "недоступний обчислювальний вихід", тобто знання повинні бути виходом, і це недоступне обчислення, що означає, що воно не може бути простими функціями, а має бути складною функцією. Недоступне обчислення зазвичай можна розуміти як NP-проблему, тобто проблему, розв'язання якої можна перевірити за поліноміальний час, при цьому поліноміальний час означає, що час виконання алгоритму можна представити у вигляді поліноміальної функції від розміру входу. Це важливий стандарт для оцінки ефективності алгоритмів і їх здійсненності в комп'ютерних науках. Оскільки процес розв'язання NP-проблеми є складним, його вважають недоступним обчисленням; проте процес перевірки є відносно простим, тому він дуже підходить для перевірки нульових знань.
Класичним прикладом NP-проблеми є задача мандрівного торговця, в якій потрібно знайти найкоротший шлях, що проходить через ряд міст і повертається до початкової точки. Хоча знайти найкоротший шлях може бути важко, перевірити, чи є даний шлях найкоротшим, відносно легко. Оскільки перевірка загальної відстані конкретного шляху може бути виконана за поліноміальний час.
Голдвассер та інші в своїй статті ввели концепцію "складності знань", щоб кількісно оцінити обсяг знань, які доказувач розкриває перевіряючому в інтерактивних системах доказів. Вони також запропонували інтерактивні системи доказів (Interactive Proof Systems, IPS), де доказувач (Prover) та перевіряючий (Verifier) взаємодіють у кількох раундах для підтвердження істинності певного твердження.
Отже, визначення нульових знань, підсумоване Голдвассером та іншими, є особливим інтерактивним доказом, у якому перевіряючий під час перевірки не отримує жодної додаткової інформації, окрім істинності твердження; і були запропоновані три основні характеристики, включаючи:
Повнота: якщо свідчення є істинним, чесний довіритель може переконати чесного перевіряючого в цьому факті;
Надійність: якщо доводчик не знає змісту заяви, він може обманути перевіряючого лише з незначною ймовірністю;
Нульові докази: після завершення процесу доказування, перевіряючий отримує лише інформацію "доказник має це знання", але не може отримати жодної додаткової інформації.
2.zk-SNARKs приклад
Для кращого розуміння zk-SNARKs та їхніх властивостей наведено приклад перевірки того, чи має довірена сторона певну конфіденційну інформацію, який поділяється на три етапи: налаштування, виклик та відповідь.
Перший крок: налаштування
На цьому етапі мета доказувача полягає в тому, щоб створити свідчення, яке підтверджує, що він знає певне секретне число s, але не показує s безпосередньо. Нехай секретне число s;
Виберіть два великі прості числа p і q, обчисліть їхній добуток n. Нехай прості числа p і q, обчисліть отримане n;
Обчисліть v=s^2 mod n, тут v, як частина доказу, надсилається перевіряльнику, але цього недостатньо, щоб перевіряльник або будь-який спостерігач міг вивести s.
Випадково виберіть ціле число r, обчисліть x=r^2 mod n і надішліть його перевіряльнику. Це значення x використовується для подальшого процесу перевірки, але також не розкриває s. Нехай випадкове ціле число r, обчислене x.
Другий крок: виклик
Валідатор випадковим чином вибирає біт a(, який може бути 0 або 1), а потім відправляє його доказнику. Це "виклик" визначає наступні дії, які повинен вжити доказник.
Третій крок: відповідь
Згідно з a-значенням, яке надсилає валідатор, довіритель відповідає:
Якщо a=0, то доводчик надсилає g=r(, де r - це число, яке він раніше випадково вибрав ).
Якщо a=1, доводчик обчислює g=rs mod n і надсилає. Нехай перевіряючий надсилає випадковий біт a, залежно від значення a, доводчик обчислює g;
В кінці, валідатор перевіряє, чи x дорівнює g^2 mod n, на основі отриманого g. Якщо рівність виконується, валідатор приймає це свідчення. Коли a=0, валідатор обчислює g^2 mod n, праворуч перевіряє x; коли a=1, валідатор обчислює g^2 mod n, праворуч перевіряє xv.
Тут ми бачимо, що обчислене валідатором значення x=g^2 mod n свідчить про те, що доказувач успішно пройшов процес верифікації, не розкриваючи при цьому свого секретного числа s. Оскільки a може приймати лише 0 або 1, існує лише дві можливості, ймовірність того, що доказувач пройде верифікацію за рахунок удачі, становить 50%( при a=0 ). Але валідатор потім викликає доказувача n разів, доказувач постійно змінює відповідні числа, які подає валідатору, і завжди успішно проходить процес верифікації, таким чином ймовірність того, що доказувач пройде верифікацію за рахунок удачі, становить (1/2)^n( безмежно наближається до 0), що доводить, що доказувач дійсно знає певне секретне число s. Цей приклад підтверджує цілісність, надійність і нульову обізнаність системи нульових знань.
Два, неінтерактивні zk-SNARKs
1.Фон
zk-SNARKs(ZKP)у традиційних концепціях, як правило, є інтерактивними та онлайн-протоколами; наприклад, протокол Сігми зазвичай потребує три-п’ять раундів інтерактивності для завершення автентифікації. Однак у таких сценаріях, як миттєві транзакції або голосування, часто немає можливості для багаторазової інтерактивності, особливо в застосуванні технології блокчейн, функція офлайн-перевірки є особливо важливою.
2.Запропонування NIZK
У 1988 році Блум, Фельдман і Мікалі вперше представили концепцію неінтерактивних нульових доказів (NIZK) (, довівши, що без потреби в багаторазових інтеракціях можливий процес сертифікації між довірителем )Prover( і перевіряючим )Verifier(. Цей прорив зробив можливими миттєві транзакції, голосування та реалізацію блокчейн-додатків.
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
15 лайків
Нагородити
15
7
Поділіться
Прокоментувати
0/400
BlockDetective
· 07-15 23:55
zksnark справді чудовий
Переглянути оригіналвідповісти на0
FunGibleTom
· 07-15 04:16
Це хто зрозуміє... вже майже з'їхав з глузду.
Переглянути оригіналвідповісти на0
FlashLoanLord
· 07-14 05:09
Не можу прочитати, навіть собаки не розуміють.
Переглянути оригіналвідповісти на0
wagmi_eventually
· 07-14 05:05
zkЯ користувався лише stark, решту не розумію
Переглянути оригіналвідповісти на0
JustHereForMemes
· 07-14 04:55
zk ця технологія насправді дивовижна
Переглянути оригіналвідповісти на0
ImpermanentPhilosopher
· 07-14 04:55
DOGE де не працює, zkp не використовували раніше?
Переглянути оригіналвідповісти на0
DaoGovernanceOfficer
· 07-14 04:53
*сумно* ще одне опитування без критичних висновків Віталіка з його zk статті 2022 року...
40-річна еволюція технології zk-SNARKs: всебічний аналіз від основ до ZK Rollup
Огляд технології zk-SNARKs та перспективи на майбутнє
Резюме
zk-SNARKs(ZKP) як важлива криптографічна технологія, у сфері блокчейну широко вважається одним з найбільш революційних інновацій після технології розподілених реєстрів. У цій статті проведено систематичний огляд розвитку технології ZKP за останні сорок років і останніх досліджень.
Спочатку було представлено основні концепції та історичний контекст ZKP, з акцентом на аналіз технології ZKP на основі схем, включаючи дизайн, застосування та методи оптимізації моделей zk-SNARKs, Pinocchio, Bulletproofs та ін. У частині, що стосується обчислювального середовища, стаття представляє ZKVM і ZKEVM, обговорюючи, як вони підвищують здатність обробки транзакцій, захищають конфіденційність та підвищують ефективність перевірки. У статті також розглядається механізм роботи ZK Rollup як рішення для розширення Layer 2 та методи оптимізації, а також останні досягнення в апаратному прискоренні, гібридних рішеннях і спеціалізованих ZK EVM.
Нарешті, у статті розглядаються нові концепції, такі як ZKCoprocessor, ZKML, ZKThreads, ZK Sharding та ZK StateChannels, а також обговорюється їхній потенціал у сфері масштабованості, взаємодії та захисту конфіденційності в блокчейні.
Аналізуючи ці новітні технології та тенденції розвитку, ця стаття надає всебічний погляд на розуміння та застосування технології zk-SNARKs, демонструючи її величезний потенціал у підвищенні ефективності та безпеки блокчейн-систем, а також надаючи важливі рекомендації для майбутніх інвестиційних рішень.
Каталог
Вступ
Одне. Основи zk-SNARKs
Два. Некомунікаційні zk-SNARKs
Три, основані на схемах zk-SNARKs
Чотири, zk-SNARKs модель
П'ять. Огляд та розвиток нульових знань віртуальної машини
Шість, огляд і розвиток нульових знань Ethereum Virtual Machine
Сім, огляд та розвиток рішень другого рівня з нульовими знаннями
Вісім. Майбутні напрямки розвитку zk-SNARKs
Дев'ять, висновок
Вступ
З появою епохи Web3, блокчейн-додатки (DApps) демонструють вибуховий ріст, щодня з'являються нові додатки. У останні роки блокчейн-платформи щоденно обробляють мільйони активностей користувачів, обробляючи десятки мільярдів транзакцій. Ці транзакції генерують величезну кількість даних, які зазвичай містять чутливу особисту інформацію, таку як особа користувача, сума транзакції, адреса рахунку та залишок тощо. З огляду на відкритість і прозорість блокчейну, ці збережені дані є загальнодоступними для всіх, що викликає різноманітні питання безпеки та конфіденційності.
Наразі існує кілька криптографічних технологій, які можуть впоратися з цими викликами, зокрема гомоморфне шифрування, кільцеві підписи, безпечні багатосторонні обчислення та zk-SNARKs. Гомоморфне шифрування дозволяє виконувати обчислення без розшифрування шифротексту, що допомагає захистити безпеку залишків рахунків та сум транзакцій, але не може захистити адреси рахунків. Кільцеві підписи пропонують особливу форму цифрового підпису, яка здатна приховувати особу підписувача, що забезпечує захист адреси рахунка, але не може захистити залишки рахунків та суми транзакцій. Безпечні багатосторонні обчислення дозволяють розподілити обчислювальні завдання між кількома учасниками, не розкриваючи жодному з учасників дані інших учасників, ефективно захищаючи залишки рахунків та суми транзакцій, але також не можуть захистити адреси рахунків. Крім того, ці технології не можуть перевірити, чи має доказувач достатню суму для транзакцій у середовищі блокчейну без розкриття сум транзакцій, адрес рахунків і залишків рахунків.
zk-SNARKs(ZKP) є більш комплексним рішенням, цей протокол верифікації дозволяє перевіряти правильність певних тверджень без розкриття будь-яких проміжних даних. Цей протокол не потребує складних інфраструктур відкритих ключів, а його повторне впровадження не дає можливості зловмисним користувачам отримати додаткову корисну інформацію. Завдяки ZKP, верифікатор може перевірити, чи має доводчик достатню суму транзакцій, не розкриваючи жодних приватних даних транзакцій. Процес верифікації включає в себе створення доказу, що містить суму транзакції, яку заявляє доводчик, а потім передає цей доказ верифікатору, який проводить попередньо визначені обчислення та видає остаточний результат обчислень, щоб вивести висновок про прийняття заяви доводчика. Якщо заява доводчика прийнята, це означає, що вони мають достатню суму транзакцій. Вищезазначений процес верифікації може бути зафіксований на блокчейні, без будь-якого підроблення.
Ця характеристика ZKP робить його центральною фігурою в блокчейн-угодах та застосуваннях криптовалют, особливо в аспектах захисту конфіденційності та масштабування мережі, що робить його не лише об'єктом академічних досліджень, але й широко вважається однією з найважливіших технічних інновацій з моменту успішної реалізації дистрибутивних технологій бухгалтерського обліку (, особливо Біткоїна ). Водночас це також ключова траєкторія для галузевих застосувань та венчурного капіталу.
Відтак, численні мережеві проекти на основі ZKP почали з'являтися, такі як ZkSync, StarkNet, Mina, Filecoin та Aleo. У міру розвитку цих проектів постійно з'являються нові алгоритми для ZKP, повідомляється, що майже щотижня з'являється новий алгоритм. Крім того, розвиток апаратного забезпечення, пов'язаного з технологією ZKP, також швидко просувається, включаючи чіпи, оптимізовані спеціально для ZKP. Наприклад, такі проекти, як Ingonyama, Irreducible та Cysic, вже завершили масштабний збір коштів; ці досягнення не тільки демонструють швидкий прогрес технології ZKP, але й відображають перехід від загального апаратного забезпечення до спеціалізованого, такого як GPU, FPGA та ASIC.
Ці досягнення свідчать про те, що технологія zk-SNARKs є не лише важливим проривом у галузі криптографії, але й ключовим рушієм для реалізації більш широких застосувань технології блокчейн (, особливо в підвищенні захисту приватності та обробної спроможності ).
Тому ми вирішили систематично зібрати знання про zk-SNARKs ( ZKP ), щоб краще допомогти нам у прийнятті майбутніх інвестиційних рішень. Для цього ми комплексно переглянули основні наукові статті, пов'язані з ZKP (, та відсортували їх за релевантністю та кількістю цитувань ); одночасно ми також детально проаналізували матеріали та білліоти провідних проектів у цій галузі (, відсортовані за обсягом фінансування ). Ці комплексні збори та аналізи матеріалів стали міцною основою для написання цієї статті.
Одне. Основи zk-SNARKs
1.Огляд
У 1985 році вчені Голдвассер, Мікалі та Раккофф вперше представили нульові знання в статті "Складність знань інтерактивних систем доведення" (The Knowledge Complexity of Interactive Proof-Systems) і визначили такі терміни, як нульове знання ( Zero-Knowledge Proof, ZKP ) та інтерактивне нульове знання ( Interactive Zero-Knowledge, IZK ). Ця стаття стала основоположною в галузі нульових знань, визначивши багато концепцій, які вплинули на подальші наукові дослідження. Наприклад, визначення знань - це "недоступний обчислювальний вихід", тобто знання повинні бути виходом, і це недоступне обчислення, що означає, що воно не може бути простими функціями, а має бути складною функцією. Недоступне обчислення зазвичай можна розуміти як NP-проблему, тобто проблему, розв'язання якої можна перевірити за поліноміальний час, при цьому поліноміальний час означає, що час виконання алгоритму можна представити у вигляді поліноміальної функції від розміру входу. Це важливий стандарт для оцінки ефективності алгоритмів і їх здійсненності в комп'ютерних науках. Оскільки процес розв'язання NP-проблеми є складним, його вважають недоступним обчисленням; проте процес перевірки є відносно простим, тому він дуже підходить для перевірки нульових знань.
Класичним прикладом NP-проблеми є задача мандрівного торговця, в якій потрібно знайти найкоротший шлях, що проходить через ряд міст і повертається до початкової точки. Хоча знайти найкоротший шлях може бути важко, перевірити, чи є даний шлях найкоротшим, відносно легко. Оскільки перевірка загальної відстані конкретного шляху може бути виконана за поліноміальний час.
Голдвассер та інші в своїй статті ввели концепцію "складності знань", щоб кількісно оцінити обсяг знань, які доказувач розкриває перевіряючому в інтерактивних системах доказів. Вони також запропонували інтерактивні системи доказів (Interactive Proof Systems, IPS), де доказувач (Prover) та перевіряючий (Verifier) взаємодіють у кількох раундах для підтвердження істинності певного твердження.
Отже, визначення нульових знань, підсумоване Голдвассером та іншими, є особливим інтерактивним доказом, у якому перевіряючий під час перевірки не отримує жодної додаткової інформації, окрім істинності твердження; і були запропоновані три основні характеристики, включаючи:
Повнота: якщо свідчення є істинним, чесний довіритель може переконати чесного перевіряючого в цьому факті;
Надійність: якщо доводчик не знає змісту заяви, він може обманути перевіряючого лише з незначною ймовірністю;
Нульові докази: після завершення процесу доказування, перевіряючий отримує лише інформацію "доказник має це знання", але не може отримати жодної додаткової інформації.
2.zk-SNARKs приклад
Для кращого розуміння zk-SNARKs та їхніх властивостей наведено приклад перевірки того, чи має довірена сторона певну конфіденційну інформацію, який поділяється на три етапи: налаштування, виклик та відповідь.
Перший крок: налаштування
На цьому етапі мета доказувача полягає в тому, щоб створити свідчення, яке підтверджує, що він знає певне секретне число s, але не показує s безпосередньо. Нехай секретне число s;
Виберіть два великі прості числа p і q, обчисліть їхній добуток n. Нехай прості числа p і q, обчисліть отримане n;
Обчисліть v=s^2 mod n, тут v, як частина доказу, надсилається перевіряльнику, але цього недостатньо, щоб перевіряльник або будь-який спостерігач міг вивести s.
Випадково виберіть ціле число r, обчисліть x=r^2 mod n і надішліть його перевіряльнику. Це значення x використовується для подальшого процесу перевірки, але також не розкриває s. Нехай випадкове ціле число r, обчислене x.
Другий крок: виклик
Валідатор випадковим чином вибирає біт a(, який може бути 0 або 1), а потім відправляє його доказнику. Це "виклик" визначає наступні дії, які повинен вжити доказник.
Третій крок: відповідь
Згідно з a-значенням, яке надсилає валідатор, довіритель відповідає:
Якщо a=0, то доводчик надсилає g=r(, де r - це число, яке він раніше випадково вибрав ).
Якщо a=1, доводчик обчислює g=rs mod n і надсилає. Нехай перевіряючий надсилає випадковий біт a, залежно від значення a, доводчик обчислює g;
В кінці, валідатор перевіряє, чи x дорівнює g^2 mod n, на основі отриманого g. Якщо рівність виконується, валідатор приймає це свідчення. Коли a=0, валідатор обчислює g^2 mod n, праворуч перевіряє x; коли a=1, валідатор обчислює g^2 mod n, праворуч перевіряє xv.
Тут ми бачимо, що обчислене валідатором значення x=g^2 mod n свідчить про те, що доказувач успішно пройшов процес верифікації, не розкриваючи при цьому свого секретного числа s. Оскільки a може приймати лише 0 або 1, існує лише дві можливості, ймовірність того, що доказувач пройде верифікацію за рахунок удачі, становить 50%( при a=0 ). Але валідатор потім викликає доказувача n разів, доказувач постійно змінює відповідні числа, які подає валідатору, і завжди успішно проходить процес верифікації, таким чином ймовірність того, що доказувач пройде верифікацію за рахунок удачі, становить (1/2)^n( безмежно наближається до 0), що доводить, що доказувач дійсно знає певне секретне число s. Цей приклад підтверджує цілісність, надійність і нульову обізнаність системи нульових знань.
Два, неінтерактивні zk-SNARKs
1.Фон
zk-SNARKs(ZKP)у традиційних концепціях, як правило, є інтерактивними та онлайн-протоколами; наприклад, протокол Сігми зазвичай потребує три-п’ять раундів інтерактивності для завершення автентифікації. Однак у таких сценаріях, як миттєві транзакції або голосування, часто немає можливості для багаторазової інтерактивності, особливо в застосуванні технології блокчейн, функція офлайн-перевірки є особливо важливою.
2.Запропонування NIZK
У 1988 році Блум, Фельдман і Мікалі вперше представили концепцію неінтерактивних нульових доказів (NIZK) (, довівши, що без потреби в багаторазових інтеракціях можливий процес сертифікації між довірителем )Prover( і перевіряючим )Verifier(. Цей прорив зробив можливими миттєві транзакції, голосування та реалізацію блокчейн-додатків.