Що таке zk-SNARK?

Фото - Що таке zk-SNARK?
zk-SNARK — це найвідоміша форма доказу з нульовим розголошенням (ZKP). За її допомогою користувач підтверджує факт володіння даними без їхнього розкриття іншій стороні. Концепція схожа на гру “Шпигун”, у якій учасники доводять, що знають слово, не називаючи його.
Першу наукову роботу, яка описувала zk-SNARK, було опубліковано у 2013 році. Один із авторів — Алессандро К’єза, співзасновник приватної криптовалюти Zcash та компанії StarkWare Industries (розробник Starknet). Zcash став першою реалізацією zk-SNARK як технологія приватних транзакцій.

Що означає zk-SNARK?

Після Zcash з'явилося багато модифікацій zk-SNARK, проте початкова логіка роботи технології залишається незмінною. Вона описує значення абревіатури zk-SNARK (Zero-Knowledge Succinct Non-Interactive Argument of Knowledge). Розглянемо кожну складову докладніше.

Zero-knowledge. Нульове розголошення гарантує, що жодні дані (крім підтвердження їх валідності) не будуть розкриті. Верифікатор (той, хто перевіряє) валідує інформацію без отримання конкретних даних про неї.

Уявіть собі двох опонентів. Перший — той, хто доводить, — з червоною і зеленою кулями, а другий — верифікатор в окулярах, які роблять кольори однаковими, зберігаючи лише невелику відмінність тонів. Перший намагається переконати опонента, що предмети різного кольору, не розкриваючи, який із них червоний, а який зелений.

Верифікатор одягає окуляри, а той, хто доводить, перемішує кулі в руках. Якщо верифікатор побачить відмінність тонів — кольори різні, якщо ні — однакові. У цьому прикладі окуляри і виконують роль zk-SNARK.

Succinct. У контексті криптографії стислість розуміють як розмір доказу та швидкість його перевірки. Незалежно від складності та обсягу вихідних даних, їх доказ залишається компактним.

Наприклад, вам необхідно вивчити 50-сторінкову книгу. Для того, щоб не читати її, ви використовуєте допомогу посередника (zk-SNARK), який резюмує матеріал. Незважаючи на те, що стислий зміст (доказ) коротший за саму книгу (дані), він все одно передає її суть.

Non-interactive. У деяких системах сторонам потрібно кілька викликів для досягнення консенсусу. Неінтерактивність zk-SNARK полягає у тому, що той, хто доводить, створює один доказ і відправляє його іншій стороні без додаткових комунікацій.

Arguments of Knowledge. Твердження, що той, хто доводить, має деталі операції, а не тільки її результат. Використовуючи zk-SNARK, ви не просто доводите, що "сума двох чисел дорівнює 10", а й підтверджуєте знання конкретних чисел, які були використані.

Варіанти застосування zk-SNARK

Засновник Ethereum Віталік Бутерін розповів про ключові проблеми блокчейну на EDCON2023 — конференції, що відбулася у травні цього року. Він виділив 4 ключові проблеми індустрії:

  • конфіденційність;
  • масштабованість;
  • безпека облікового запису користувача;
  • безпека смартконтрактів.

Він також наголосив на важливості zk-SNARK у вирішенні цих проблем та їхньої ролі у формуванні екосистеми Web3 впродовж найближчого десятиліття. Щоб зрозуміти варіанти застосування zk-SNARK, розглянемо, як він вирішує перші три, найбільш релевантні проблеми.

Масштабування

Rollups — це один із способів масштабування блокчейну, який формує групи з декількох транзакцій та обробляє їх поза основною мережею. zk-Rollups використовують ZKP, роблячи блокчейн більш ефективним.
Принцип роботи zk-Rollups. Джерело: messari.io

Принцип роботи zk-Rollups. Джерело: messari.io

На відміну від традиційних доказових систем, zk-SNARK є агрегатором. Вони збирають єдиний доказ для кількох транзакцій, які перебувають у групі, та обробляють лише його.

Лаконічність zk-SNARK дозволяє ефективно перевірити валідність усіх транзакцій, а неінтерактивність технології зменшує навантаження мережі. Це зумовлює збільшення пропускної здатності блокчейну та зменшення комісій.

zkSync та Polygon Hermez — найбільш відомі проєкти, що використовують zk-SNARK для масштабування Ethereum.

Приватні транзакції

zk-SNARK забезпечує приватність транзакцій у блокчейні. Такі дані, як адреса відправника й одержувача, а також обсяг операції можуть бути замасковані. Незважаючи на те, що деталі приховані, транзакції досі перевіряються валідаторами.

Приватні транзакції у блокчейні — це спосіб уникнути фінансового моніторингу, цензури і протидії фронтранінгу (маніпуляція, суть якої полягає в розміщенні транзакції у блоці перед відомою майбутньою угодою). Проте це також створює зручний інструмент для ведення незаконної діяльності.

Zcash і Tornado Cash — найбільш відомі проєкти, що використовують zk-SNARK для здійснення приватних транзакцій.

Приватність ідентифікації

Підтвердження особи потрібне для доступу до банківських послуг, подорожей та навіть візиту в кінотеатр. Чим частіше людина надає свої особисті дані, тим більша ймовірність того, що вони будуть скомпрометовані.

Використовуючи zk-SNARK, користувач підтверджує валідність своєї особи, не розкриваючи деталі (серію, номер паспорта, прописку тощо). Це також зменшує вимоги до аутентифікації. Замість зберігання всіх даних про користувача, банк чи інша установа зберігають лише доказ його особи.

Zk-creds — протокол для перевірки облікових записів, що використовує zk-SNARK.

Як працює zk-SNARK

Принцип роботи zk-SNARK ґрунтується на криптографічних функціях, включно з функцію генерації ключів, доказами та перевірками. Щоб зрозуміти, як вони взаємодіють, розглянемо кожну детальніше.

Функція генерації ключів 

Функція генерації ключів — це етап налаштування роботи zk-SNARK, у якому створюються криптографічні ключі, що необхідні для функціонування системи. Зокрема, ця функція генерує ключ підтвердження (для створення доказу) та ключ перевірки (для перевірки цього доказу).

Розглянемо систему, в якій C(x,w) — це твердження, яке необхідно перевірити, не розкриваючи його деталей. Тут x — загальнодоступні дані, а w — приватні. Функція установки — математичне подання цього твердження, яке набуває параметра безпеки λ. Використовується для генерації ключа підтвердження pk і ключа перевірки vk.

Установка(C,λ)  → (pk,vk)

Функція генерації доказів

Той, хто доводить, запускає цю функцію для створення криптографічного підтвердження prf, яке потім відправляє опоненту, що перевіряє. Для цього використовуються приватні дані w (англ. witness — свідок), публічні дані x та ключ підтвердження pk.

Доказ(w,x,pk)  → prf

Функція перевірки

Верифікатор використовує цю функцію для перевірки підтвердження, яке йому надав той, хто доводить. Він застосовує доказ prf, ключ верифікації vk та публічні дані x.

Перевірка (prf, vk, x) → True (доказ правильний) або False (доказ неправильний)
Схема роботи zk-SNARK. Джерело: medium.com

Схема роботи zk-SNARK. Джерело: medium.com

Принцип роботи є ефективним, оскільки дотримується трьох базових правил ZKP, а саме:

  1. Повнота. Якщо твердження C(x,w) правильне, то доказ prf завжди буде достовірний.
  2. Стійкість. Якщо твердження C(x,w) неправильне, то будь-який доказ prf, згенерований тим, хто доводить, буде визнаний верифікатором неправильним.
  3. Нульове розголошення. Верифікатор перевіряє доказ prf, не знаючи про приватні дані w.

Важливо розуміти, що "той, хто доводить" і "той, хто перевіряє" — це алгоритми.

Це фундаментальний принцип роботи zk-SNARK. Крім того, існує три концепції, які покладено в основу технології: криптографія еліптичних кривих, довірче налаштування та евристика Фіата-Шаміра.

Криптографія еліптичних кривих. Безпеку zk-SNARK забезпечує криптографія на основі еліптичних кривих (ECC). ECC — це підхід, який використовує відкритий та закритий ключі для шифрування даних. Той самий принцип присутній і у Bitcoin.

Довірче налаштування. Використовується для створення ключа підтвердження та перевірки. Під час цього процесу генеруються спеціальні дані, що мають назву “токсичні відходи”. Якщо вони потраплять до рук зловмисників, останні зможуть створити неправдиві докази. Одне з вирішень цієї проблеми — багатосторонні обчислення.

Багатосторонні обчислення базуються на розподілі зобов'язань між великою кількістю учасників. Токсичні відходи поділені на частини, кожна з яких належить конкретному учаснику мережі. Якщо хоча б один із них знищить свою частку, створити хибний доказ буде неможливо.

Евристика Фіата-Шаміра. Перетворює інтерактивні системи доказів на неінтерактивні. Відрізняє zk-SNARK від інших типів ZKP.
В інтерактивних системах верифікатор відправляє тому, хто доводить, велику кількість випадкових запитів. Це триває, поки він не переконається, що підтвердження є правильним. В евристиці Фіата-Шаміра той, хто доводить, генерує один доказ і відправляє його верифікатору.

Висновок

Як і більшість нових технологій, zk-SNARK може використовуватися для незаконної діяльності, що також впливає і на добросовісних учасників ринку. Наприклад, у 2022 році Міністерство фінансів США запровадило санкції проти криптоміксера Tornado Cash, а багато dApps не підтримують взаємодію з Zcash.

Незважаючи на це, багато хто вважає zk-SNARK одним із головних трендів крипторинку в 2024 році. Зокрема, цю думку поділяє Віталік Бутерін і венчурний фонд a16z. Останній навіть стверджував, що zk-SNARK стане мейнстримом.

Пише про DeFi та криптовалюти через призму технологій.