Підтримка zk-SNARK

Підтримка zk-SNARK

Козаки Free TON

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

Розробники, задіяні у створенні блокчейнів, приклали велетенських зусиль для вирішення проблеми конфіденційності, задіючи при цьому різноманітні засоби. Одне з таких рішень це «приватні токени», наприклад такі, як Monero, Dash і Zcash.

Monero це криптовалюта, яка використовує переплутаний загальнодоступний реєстр. Можна побачити лише зміст транзакцій, їх джерела приховано.

Dash використовує Мастерноди, які дозволяють приватні пересилання, що ховають гаманці відправника і отримувача даної транзакції.

Zcash це кардинально інший підхід до вирішення проблеми. Платежі оприлюднюються у загальнодоступному блокчейні, однак опціонально можливе використання функції приватностї, яка ховає відправника і отримувача разом їз сумою zcash токенів. Zcash це перше широко використовуване застосування zk-SNARK, які є новою формою криптографії з нульовим розголошенням.

Зміст

Що таке zk-SNARK

У наші дні люди можуть гадати, що zk-SNARK це новітня технологія, бо найновіші технології, такі як системи на основі блокчейну, використовують zk-SNARK. Однак вперше докази з нульовим розголошенням у кінці 80-х років минулого сторіччя оприлюднили Шафі Гольдвасер, Сільвіо Мікалі і Чарльз Ракофф у сумісній праці «Складність знання інтерактивних доказових систем» (The Knowledge Complexity Of Interactive Proof-Systems). Однак сучасні реалізації zk-SNARK виникли тільки десятиріччя потому. Їх створив Олександро Чієза, професор Універсітету Берклі і один з засновників Zerocash, який у 2012 році став одним з авторов документу, у якому появився термін zk-SNARK.

zk-SNARK це скорочення від слів “Zero-Knowledge Succinct Non-Interactive Argument of Knowledge”, що означає «короткий не інтерактивний аргумент на користь знання з нульовим розголошенням». Це є методом генерування доказу, завдяки якому можна довести, що він чи вона володіє деякою інформацією чи здійснює транзакцію без розголошення цієї інформації або повторного перерахунку доказу. У верифікацію входить перевірка, яка показує сгенерований доказ zk-SNARK верифікатору, який засвідчує, що доказ є коректним та повним. Однак верифікатор не має інформації про те, як саме обчислювався доказ zk-SNARK. Виходить, що для проведення транзакції достатньо того, щоб тільки одна сторона надала цю інформацію.

Нульове разголошення (Zero-Knowledge, Zk). Це значить, що верифікатор при перевірці доказу не має жодної інформації про дані або обчислення. Верифікатор тільки знає, що тверження, обчислення або транзакція вірні. Також важливо, щоб верифікатор не мав про свідка жодної інформації.

Коротке разголошення (Succinct, S). Дуже важливе при роботі зі складними транзакціями. Навіть для складних обчислень дуже маленький розмір любого доказу. Це дає велетенські можливості для підвищення ефективності та пропускної складності блокчейнів.

Не інтерактивне (Non-Interactive, N). Під інтерактивністю маються на увазі раунди повідомлень, які пересилаються між перевіряльником і веріфікатором. В інших системах верифікації потрібні чисельні раунди обміну меж веріфікатором і перевіряльником задля забезпечення коректності. А ось у zk-SNARK потрібна лише початкова фаза налаштування (єдина точка контакту). SNARK має таку особливість, як «загальнодоступний верифікатор». Це значить, що будь-яка людина може робити перевірку без багатократної взаємодії, яка потребує багато обчислювальних ресурсів та часу. Завдяки цій особливості zk-SNARK зручно використовувати у блокчейнах.

Аргументи(Arguments, AR). Твердження є теоретично обчислюваними. Це практично значить, що докази відображають справжні тверження. Створення логічно невірних доказів неможливе з точки зору обчислень. У той самий час ефективно генеруються коректні докази.

Знання (Of Knowledge, K). Перевіряльник чи перевіряльниця не можуть сформувати доказ, якщо не знають «свідка», тобто набір вхідних даних, на яких виконуються перевірювані обчислення. Наприклад, адрес з якого витрачаються кошти, шлях до визначеного вузла у дереві Мєркль, атаку знаходження прообразу хеш-функції і так далі. Незважаючи на те, що свідок знає про це, верифікатор не повинен мати ніякого знання про свідка, щоб знання було справді нульовим.

Функції zk-SNARK

Нульове розголошення це лаконічний не інтерактивний протокол доказу нульового знання, що складається з трьох функцій:

1.Генератор ключей (G) приймає секретний параметр (λ) і генерує два загальнодоступні ключі — ключ перевіряльника (pk) і a ключ верифікації (vk).

2.Функція перевіряльника (prover function, PF) приймає ключ перевіряльника як вхід, x як загальнодоступний вхід, і w як приватний вхід. Функція перевіряльника генерує доказ, який може бути обчислений як prf = PF(pk, x, w).

3.Функція верифікації (VF) обчислює VF(ключ верифікації, prf, x), що повертає прийняти, якщо доказ коректний і відмовити, якщо доказ не є коректним.

Важливо відмитити, що генератором ключів використовується секретний параметр (λ), що час від часу ускладнює застосування zk-SNARK у реальних додатках. Причина в тому, що будь-яка людина, яка знає цей секретний параметр, може сгенерувати підробний доказ (fake prf). Таким чином VF(vk, x, fake prf) призводить до рішення прийняти, незважаючи на те, що він чи вона не знає секретного параметру. Тому важливо пересвідчитися перед запуском генератора, що ніхто не взнав і не зберіг цього параметра ключа.

Zcash

Для кращого розуміння того, як працює zk-SNARK, пропонуємо вам глянути на Zcash. Використовуючи zk-SNARK, Zcash може довести, що транзакція дійсна, не розголошуючи критичну для приватності інформацію, таку як адреса і суми.

Відправник прихованої транзакціі створює доказ, який повинен довести наступне:

1. Для кожного прихованого пересилання складаються вхідні і віхідні значення. 2. Відправник доводить, що має приватні ключи для витрат входів. Це дає відправнику право витрачати приховані платежі. 3. Приватні ключи для витрат входів криптографічно пов'язані з підписом транзакції. Це забезпечує захист транзакцій від змінення стороною, що не має приватних ключів.

Щоб визначити, чи можна витрачати транзакцію, Біткоїн відслідковує не витрачені виходи транзакцій (unspent transaction outputs, UTXOs). У Zcash прихований еквівалент UTXO зветься векселем. Витрачання векселю потребує розкриття нуліфікатора. Вузли Zcash ведуть облік усіх створених векселів і виявлених нуліфікаторів. Векселя і нуліфікатори зберігаються у вигляді хешів, що попереджає розкриття відповідної інформації.

Вексель створюється кожного разу при пересиланні прихованого платежу. Цей вексель складається з хешу, що містить адресу отримувача, суму, яку було переслано, унікальний rho номер «банкноти», який пізніше допоможе виявити нуліфікатор, і випадкового значення nonce.

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

Протокол ZKP для прихованих транзакцій повинен перевірити попередні умови, а також наступні:

Для кожного прихованого платежу існує вексель, який можна виявити. Вірно обчислені нуліфікатори і векселя. Не можливо, щоб співпав один нуліфікатор з будь-яким іншим нуліфікатором.

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

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

Перевіряльник виконує більшу частину роботи при генерації доказу Zcash. Однак це спрощує процес верифікації та дозволяє верифікувати транзакції за мілісекунди.

Критика zk-SNARK

Звичайно, існують пов'язані з zk-SNARKs побоювання. Одне з них у тому, що як людина отримає доступ до закритого ключа, який використовувався для створення параметрів протоколу доказу, то вона може створити несправжні докази, які верфікатори будуть вважати дійсними. Таким чином ця людина може створити нові токени Zcash, використовуючи несправжні докази. Тому Zcash було створено розробниками таким чином, щоб протокол перевірки розроблявся одночасно декількома сторонами.

В 2019 році розробники почали працю з вдосконалення zk-SNARK. Прибравши необхідність початкового налаштування, команда Сутерісу створила систему з назвою zK-ConSNARK. Така система також забезпечує захист конфіденційності для основних блокчейнів, таких як блокчейн Біткоїна і потребує внесення мінімальних змін у будь-яку кріптовалюту.

Тім не менш легко знайти і переваги zk-SNARK. Одна з них можливість створення у Zcash прихованих транзацій з використанням zk-SNARK. Можуть використовуватися Zk-SNARK для перевірки чого завгодно без розголошення вхідних даних і інформації. Однак генерація доказів для складних функцій потребує великих обчислювальних потужностей. Тому використання zk-SNARK не є практичним у багатьох додатках. Але команда Zcash працює над оптимізацією zk-SNARK, вже досягнувши неабиякого прогресу. Більш того, прийняту у Zcash реалізацію zk-SNARK може бути додано до будь-якого існуючого розподіленого реєстру як «Рівень Безпеки з нульовим розголошенням».

zk-SNARKs у Free TON

Одна з найбільш важливих властивостей протоколу TON це реалізація системи zk-SNARK, яку можна використовувати всередині Віртуальної Машини Ton. Цю систему впровадив у Free TON один з перших валідаторів Фонду =nil; і керівник Фонду =nil; Михайло Комаров. Він говорить, що багатофункцйіональні додатки дуже важливі для широкого використання Free TON. А zk-SNARKs забезпечують додаткову конфіденційність транзакцій і розширюють можливості ігрових та інших додатків, що є дуже важливим.

Перевірник Crypto3 у системі Filecoin більш продуктивний і менш вимогливий до апаратного забезпечення, ніж інші перевірники Filecoin. Перевірник разом з реалізацією нашої версії протоколу Lotus Filecoin робить майнінг кріптовалюти FIL у 10 разів більш прибутковим, ніж з офіційною бібліотекою rust-fil-proofs. Filecoin використовує zk-SNARK для доведення того, що дані на протязі визначеного періода правильно зберігаються. Якщо бути точним, для декількох етапів перевірки використовуються три схеми zk-SNARK: PoRep(C2), Winning PoSt і Window PoSt.

На противагу мережам з відкритим блокчейном, які записують дії користувачів, платформа Free TON пропонує своїм користувачам систему zk-SNARKs, яка забезпечує децентралізацію, масштабованість та швидкість транзакцій разом з їх приватністю. Завдяки реалізації zk-SNARKs, користувачі Free TON можуть виконувати транзакції і без розголошення інформаціі про транзакції отримувати дані про їх верифікацію.

Реалізація зі структурою всередині Groth16 містить дві модифікації:

1. Додаток для Віртуальної Машини Ton зі спеціальними інструкціями для zkSNARK, що потребують оновлення програмного забеспечення вузлів для забезпечення підтримки нових функцій. 2. Скомпільована напряму на мові Assembly Віртуальної Машини Ton реалізація zk-SNARK точно так, як це зроблено у Ефіріумі.

Посилання:

1. Чому zk-SNARKs критично важливі для конфіденційності даних у блокчейні:https://www.forbes.com/sites/samantharadocchia/2018/04/24/why-zk-snarks-are-crucial-for-blockchain-data-privacy/?sh=3fd4875f50f0

2. Що таке zk-SNATKs? Zcash: https://z.cash/technology/zksnarks/

3. Коротке занурення у zk-SNARKs і ZoKrates Toolbox на блокчейні Ефіріума: https://medium.com/cornellblockchain/a-brief-dive-into-zk-snarks-and-the-zokrates-toolbox-on-the-ethereum-blockchain-cb7bd7f00fdc

4. Забезпечення блокчейну з неінтерактивним доказом нульового розголошення: https://www.altoros.com/blog/securing-a-blockchain-with-a-noninteractive-zero-knowledge-proof/

5. zk-SNARK: https://www.investopedia.com/terms/z/zksnark.asp

6. Що таке zk-SNARKS і чому вони у Free TON: https://freeton.house/en/what-is-zk-snarks/

7. Free TON запускає перші конкурси, відкриває дискусійний форум, анонсує zkSNARKS: https://medium.com/freeton/free-ton-launches-first-contests-opens-a-discussion-forum-announces-zksnarks-f3ef88d424c2

8. =nil; Фонд: https://freeton.wiki/%3Dnil;_Foundation


Report Page