Ви можете довести, що вам більше 18 років, не розкриваючи дату народження. Ви можете довести, що у вас достатньо грошей для транзакції, не розкриваючи баланс. Ви можете довести, що обчислення було виконано правильно, не розкриваючи вхідні дані. Докази з нульовим розголошенням роблять все це можливим, і вони тихо стають найважливішим криптографічним примітивом у блокчейні з часів хеш-функції.
Підсумок
Більшість вступів до доказів з нульовим розголошенням починаються з аналогії з печери Алі-Баби, де хтось доводить, що знає секретне слово, щоб відчинити двері, послідовно виходячи з того боку, який вимагає перевіряючий, не розкриваючи самого слова. Аналогія чарівна і абсолютно марна для розуміння того, чому ZK-докази важливі на практиці. Вона говорить вам, що такий доказ можливий. Вона не говорить вам, чому комусь може знадобитися такий доказ у блокчейні.
Практична відправна точка простіша. Кожен блокчейн стикається з одним і тим же напруженням: прозорість забезпечує довіру, але прозорість також знищує конфіденційність. Реєстр Bitcoin є публічним. Кожна транзакція, кожен баланс, кожна адреса видимі для всіх. Ethereum такий самий. Ця прозорість робить систему перевірюваною та надійною, але також означає, що будь-хто, хто дізнається, яка адреса належить вам, може бачити кожну транзакцію, яку ви коли-небудь здійснювали, кожен токен, який ви тримаєте, і кожен протокол, з яким ви взаємодіяли.
Докази з нульовим розголошенням вирішують це напруження. Вони дозволяють доводити факти про ваші дані, не розкриваючи самі дані. Ви можете довести, що ваш баланс перевищує поріг, не розкриваючи точний баланс. Ви можете довести, що транзакція є дійсною, не розкриваючи відправника, отримувача або суму. Ви можете довести, що вас немає у санкційному списку, не розкриваючи вашу особу.
Математика, що стоїть за цим, є глибокою. Застосування є негайними.
Три властивості, які повинен мати кожен ZK-доказ
Кожна система доказів з нульовим розголошенням повинна задовольняти три властивості, і розуміння їх є важливим для оцінки будь-якого протоколу на основі ZK.
Повнота. Якщо твердження істинне, і обидві сторони (доводить і перевіряє) дотримуються протоколу, перевіряючий завжди буде переконаний. Дійсний доказ ніколи не провалює перевірку. Якщо ви дійсно знаєте секрет, доказ завжди спрацює.
Обґрунтованість. Якщо твердження хибне, жоден нечесний доводить не зможе переконати перевіряючого в його істинності, за винятком незначної ймовірності. Нечесний доводить не може підробити дійсний доказ. Ймовірність того, що хибний доказ пройде перевірку, настільки мала (зазвичай менше ніж один на 2^128), що це практично неможливо.
Нульове розголошення. Перевіряючий дізнається лише те, що твердження істинне. Доказ не розкриває жодної інформації про сам секрет, про будь-які проміжні обчислення або про будь-які дані, використані для створення доказу. Знання перевіряючого після перегляду доказу ідентичне тому, що було б, якби хтось просто сказав йому, що твердження істинне.
Третя властивість робить ZK-докази корисними, а не просто правильними. Стандартні цифрові підписи доводять, що повідомлення було підписане конкретним ключем, але вони розкривають вміст повідомлення. Стандартні хеш-зобов'язання доводять, що значення було зафіксоване, але вони розкривають значення при відкритті. ZK-докази доводять, що існує зв'язок між секретними значеннями, не розкриваючи ці значення в жоден момент.
Чим zk-SNARKs та zk-STARKs відрізняються
Дві домінуючі системи ZK-доказів у блокчейні - це zk-SNARKs та zk-STARKs. Вони вирішують одну й ту ж проблему з різними компромісами.
zk-SNARKs (Zero-Knowledge Succinct Non-Interactive Arguments of Knowledge) створюють малі докази, які швидко перевіряються. Типовий zk-SNARK-доказ має розмір близько 200-300 байтів і може бути перевірений у ланцюжку приблизно за 200 000-300 000 газу в Ethereum. Час перевірки є постійним незалежно від складності обчислення, що доводиться. Доказ, який перевіряє одну транзакцію, перевіряється за той самий час, що й доказ, який перевіряє десять тисяч транзакцій.
Ціна цієї стислості - довірена установка. Більшість систем zk-SNARK вимагають одноразової церемонії, під час якої генеруються випадкові параметри, а випадковість після цього знищується. Якщо випадковість з цієї церемонії не буде належним чином знищена, зловмисник зможе підробити докази. Zcash провів одну з найбільш складних церемоній довіреної установки в історії криптографії (церемонія "Powers of Tau") за участю сотень учасників по всьому світу, де припущення безпеки полягає в тому, що принаймні один учасник чесно знищив свою випадковість.
Новіші SNARK-системи, такі як PLONK і Halo 2, зменшили або усунули потребу в довіреній налаштуванні, але сприйняття залишається. Деякі проєкти уникають SNARK саме через занепокоєння щодо довіреної настройки, навіть коли реалізації, які вони використовують, не вимагають її.
zk-STARK (Zero-Knowledge Scalable Transparent Arguments of Knowledge) повністю усувають довірену настройку. Вони ґрунтують свою безпеку на геш-функціях, а не на припущеннях щодо еліптичних кривих, що робить їх прозорими (без секретних параметрів) і теоретично стійкими до квантових обчислень (вважається, що криптографія на основі гешування є безпечною проти квантових комп'ютерів, тоді як криптографія на еліптичних кривих — ні).
Компроміс — у розмірі. Докази STARK значно більші за докази SNARK, зазвичай від десятків до сотень кілобайт порівняно з сотнями байтів. У блокчейні, де зберігання даних коштує газу, більші докази означають вищі витрати на верифікацію. StarkWare, основний розробник технології STARK, вирішує цю проблему за допомогою рекурсивної композиції доказів: доведення, що доказ є дійсним, а потім доведення, що доказ доказу є дійсним, стискаючи кінцевий слід у ланцюжку.
На практиці різниця має менше значення, ніж п'ять років тому. Сучасні системи доказів все частіше поєднують методи з обох сімейств, і інженерний фокус змістився з того, яку систему доказів використовувати, на те, наскільки швидко доказ може генерувати докази і наскільки дешево верифікатор може їх перевіряти.
ZK-докази для масштабування блокчейну
Застосування ZK-доказів для масштабування концептуально просте. Rollup виконує пакет транзакцій поза ланцюгом, генерує доказ того, що пакет було виконано правильно, і публікує доказ в Ethereum. Верифікаційний контракт Ethereum перевіряє доказ за одну операцію та приймає новий стан.
Що робить це потужним, так це асиметрія між доведенням і перевіркою. Генерація доказу для пакету з 10 000 транзакцій може зайняти у потужної машини кілька хвилин. Перевірка доказу займає частку секунди і коштує фіксовану кількість газу незалежно від кількості транзакцій у пакеті. Ця асиметрія дозволяє ZK-rollup стискати тисячі транзакцій в одну перевірку Ethereum.
Основні ZK-rollup підходять до цієї архітектури по-різному.
zkSync Era використовує власну віртуальну машину (zkEVM), яка сумісна з Solidity на рівні мови, але компілюється в інший набір інструкцій, оптимізований для генерації ZK-доказів. Існуючі контракти Ethereum можуть бути перекомпільовані для zkSync з мінімальними змінами.
StarkNet використовує мову програмування Cairo та докази STARK. Cairo — це спеціально розроблена мова, призначена для обчислень, що піддаються доведенню, що дає їй переваги у продуктивності, але вимагає від розробників вивчення нової мови та парадигми.
Polygon zkEVM прагне до еквівалентності EVM, тобто може виконувати той самий байткод, що й Ethereum, без перекомпіляції. Це максимізує сумісність, але вносить інженерну складність у забезпечення можливості доведення кожної операції EVM.
Scroll також націлений на повну еквівалентність EVM і використовує підхід, керований спільнотою, до своєї реалізації zkEVM, з метою бути найбільш сумісним з Ethereum ZK-rollup.
Конкуренція між цими підходами в кінцевому підсумку є конкуренцією між сумісністю та продуктивністю. Чим більш сумісний ZK-rollup з існуючим інструментарієм Ethereum, тим легше розробникам мігрувати. Чим більше rollup оптимізує свій набір інструкцій для можливості доведення, тим швидшими та дешевшими стають його докази.
ZK-докази для конфіденційності
Застосування для конфіденційності є тим, де ZK-докази стають найбільш значущими та найбільш суперечливими.
Стандартна транзакція Ethereum розкриває адресу відправника, адресу одержувача, переказану суму та викликаний смарт-контракт. Ця інформація є постійно публічною. Фірми з аналізу ланцюга, такі як Chainalysis і Elliptic, побудували цілий бізнес на відстеженні потоків транзакцій через прозорий реєстр, пов'язуючи адреси з реальними особами через дані KYC бірж, відомі мітки сутностей та поведінкові патерни.
ZK-протоколи конфіденційності розривають цей ланцюг видимості. У приватній транзакції на основі ZK користувач генерує доказ того, що його транзакція є дійсною (відправник має достатньо коштів, не відбувається подвійного витрачання, суми збігаються), не розкриваючи, хто відправив, хто отримав або скільки було переказано. Доказ публікується в ланцюжку і перевіряється мережею, але деталі базової транзакції залишаються зашифрованими.
Zcash був першою великою реалізацією цієї концепції, запущеною у 2016 році із захищеними транзакціями з використанням zk-SNARKs. Користувач Zcash може обирати між прозорими транзакціями (ідентичними публічному реєстру Bitcoin) та захищеними транзакціями (де відправник, отримувач та сума приховані за ZK-доказом). На практиці впровадження захищених транзакцій у Zcash було нижчим, ніж сподівалися прихильники, оскільки більшість транзакцій Zcash все ще використовують прозорий пул.
Новіші протоколи створюють програмовану конфіденційність, де не лише перекази токенів, але й довільна логіка смарт-контрактів може виконуватися приватно. Aztec Network будує конфіденційний рівень 2 на Ethereum, де всі транзакції є приватними за замовчуванням. Aleo будує блокчейн рівня 1 із вбудованою підтримкою ZK для приватних смарт-контрактів. Обидва використовують ZK-докази для перевірки змін стану без розкриття обчислень або даних.
Потенціал конфіденційності виходить за межі окремих транзакцій. ZK-докази можуть забезпечити приватне голосування (довести, що ви проголосували, не розкриваючи ваш вибір), приватну перевірку особи (довести, що ви є громадянином певної країни, не розкриваючи номер паспорта) та приватні DeFi (надати ліквідність пулу, не розкриваючи вашу адресу або розмір позиції).
Регуляторна колізія
Конфіденційність у криптовалюті займає спірний правовий простір, який все ще визначається.
У серпні 2022 року Управління з контролю за іноземними активами (OFAC) Міністерства фінансів США ввело санкції проти Tornado Cash, мікшера на основі Ethereum, який використовував ZK-докази для розриву зв'язку між адресами депозиту та виведення. Санкції проти відкритого коду смарт-контракту, а не проти особи чи компанії, були безпрецедентними і викликали шок у спільноті криптоконфіденційності.
У травні 2024 року Олексій Перцев, один із розробників Tornado Cash, був засуджений нідерландським судом за сприяння відмиванню грошей. Цей вирок встановив юридичний прецедент, що написання коду, який зберігає конфіденційність, може нести кримінальну відповідальність, якщо інструмент використовується для незаконних цілей, незалежно від того, чи особисто розробник сприяв незаконній діяльності.
Ці дії сформували напрямок розвитку ZK-конфіденційності. Поточне покоління протоколів конфіденційності будується з урахуванням регуляторних обмежень, а не ігноруючи їх.
Вибіркове розкриття дозволяє користувачеві довести конкретні факти про свою особу або історію транзакцій, не розкриваючи все. Користувач може довести, що пройшов KYC у ліцензованій біржі, довести, що він не перебуває у списку санкцій OFAC, або довести, що його кошти не походять із санкціонованої адреси, все це за допомогою ZK-доказів, які не розкривають нічого, окрім конкретного твердження, що перевіряється.
Приватні пули, концепція, формалізована Віталіком Бутеріним та іншими, дозволяють користувачам довести, що їх виведення з набору конфіденційності належить до чистого підмножини депозитів. Замість того, щоб змішувати всі депозити без розбору, протокол підтримує набори асоціацій, які виключають відомі незаконні адреси. Користувачі доводять членство в чистому наборі, не розкриваючи, який саме депозит вони виводять.
Чи задовольнять ці компроміси регуляторів, ще належить побачити. Фундаментальне протиріччя між конфіденційністю та спостереженням, які є архітектурно несумісними, не буде вирішено лише технологією. ZK-докази дають політикам інструмент, якого вони ніколи не мали: можливість перевіряти відповідність без вимоги розкриття. Чи вирішать вони ним скористатися, є політичним питанням, а не криптографічним.
Вартість доказу має конкретні наслідки для того, які застосунки першими впроваджують технологію ZK. Фінансові транзакції з високою вартістю, де вартість генерації доказу є незначною порівняно з розміром транзакції, були найранішими користувачами. Інституційні міжланцюгові перекази, великі позиції DeFi та корпоративні системи розрахунків можуть поглинути вартість доказу в кілька доларів за транзакцію без впливу на їх економіку. Споживчі застосунки, де окремі транзакції можуть коштувати лише кілька доларів, потребують зниження вартості доказу ще на порядок, перш ніж ZK-конфіденційність стане практичною для повсякденного використання. Апаратне прискорення, яке здійснюють компанії, що створюють спеціалізовані ASIC для ZK, безпосередньо спрямоване на подолання цього бар'єру вартості.
Конвергенція масштабування та застосунків конфіденційності, можливо, є найбільш недооціненим аспектом технології ZK. ZK-ролап, який обробляє транзакції приватно, поєднав би переваги пропускної здатності виконання поза ланцюгом із перевагами конфіденційності зашифрованих змін стану. Користувачі отримали б швидкі, дешеві транзакції, які також невидимі для аналізу ланцюга. Кілька проєктів, включаючи Aztec та Polygon Miden, будують саме таку комбінацію, хоча інженерна складність об'єднання обох можливостей у виробничу систему залишається значною.
Що це не охоплює
Ця стаття не охоплює математику поліноміальних зобов'язань, спарювань еліптичних кривих або перетворень Фіата-Шаміра, які лежать в основі систем ZK-доказів. Розуміння цих аспектів вимагає знань абстрактної алгебри на рівні аспірантури і не є необхідним для оцінки протоколів на основі ZK як користувач або інвестор.
Ця стаття не охоплює ZK-машинне навчання (zkML), нову галузь, яка використовує ZK-докази для перевірки того, що модель машинного навчання створила певний результат, не розкриваючи ваги моделі або дані для навчання. Це застосування є експериментальним, і його практичні наслідки все ще вивчаються.
Ця стаття не розглядає гонку апаратного прискорення для генерації ZK-доказів. Такі компанії, як Cysic, Ingonyama та Fabric Cryptography, створюють спеціалізовані ASIC та FPGA спеціально для ZK-доказів, що може зменшити витрати на докази на порядки. Апаратний ландшафт змінюється надто швидко для статичного аналізу.
Практичні перевірки перед використанням протоколу на основі ZK
Перевірте статус аудиту системи доказів. Системи ZK-доказів є математично складними, і помилки в реалізації можуть бути катастрофічними. Помилка в схемі (математичне представлення обчислення, що доводиться) може дозволити зловмиснику підробити докази та карбувати токени або вкрасти кошти. Перевірте, чи були система доказів та її схеми перевірені фірмами, що спеціалізуються на ZK-криптографії, а не лише загальними аудиторами смарт-контрактів.
Зрозумійте, що насправді є приватним. Не всі протоколи на основі ZK забезпечують однаковий рівень конфіденційності. Деякі приховують суми транзакцій, але розкривають адреси. Деякі приховують адреси, але розкривають суми. Деякі приховують все. Прочитайте документацію протоколу, щоб точно зрозуміти, яка інформація приховується, а яка залишається видимою. Метадані, такі як час транзакцій, моделі використання газу та частота взаємодій, часто можуть деанонімізувати користувачів, навіть якщо основні дані транзакцій приховані.
Перевірте статус довіреної установки. Якщо протокол використовує zk-SNARK, визначте, чи вимагала вона довіреної установки та як ця установка проводилася. Церемонії з багатосторонніми обчисленнями за участю сотень учасників є більш надійними, ніж невеликі церемонії з кількома відомими суб'єктами. Протоколи, що використовують STARK, PLONK з універсальною установкою або Halo 2, взагалі не вимагають довіреної установки.
Оцініть регуляторний ризик. Протоколи конфіденційності працюють у юридично невизначеному середовищі. Розгляньте, чи має протокол механізм відповідності (вибіркове розкриття, пули конфіденційності, докази відповідності за згодою) та чи був цей механізм перевірений на відповідність реальному регуляторному контролю. Використання протоколу конфіденційності, який пізніше буде підданий санкціям, може ускладнити вашу здатність переміщувати або продавати активи.
Перевірте час доведення. Генерація ZK-доказу є обчислювально інтенсивною. На мобільному пристрої доведення простої транзакції може зайняти від 30 секунд до двох хвилин. На комп'ютері це може зайняти кілька секунд. Якщо час доведення занадто довгий для вашого випадку використання, протокол може бути непрактичним для частих транзакцій. Деякі протоколи перекладають доведення на виділені сервери, що швидше, але вводить припущення довіри, що сервер не дізнається ваші приватні дані.
Що таке доказ з нульовим розголошенням простими словами?
Доказ з нульовим розголошенням — це спосіб довести, що щось є істинним, не розкриваючи, чому це істинно. У блокчейні це означає, що ви можете довести, що транзакція є дійсною, що ви володієте достатньою кількістю коштів або що обчислення було виконано правильно, не розкриваючи фактичних деталей транзакції, вашого балансу або даних, використаних в обчисленні. Перевіряючий переконується, що твердження є істинним, але не дізнається нічого іншого.
Яка різниця між zk-SNARKs та zk-STARKs?
zk-SNARKs створюють дуже малі докази (сотні байтів), які дешево перевіряти, але історично вимагали церемонії довіреної установки для генерації початкових параметрів системи. zk-STARKs створюють більші докази (десятки до сотень кілобайт), але не вимагають довіреної установки і теоретично стійкі до атак квантових комп'ютерів. На практиці сучасні системи доказів сходяться, і компроміси між розміром, швидкістю та припущеннями довіри стають менш різкими.
Як ZK-докази допомагають масштабуванню блокчейну?
ZK-rollups виконують тисячі транзакцій поза ланцюгом і генерують єдиний доказ того, що всі транзакції були виконані правильно. Цей доказ перевіряється в Ethereum за одну операцію, яка коштує фіксовану кількість газу незалежно від того, скільки транзакцій було в пакеті. Асиметрія між вартістю генерації доказу (висока, але її несе оператор rollup) та його перевіркою (низька і оплачується один раз за весь пакет) створює ефект масштабування.
Чи є ZK-монети для конфіденційності незаконними?
ZK-монети для конфіденційності, такі як Zcash, не є незаконними в більшості юрисдикцій. Однак регуляторні підходи значно відрізняються. Деякі біржі виключили монети для конфіденційності з лістингу, щоб відповідати правилам боротьби з відмиванням грошей. Санкції Tornado Cash у 2022 році продемонстрували, що протоколи, що зберігають конфіденційність, можуть зіткнутися з регуляторними діями. Законність залежить від вашої юрисдикції та того, як ви використовуєте технологію, а не від самої технології.
Що таке довірена установка і чому вона важлива?
Довірена установка — це одноразова церемонія, яка потрібна деяким системам zk-SNARK для генерації криптографічних параметрів. Під час церемонії створюються випадкові значення, які після цього повинні бути знищені. Якщо будь-який учасник збереже випадкові значення, він теоретично зможе підробити докази. Багатосторонні церемонії зменшують цей ризик, вимагаючи, щоб лише один учасник з потенційно сотень чесно знищив свою випадковість. Новіші системи доказів, такі як PLONK і Halo 2, усунули або мінімізували вимогу довіреної установки.
Чи можуть ZK-докази зробити всі транзакції блокчейну приватними?
Технічно так. Протоколи, такі як Aztec Network і Aleo, будують системи, де всі взаємодії зі смарт-контрактами є приватними за замовчуванням, а не лише перекази токенів. Однак повна конфіденційність для всіх транзакцій створює регуляторні проблеми, збільшує обчислювальні витрати (генерація ZK-доказів є дорогою) і змінює користувацький досвід (доведення займає час). Чи стане повна конфіденційність у ланцюзі стандартом, залежить як від регуляторних рішень, так і від технічних можливостей.
Як працюють пули конфіденційності?
Пули конфіденційності дозволяють користувачам вносити кошти в спільний пул і знімати з іншої адреси, розриваючи зв'язок у ланцюзі між двома адресами. На відміну від простих міксерів, пули конфіденційності використовують ZK-докази в поєднанні з наборами асоціацій, щоб дозволити користувачам довести, що їх зняття належить до підмножини депозитів, яка виключає відомі незаконні адреси. Це дає користувачам конфіденційність, забезпечуючи механізм відповідності. Користувач доводить, що він знаходиться в чистому наборі, не розкриваючи, який саме депозит він знімає.
Які основні ризики використання ZK-протоколів?
Основні ризики включають помилки реалізації в ZK-схемах (які можуть дозволити підроблені докази), вразливості довіреної установки в старіших SNARK-системах, регуляторні дії проти функцій конфіденційності, високі обчислювальні вимоги для генерації доказів на споживчому обладнанні та відносну незрілість ZK-інструментів порівняно зі стандартною розробкою смарт-контрактів. Крім того, витік метаданих (час транзакцій, патерни газу, частота взаємодій) іноді може деанонімізувати користувачів, навіть коли основні дані транзакцій є приватними.






