Система нульового знання виникла в 1985 році завдяки статті Голдвассера, Мікалі та Ракофа «Складність знання інтерактивних доказових систем». У цій статті розглядається кількість знань, які потрібно обміняти під час багатократної взаємодії для підтвердження правильності твердження в інтерактивних системах. Якщо доказ може бути завершено без розкриття будь-якої додаткової інформації, то це називається нульовим знанням.
Ранні системи zk-SNARKs мали низьку ефективність і практичність, залишаючись переважно на теоретичному рівні. Лише за останні 10 років, з широким застосуванням криптографії в сфері криптовалют, zk-SNARKs поступово стали важливим напрямком досліджень. Серед них розробка універсальних, неінтерактивних протоколів zk-SNARKs з обмеженим масштабом доказів є ключовою метою.
Прорив у нульових знаннях стався завдяки статті Грота, опублікованій у 2010 році, яка заклала теоретичну основу для zk-SNARKs. У 2015 році Zcash застосував нульові знання для захисту приватності транзакцій, відкривши широке застосування нульових знань у практичних сценаріях.
Після цього деякі важливі наукові досягнення включають:
Протокол Pinocchio 2013 року суттєво підвищив ефективність доказів та верифікації
Groth16 2016 року ще більше спростив масштаб доказів і підвищив ефективність перевірки
У 2017 році Bulletproofs запропонували короткі алгоритми доказів без необхідності надійних налаштувань.
У 2018 році були представлені zk-STARKs, які запропонували квантово-стійкий протокол нульового знання.
Інші нові розробки, такі як PLONK, Halo2 тощо, також покращили zk-SNARKs в різних аспектах.
zk-SNARKs основні застосування
Найбільш поширеними двома застосуваннями zk-SNARKs на сьогодні є захист приватності та масштабування.
Ранні додатки для конфіденційних транзакцій, такі як Zcash та Monero, користувалися великою увагою, але потреба в конфіденційності не виявилася настільки вираженою, як очікувалося, і такі проекти поступово відійшли на другий план. У порівнянні з цим, потреба в масштабуванні стає все більш терміновою. Особливо після переходу Ethereum 2.0 на маршрут, орієнтований на rollup, рішення для масштабування на основі zk-SNARKs знову стало в центрі уваги галузі.
приватні транзакції
Представницькі проекти приватних транзакцій включають:
Zcash: використовує zk-SNARKs для забезпечення конфіденційності транзакцій
Monero: використовує алгоритм Bulletproofs
Tornado Cash: змішувальний пул на основі Ethereum, що використовує zk-SNARKs
Процес приватних транзакцій Zcash включає в себе налаштування системи, генерацію ключів, емісію монет, генерацію доказів транзакцій, верифікацію та отримання. Однак у Zcash також є деякі обмеження, такі як модель UTXO, що ускладнює інтеграцію з іншими додатками, фактичний рівень використання приватних транзакцій не є високим.
Tornado Cash використовує єдиний великий змішувальний пул, що забезпечує кращу універсальність. Він базується на реалізації zk-SNARKs на основі Groth16, що гарантує, що тільки внесені монети можуть бути витрачені, і кожна монета може бути витрачена лише один раз.
розширення
zk-SNARKs в контексті масштабування в основному використовується в zk-rollup. Основні ролі zk-rollup - це Sequencer і Aggregator. Sequencer відповідає за упаковку транзакцій, Aggregator об'єднує велику кількість транзакцій і генерує zk-SNARKs для оновлення дерева станів Ethereum.
Переваги zk-rollup полягають у низьких витратах, швидкості транзакцій та захисті конфіденційності. Недоліки – велике навантаження на обчислення для генерації доказів, а також SNARK потребує надійного налаштування.
Наразі основні проекти zk-rollup включають:
StarkNet: використовує zk-STARKs, не підтримує EVM
zkSync: використовує PLONK, підтримує EVM
Aztec: розробила протокол PLONK, з пріоритетом на конфіденційність
Scroll: прагне реалізувати EVM-сумісний zk-rollup
Сумісність з EVM є великою проблемою для zk-rollup. В даний час основні рішення мають два напрямки: повна сумісність з операціями Solidity або розробка нової віртуальної машини, дружньої до ZK, з сумісністю з Solidity. Покращення сумісності з EVM матиме великий вплив на розвиток екосистеми ZK.
Основні принципи zk-SNARK
zk-SNARKs означає "нульові знання, стислі неінтерактивні докази знань". Він має такі характеристики:
zk-SNARKs: не розкриває додаткову інформацію
Простота: низка витрат на верифікацію
Неперервна взаємодія: не потребує багаторазової взаємодії
Доказ: обчислювально надійний
Знання: Доказуючий повинен знати дійсну інформацію
Принцип реалізації zk-SNARK на базі Groth16 включає такі етапи:
Перетворіть проблему на схему
Перетворення схеми в формат R1CS
Перетворення R1CS у форму QAP
Генерація параметрів довірених налаштувань
Генерація та верифікація zk-SNARKs
Технологія zk-SNARKs швидко розвивається, і в майбутньому має можливість відігравати важливу роль у багатьох сферах.
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
Еволюція технології zk-SNARKs: від теоретичного прориву до розширення застосувань
zk-SNARKs: еволюція від теорії до застосування
Розвиток zk-SNARKs
Система нульового знання виникла в 1985 році завдяки статті Голдвассера, Мікалі та Ракофа «Складність знання інтерактивних доказових систем». У цій статті розглядається кількість знань, які потрібно обміняти під час багатократної взаємодії для підтвердження правильності твердження в інтерактивних системах. Якщо доказ може бути завершено без розкриття будь-якої додаткової інформації, то це називається нульовим знанням.
Ранні системи zk-SNARKs мали низьку ефективність і практичність, залишаючись переважно на теоретичному рівні. Лише за останні 10 років, з широким застосуванням криптографії в сфері криптовалют, zk-SNARKs поступово стали важливим напрямком досліджень. Серед них розробка універсальних, неінтерактивних протоколів zk-SNARKs з обмеженим масштабом доказів є ключовою метою.
Прорив у нульових знаннях стався завдяки статті Грота, опублікованій у 2010 році, яка заклала теоретичну основу для zk-SNARKs. У 2015 році Zcash застосував нульові знання для захисту приватності транзакцій, відкривши широке застосування нульових знань у практичних сценаріях.
Після цього деякі важливі наукові досягнення включають:
Інші нові розробки, такі як PLONK, Halo2 тощо, також покращили zk-SNARKs в різних аспектах.
zk-SNARKs основні застосування
Найбільш поширеними двома застосуваннями zk-SNARKs на сьогодні є захист приватності та масштабування.
Ранні додатки для конфіденційних транзакцій, такі як Zcash та Monero, користувалися великою увагою, але потреба в конфіденційності не виявилася настільки вираженою, як очікувалося, і такі проекти поступово відійшли на другий план. У порівнянні з цим, потреба в масштабуванні стає все більш терміновою. Особливо після переходу Ethereum 2.0 на маршрут, орієнтований на rollup, рішення для масштабування на основі zk-SNARKs знову стало в центрі уваги галузі.
приватні транзакції
Представницькі проекти приватних транзакцій включають:
Процес приватних транзакцій Zcash включає в себе налаштування системи, генерацію ключів, емісію монет, генерацію доказів транзакцій, верифікацію та отримання. Однак у Zcash також є деякі обмеження, такі як модель UTXO, що ускладнює інтеграцію з іншими додатками, фактичний рівень використання приватних транзакцій не є високим.
Tornado Cash використовує єдиний великий змішувальний пул, що забезпечує кращу універсальність. Він базується на реалізації zk-SNARKs на основі Groth16, що гарантує, що тільки внесені монети можуть бути витрачені, і кожна монета може бути витрачена лише один раз.
розширення
zk-SNARKs в контексті масштабування в основному використовується в zk-rollup. Основні ролі zk-rollup - це Sequencer і Aggregator. Sequencer відповідає за упаковку транзакцій, Aggregator об'єднує велику кількість транзакцій і генерує zk-SNARKs для оновлення дерева станів Ethereum.
Переваги zk-rollup полягають у низьких витратах, швидкості транзакцій та захисті конфіденційності. Недоліки – велике навантаження на обчислення для генерації доказів, а також SNARK потребує надійного налаштування.
Наразі основні проекти zk-rollup включають:
Сумісність з EVM є великою проблемою для zk-rollup. В даний час основні рішення мають два напрямки: повна сумісність з операціями Solidity або розробка нової віртуальної машини, дружньої до ZK, з сумісністю з Solidity. Покращення сумісності з EVM матиме великий вплив на розвиток екосистеми ZK.
Основні принципи zk-SNARK
zk-SNARKs означає "нульові знання, стислі неінтерактивні докази знань". Він має такі характеристики:
Принцип реалізації zk-SNARK на базі Groth16 включає такі етапи:
Технологія zk-SNARKs швидко розвивається, і в майбутньому має можливість відігравати важливу роль у багатьох сферах.