Доказ нульового знання (ZKP) — це криптографічний метод, який дозволяє одній стороні, званій довільником, переконати іншу сторону, перевіряючого, що твердження є істинним, не розкриваючи жодної інформації, крім істини самого твердження. Технічно кажучи, ZKP задовольняє три основні властивості: завершеність, надійність і нульове знання. Завершеність забезпечує, що чесні довільники завжди можуть переконати перевіряючого, якщо твердження є істинним. Надійність гарантує, що нечесні довільники не можуть обманути перевіряючого, змушуючи його прийняти хибне твердження. Нульове знання означає, що перевіряючий не дізнається нічого, окрім дійсності вимоги.
Ця концепція не є лише теоретичною. Нульові докази знань вже використовуються в сучасних криптографічних системах для перевірки особистостей, валідації транзакцій та застосування політик без розкриття приватних даних. Вони особливо добре підходять для блокчейн-застосувань, де конфіденційність і децентралізація є ключовими.
Публічні блокчейни, такі як Ethereum та Bitcoin, працюють на принципі повної прозорості. Кожен вузол у мережі повинен повторно виконати кожну транзакцію для її перевірки. Хоча ця модель забезпечує безпеку та консенсус, вона має вартість масштабованості та конфіденційності. Докази з нульовим знанням вирішують обидві ці обмеження.
Для конфіденційності ZKP дозволяють користувачам доводити щось — наприклад, що транзакція є дійсною — без розкриття вмісту транзакції. Це дозволяє здійснювати конфіденційні транзакції та приватну логіку смарт-контрактів, зберігаючи при цьому публічну перевіряність. Для масштабованості ZKP стискають обчислення в лаконічний доказ. Цей доказ може бути швидко перевірений в ланцюзі, навіть якщо оригінальні обчислення були дорогими та трудомісткими. Замість виконання всієї логіки на кожному вузлі, потрібно перевірити лише доказ. Це суттєво знижує витрати на газ і покращує пропускну здатність.
Технологія нульових знань дозволяє масштабувати блокчейни без втрати довіри та створювати приватні додатки без залучення централізованих посередників. Оскільки блокчейни стають все більш складними і знаходять широке застосування, ці можливості стають необхідними.
Розумні контракти перетворили блокчейни на програмовані платформи. Вони дозволяють розробникам створювати децентралізовані програми, які автоматично виконують логіку на основі попередньо визначених правил. Однак, розумні контракти обмежені обчислювальними можливостями самого блокчейну. Вони повинні працювати в ланцюзі, де кожна операція є дорогою та публічною.
Оскільки децентралізовані додатки стають все більш складними, ці обмеження стають більш проблематичними. Виконання великих обчислень або доступ до величезних наборів даних в ончейні є неприйнятним. Водночас користувачі все більше вимагають приватності, яку стандартні смарт-контракти не можуть забезпечити.
Щоб вирішити цю проблему, розробники почали переносити обчислення за межі ланцюга, зберігаючи довіру за допомогою криптографічних доказів. Саме тут на допомогу приходять докази нульового розголошення. Замість виконання всієї логіки в ланцюзі, важкі обчислення виконуються за межами ланцюга, і лише стиснутий доказ результату подається до блокчейну. Це забезпечує безпеку та перевірність блокчейну, значно покращуючи продуктивність та конфіденційність.
Ця трансформація від логіки на блокчейні до перевірки поза блокчейном означає значний зсув у архітектурі блокчейну. Це дозволяє додаткам масштабуватися за межі обмежень Ethereum Virtual Machine і підтримує нові варіанти використання, які в іншому випадку були б неможливі.
Нульовий знань копрограматор — це спеціалізована оффчейн система, яка виконує обчислення та генерує криптографічні докази їхньої правильності. На відміну від смарт-контрактів, які працюють безпосередньо в блокчейні, ZK копрограматор працює зовнішньо. Він обробляє входи, виконує обчислення за допомогою zkVM або спеціальної схеми та виробляє доказ з нульовим знанням. Цей доказ може бути поданий в блокчейн, щоб довести, що обчислення було виконано правильно.
Ідея копрогресора запозичена з комп'ютерного обладнання. У традиційних системах копрогресор є окремим процесором, який використовується для виконання специфічних завдань, таких як обробка графіки або арифметика з плаваючою комою. Подібно, ZK копрогресор знімає з основного ланцюга складну логіку, дозволяючи основному ланцюгу зосередитися на верифікації, а не на виконанні.
ZK копрозесори впроваджують модульне середовище виконання. Розробники можуть створювати логіку в спеціалізованих офчейн-оточеннях, виконувати великі або приватні обчислення там, а потім підтверджений результат повертати на будь-який блокчейн. Ця модульність дозволяє композабельність між ланцюгами, покращує продуктивність і підтримує більш гнучкий дизайн застосунків.
У сучасній архітектурі блокчейну ZK копрограми займають середній рівень між смарт-контрактами на ланцюгу та зовнішніми джерелами даних або обчислень. В основі є сам блокчейн, який записує стан, забезпечує дотримання правил і перевіряє докази. На верху розташовані смарт-контракти, які визначають публічну логіку застосунку та приймають вхідні дані від користувачів або інших контрактів.
ZK копрограми працюють поряд або нижче цих смарт-контрактів. Вони отримують вхідні дані — часто у формі calldata або підписаних повідомлень — від користувача або контракту, виконують логіку поза ланцюгом і генерують нульове знання. Доказ подається назад до смарт-контракту, який перевіряє його за допомогою ключа перевірки. Якщо він дійсний, контракт оновлює свій стан або викликає відповідь.
Ця архітектура стає все більш модульною. Копростор може обслуговувати кілька контрактів або застосунків. Так само один контракт може працювати з кількома копросторами. Система також є розширюваною через мережі. ZK копростор може обчислювати доказ для даних на одній мережі та надсилати його на іншу, що забезпечує міжмережеву взаємодію з потужними гарантіями.