February 3, 2025

ЯК УЧАСНИКИ ПЕРЕВІРЯЮТЬ ЩО ДОКАЗ ПРАВИЛЬНИЙ👇 

Перевірка правильності доказу в системі zkVerify, або в будь-якому проекті, що використовує Zero-Knowledge Proofs (ZKP), відбувається без необхідності розкривати саму інформацію про транзакцію чи інші дані. Ось як це працює на практиці:

1. Процес створення доказу (Proof Generation)

Коли учасник мережі (наприклад, користувач) хоче провести транзакцію або зробити іншу операцію, він створює ZKP, що є спеціальним математичним доказом, який підтверджує, що операція або транзакція є валідною без необхідності розкривати конкретні дані (наприклад, суму або особисті деталі).

Наприклад:

  • Користувач хоче відправити гроші.
  • Замість того, щоб розкривати, скільки грошей у нього є на рахунку або яку суму він хоче відправити, він генерує ZKP, який підтверджує, що його баланс достатній для виконання цієї операції, але без розкриття конкретної суми.

2. Перевірка доказу (Proof Verification)

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

  • Математична перевірка: ZKP використовує складні математичні алгоритми, які дозволяють будь-якому учаснику мережі перевірити, чи є доказ правильним, не потребуючи доступу до конкретних даних. Вони можуть перевірити, що, скажімо, баланс користувача дійсно дозволяє здійснити транзакцію, але без того, щоб дізнатися, скільки грошей у нього на рахунку.
  • Інтерактивність не потрібна: Для цієї перевірки не потрібно жодної додаткової взаємодії між учасниками. Доказ можна перевірити миттєво за допомогою алгоритмів без необхідності в реальному часі взаємодіяти з іншими учасниками.

3. Забезпечення прозорості та безпеки

  • Кожен учасник мережі може перевірити доказ, використовуючи відкритий алгоритм, не розкриваючи при цьому особисті дані або транзакційні суми.
  • ZK-SNARKs, які використовуються в zkVerify, є такими, що не потребують інтерактивності: вони дозволяють створити доказ, який можна надіслати іншій стороні (наприклад, валідатору), щоб вона перевірила його без додаткових даних.

4. Порівняння зі звичайною транзакцією

У звичайному блокчейні (наприклад, Bitcoin або Ethereum) валідатори або майнери перевіряють транзакцію шляхом доступу до всіх деталей: суми, адреси відправника та отримувача, підпису і т.д.

У zkVerify, натомість, валідатор або перевіряючий лише перевіряє доказ правильності транзакції за допомогою алгоритмів, не розкриваючи жодної іншої інформації. Тобто, не потрібно бачити саму суму або інші деталі, щоб перевірити, чи є транзакція правильною. Відповідно, це забезпечує анонімність і конфіденційність для користувачів.

5. Як перевірка працює на практиці?

Припустимо, є три учасники:

  • Користувач (A), який створює доказ того, що він може провести транзакцію.
  • Валідатор (B), який перевіряє доказ за допомогою спеціального алгоритму.
  • Мережа, яка загалом підтримує консенсус і допомагає забезпечити правильність доказів.

Користувач (A) генерує доказ, який підтверджує, що він може здійснити операцію (наприклад, відправити токени). Він надсилає цей доказ до валідатора (B).

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

Якщо доказ правильний, валідатор дозволяє транзакцію пройти і записує її в блокчейн.

Питання як перевірити правильність транзакції без розкриття її суми та балансу користувача? Що є основною особливістю Zero-Knowledge Proofs (ZKP).

Як це працює на практиці?

  1. Нульове знання не означає, що ми взагалі не можемо дізнатися нічого про транзакцію. Натомість це означає, що можна перевірити, що вся інформація є коректною, не знаючи саму інформацію. У випадку з zkVerify це працює наступним чином:
  2. Доказ з нульовим розголошенням (ZKP), зокрема ZK-SNARKs, дозволяють довести, що баланс користувача достатній для проведення транзакції, не розкриваючи точну суму.

Пояснення з прикладом:

Уявімо, що користувач хоче зробити транзакцію — відправити гроші, наприклад, 100 токенів. Однак:

  • Користувач не хоче розкривати суму цієї транзакції.
  • Користувач не хоче розкривати свій поточний баланс.

Замість того, щоб показати свою суму чи баланс, він генерує Zero-Knowledge Proof (ZKP). Цей доказ доводить, що:

  1. У нього є достатньо коштів для проведення транзакції.
  2. Транзакція є валідною і не порушує правил (наприклад, баланс не перевищує доступних коштів).

Як це може виглядати математично?

У випадку ZK-SNARKs, доказ, який створює користувач, є математичною конструкцією, що підтверджує, що:

  • У користувача є достатньо коштів, щоб зробити транзакцію.
  • Він не витрачає більше, ніж має, але без необхідності надавати точні цифри.

Тобто, користувач створює доказ на основі свого балансу і транзакції, і цей доказ показує, що:

  • Його баланс більше, ніж сума транзакції.
  • Він не перевищує свої кошти, при цьому сам баланс і сума транзакції залишаються невідомими стороннім особам.

Ключові моменти:

  • Підтвердження наявності коштів: Замість того, щоб повідомити точний баланс, ZKP підтверджує, що баланс достатній для транзакції.
  • Без розкриття суми: Ніхто не дізнається точну суму транзакції, але при цьому можна бути впевненим, що транзакція є валідною і не перевищує наявні кошти.
  • Перевірка без доступу до даних: Валідатор (або інший учасник мережі) може перевірити доказ, не отримуючи доступу до особистих даних користувача, таких як точний баланс або сума транзакції.

Як це працює технічно?

  1. Користувач створює ZKP, що підтверджує, що:
    • Його баланс більший за суму транзакції.
    • Він не порушує обмеження, наприклад, не витрачає більше коштів, ніж має.
  2. Користувач надсилає цей доказ до мережі або валідатора, разом з транзакцією.
  3. Валідатор (або учасник мережі) перевіряє цей доказ, використовуючи певний математичний алгоритм (наприклад, ZK-SNARK). Цей алгоритм дозволяє перевірити, що доказ коректний, і що користувач дійсно має достатньо коштів, без розкриття сум або інших особистих даних.
  4. Якщо доказ правильний, транзакція проходить і записується в блокчейн.

Що ми отримуємо в результаті?

  • Конфіденційність: Ніхто не дізнається точну суму транзакції або баланс користувача.
  • Прозорість і безпека: Перевірка доказу гарантує, що користувач не перевищує свої кошти, і що транзакція є валідною.
  • Анонімність: Інформація про суму транзакції і баланс залишаються анонімними.

Загальний висновок:

У zkVerify та інших системах на основі Zero-Knowledge Proofs (ZKP) доказ дозволяє підтвердити, що певні умови виконуються (наприклад, достатність коштів для транзакції), не розкриваючи саму інформацію. Це дає можливість проводити анонімні транзакції з гарантованою правильністю, при цьому забезпечуючи конфіденційність учасників.

Телерам / Twitter / YouTube