Доказ з нульовим розголошенням (Zero-Knowledge Proof)
17.04.2026
Доказ з нульовим розголошенням (zero-knowledge proof, ZKP) — криптографічний протокол, у якому одна сторона (прувери) переконує іншу (верифікатор), що твердження істинне, не розкриваючи нічого, окрім самого факту істинності. Концепцію ввели Шафі Голдвассер, Сільвіо Мікалі та Чарльз Рэкофф у статті 1985 року «The Knowledge Complexity of Interactive Proof Systems» — робота отримала Гьоделівську премію (1993) і стала частиною заслуг Голдвассер і Мікалі, за які їм присудили Тюрінгівську премію (2012).
Три властивості
Будь-яка система ZKP має:
- Повноту (completeness) — якщо твердження істинне, чесний прувери переконає чесного верифікатора
- Коректність (soundness) — якщо твердження хибне, нечесний прувер не зможе переконати верифікатора (за винятком зневажливо малої ймовірності)
- Нульове розголошення (zero-knowledge) — верифікатор не дізнається нічого, окрім факту істинності твердження; жодні відомості про те, чому воно істинне, не витікають
Хрестоматійна аналогія: довести, що ви знаєте пароль, не розкриваючи сам пароль.
Сучасні системи доказів
- zk-SNARK (Succinct Non-interactive ARgument of Knowledge) — дуже короткі докази (сотні байт), верифікація за константний час. Класичні конструкції (Groth16, PGHR13) вимагають довіреної церемонії під конкретну схему; PLONK і Marlin використовують універсальний оновлюваний setup; Halo 2 (розроблений Electric Coin Company для Zcash) побудований на поліноміальних комітментах і обходиться без довіреної церемонії.
- zk-STARK (Scalable Transparent ARgument of Knowledge) — запропоновані Ben-Sasson та ін. (2018). Прозорі (без довіреної церемонії), спираються лише на хеш-функції, потенційно постквантово-стійкі. Докази більші (десятки–сотні КБ). Застосовуються в StarkWare — Starknet і StarkEx.
- Bulletproofs — короткі range-докази без довіреної церемонії. З 2018 року використовуються в Monero для конфіденційних сум.
- Nova / HyperNova, Plonky2 / Plonky3 — сучасні схеми folding і рекурсивні SNARK, заточені під інкрементальні обчислення.
Де використовується в крипті
Приватність
- Zcash — екрановані транзакції на zk-SNARK (Groth16 → Halo 2)
- Aztec Network, Aleo, Namada — приватні смарт-контракти
- Monero — Bulletproofs для range-доказів
- Tornado Cash — міксер на zk-SNARK (санкції Мінфіну США частково скасовані П'ятим окружним судом у 2024 році)
Масштабованість — ZK-ролапи
- zkSync Era, Starknet, Polygon zkEVM, Scroll, Linea — стискають тисячі L2-транзакцій в одне validity-доказ, публікуване на Ethereum. Тут ZK використовується заради стислості, а не для приховування даних.
Ідентичність і credentials
- Worldcoin — підтвердження унікальності людини за сканом райдужки, не розкриваючи сам скан
- zk-email — доказ отримання листа без розкриття його змісту
- Polygon ID, Semaphore — ончейн-ідентичність без прив'язки до історії гаманця
Верифіковані обчислення
- zkML (EZKL, Modulus Labs) — доказ, що AI-модель коректно відпрацювала на заданих входах
- Ончейн-копроцесори (Axiom, Herodotus) — доказ результатів офчейн-обчислень
Часте хибне уявлення — «ZK» ≠ «приватно»
ZK-ролап тримає «ZK» у назві, але, як правило, не забезпечує користувацьку приватність. Властивість zero-knowledge тут використовується для стислості — одне маленьке доказ підтверджує тисячі транзакцій — а не для приховування даних. Усі транзакції в ролапі залишаються публічними. Щоб отримати приватність користувачів, потрібен окремий дизайн (Aztec, Aleo).
